reference-handler 0.9.2__tar.gz → 0.9.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {reference_handler-0.9.2/reference_handler.egg-info → reference_handler-0.9.3}/PKG-INFO +1 -1
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/_version.py +3 -3
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/reference_handler.py +73 -5
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/test_reference_handler.py +37 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3/reference_handler.egg-info}/PKG-INFO +1 -1
- {reference_handler-0.9.2 → reference_handler-0.9.3}/LICENSE +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/MANIFEST.in +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/README.md +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/__init__.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/latex_utf8.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/__init__.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/build_filenames.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/data/library.bib +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/test_exceptions.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/test_latex.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/utils.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/SOURCES.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/dependency_links.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/requires.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/top_level.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/requirements.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/requirements_dev.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/requirements_install.txt +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/setup.cfg +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/setup.py +0 -0
- {reference_handler-0.9.2 → reference_handler-0.9.3}/versioneer.py +0 -0
|
@@ -8,11 +8,11 @@ import json
|
|
|
8
8
|
|
|
9
9
|
version_json = '''
|
|
10
10
|
{
|
|
11
|
-
"date": "2026-
|
|
11
|
+
"date": "2026-10-17T13:57:51-0400",
|
|
12
12
|
"dirty": false,
|
|
13
13
|
"error": null,
|
|
14
|
-
"full-revisionid": "
|
|
15
|
-
"version": "0.9.
|
|
14
|
+
"full-revisionid": "96f322852777846d0aefaa5f66e71ba58794b5ee",
|
|
15
|
+
"version": "0.9.3"
|
|
16
16
|
}
|
|
17
17
|
''' # END VERSION_JSON
|
|
18
18
|
|
|
@@ -6,7 +6,6 @@ Handles the primary class
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import sqlite3
|
|
9
|
-
import pprint
|
|
10
9
|
import re
|
|
11
10
|
|
|
12
11
|
import bibtexparser
|
|
@@ -259,10 +258,10 @@ class Reference_Handler(object):
|
|
|
259
258
|
plain_text = self.format_inbook(parse)
|
|
260
259
|
elif entry_type == "phdthesis":
|
|
261
260
|
plain_text = self.format_phdthesis(parse)
|
|
261
|
+
elif entry_type == "book":
|
|
262
|
+
plain_text = self.format_book(parse)
|
|
262
263
|
else:
|
|
263
|
-
plain_text =
|
|
264
|
-
plain_text += "\n"
|
|
265
|
-
plain_text += pprint.pformat(parse)
|
|
264
|
+
plain_text = self.format_other(parse)
|
|
266
265
|
|
|
267
266
|
plain_text = decode_latex(plain_text)
|
|
268
267
|
plain_text = self.decode_math_symbols(plain_text)
|
|
@@ -740,7 +739,76 @@ class Reference_Handler(object):
|
|
|
740
739
|
return result
|
|
741
740
|
|
|
742
741
|
def format_software(self, data):
|
|
743
|
-
return self.format_misc(
|
|
742
|
+
return self.format_misc(data)
|
|
743
|
+
|
|
744
|
+
def format_book(self, data):
|
|
745
|
+
"""Format a book BibTex record
|
|
746
|
+
|
|
747
|
+
ACS style:
|
|
748
|
+
Hansen, J.-P.; McDonald, I. R. Theory of Simple Liquids, 4th ed.;
|
|
749
|
+
Academic Press: Oxford, 2013. DOI: 10.1016/C2010-0-66723-X
|
|
750
|
+
"""
|
|
751
|
+
result = ""
|
|
752
|
+
names = data.get("author", data.get("editor"))
|
|
753
|
+
if names is not None:
|
|
754
|
+
result += "; ".join(names.split(" and "))
|
|
755
|
+
if "author" not in data:
|
|
756
|
+
result += ", Eds"
|
|
757
|
+
if result[-1] != ".":
|
|
758
|
+
result += "."
|
|
759
|
+
if "title" in data:
|
|
760
|
+
result += " " + data["title"].rstrip(".")
|
|
761
|
+
if "edition" in data:
|
|
762
|
+
result += f", {data['edition']} ed."
|
|
763
|
+
result += ";" if "publisher" in data else "."
|
|
764
|
+
if "publisher" in data:
|
|
765
|
+
result += f" {data['publisher']}"
|
|
766
|
+
if "address" in data:
|
|
767
|
+
result += f": {data['address']}"
|
|
768
|
+
result += ","
|
|
769
|
+
if "year" in data:
|
|
770
|
+
result += f" {data['year']}."
|
|
771
|
+
if "doi" in data:
|
|
772
|
+
result += f" DOI: {data['doi']}"
|
|
773
|
+
elif "url" in data:
|
|
774
|
+
result += f" {data['url']}"
|
|
775
|
+
return result.strip()
|
|
776
|
+
|
|
777
|
+
def format_other(self, data):
|
|
778
|
+
"""Format a record of a type without its own style: the authors, title,
|
|
779
|
+
where it appeared, the year and the DOI or URL."""
|
|
780
|
+
parts = []
|
|
781
|
+
names = data.get("author", data.get("editor"))
|
|
782
|
+
if names is not None:
|
|
783
|
+
text = "; ".join(names.split(" and "))
|
|
784
|
+
parts.append(text if text.endswith(".") else text + ".")
|
|
785
|
+
if "title" in data:
|
|
786
|
+
parts.append(data["title"].rstrip(".") + ".")
|
|
787
|
+
where = next(
|
|
788
|
+
(
|
|
789
|
+
data[key]
|
|
790
|
+
for key in (
|
|
791
|
+
"journal",
|
|
792
|
+
"booktitle",
|
|
793
|
+
"publisher",
|
|
794
|
+
"institution",
|
|
795
|
+
"school",
|
|
796
|
+
)
|
|
797
|
+
if key in data
|
|
798
|
+
),
|
|
799
|
+
None,
|
|
800
|
+
)
|
|
801
|
+
if where is not None and "year" in data:
|
|
802
|
+
parts.append(f"{where}, {data['year']}.")
|
|
803
|
+
elif where is not None:
|
|
804
|
+
parts.append(f"{where}.")
|
|
805
|
+
elif "year" in data:
|
|
806
|
+
parts.append(f"{data['year']}.")
|
|
807
|
+
if "doi" in data:
|
|
808
|
+
parts.append(f"DOI: {data['doi']}")
|
|
809
|
+
elif "url" in data:
|
|
810
|
+
parts.append(data["url"])
|
|
811
|
+
return " ".join(parts)
|
|
744
812
|
|
|
745
813
|
def format_inbook(self, data):
|
|
746
814
|
"""Format a chapter or part of a book or series BibTex record
|
|
@@ -378,3 +378,40 @@ def test_cite_return():
|
|
|
378
378
|
assert lammps_id1 == lammps_id2
|
|
379
379
|
assert lammps_id1 == lammps_id3
|
|
380
380
|
assert namd_id == 2
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def test_format_book_software_and_other():
|
|
384
|
+
"""Books, software, and types without their own style are formatted, not
|
|
385
|
+
reported as having no handler."""
|
|
386
|
+
import bibtexparser
|
|
387
|
+
|
|
388
|
+
from reference_handler import Reference_Handler
|
|
389
|
+
|
|
390
|
+
book = bibtexparser.loads("""@book{HansenMcDonald,
|
|
391
|
+
author = {Jean-Pierre Hansen and Ian R. McDonald},
|
|
392
|
+
title = {Theory of Simple Liquids},
|
|
393
|
+
edition = {4th},
|
|
394
|
+
publisher = {Academic Press},
|
|
395
|
+
address = {Oxford},
|
|
396
|
+
year = {2013},
|
|
397
|
+
doi = {10.1016/C2010-0-66723-X}
|
|
398
|
+
}""").entries[0]
|
|
399
|
+
text = Reference_Handler.format_book(None, book)
|
|
400
|
+
assert text == (
|
|
401
|
+
"Jean-Pierre Hansen; Ian R. McDonald. Theory of Simple Liquids, 4th ed.; "
|
|
402
|
+
"Academic Press: Oxford, 2013. DOI: 10.1016/C2010-0-66723-X"
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
software = {"author": "A. Person", "title": "Code", "version": "1.0"}
|
|
406
|
+
handler = Reference_Handler.__new__(Reference_Handler)
|
|
407
|
+
assert handler.format_software(software).startswith("A. Person. Code, version")
|
|
408
|
+
|
|
409
|
+
report = {
|
|
410
|
+
"author": "A. Person",
|
|
411
|
+
"title": "A report.",
|
|
412
|
+
"institution": "An Institute",
|
|
413
|
+
"year": "2020",
|
|
414
|
+
}
|
|
415
|
+
assert Reference_Handler.format_other(None, report) == (
|
|
416
|
+
"A. Person. A report. An Institute, 2020."
|
|
417
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/build_filenames.py
RENAMED
|
File without changes
|
{reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/data/library.bib
RENAMED
|
File without changes
|
{reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler/tests/test_exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
{reference_handler-0.9.2 → reference_handler-0.9.3}/reference_handler.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|