[Python-modules-commits] [bibtexparser] 02/05: Imported Upstream version 0.6.2
Alex Mestiashvili
malex-guest at moszumanska.debian.org
Wed Jan 20 10:00:37 UTC 2016
This is an automated email from the git hooks/post-receive script.
malex-guest pushed a commit to branch master
in repository bibtexparser.
commit e8ec37782adcfe42ec416c0c209f87a6be49516b
Author: Alexandre Mestiashvili <alex at biotec.tu-dresden.de>
Date: Wed Jan 20 10:50:18 2016 +0100
Imported Upstream version 0.6.2
---
.travis.yml | 8 +-
CHANGELOG | 17 +++-
CONTRIBUTORS.txt | 3 +
README.md | 3 +-
README.rst | 2 +-
bibtexparser/__init__.py | 2 +-
bibtexparser/bparser.py | 2 +-
bibtexparser/bwriter.py | 32 ++++++--
bibtexparser/customization.py | 9 ++-
bibtexparser/tests/data/article_comma_first.bib | 14 ++--
bibtexparser/tests/data/book_comma_first.bib | 12 +--
bibtexparser/tests/data/comments_percentage.bib | 19 +++++
.../tests/data/comments_percentage_nolastcoma.bib | 19 +++++
bibtexparser/tests/data/string.bib | 8 ++
bibtexparser/tests/test_bibtex_strings.py | 19 ++++-
bibtexparser/tests/test_bibtexwriter.py | 91 +++++++++++++++++++++-
bibtexparser/tests/test_comments.py | 54 +++++++++++++
docs/source/index.rst | 1 +
docs/source/install.rst | 4 +-
docs/source/test.rst | 40 ++++++++++
docs/source/who.rst | 2 +
setup.py | 2 +-
22 files changed, 326 insertions(+), 37 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index b026bd5..723e7c5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,23 +3,23 @@ matrix:
include:
- python: "2.7"
env: TEST_SUITE=suite_2_7
- - python: "3.2"
- env: TEST_SUITE=suite_3_2
- python: "3.3"
env: TEST_SUITE=suite_3_3
- python: "3.4"
env: TEST_SUITE=suite_3_4
+ - python: "3.5"
+ env: TEST_SUITE=suite_3_5
- python: "pypy"
env: TEST_SUITE=suite_pypy
install:
- - if [[ $TEST_SUITE == suite_3_4 ]]; then
+ - if [[ $TEST_SUITE == suite_3_5 ]]; then
pip install sphinx;
fi;
- pip install coverage
- python setup.py install
script:
- nosetests --with-coverage --cover-erase --cover-package=bibtexparser
- - if [[ $TEST_SUITE == suite_3_4 ]]; then
+ - if [[ $TEST_SUITE == suite_3_5 ]]; then
cd docs;
make html;
fi;
diff --git a/CHANGELOG b/CHANGELOG
index c5689bc..080493d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,18 @@
-vXXXX
-=====
+v0.XXX
+======
+
+
+v0.6.2
+======
+
+* ENH: customization: handle various hyphens (#76).
+* ENH: writer: all values according to this maximal key width (#83).
+* END: writer: display_order allows to have custom ordering of the fields of
+each entry instead of just alphabetical (#83) by cschaffner.
+* FIX: bad support of braces in string (#90) by sangkilc.
+
+v0.6.1
+======
* API: Previous type and id keywords which are automatically added to
the dictionnary are now ENTRYTYPE and ID, respectively (#42).
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index 0b3bcf3..2bd0c0f 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -27,3 +27,6 @@
- Michal Grochmal
Comma first syntax support
+
+- Cschaffner
+ New features in bwriter
diff --git a/README.md b/README.md
index f00e171..b1a218d 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,10 @@
-[](https://flattr.com/submit/auto?user_id=fboulogne&url=https://github.com/sciunto/python-bibtexparser&title=python-bibtexparser&language=&tags=github&category=software)
[](http://travis-ci.org/sciunto-org/python-bibtexparser)
[](https://coveralls.io/r/sciunto-org/python-bibtexparser)
python-bibtexparser
===================
-Bibtex parser in Python 2.7 and 3.
+Bibtex parser in Python 2.7 and 3.3 or newer
The original source code was part of bibserver from okfn
http://github.com/okfn/bibserver
diff --git a/README.rst b/README.rst
index 41802d5..bc9acd6 100644
--- a/README.rst
+++ b/README.rst
@@ -9,7 +9,7 @@
python-bibtexparser
===================
-Bibtex parser in Python 2.7 and 3.
+Bibtex parser in Python 2.7 and 3.3 or newer
The original source code was part of bibserver from okfn
http://github.com/okfn/bibserver
diff --git a/bibtexparser/__init__.py b/bibtexparser/__init__.py
index 69fdf4d..e36a239 100644
--- a/bibtexparser/__init__.py
+++ b/bibtexparser/__init__.py
@@ -22,7 +22,7 @@ __all__ = [
'loads', 'load', 'dumps', 'dump', 'bibdatabase',
'bparser', 'bwriter', 'latexenc', 'customization',
]
-__version__ = '0.6.1'
+__version__ = '0.6.2'
from . import bibdatabase, bparser, bwriter, latexenc, customization
diff --git a/bibtexparser/bparser.py b/bibtexparser/bparser.py
index bd622a9..7cdcf9e 100644
--- a/bibtexparser/bparser.py
+++ b/bibtexparser/bparser.py
@@ -224,7 +224,7 @@ class BibTexParser(object):
# if a string record, put it in the replace_dict
if record.lower().startswith('@string'):
logger.debug('The record startswith @string')
- key, val = [i.strip().strip('{').strip('}').replace('\n', ' ') for i in record.split('{', 1)[1].strip('\n').strip(',').strip('}').split('=')]
+ key, val = [i.strip().strip('{').strip('}').replace('\n', ' ') for i in record.split('{', 1)[1].strip('}').strip('\n').strip(',').split('=')]
key = key.lower() # key is case insensitive
val = self._string_subst_partial(val)
if val.startswith('"') or val.lower() not in self.bib_database.strings:
diff --git a/bibtexparser/bwriter.py b/bibtexparser/bwriter.py
index a183e39..65472a4 100644
--- a/bibtexparser/bwriter.py
+++ b/bibtexparser/bwriter.py
@@ -43,15 +43,25 @@ class BibTexWriter(object):
self.contents = ['comments', 'preambles', 'strings', 'entries']
#: Character(s) for indenting BibTeX field-value pairs. Default: single space.
self.indent = ' '
+ #: Align values. Determines the maximal number of characters used in any fieldname and aligns all values
+ # according to that by filling up with single spaces. Default: False
+ self.align_values = False
#: Characters(s) for separating BibTeX entries. Default: new line.
self.entry_separator = '\n'
- #: Tuple of fields for ordering entries. Set to `None` to disable sorting. Default: BibTeX key `('ID', )`.
+ #: Tuple of fields for ordering BibTeX entries. Set to `None` to disable sorting. Default: BibTeX key `('ID', )`.
self.order_entries_by = ('ID', )
+ #: Tuple of fields for display order in a single BibTeX entry. Fields not listed here will be displayed
+ #: alphabetically at the end. Set to '[]' for alphabetical order. Default: '[]'
+ self.display_order = []
#: BibTeX syntax allows comma first syntax
#: (common in functional languages), use this to enable
#: comma first syntax as the bwritter output
self.comma_first = False
+ #: internal variable used if self.align_values = True
+ self._max_field_width = 0
+
+
def write(self, bib_database):
"""
Converts a bibliographic database to a BibTeX-formatted string.
@@ -79,6 +89,11 @@ class BibTexWriter(object):
else:
entries = bib_database.entries
+ if self.align_values:
+ # determine maximum field width to be used
+ widths = [max(map(len, entry.keys())) for entry in entries]
+ self._max_field_width = max(widths)
+
for entry in entries:
bibtex += self._entry_to_bibtex(entry)
return bibtex
@@ -88,15 +103,22 @@ class BibTexWriter(object):
# Write BibTeX key
bibtex += '@' + entry['ENTRYTYPE'] + '{' + entry['ID']
+ # create display_order of fields for this entry
+ # first those keys which are both in self.display_order and in entry.keys
+ display_order = [i for i in self.display_order if i in entry]
+ # then all the other fields sorted alphabetically
+ more_fields = [i for i in sorted(entry) if i not in self.display_order]
+ display_order += [i for i in sorted(entry) if i not in self.display_order]
+
# Write field = value lines
- for field in [i for i in sorted(entry) if i not in ['ENTRYTYPE', 'ID']]:
+ for field in [i for i in display_order if i not in ['ENTRYTYPE', 'ID']]:
try:
if self.comma_first:
- bibtex += "\n," + self.indent + field + " = {" + entry[field] + "}"
+ bibtex += "\n" + self.indent + ", " + "{0:<{1}}".format(field, self._max_field_width) + " = {" + entry[field] + "}"
else:
- bibtex += ",\n" + self.indent + field + " = {" + entry[field] + "}"
+ bibtex += ",\n" + self.indent + "{0:<{1}}".format(field, self._max_field_width) + " = {" + entry[field] + "}"
except TypeError:
- raise TypeError("The field %s in entry %s must be a string"
+ raise TypeError(u"The field %s in entry %s must be a string"
% (field, entry['ID']))
bibtex += "\n}\n" + self.entry_separator
return bibtex
diff --git a/bibtexparser/customization.py b/bibtexparser/customization.py
index f2afafd..9b46025 100644
--- a/bibtexparser/customization.py
+++ b/bibtexparser/customization.py
@@ -97,9 +97,12 @@ def page_double_hyphen(record):
"""
if "pages" in record:
- if "-" in record["pages"]:
- p = [i.strip().strip('-') for i in record["pages"].split("-")]
- record["pages"] = p[0] + '--' + p[-1]
+ # hyphen, non-breaking hyphen, en dash, em dash, hyphen-minus, minus sign
+ separators = [u'‐', u'‑', u'–', u'—', u'-', u'−']
+ for separator in separators:
+ if separator in record["pages"]:
+ p = [i.strip().strip(separator) for i in record["pages"].split(separator)]
+ record["pages"] = p[0] + '--' + p[-1]
return record
diff --git a/bibtexparser/tests/data/article_comma_first.bib b/bibtexparser/tests/data/article_comma_first.bib
index 0be3e73..83882f4 100644
--- a/bibtexparser/tests/data/article_comma_first.bib
+++ b/bibtexparser/tests/data/article_comma_first.bib
@@ -1,11 +1,11 @@
@ARTICLE{Cesar2013
-, author = {Jean Cesar}
-, title = {An amazing title}
-, year = {2013}
-, volume = {12}
-, journal = {Nice Journal}
-, comments = {A comment}
-, keyword = {keyword1, keyword2}
+ , author = {Jean Cesar}
+ , title = {An amazing title}
+ , year = {2013}
+ , volume = {12}
+ , journal = {Nice Journal}
+ , comments = {A comment}
+ , keyword = {keyword1, keyword2}
}
@ARTICLE{ Baltazar2013
diff --git a/bibtexparser/tests/data/book_comma_first.bib b/bibtexparser/tests/data/book_comma_first.bib
index f2ab70e..5691da9 100644
--- a/bibtexparser/tests/data/book_comma_first.bib
+++ b/bibtexparser/tests/data/book_comma_first.bib
@@ -1,9 +1,9 @@
@book{Bird1987
-, author = {Bird, R.B. and Armstrong, R.C. and Hassager, O.}
-, edition = {2}
-, publisher = {Wiley Edition}
-, title = {Dynamics of Polymeric Liquid}
-, volume = {1}
-, year = {1987}
+ , author = {Bird, R.B. and Armstrong, R.C. and Hassager, O.}
+ , edition = {2}
+ , publisher = {Wiley Edition}
+ , title = {Dynamics of Polymeric Liquid}
+ , volume = {1}
+ , year = {1987}
}
diff --git a/bibtexparser/tests/data/comments_percentage.bib b/bibtexparser/tests/data/comments_percentage.bib
new file mode 100644
index 0000000..15ffce1
--- /dev/null
+++ b/bibtexparser/tests/data/comments_percentage.bib
@@ -0,0 +1,19 @@
+ at ARTICLE{Cesar2013,
+ author = {Jean Cesar},
+ title = {An amazing title},
+ year = {2013},
+ volume = {12},
+ journal = {Nice Journal},
+ comments = {A comment},
+ keyword = {keyword1, keyword2},
+}
+% comment.
+ at ARTICLE{Baltazar2013,
+ author = {Jean Baltazar},
+ title = {An amazing title},
+ year = {2013},
+ volume = {12},
+ journal = {Nice Journal},
+ comments = {A comment},
+ keyword = {keyword1, keyword2},
+}
diff --git a/bibtexparser/tests/data/comments_percentage_nolastcoma.bib b/bibtexparser/tests/data/comments_percentage_nolastcoma.bib
new file mode 100644
index 0000000..14813d1
--- /dev/null
+++ b/bibtexparser/tests/data/comments_percentage_nolastcoma.bib
@@ -0,0 +1,19 @@
+ at ARTICLE{Cesar2013,
+ author = {Jean Cesar},
+ title = {An amazing title},
+ year = {2013},
+ volume = {12},
+ journal = {Nice Journal},
+ comments = {A comment},
+ keyword = {keyword1, keyword2}
+}
+% comment.
+ at ARTICLE{Baltazar2013,
+ author = {Jean Baltazar},
+ title = {An amazing title},
+ year = {2013},
+ volume = {12},
+ journal = {Nice Journal},
+ comments = {A comment},
+ keyword = {keyword1, keyword2}
+}
diff --git a/bibtexparser/tests/data/string.bib b/bibtexparser/tests/data/string.bib
new file mode 100644
index 0000000..3244b90
--- /dev/null
+++ b/bibtexparser/tests/data/string.bib
@@ -0,0 +1,8 @@
+ at STRING{oakland = {Proceedings of the {IEEE} Symposium on Security and Privacy}}
+ at INPROCEEDINGS{cha:oakland15,
+ author = {Sang Kil Cha and Maverick Woo and David Brumley},
+ title = {{Program-Adaptive Mutational Fuzzing}},
+ booktitle = oakland,
+ year = {2015},
+ pages = {725--741}
+}
diff --git a/bibtexparser/tests/test_bibtex_strings.py b/bibtexparser/tests/test_bibtex_strings.py
index e079c9d..185358e 100644
--- a/bibtexparser/tests/test_bibtex_strings.py
+++ b/bibtexparser/tests/test_bibtex_strings.py
@@ -1,6 +1,8 @@
import unittest
+import codecs
import bibtexparser
from bibtexparser.bibdatabase import BibDatabase
+from bibtexparser.bparser import BibTexParser
from collections import OrderedDict
@@ -29,6 +31,21 @@ class TestStringParse(unittest.TestCase):
expected['name2'] = 'value2'
self.assertEqual(bib_database.strings, expected)
+ def test_string_braces(self):
+ with codecs.open('bibtexparser/tests/data/string.bib', 'r', 'utf-8') as bibfile:
+ bib = BibTexParser(bibfile.read())
+ res = bib.get_entry_list()
+ expected = [{'author': 'Sang Kil Cha and Maverick Woo and David Brumley',
+ 'ID': 'cha:oakland15',
+ 'year': '2015',
+ 'booktitle': 'Proceedings of the {IEEE} Symposium on Security and Privacy',
+ 'title': 'Program-Adaptive Mutational Fuzzing',
+ 'ENTRYTYPE': 'inproceedings',
+ 'pages': '725--741'
+ }]
+ self.assertEqual(res, expected)
+
+
class TestStringWrite(unittest.TestCase):
def test_single_string_write(self):
@@ -44,4 +61,4 @@ class TestStringWrite(unittest.TestCase):
bib_database.strings['name2'] = 'value2' # Order is important!
result = bibtexparser.dumps(bib_database)
expected = '@string{name1 = "value1"}\n\n at string{name2 = "value2"}\n\n'
- self.assertEqual(result, expected)
\ No newline at end of file
+ self.assertEqual(result, expected)
diff --git a/bibtexparser/tests/test_bibtexwriter.py b/bibtexparser/tests/test_bibtexwriter.py
index 9cba849..25b1270 100644
--- a/bibtexparser/tests/test_bibtexwriter.py
+++ b/bibtexparser/tests/test_bibtexwriter.py
@@ -70,6 +70,60 @@ class TestBibTexWriter(unittest.TestCase):
"""
self.assertEqual(result, expected)
+ def test_align(self):
+ bib_database = BibDatabase()
+ bib_database.entries = [{'ID': 'abc123',
+ 'ENTRYTYPE': 'book',
+ 'author': 'test',
+ 'thisisaverylongkey': 'longvalue'}]
+ writer = BibTexWriter()
+ writer.align_values = True
+ result = bibtexparser.dumps(bib_database, writer)
+ expected = \
+"""@book{abc123,
+ author = {test},
+ thisisaverylongkey = {longvalue}
+}
+
+"""
+ self.assertEqual(result, expected)
+
+ with open('bibtexparser/tests/data/multiple_entries_and_comments.bib') as bibtex_file:
+ bib_database = bibtexparser.load(bibtex_file)
+ writer = BibTexWriter()
+ writer.contents = ['entries']
+ writer.align_values = True
+ result = bibtexparser.dumps(bib_database, writer)
+ expected = \
+"""@book{Toto3000,
+ author = {Toto, A and Titi, B},
+ title = {A title}
+}
+
+ at article{Wigner1938,
+ author = {Wigner, E.},
+ doi = {10.1039/TF9383400029},
+ issn = {0014-7672},
+ journal = {Trans. Faraday Soc.},
+ owner = {fr},
+ pages = {29--41},
+ publisher = {The Royal Society of Chemistry},
+ title = {The transition state method},
+ volume = {34},
+ year = {1938}
+}
+
+ at book{Yablon2005,
+ author = {Yablon, A.D.},
+ publisher = {Springer},
+ title = {Optical fiber fusion slicing},
+ year = {2005}
+}
+
+"""
+ self.assertEqual(result, expected)
+
+
def test_entry_separator(self):
bib_database = BibDatabase()
bib_database.entries = [{'ID': 'abc123',
@@ -85,6 +139,42 @@ class TestBibTexWriter(unittest.TestCase):
"""
self.assertEqual(result, expected)
+ def test_display_order(self):
+ with open('bibtexparser/tests/data/multiple_entries_and_comments.bib') as bibtex_file:
+ bib_database = bibtexparser.load(bibtex_file)
+ writer = BibTexWriter()
+ writer.contents = ['entries']
+ writer.display_order = ['year', 'publisher', 'title']
+ result = bibtexparser.dumps(bib_database, writer)
+ expected = \
+"""@book{Toto3000,
+ title = {A title},
+ author = {Toto, A and Titi, B}
+}
+
+ at article{Wigner1938,
+ year = {1938},
+ publisher = {The Royal Society of Chemistry},
+ title = {The transition state method},
+ author = {Wigner, E.},
+ doi = {10.1039/TF9383400029},
+ issn = {0014-7672},
+ journal = {Trans. Faraday Soc.},
+ owner = {fr},
+ pages = {29--41},
+ volume = {34}
+}
+
+ at book{Yablon2005,
+ year = {2005},
+ publisher = {Springer},
+ title = {Optical fiber fusion slicing},
+ author = {Yablon, A.D.}
+}
+
+"""
+ self.assertEqual(result, expected)
+
class TestEntrySorting(unittest.TestCase):
bib_database = BibDatabase()
@@ -144,4 +234,3 @@ class TestEntrySorting(unittest.TestCase):
expected = "@book{a\n}\n\n at article{b,\n year = {2000}\n}\n\n at book{c,\n year = {2010}\n}\n\n"
self.assertEqual(result, expected)
-
diff --git a/bibtexparser/tests/test_comments.py b/bibtexparser/tests/test_comments.py
index 00a0d1b..068461a 100644
--- a/bibtexparser/tests/test_comments.py
+++ b/bibtexparser/tests/test_comments.py
@@ -50,6 +50,60 @@ Sunt in culpa qui officia deserunt mollit anim id est laborum.
"A comment"]
self.assertEqual(bib.comments, expected)
+ def test_comments_percentage(self):
+ with open('bibtexparser/tests/data/comments_percentage.bib', 'r') as bibfile:
+ bib = BibTexParser(bibfile.read())
+ res = bib.get_entry_list()
+ expected = [{'ENTRYTYPE': 'article',
+ 'journal': 'Nice Journal',
+ 'volume': '12',
+ 'ID': 'Cesar2013',
+ 'year': '2013',
+ 'author': 'Jean Cesar',
+ 'comments': 'A comment',
+ 'keyword': 'keyword1, keyword2',
+ 'title': 'An amazing title'
+ },
+ {'ENTRYTYPE': 'article',
+ 'journal': 'Nice Journal',
+ 'volume': '12',
+ 'ID': 'Baltazar2013',
+ 'year': '2013',
+ 'author': 'Jean Baltazar',
+ 'comments': 'A comment',
+ 'keyword': 'keyword1, keyword2',
+ 'title': 'An amazing title'
+ }]
+ self.assertEqual(res, expected)
+
+ @unittest.skip('Bug #45')
+ def test_comments_percentage_nocoma(self):
+ with open('bibtexparser/tests/data/comments_percentage_nolastcoma.bib', 'r') as bibfile:
+ bib = BibTexParser(bibfile.read())
+ res = bib.get_entry_list()
+ expected = [{'ENTRYTYPE': 'article',
+ 'journal': 'Nice Journal',
+ 'volume': '12',
+ 'ID': 'Cesar2013',
+ 'year': '2013',
+ 'author': 'Jean Cesar',
+ 'comments': 'A comment',
+ 'keyword': 'keyword1, keyword2',
+ 'title': 'An amazing title'
+ },
+ {'ENTRYTYPE': 'article',
+ 'journal': 'Nice Journal',
+ 'volume': '12',
+ 'ID': 'Baltazar2013',
+ 'year': '2013',
+ 'author': 'Jean Baltazar',
+ 'comments': 'A comment',
+ 'keyword': 'keyword1, keyword2',
+ 'title': 'An amazing title'
+ }]
+ self.assertEqual(res, expected)
+
+
class TestWriteComment(unittest.TestCase):
def test_comment_write(self):
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 38042b7..a986c7c 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -24,6 +24,7 @@ Contents:
:maxdepth: 2
install.rst
+ test.rst
tutorial.rst
bibtexparser.rst
logging.rst
diff --git a/docs/source/install.rst b/docs/source/install.rst
index 86e93d5..9ec0978 100644
--- a/docs/source/install.rst
+++ b/docs/source/install.rst
@@ -4,8 +4,8 @@ How to install?
Requirements
------------
-* python **2.7** or later
-* python **3.2** or later
+* python **2.7**
+* python **3.3** or newer
Package manager
---------------
diff --git a/docs/source/test.rst b/docs/source/test.rst
new file mode 100644
index 0000000..a74f759
--- /dev/null
+++ b/docs/source/test.rst
@@ -0,0 +1,40 @@
+How to test?
+============
+
+This page briefly describes how to run the test suite.
+This is useful for contributors but also for packagers.
+
+
+Virtualenv
+----------
+
+You can make a virtualenv. I like `pew <https://pypi.python.org/pypi/pew/>`_ for that because the API easier.
+
+The first time, you need to make a virtualenv
+
+.. code-block:: sh
+
+ pew mkproject bibtexparser
+ python setup.py install
+ nosetest
+
+
+If you already have a virtualenv
+
+.. code-block:: sh
+
+ pew workon bibtexparser
+ python setup.py install
+ nosetest
+
+
+Tox
+---
+
+The advantage of `Tox <https://pypi.python.org/pypi/tox>`_ is that you can build and test the code against several versions of python.
+Of course, you need tox to be installed on your system.
+The configuration file is tox.ini, in the root of the project.
+
+.. code-block:: sh
+
+ tox # and nothing more :)
diff --git a/docs/source/who.rst b/docs/source/who.rst
index 6aedc29..8068f1f 100644
--- a/docs/source/who.rst
+++ b/docs/source/who.rst
@@ -8,3 +8,5 @@ If your project uses BibtexParser, you can ask for the addition of a link in thi
* http://aurelien.naldi.info/research/publications.html
* http://robot.kut.ac.kr/publications
* https://git.atelo.org/etlapale/bibgen
+* https://onmenwhostareongraphs.wordpress.com/2015/06/09/graph-display-software-for-author-relationships-with-bibtex-files/
+* https://github.com/vitorfs/parsifal
diff --git a/setup.py b/setup.py
index c038d80..be9b959 100644
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,6 @@ setup(
author = "Francois Boulogne and other contributors",
license = "LGPLv3 or BSD",
author_email = "fboulogne at sciunto.org",
- description = "Bibtex parser for python 2 and 3",
+ description = "Bibtex parser for python 2.7 and 3.3 and newer",
packages = ['bibtexparser'],
)
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/bibtexparser.git
More information about the Python-modules-commits
mailing list