diff --git a/pubs/endecoder.py b/pubs/endecoder.py index ece0325..ea1fedf 100644 --- a/pubs/endecoder.py +++ b/pubs/endecoder.py @@ -109,14 +109,10 @@ class EnDecoder(object): def decode_bibdata(self, bibdata): """""" try: - try: - entries = bp.bparser.BibTexParser( - bibdata, homogenize_fields=True, - customization=customizations).get_entry_dict() - except TypeError: - entries = bp.bparser.BibTexParser( - bibdata, - customization=customizations).get_entry_dict() + entries = bp.bparser.BibTexParser( + bibdata, common_strings=True, + customization=customizations, + homogenize_fields=True).get_entry_dict() # Remove id from bibtexparser attribute which is stored as citekey for e in entries: diff --git a/setup.py b/setup.py index 5559148..62a9d3f 100644 --- a/setup.py +++ b/setup.py @@ -25,7 +25,7 @@ setup( ], }, - install_requires=['pyyaml', 'bibtexparser>=1.0.1', 'python-dateutil', 'requests', + install_requires=['pyyaml', 'bibtexparser>=1.0', 'python-dateutil', 'requests', 'configobj', 'beautifulsoup4'], # to be made optional? tests_require=['pyfakefs>=2.7'], diff --git a/tests/str_fixtures.py b/tests/str_fixtures.py index 2036943..03360b8 100644 --- a/tests/str_fixtures.py +++ b/tests/str_fixtures.py @@ -69,6 +69,14 @@ bibtex_no_citekey = """@Manual{, } """ +bibtex_month= """@inproceedings{Goyal2017, + author = {Goyal, Anirudh and Sordoni, Alessandro and C{\^{o}}t{\'{e}}, Marc-Alexandre and Ke, Nan Rosemary and Bengio, Yoshua}, + title = {Z-Forcing: Training Stochastic Recurrent Networks}, + year = {2017}, + month = dec, + pages = {6716--6726}, +} +""" sample_conf = """ [main] diff --git a/tests/test_endecoder.py b/tests/test_endecoder.py index 96ed1c7..8309557 100644 --- a/tests/test_endecoder.py +++ b/tests/test_endecoder.py @@ -9,7 +9,7 @@ from pubs import endecoder from pubs.p3 import ustr from fixtures import dummy_metadata -from str_fixtures import bibtex_raw0, metadata_raw0, turing_bib +from str_fixtures import bibtex_raw0, metadata_raw0, turing_bib, bibtex_month def compare_yaml_str(s1, s2): @@ -35,6 +35,7 @@ class TestEnDecode(unittest.TestCase): self.assertIsInstance(data, ustr) def test_endecode_bibtex(self): + """Test that multiple encode/decode step preserve data""" decoder = endecoder.EnDecoder() entry = decoder.decode_bibdata(bibtex_raw0) @@ -51,6 +52,14 @@ class TestEnDecode(unittest.TestCase): self.assertEqual(bibraw1, bibraw2) + def test_endecode_bibtex(self): + """Test if `month=dec` is correctly recognized and transformed into + `month={December}`""" + decoder = endecoder.EnDecoder() + entry = decoder.decode_bibdata(bibtex_month)['Goyal2017'] + + self.assertEqual(entry['month'], 'December') + def test_endecode_bibtex_editor(self): decoder = endecoder.EnDecoder() entry = decoder.decode_bibdata(turing_bib)