scholarcli 1.20__tar.gz → 1.21__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 (83) hide show
  1. {scholarcli-1.20/src/scholarcli.egg-info → scholarcli-1.21}/PKG-INFO +3 -2
  2. {scholarcli-1.20 → scholarcli-1.21}/pyproject.toml +4 -3
  3. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/__init__.py +2 -1
  4. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/cli.py +947 -52
  5. scholarcli-1.21/src/scholar/crossref.py +210 -0
  6. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/llm_review.py +78 -3
  7. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/pdf.py +384 -1
  8. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/review.py +84 -21
  9. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/scholar.py +149 -23
  10. {scholarcli-1.20 → scholarcli-1.21/src/scholarcli.egg-info}/PKG-INFO +3 -2
  11. {scholarcli-1.20 → scholarcli-1.21}/src/scholarcli.egg-info/SOURCES.txt +2 -0
  12. {scholarcli-1.20 → scholarcli-1.21}/src/scholarcli.egg-info/requires.txt +1 -0
  13. scholarcli-1.21/tests/test_cli.py +1626 -0
  14. scholarcli-1.21/tests/test_crossref.py +205 -0
  15. {scholarcli-1.20 → scholarcli-1.21}/tests/test_llm_review.py +42 -0
  16. {scholarcli-1.20 → scholarcli-1.21}/tests/test_pdf.py +145 -1
  17. {scholarcli-1.20 → scholarcli-1.21}/tests/test_review.py +52 -0
  18. {scholarcli-1.20 → scholarcli-1.21}/tests/test_scholar.py +227 -0
  19. scholarcli-1.20/tests/test_cli.py +0 -739
  20. {scholarcli-1.20 → scholarcli-1.21}/LICENSE +0 -0
  21. {scholarcli-1.20 → scholarcli-1.21}/README.md +0 -0
  22. {scholarcli-1.20 → scholarcli-1.21}/setup.cfg +0 -0
  23. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/__main__.py +0 -0
  24. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/cache.py +0 -0
  25. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/enrich.py +0 -0
  26. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/notes.py +0 -0
  27. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/providers.py +0 -0
  28. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/questionary.py +0 -0
  29. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/tui.py +0 -0
  30. {scholarcli-1.20 → scholarcli-1.21}/src/scholar/utils.py +0 -0
  31. {scholarcli-1.20 → scholarcli-1.21}/src/scholarcli.egg-info/dependency_links.txt +0 -0
  32. {scholarcli-1.20 → scholarcli-1.21}/src/scholarcli.egg-info/entry_points.txt +0 -0
  33. {scholarcli-1.20 → scholarcli-1.21}/src/scholarcli.egg-info/top_level.txt +0 -0
  34. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/__init__.py +0 -0
  35. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/__init__.py +0 -0
  36. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/aggregator.py +0 -0
  37. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/arxiv.py +0 -0
  38. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/base.py +0 -0
  39. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/crossref.py +0 -0
  40. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/google_scholar.py +0 -0
  41. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/openalex.py +0 -0
  42. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/opencitations.py +0 -0
  43. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/apis/semantic_scholar.py +0 -0
  44. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/cli.py +0 -0
  45. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/exporters/__init__.py +0 -0
  46. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/exporters/bibtex.py +0 -0
  47. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/exporters/csv_exporter.py +0 -0
  48. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/exporters/tikz.py +0 -0
  49. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/filters/__init__.py +0 -0
  50. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/filters/filter_engine.py +0 -0
  51. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/models.py +0 -0
  52. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/paper_utils.py +0 -0
  53. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/parsers/__init__.py +0 -0
  54. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/parsers/pdf_parser.py +0 -0
  55. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/scoring/__init__.py +0 -0
  56. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/scoring/base.py +0 -0
  57. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/scoring/llm_scorer.py +0 -0
  58. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/scoring/tfidf_scorer.py +0 -0
  59. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/services.py +0 -0
  60. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/snowballing.py +0 -0
  61. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/storage/__init__.py +0 -0
  62. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/storage/json_storage.py +0 -0
  63. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/tui/__init__.py +0 -0
  64. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/tui/app.py +0 -0
  65. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/tui/dialogs.py +0 -0
  66. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/tui/setup.py +0 -0
  67. {scholarcli-1.20 → scholarcli-1.21}/src/snowball/visualization.py +0 -0
  68. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/__init__.py +0 -0
  69. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/analysis.py +0 -0
  70. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/cli.py +0 -0
  71. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/clustering.py +0 -0
  72. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/database.py +0 -0
  73. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/grobid.py +0 -0
  74. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/logging.py +0 -0
  75. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/models.py +0 -0
  76. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/project.py +0 -0
  77. {scholarcli-1.20 → scholarcli-1.21}/src/tuxedo/tui.py +0 -0
  78. {scholarcli-1.20 → scholarcli-1.21}/tests/test_cache.py +0 -0
  79. {scholarcli-1.20 → scholarcli-1.21}/tests/test_enrich.py +0 -0
  80. {scholarcli-1.20 → scholarcli-1.21}/tests/test_notes.py +0 -0
  81. {scholarcli-1.20 → scholarcli-1.21}/tests/test_providers.py +0 -0
  82. {scholarcli-1.20 → scholarcli-1.21}/tests/test_tui.py +0 -0
  83. {scholarcli-1.20 → scholarcli-1.21}/tests/test_utils.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scholarcli
