academic-refchecker 1.2.54__py3-none-any.whl → 1.2.55__py3-none-any.whl
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.
- {academic_refchecker-1.2.54.dist-info → academic_refchecker-1.2.55.dist-info}/METADATA +23 -23
- academic_refchecker-1.2.55.dist-info/RECORD +49 -0
- academic_refchecker-1.2.55.dist-info/entry_points.txt +2 -0
- academic_refchecker-1.2.55.dist-info/top_level.txt +1 -0
- refchecker/__init__.py +13 -0
- refchecker/__main__.py +11 -0
- refchecker/__version__.py +5 -0
- {checkers → refchecker/checkers}/crossref.py +5 -5
- {checkers → refchecker/checkers}/enhanced_hybrid_checker.py +1 -1
- {checkers → refchecker/checkers}/github_checker.py +4 -4
- {checkers → refchecker/checkers}/local_semantic_scholar.py +7 -7
- {checkers → refchecker/checkers}/openalex.py +6 -6
- {checkers → refchecker/checkers}/openreview_checker.py +8 -8
- {checkers → refchecker/checkers}/pdf_paper_checker.py +1 -1
- {checkers → refchecker/checkers}/semantic_scholar.py +10 -10
- {checkers → refchecker/checkers}/webpage_checker.py +3 -3
- {core → refchecker/core}/parallel_processor.py +6 -6
- {core → refchecker/core}/refchecker.py +63 -63
- {utils → refchecker/utils}/arxiv_utils.py +3 -3
- {utils → refchecker/utils}/biblatex_parser.py +4 -4
- {utils → refchecker/utils}/bibliography_utils.py +5 -5
- {utils → refchecker/utils}/bibtex_parser.py +5 -5
- {utils → refchecker/utils}/error_utils.py +1 -1
- {utils → refchecker/utils}/text_utils.py +10 -10
- __version__.py +0 -3
- academic_refchecker-1.2.54.dist-info/RECORD +0 -47
- academic_refchecker-1.2.54.dist-info/entry_points.txt +0 -2
- academic_refchecker-1.2.54.dist-info/top_level.txt +0 -9
- {academic_refchecker-1.2.54.dist-info → academic_refchecker-1.2.55.dist-info}/WHEEL +0 -0
- {academic_refchecker-1.2.54.dist-info → academic_refchecker-1.2.55.dist-info}/licenses/LICENSE +0 -0
- {checkers → refchecker/checkers}/__init__.py +0 -0
- {config → refchecker/config}/__init__.py +0 -0
- {config → refchecker/config}/logging.conf +0 -0
- {config → refchecker/config}/settings.py +0 -0
- {core → refchecker/core}/__init__.py +0 -0
- {core → refchecker/core}/db_connection_pool.py +0 -0
- {database → refchecker/database}/__init__.py +0 -0
- {database → refchecker/database}/download_semantic_scholar_db.py +0 -0
- {llm → refchecker/llm}/__init__.py +0 -0
- {llm → refchecker/llm}/base.py +0 -0
- {llm → refchecker/llm}/providers.py +0 -0
- {scripts → refchecker/scripts}/__init__.py +0 -0
- {scripts → refchecker/scripts}/start_vllm_server.py +0 -0
- {services → refchecker/services}/__init__.py +0 -0
- {services → refchecker/services}/pdf_processor.py +0 -0
- {utils → refchecker/utils}/__init__.py +0 -0
- {utils → refchecker/utils}/author_utils.py +0 -0
- {utils → refchecker/utils}/config_validator.py +0 -0
- {utils → refchecker/utils}/db_utils.py +0 -0
- {utils → refchecker/utils}/doi_utils.py +0 -0
- {utils → refchecker/utils}/mock_objects.py +0 -0
- {utils → refchecker/utils}/unicode_utils.py +0 -0
- {utils → refchecker/utils}/url_utils.py +0 -0
|
@@ -689,7 +689,7 @@ def extract_arxiv_id_from_url(url):
|
|
|
689
689
|
Returns:
|
|
690
690
|
ArXiv ID or None if not found
|
|
691
691
|
"""
|
|
692
|
-
from utils.url_utils import extract_arxiv_id_from_url as common_extract
|
|
692
|
+
from refchecker.utils.url_utils import extract_arxiv_id_from_url as common_extract
|
|
693
693
|
return common_extract(url)
|
|
694
694
|
|
|
695
695
|
def extract_year_from_text(text):
|
|
@@ -2141,7 +2141,7 @@ def compare_authors(cited_authors: list, correct_authors: list, normalize_func=N
|
|
|
2141
2141
|
# and not penalize for the authoritative source having more authors
|
|
2142
2142
|
if has_et_al:
|
|
2143
2143
|
# Import here to avoid circular imports
|
|
2144
|
-
from utils.error_utils import format_author_mismatch
|
|
2144
|
+
from refchecker.utils.error_utils import format_author_mismatch
|
|
2145
2145
|
# For et al cases, check if each cited author matches ANY author in the correct list
|
|
2146
2146
|
# rather than comparing positionally, since author order can vary
|
|
2147
2147
|
for i, cited_author in enumerate(cleaned_cited):
|
|
@@ -2175,21 +2175,21 @@ def compare_authors(cited_authors: list, correct_authors: list, normalize_func=N
|
|
|
2175
2175
|
|
|
2176
2176
|
# Check if cited authors look like parsing fragments
|
|
2177
2177
|
if looks_like_fragments(cleaned_cited):
|
|
2178
|
-
from utils.error_utils import format_author_count_mismatch
|
|
2178
|
+
from refchecker.utils.error_utils import format_author_count_mismatch
|
|
2179
2179
|
display_cited = [format_author_for_display(author) for author in cleaned_cited]
|
|
2180
2180
|
error_msg = format_author_count_mismatch(len(cleaned_cited), len(correct_names), display_cited, correct_names)
|
|
2181
2181
|
return False, error_msg
|
|
2182
2182
|
|
|
2183
2183
|
# For all count mismatches, show the count mismatch error
|
|
2184
2184
|
if len(cleaned_cited) < len(correct_names):
|
|
2185
|
-
from utils.error_utils import format_author_count_mismatch
|
|
2185
|
+
from refchecker.utils.error_utils import format_author_count_mismatch
|
|
2186
2186
|
display_cited = [format_author_for_display(author) for author in cleaned_cited]
|
|
2187
2187
|
error_msg = format_author_count_mismatch(len(cleaned_cited), len(correct_names), display_cited, correct_names)
|
|
2188
2188
|
return False, error_msg
|
|
2189
2189
|
|
|
2190
2190
|
# For cases where cited > correct, also show count mismatch
|
|
2191
2191
|
elif len(cleaned_cited) > len(correct_names):
|
|
2192
|
-
from utils.error_utils import format_author_count_mismatch
|
|
2192
|
+
from refchecker.utils.error_utils import format_author_count_mismatch
|
|
2193
2193
|
display_cited = [format_author_for_display(author) for author in cleaned_cited]
|
|
2194
2194
|
error_msg = format_author_count_mismatch(len(cleaned_cited), len(correct_names), display_cited, correct_names)
|
|
2195
2195
|
return False, error_msg
|
|
@@ -2198,7 +2198,7 @@ def compare_authors(cited_authors: list, correct_authors: list, normalize_func=N
|
|
|
2198
2198
|
comparison_correct = correct_names
|
|
2199
2199
|
|
|
2200
2200
|
# Use shared three-line formatter (imported lazily to avoid circular imports)
|
|
2201
|
-
from utils.error_utils import format_first_author_mismatch, format_author_mismatch
|
|
2201
|
+
from refchecker.utils.error_utils import format_first_author_mismatch, format_author_mismatch
|
|
2202
2202
|
|
|
2203
2203
|
# Compare first author (most important) using the enhanced name matching
|
|
2204
2204
|
if comparison_cited and comparison_correct:
|
|
@@ -2806,7 +2806,7 @@ def filter_bibtex_by_cited_keys(bib_content, cited_keys):
|
|
|
2806
2806
|
return bib_content
|
|
2807
2807
|
|
|
2808
2808
|
# Parse entries and filter
|
|
2809
|
-
from utils.bibtex_parser import parse_bibtex_entries
|
|
2809
|
+
from refchecker.utils.bibtex_parser import parse_bibtex_entries
|
|
2810
2810
|
entries = parse_bibtex_entries(bib_content)
|
|
2811
2811
|
filtered_entries = []
|
|
2812
2812
|
|
|
@@ -3118,7 +3118,7 @@ def extract_latex_references(text, file_path=None): # pylint: disable=unused-ar
|
|
|
3118
3118
|
|
|
3119
3119
|
if format_info['format_type'] == 'bibtex':
|
|
3120
3120
|
# Use the dedicated BibTeX parser for consistent results
|
|
3121
|
-
from utils.bibtex_parser import parse_bibtex_references
|
|
3121
|
+
from refchecker.utils.bibtex_parser import parse_bibtex_references
|
|
3122
3122
|
return parse_bibtex_references(text)
|
|
3123
3123
|
|
|
3124
3124
|
elif format_info['format_type'] == 'thebibliography':
|
|
@@ -3322,7 +3322,7 @@ def extract_latex_references(text, file_path=None): # pylint: disable=unused-ar
|
|
|
3322
3322
|
# Extract URL if present
|
|
3323
3323
|
url_match = re.search(r'\\url\{([^}]+)\}', content)
|
|
3324
3324
|
if url_match:
|
|
3325
|
-
from utils.url_utils import clean_url_punctuation
|
|
3325
|
+
from refchecker.utils.url_utils import clean_url_punctuation
|
|
3326
3326
|
ref['url'] = clean_url_punctuation(url_match.group(1))
|
|
3327
3327
|
|
|
3328
3328
|
# Extract title from \showarticletitle{} or \bibinfo{title}{}
|
|
@@ -3384,7 +3384,7 @@ def extract_latex_references(text, file_path=None): # pylint: disable=unused-ar
|
|
|
3384
3384
|
if not ref['url']:
|
|
3385
3385
|
url_match = re.search(r'\\url\{([^}]+)\}', content)
|
|
3386
3386
|
if url_match:
|
|
3387
|
-
from utils.url_utils import clean_url_punctuation
|
|
3387
|
+
from refchecker.utils.url_utils import clean_url_punctuation
|
|
3388
3388
|
ref['url'] = clean_url_punctuation(url_match.group(1))
|
|
3389
3389
|
|
|
3390
3390
|
# Extract DOI from \href{https://doi.org/...}
|
__version__.py
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
__version__.py,sha256=vM_IldCgy0_CRZZSq08SaUYCl8sETF9Jyq8WJRWVIuA,65
|
|
2
|
-
academic_refchecker-1.2.54.dist-info/licenses/LICENSE,sha256=Kwrx3fePVCeEFDCZvCW4OuoTNBiSoYbpGBI6qzGhWF0,1067
|
|
3
|
-
checkers/__init__.py,sha256=T0PAHTFt6UiGvn-WGoJU8CdhXNmf6zaHmcGVoWHhmJQ,533
|
|
4
|
-
checkers/crossref.py,sha256=cLYmSzE8ehJ5sNko_R3fEiGBGiPH5_HxLhFM-pCfDRM,20378
|
|
5
|
-
checkers/enhanced_hybrid_checker.py,sha256=rbXkzpNkd0bn4e2OooX-CcdGTwwYpgmVaFvX_xCAFsA,27777
|
|
6
|
-
checkers/github_checker.py,sha256=BXJaBC3AloKze04j8EcQz0a79EhtVoi9_871ilV7t60,14233
|
|
7
|
-
checkers/local_semantic_scholar.py,sha256=D8py8-yMCgN1lvhXCiMUOEA4wBkH7AQvrkM4-3LCDsU,21015
|
|
8
|
-
checkers/openalex.py,sha256=Fbc7iscZzmXjAZxH32PDX2r2Nwo9b5Ku-Sh1Ut9KpLA,19550
|
|
9
|
-
checkers/openreview_checker.py,sha256=3ckn6U7TN5nQBjqPacr8W8mm2uMo6aWWB6gsxTDNCPk,40452
|
|
10
|
-
checkers/pdf_paper_checker.py,sha256=L5HRHd3xpo0xDltZGTAA-Wk_arIS9bQV8ITeuxW0bNc,19893
|
|
11
|
-
checkers/semantic_scholar.py,sha256=wk6e8DkYJM_O2nWsi-6EfJT53PzfL8KCmX1rS562KKc,34962
|
|
12
|
-
checkers/webpage_checker.py,sha256=REOotx7Qka86_xbOIMeYj5YVb9D1RVMb4Ye311-28cA,43620
|
|
13
|
-
config/__init__.py,sha256=r7sONsX2-ITviUJRU1KEz76uAuTRqZlzU-TVkvFRGYY,15
|
|
14
|
-
config/logging.conf,sha256=r1tP0ApLHtlz7rV-oKS1MVO7oXJOgahbZFTtYmKnf9U,687
|
|
15
|
-
config/settings.py,sha256=-vODFoXbWbGPUElpmchE5zbCj_n4Vtxr8HU1hQDFp_c,6164
|
|
16
|
-
core/__init__.py,sha256=1T2MSQyDk0u_PupbHvm4CvNNN--dxsw78fqKUrqoYrM,157
|
|
17
|
-
core/db_connection_pool.py,sha256=XRiOdehikkSz3obH4WKgf8woa3694if50Q15rBT-4XQ,4697
|
|
18
|
-
core/parallel_processor.py,sha256=cq_WfzXrF2EI6IKOtJd6_QcwvM1xT3J6a13teg-wSbM,17638
|
|
19
|
-
core/refchecker.py,sha256=-QIT5eUQaPCuQy7S80sXCvtrmcjdH5lf5wdZvsPQO9w,286416
|
|
20
|
-
database/__init__.py,sha256=mEuVHlEBuS44t_2ZT_JnvQQrlRCjo1SJq1NmaJ6r8OY,125
|
|
21
|
-
database/download_semantic_scholar_db.py,sha256=waN4I97KC_36YMiPbiBDUUmgfzu1nub5yeKdAsIR2aw,75276
|
|
22
|
-
llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
llm/base.py,sha256=uMF-KOqZ9ZQ7rccOQLpKJiW9sEMMxr7ePXBSF0yYDJY,16782
|
|
24
|
-
llm/providers.py,sha256=A0usJpprCO5D-VX0hqaQzBfi4DG3rdjA39vu02XJsGw,40092
|
|
25
|
-
scripts/__init__.py,sha256=xJwo6afG8s7S888BK2Bxw2d7FX8aLkbl0l_ZoJOFibE,37
|
|
26
|
-
scripts/start_vllm_server.py,sha256=ZepWp2y2cKFW0Kgsoima2RbmF02fTU29UFcLLpsBhFU,4213
|
|
27
|
-
services/__init__.py,sha256=jGi9S74Msak3YR-C4Qb68VU7HB4oLaX9o1rlVAFpOFI,187
|
|
28
|
-
services/pdf_processor.py,sha256=vu_JnhFGZY6jFVbDbPvG-mlQojvB-3Dzc8_946KVV2E,9427
|
|
29
|
-
utils/__init__.py,sha256=1RrGoIIn1_gVzxd56b6a7HeAS-wu7uDP-nxLbR3fJ-8,1199
|
|
30
|
-
utils/arxiv_utils.py,sha256=EzH1PhEAW0df5mmSP-kKHmuwqd4u2CSotRNwQ5IMJx8,19766
|
|
31
|
-
utils/author_utils.py,sha256=DLTo1xsxef2wxoe4s_MWrh36maj4fgnvFlsDLpDE-qQ,5507
|
|
32
|
-
utils/biblatex_parser.py,sha256=OkHXQcjiBrEDuhBfEk0RtmAYxufu5lAxAjb8__DzMjI,25537
|
|
33
|
-
utils/bibliography_utils.py,sha256=mpmdAklzAs1CT3gqrOcjujGhouL95OuliCx0LE9Pg90,11705
|
|
34
|
-
utils/bibtex_parser.py,sha256=a89NLy_q2kwED4QFJgxWFgPQOJBV73bIUL3RS_Urmro,15231
|
|
35
|
-
utils/config_validator.py,sha256=rxf7K3DYmJ-BNPsmtaCNipY2BTVT-pJZ7wN-M9Y3GC8,11167
|
|
36
|
-
utils/db_utils.py,sha256=_wSupfBlm0ILFvntQTvoj7tLDCbrYPRQrp9NDvphF_E,6281
|
|
37
|
-
utils/doi_utils.py,sha256=ezUiRnYRpoO0U_Rqgxv1FxqmeTwPh6X8gLgSDbqg5sY,4874
|
|
38
|
-
utils/error_utils.py,sha256=UJOH7Bp-rPV2JDY_XN38I2pSkqqPdnQoviKa4s4nK_A,12501
|
|
39
|
-
utils/mock_objects.py,sha256=QxU-UXyHSY27IZYN8Sb8ei0JtNkpGSdMXoErrRLHXvE,6437
|
|
40
|
-
utils/text_utils.py,sha256=KLFn8tMahx1CS_v7pbR3Phq1dGrFrTPrYmVtEw70Ps4,220868
|
|
41
|
-
utils/unicode_utils.py,sha256=-WBKarXO756p7fd7gCeNsMag4ztDNURwFX5IVniOtwY,10366
|
|
42
|
-
utils/url_utils.py,sha256=HdxIO8QvciP6Jp8Wd4sTSrS8JQrOMwgM7pxdUC8RJb4,9176
|
|
43
|
-
academic_refchecker-1.2.54.dist-info/METADATA,sha256=m_vnHyC7a_B8gTjeybU5tnvMgrstj-GaRtFh4crZxHk,23256
|
|
44
|
-
academic_refchecker-1.2.54.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
45
|
-
academic_refchecker-1.2.54.dist-info/entry_points.txt,sha256=WdI89tYkIfz-M628PiboOfOLzTBWZAqvlF29qCVCkek,61
|
|
46
|
-
academic_refchecker-1.2.54.dist-info/top_level.txt,sha256=6RlcQEA0kHb7-ndbKMFMZnYnJQVohgsU6BBkbEvJvEs,69
|
|
47
|
-
academic_refchecker-1.2.54.dist-info/RECORD,,
|
|
File without changes
|
{academic_refchecker-1.2.54.dist-info → academic_refchecker-1.2.55.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{llm → refchecker/llm}/base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|