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.
Files changed (74) hide show
  1. {academic_refchecker-2.0.7/academic_refchecker.egg-info → academic_refchecker-2.0.9}/PKG-INFO +5 -1
  2. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/README.md +4 -0
  3. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9/academic_refchecker.egg-info}/PKG-INFO +5 -1
  4. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/main.py +13 -1
  5. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/refchecker_wrapper.py +4 -0
  6. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__version__.py +1 -1
  7. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/LICENSE +0 -0
  8. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/MANIFEST.in +0 -0
  9. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/SOURCES.txt +0 -0
  10. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/dependency_links.txt +0 -0
  11. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/entry_points.txt +0 -0
  12. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/requires.txt +0 -0
  13. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/academic_refchecker.egg-info/top_level.txt +0 -0
  14. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/__init__.py +0 -0
  15. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/__main__.py +0 -0
  16. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/cli.py +0 -0
  17. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/concurrency.py +0 -0
  18. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/database.py +0 -0
  19. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/models.py +0 -0
  20. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-2P6L_39v.css +0 -0
  21. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/assets/index-hk21nqxR.js +0 -0
  22. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/favicon.svg +0 -0
  23. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/index.html +0 -0
  24. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/static/vite.svg +0 -0
  25. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/thumbnail.py +0 -0
  26. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/backend/websocket_manager.py +0 -0
  27. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/pyproject.toml +0 -0
  28. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/requirements.txt +0 -0
  29. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/download_db.py +0 -0
  30. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/run_tests.py +0 -0
  31. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/scripts/start_vllm_server.py +0 -0
  32. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/setup.cfg +0 -0
  33. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__init__.py +0 -0
  34. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/__main__.py +0 -0
  35. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/__init__.py +0 -0
  36. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/crossref.py +0 -0
  37. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/enhanced_hybrid_checker.py +0 -0
  38. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/github_checker.py +0 -0
  39. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/local_semantic_scholar.py +0 -0
  40. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/openalex.py +0 -0
  41. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/openreview_checker.py +0 -0
  42. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/pdf_paper_checker.py +0 -0
  43. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/semantic_scholar.py +0 -0
  44. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/checkers/webpage_checker.py +0 -0
  45. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/__init__.py +0 -0
  46. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/logging.conf +0 -0
  47. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/config/settings.py +0 -0
  48. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/__init__.py +0 -0
  49. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/db_connection_pool.py +0 -0
  50. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/parallel_processor.py +0 -0
  51. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/core/refchecker.py +0 -0
  52. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/database/__init__.py +0 -0
  53. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/database/download_semantic_scholar_db.py +0 -0
  54. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/__init__.py +0 -0
  55. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/base.py +0 -0
  56. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/llm/providers.py +0 -0
  57. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/scripts/__init__.py +0 -0
  58. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/scripts/start_vllm_server.py +0 -0
  59. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/services/__init__.py +0 -0
  60. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/services/pdf_processor.py +0 -0
  61. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/__init__.py +0 -0
  62. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/arxiv_utils.py +0 -0
  63. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/author_utils.py +0 -0
  64. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/biblatex_parser.py +0 -0
  65. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibliography_utils.py +0 -0
  66. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/bibtex_parser.py +0 -0
  67. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/config_validator.py +0 -0
  68. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/db_utils.py +0 -0
  69. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/doi_utils.py +0 -0
  70. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/error_utils.py +0 -0
  71. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/mock_objects.py +0 -0
  72. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/text_utils.py +0 -0
  73. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/unicode_utils.py +0 -0
  74. {academic_refchecker-2.0.7 → academic_refchecker-2.0.9}/src/refchecker/utils/url_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: academic-refchecker
3
- Version: 2.0.7
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 \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: academic-refchecker
3
- Version: 2.0.7
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
@@ -1,3 +1,3 @@
1
1
  """Version information for RefChecker."""
2
2
 
3
- __version__ = "2.0.7"
3
+ __version__ = "2.0.9"