3
- Version: 1.20
3
+ Version: 1.21
4
4
  Summary: A tool for structured literature searches across bibliographic databases
5
5
  Author-email: Daniel Bosk <dbosk@kth.se>, Ric Glassey <glassey@kth.se>
6
6
  License-Expression: MIT
7
- Requires-Python: >=3.12
7
+ Requires-Python: <4.0,>=3.12
8
8
  Description-Content-Type: text/markdown
9
9
  License-File: LICENSE
10
10
  Requires-Dist: requests>=2.32.5
@@ -35,6 +35,7 @@ Requires-Dist: openai>=1.0.0
35
35
  Requires-Dist: pyyaml>=6.0
36
36
  Requires-Dist: questionary>=2.0.0
37
37
  Requires-Dist: llm-github-copilot>=0.3.1
38
+ Requires-Dist: llm-mistral<0.16,>=0.15
38
39
  Dynamic: license-file
39
40
 
40
41
  # Scholar
@@ -1,12 +1,12 @@
1
1
  [project]
2
2
  name = "scholarcli"
3
- version = "1.20"
3
+ version = "1.21"
4
4
  description = "A tool for structured literature searches across bibliographic databases"
5
5
  authors = [{ name = "Daniel Bosk", email = "dbosk@kth.se" },
6
6
  { name = "Ric Glassey", email = "glassey@kth.se" }]
7
7
  readme = "README.md"
8
8
  license = "MIT"
9
- requires-python = ">= 3.12"
9
+ requires-python = ">=3.12,<4.0"
10
10
  dependencies = [
11
11
  "requests>=2.32.5",
12
12
  "typer>=0.21.0",
@@ -38,6 +38,7 @@ dependencies = [
38
38
  "pyyaml>=6.0",
39
39
  "questionary>=2.0.0",
40
40
  "llm-github-copilot>=0.3.1",
41
+ "llm-mistral (>=0.15,<0.16)",
41
42
  ]
42
43
 
43
44
  [project.scripts]
@@ -64,6 +65,6 @@ line-length = 78
64
65
  dev = [
65
66
  "pytest (>=9.0.2,<10.0.0)",
66
67
  "pytest-cov (>=7.0.0,<8.0.0)",
67
- "black (>=25.12.0,<26.0.0)",
68
+ "black>=25.12.0,<27.0.0",
68
69
  "mypy (>=1.19.1,<2.0.0)"
69
70
  ]
@@ -3,7 +3,7 @@ Scholar package for structured literature searches.
3
3
  """
4
4
 
5
5
  from .scholar import Search, SearchResult, Paper, SearchFilters
6
- from .scholar import search, filter_papers
6
+ from .scholar import search, filter_papers, deduplicate_papers
7
7
  from .scholar import get_registry, isolated_registry
8
8
  from .utils import safe_get_nested, ensure_list
9
9
 
@@ -14,6 +14,7 @@ __all__ = [
14
14
  "SearchFilters",
15
15
  "search",
16
16
  "filter_papers",
17
+ "deduplicate_papers",
17
18
  "get_registry",
18
19
  "isolated_registry",
19
20
  "safe_get_nested",