academic-refchecker 2.0.7__tar.gz → 2.0.9__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.
- {academic_refchecker-2.0.7/academic_refchecker.egg-info → academic_refchecker-2.0.9}/PKG-INFO +5 -1
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/README.md +4 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9/academic_refchecker.egg-info}/PKG-INFO +5 -1
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/main.py +13 -1
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/refchecker_wrapper.py +4 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__version__.py +1 -1
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/LICENSE +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/MANIFEST.in +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/SOURCES.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/dependency_links.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/entry_points.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/requires.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/top_level.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/__main__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/cli.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/concurrency.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/database.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/models.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-2P6L_39v.css +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-hk21nqxR.js +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/favicon.svg +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/index.html +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/vite.svg +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/thumbnail.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/websocket_manager.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/pyproject.toml +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/requirements.txt +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/download_db.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/run_tests.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/start_vllm_server.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/setup.cfg +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__main__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/crossref.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/enhanced_hybrid_checker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/github_checker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/local_semantic_scholar.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/openalex.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/openreview_checker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/pdf_paper_checker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/semantic_scholar.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/webpage_checker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/logging.conf +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/settings.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/db_connection_pool.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/parallel_processor.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/refchecker.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/database/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/database/download_semantic_scholar_db.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/base.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/providers.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/scripts/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/scripts/start_vllm_server.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/services/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/services/pdf_processor.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/__init__.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/arxiv_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/author_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/biblatex_parser.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibliography_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibtex_parser.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/config_validator.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/db_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/doi_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/error_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/mock_objects.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/text_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/unicode_utils.py +0 -0
- {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/url_utils.py +0 -0
{academic_refchecker-2.0.7/academic_refchecker.egg-info → academic_refchecker-2.0.9}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: academic-refchecker
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.9
|
|
4
4
|
Summary: A comprehensive tool for validating reference accuracy in academic papers
|
|
5
5
|
Author-email: Mark Russinovich <markrussinovich@hotmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -315,6 +315,8 @@ python run_refchecker.py --paper https://arxiv.org/abs/1706.03762 \
|
|
|
315
315
|
|
|
316
316
|
#### Google Gemini
|
|
317
317
|
|
|
318
|
+
With `GOOGLE_API_KEY` environment variable:
|
|
319
|
+
|
|
318
320
|
```bash
|
|
319
321
|
python run_refchecker.py --paper paper.tex \
|
|
320
322
|
--llm-provider google \
|
|
@@ -323,6 +325,8 @@ python run_refchecker.py --paper paper.tex \
|
|
|
323
325
|
|
|
324
326
|
#### Azure OpenAI
|
|
325
327
|
|
|
328
|
+
With `AZURE_OPENAI_API_KEY` environment variable:
|
|
329
|
+
|
|
326
330
|
```bash
|
|
327
331
|
python run_refchecker.py --paper paper.txt \
|
|
328
332
|
--llm-provider azure \
|
|
@@ -244,6 +244,8 @@ python run_refchecker.py --paper https://arxiv.org/abs/1706.03762 \
|
|
|
244
244
|
|
|
245
245
|
#### Google Gemini
|
|
246
246
|
|
|
247
|
+
With `GOOGLE_API_KEY` environment variable:
|
|
248
|
+
|
|
247
249
|
```bash
|
|
248
250
|
python run_refchecker.py --paper paper.tex \
|
|
249
251
|
--llm-provider google \
|
|
@@ -252,6 +254,8 @@ python run_refchecker.py --paper paper.tex \
|
|
|
252
254
|
|
|
253
255
|
#### Azure OpenAI
|
|
254
256
|
|
|
257
|
+
With `AZURE_OPENAI_API_KEY` environment variable:
|
|
258
|
+
|
|
255
259
|
```bash
|
|
256
260
|
python run_refchecker.py --paper paper.txt \
|
|
257
261
|
--llm-provider azure \
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9/academic_refchecker.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: academic-refchecker
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.9
|
|
4
4
|
Summary: A comprehensive tool for validating reference accuracy in academic papers
|
|
5
5
|
Author-email: Mark Russinovich <markrussinovich@hotmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -315,6 +315,8 @@ python run_refchecker.py --paper https://arxiv.org/abs/1706.03762 \
|
|
|
315
315
|
|
|
316
316
|
#### Google Gemini
|
|
317
317
|
|
|
318
|
+
With `GOOGLE_API_KEY` environment variable:
|
|
319
|
+
|
|
318
320
|
```bash
|
|
319
321
|
python run_refchecker.py --paper paper.tex \
|
|
320
322
|
--llm-provider google \
|
|
@@ -323,6 +325,8 @@ python run_refchecker.py --paper paper.tex \
|
|
|
323
325
|
|
|
324
326
|
#### Azure OpenAI
|
|
325
327
|
|
|
328
|
+
With `AZURE_OPENAI_API_KEY` environment variable:
|
|
329
|
+
|
|
326
330
|
```bash
|
|
327
331
|
python run_refchecker.py --paper paper.txt \
|
|
328
332
|
--llm-provider azure \
|
|
@@ -13,6 +13,7 @@ from fastapi.responses import FileResponse, HTMLResponse
|
|
|
13
13
|
from fastapi.staticfiles import StaticFiles
|
|
14
14
|
from pydantic import BaseModel
|
|
15
15
|
import logging
|
|
16
|
+
from refchecker.__version__ import __version__
|
|
16
17
|
|
|
17
18
|
import aiosqlite
|
|
18
19
|
from .database import db
|
|
@@ -136,6 +137,12 @@ async def health():
|
|
|
136
137
|
return {"status": "healthy"}
|
|
137
138
|
|
|
138
139
|
|
|
140
|
+
@app.get("/api/version")
|
|
141
|
+
async def version():
|
|
142
|
+
"""Return server/CLI version from refchecker package."""
|
|
143
|
+
return {"version": __version__}
|
|
144
|
+
|
|
145
|
+
|
|
139
146
|
@app.websocket("/api/ws/{session_id}")
|
|
140
147
|
async def websocket_endpoint(websocket: WebSocket, session_id: str):
|
|
141
148
|
"""WebSocket endpoint for real-time updates"""
|
|
@@ -183,10 +190,12 @@ async def start_check(
|
|
|
183
190
|
|
|
184
191
|
# Retrieve API key from config if config_id provided
|
|
185
192
|
api_key = None
|
|
193
|
+
endpoint = None
|
|
186
194
|
if llm_config_id and use_llm:
|
|
187
195
|
config = await db.get_llm_config_by_id(llm_config_id)
|
|
188
196
|
if config:
|
|
189
197
|
api_key = config.get('api_key')
|
|
198
|
+
endpoint = config.get('endpoint')
|
|
190
199
|
llm_provider = config.get('provider', llm_provider)
|
|
191
200
|
llm_model = config.get('model') or llm_model
|
|
192
201
|
logger.info(f"Using LLM config {llm_config_id}: {llm_provider}/{llm_model}")
|
|
@@ -238,7 +247,7 @@ async def start_check(
|
|
|
238
247
|
# Start check in background
|
|
239
248
|
cancel_event = asyncio.Event()
|
|
240
249
|
task = asyncio.create_task(
|
|
241
|
-
run_check(session_id, check_id, paper_source, source_type, llm_provider, llm_model, api_key, use_llm, cancel_event)
|
|
250
|
+
run_check(session_id, check_id, paper_source, source_type, llm_provider, llm_model, api_key, endpoint, use_llm, cancel_event)
|
|
242
251
|
)
|
|
243
252
|
active_checks[session_id] = {"task": task, "cancel_event": cancel_event, "check_id": check_id}
|
|
244
253
|
|
|
@@ -262,6 +271,7 @@ async def run_check(
|
|
|
262
271
|
llm_provider: str,
|
|
263
272
|
llm_model: Optional[str],
|
|
264
273
|
api_key: Optional[str],
|
|
274
|
+
endpoint: Optional[str],
|
|
265
275
|
use_llm: bool,
|
|
266
276
|
cancel_event: asyncio.Event
|
|
267
277
|
):
|
|
@@ -349,6 +359,7 @@ async def run_check(
|
|
|
349
359
|
llm_provider=llm_provider,
|
|
350
360
|
llm_model=llm_model,
|
|
351
361
|
api_key=api_key,
|
|
362
|
+
endpoint=endpoint,
|
|
352
363
|
use_llm=use_llm,
|
|
353
364
|
progress_callback=progress_callback,
|
|
354
365
|
cancel_event=cancel_event,
|
|
@@ -829,6 +840,7 @@ async def recheck(check_id: int):
|
|
|
829
840
|
llm_provider,
|
|
830
841
|
llm_model,
|
|
831
842
|
None, # API key will need to be retrieved separately
|
|
843
|
+
None, # Endpoint will need to be retrieved separately
|
|
832
844
|
True,
|
|
833
845
|
cancel_event
|
|
834
846
|
)
|
|
@@ -82,6 +82,7 @@ class ProgressRefChecker:
|
|
|
82
82
|
llm_provider: Optional[str] = None,
|
|
83
83
|
llm_model: Optional[str] = None,
|
|
84
84
|
api_key: Optional[str] = None,
|
|
85
|
+
endpoint: Optional[str] = None,
|
|
85
86
|
use_llm: bool = True,
|
|
86
87
|
progress_callback: Optional[Callable] = None,
|
|
87
88
|
cancel_event: Optional[asyncio.Event] = None,
|
|
@@ -104,6 +105,7 @@ class ProgressRefChecker:
|
|
|
104
105
|
self.llm_provider = llm_provider
|
|
105
106
|
self.llm_model = llm_model
|
|
106
107
|
self.api_key = api_key
|
|
108
|
+
self.endpoint = endpoint
|
|
107
109
|
self.use_llm = use_llm
|
|
108
110
|
self.progress_callback = progress_callback
|
|
109
111
|
self.cancel_event = cancel_event
|
|
@@ -121,6 +123,8 @@ class ProgressRefChecker:
|
|
|
121
123
|
llm_config['model'] = llm_model
|
|
122
124
|
if api_key:
|
|
123
125
|
llm_config['api_key'] = api_key
|
|
126
|
+
if endpoint:
|
|
127
|
+
llm_config['endpoint'] = endpoint
|
|
124
128
|
self.llm = create_llm_provider(
|
|
125
129
|
provider_name=llm_provider,
|
|
126
130
|
config=llm_config
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/requires.txt
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.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
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-2P6L_39v.css
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-hk21nqxR.js
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/github_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/pdf_paper_checker.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/semantic_scholar.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/webpage_checker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/db_connection_pool.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/parallel_processor.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
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/scripts/start_vllm_server.py
RENAMED
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/services/pdf_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/author_utils.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/biblatex_parser.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibliography_utils.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibtex_parser.py
RENAMED
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/config_validator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/mock_objects.py
RENAMED
|
File without changes
|
|
File without changes
|
{academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/unicode_utils.py
RENAMED
|
File without changes
|
|
File without changes
|