citegraph 0.2.0__tar.gz → 0.2.1__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 (123) hide show
  1. {citegraph-0.2.0 → citegraph-0.2.1}/CHANGELOG.md +8 -0
  2. {citegraph-0.2.0 → citegraph-0.2.1}/PKG-INFO +10 -6
  3. {citegraph-0.2.0 → citegraph-0.2.1}/README.md +8 -4
  4. {citegraph-0.2.0 → citegraph-0.2.1}/docs/RELEASE.md +2 -2
  5. {citegraph-0.2.0 → citegraph-0.2.1}/docs/USER_GUIDE.md +4 -0
  6. {citegraph-0.2.0 → citegraph-0.2.1}/pyproject.toml +2 -2
  7. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/__init__.py +4 -2
  8. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/reports.py +1 -1
  9. {citegraph-0.2.0 → citegraph-0.2.1}/.github/workflows/ci.yml +0 -0
  10. {citegraph-0.2.0 → citegraph-0.2.1}/.github/workflows/publish.yml +0 -0
  11. {citegraph-0.2.0 → citegraph-0.2.1}/.gitignore +0 -0
  12. {citegraph-0.2.0 → citegraph-0.2.1}/.jupyter-config/migrated +0 -0
  13. {citegraph-0.2.0 → citegraph-0.2.1}/LICENSE +0 -0
  14. {citegraph-0.2.0 → citegraph-0.2.1}/docs/UI_ARCHITECTURE.md +0 -0
  15. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_build.pdf +0 -0
  16. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_build.svg +0 -0
  17. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_projection.pdf +0 -0
  18. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_projection.svg +0 -0
  19. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_why.pdf +0 -0
  20. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/cocitation_why.svg +0 -0
  21. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_build.pdf +0 -0
  22. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_build.svg +0 -0
  23. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_layers.pdf +0 -0
  24. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_layers.svg +0 -0
  25. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_ties.pdf +0 -0
  26. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/institutional_ties.svg +0 -0
  27. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/pipeline.pdf +0 -0
  28. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/pipeline.svg +0 -0
  29. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/pipeline_v2.pdf +0 -0
  30. {citegraph-0.2.0 → citegraph-0.2.1}/docs/figures/pipeline_v2.svg +0 -0
  31. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-06-unified-works-model.md +0 -0
  32. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-11-canonicalization-reliability.md +0 -0
  33. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-12-canonicalization-reliability-results.md +0 -0
  34. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-13-incremental-reruns.md +0 -0
  35. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-13-pipeline-robustness.md +0 -0
  36. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/plans/2026-09-19-pypi-release-hardening.md +0 -0
  37. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-06-unified-works-model-design.md +0 -0
  38. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-11-canonicalization-reliability-design.md +0 -0
  39. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-13-enrichment-and-downstream-design.md +0 -0
  40. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-13-incremental-reruns-design.md +0 -0
  41. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-13-pipeline-robustness-design.md +0 -0
  42. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-15-institutional-network-figures-design.md +0 -0
  43. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-15-supervision-cocitation-figures-design.md +0 -0
  44. {citegraph-0.2.0 → citegraph-0.2.1}/docs/superpowers/specs/2026-09-19-pypi-release-hardening-design.md +0 -0
  45. {citegraph-0.2.0 → citegraph-0.2.1}/evaluation/README.md +0 -0
  46. {citegraph-0.2.0 → citegraph-0.2.1}/evaluation/RESULTS.md +0 -0
  47. {citegraph-0.2.0 → citegraph-0.2.1}/evaluation/evaluate.py +0 -0
  48. {citegraph-0.2.0 → citegraph-0.2.1}/evaluation/gold/sample_paper.json +0 -0
  49. {citegraph-0.2.0 → citegraph-0.2.1}/examples/quickstart.ipynb +0 -0
  50. {citegraph-0.2.0 → citegraph-0.2.1}/scripts/evaluate_canonicalization.py +0 -0
  51. {citegraph-0.2.0 → citegraph-0.2.1}/scripts/smoke_test.sh +0 -0
  52. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/_progress.py +0 -0
  53. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/annotations.py +0 -0
  54. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/author_export.py +0 -0
  55. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/author_overrides.py +0 -0
  56. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/authors.py +0 -0
  57. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/cli.py +0 -0
  58. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/cocitation_stats.py +0 -0
  59. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/config.py +0 -0
  60. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/cost_estimation.py +0 -0
  61. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/dedup.py +0 -0
  62. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/enrich.py +0 -0
  63. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/extract_metadata.py +0 -0
  64. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/extract_references.py +0 -0
  65. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/graph.py +0 -0
  66. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/html_report.py +0 -0
  67. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/identity.py +0 -0
  68. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/ids.py +0 -0
  69. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/io.py +0 -0
  70. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/jel.py +0 -0
  71. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/journals.py +0 -0
  72. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/llm.py +0 -0
  73. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/pdf_to_markdown.py +0 -0
  74. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/pipeline.py +0 -0
  75. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/plotting.py +0 -0
  76. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/schemas.py +0 -0
  77. {citegraph-0.2.0 → citegraph-0.2.1}/src/citegraph/webui.py +0 -0
  78. {citegraph-0.2.0 → citegraph-0.2.1}/tests/__init__.py +0 -0
  79. {citegraph-0.2.0 → citegraph-0.2.1}/tests/conftest.py +0 -0
  80. {citegraph-0.2.0 → citegraph-0.2.1}/tests/fixtures/canonicalization/authors.json +0 -0
  81. {citegraph-0.2.0 → citegraph-0.2.1}/tests/fixtures/canonicalization/works.json +0 -0
  82. {citegraph-0.2.0 → citegraph-0.2.1}/tests/fixtures/sample_paper.md +0 -0
  83. {citegraph-0.2.0 → citegraph-0.2.1}/tests/fixtures/sample_paper.metadata.json +0 -0
  84. {citegraph-0.2.0 → citegraph-0.2.1}/tests/fixtures/sample_paper.references.json +0 -0
  85. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_annotations.py +0 -0
  86. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_author_export.py +0 -0
  87. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_author_external_ids.py +0 -0
  88. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_author_overrides.py +0 -0
  89. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_authors.py +0 -0
  90. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_canonicalization_evaluation.py +0 -0
  91. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_cli.py +0 -0
  92. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_cocitation_stats.py +0 -0
  93. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_cost_estimation.py +0 -0
  94. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_dedup.py +0 -0
  95. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_demo_out.py +0 -0
  96. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_enrich.py +0 -0
  97. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_enrichment_author_agreement.py +0 -0
  98. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_failure_isolation.py +0 -0
  99. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_graph.py +0 -0
  100. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_ids.py +0 -0
  101. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_incremental_cache.py +0 -0
  102. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_incremental_enrichment.py +0 -0
  103. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_incremental_pipeline.py +0 -0
  104. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_inline_citation_check.py +0 -0
  105. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_io.py +0 -0
  106. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_jel.py +0 -0
  107. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_journals.py +0 -0
  108. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_llm_json_repair.py +0 -0
  109. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_multi_section_references.py +0 -0
  110. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_packaging.py +0 -0
  111. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_pdf_traversal.py +0 -0
  112. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_persistent_identity.py +0 -0
  113. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_pipeline.py +0 -0
  114. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_plotting.py +0 -0
  115. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_reliability_dedup.py +0 -0
  116. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_reliability_pipeline.py +0 -0
  117. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_report.py +0 -0
  118. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_resolution_audit.py +0 -0
  119. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_schemas.py +0 -0
  120. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_slice_references.py +0 -0
  121. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_smoke_script.py +0 -0
  122. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_truncation_retry.py +0 -0
  123. {citegraph-0.2.0 → citegraph-0.2.1}/tests/test_webui.py +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.1 — 2026-11-01
4
+
5
+ - Describe the library as building and analyzing citation and author networks
6
+ with LLM-assisted extraction.
7
+ - Make the current Gemini-only extraction support explicit in the README and
8
+ user guide, with additional LLM providers planned. This release changes
9
+ documentation and package metadata; it does not add another LLM provider.
10
+
3
11
  ## 0.2.0 — 2026-11-01
4
12
 
5
13
  Public research beta. This release replaces the earlier papers/references model
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: citegraph
3
- Version: 0.2.0
4
- Summary: Build a deduplicated citation graph from a folder of academic PDFs using Gemini.
3
+ Version: 0.2.1
4
+ Summary: Build and analyze citation and author networks from academic PDFs with LLM-assisted extraction.
5
5
  Project-URL: Homepage, https://github.com/yabramuvdi/citegraph
6
6
  Project-URL: Repository, https://github.com/yabramuvdi/citegraph
7
7
  Project-URL: Issues, https://github.com/yabramuvdi/citegraph/issues
@@ -56,19 +56,23 @@ Description-Content-Type: text/markdown
56
56
 
57
57
  # citegraph
58
58
 
59
- Turn a folder of academic PDFs into a citation graph you can query, and then
60
- ask who the literature reads together.
59
+ Build and analyze citation and author networks from academic PDFs with
60
+ LLM-assisted extraction.
61
61
 
62
62
  `citegraph` is for a researcher who has a corpus of papers — a literature
63
63
  review, a field's working papers, a lab's output — and wants to study it
64
64
  bibliometrically without hand-coding bibliographies. It converts each PDF to
65
- text locally, has a large language model extract the paper's metadata and its
65
+ text locally, uses Google Gemini to extract the paper's metadata and its
66
66
  full reference list, resolves every bibliographic record into one canonical
67
67
  **work**, and clusters author names across the corpus into canonical
68
68
  **authors**. On top of those tables it builds the author co-citation network
69
69
  and offers a test for whether a documented relationship between two people
70
70
  shows up in how the field cites them.
71
71
 
72
+ **Current LLM support:** metadata and reference extraction use Google Gemini.
73
+ Support for additional LLM providers is planned. PDF conversion, graph queries,
74
+ and network analysis run locally.
75
+
72
76
  Everything lands as plain CSVs in one output directory, every stage is
73
77
  checkpointed, and nothing is sent anywhere until you have seen a cost estimate.
74
78
 
@@ -855,7 +859,7 @@ for the full checklist. To cut a release:
855
859
 
856
860
  1. Update the version and changelog as described in [docs/RELEASE.md](docs/RELEASE.md).
857
861
  2. Commit and push to `main`.
858
- 3. `git tag v0.2.0 && git push origin v0.2.0` — the workflow then builds an
862
+ 3. `git tag v0.2.1 && git push origin v0.2.1` — the workflow then builds an
859
863
  sdist + wheel and publishes them to PyPI.
860
864
 
861
865
  To dry-run against TestPyPI first, build locally and upload manually:
@@ -1,18 +1,22 @@
1
1
  # citegraph
2
2
 
3
- Turn a folder of academic PDFs into a citation graph you can query, and then
4
- ask who the literature reads together.
3
+ Build and analyze citation and author networks from academic PDFs with
4
+ LLM-assisted extraction.
5
5
 
6
6
  `citegraph` is for a researcher who has a corpus of papers — a literature
7
7
  review, a field's working papers, a lab's output — and wants to study it
8
8
  bibliometrically without hand-coding bibliographies. It converts each PDF to
9
- text locally, has a large language model extract the paper's metadata and its
9
+ text locally, uses Google Gemini to extract the paper's metadata and its
10
10
  full reference list, resolves every bibliographic record into one canonical
11
11
  **work**, and clusters author names across the corpus into canonical
12
12
  **authors**. On top of those tables it builds the author co-citation network
13
13
  and offers a test for whether a documented relationship between two people
14
14
  shows up in how the field cites them.
15
15
 
16
+ **Current LLM support:** metadata and reference extraction use Google Gemini.
17
+ Support for additional LLM providers is planned. PDF conversion, graph queries,
18
+ and network analysis run locally.
19
+
16
20
  Everything lands as plain CSVs in one output directory, every stage is
17
21
  checkpointed, and nothing is sent anywhere until you have seen a cost estimate.
18
22
 
@@ -799,7 +803,7 @@ for the full checklist. To cut a release:
799
803
 
800
804
  1. Update the version and changelog as described in [docs/RELEASE.md](docs/RELEASE.md).
801
805
  2. Commit and push to `main`.
802
- 3. `git tag v0.2.0 && git push origin v0.2.0` — the workflow then builds an
806
+ 3. `git tag v0.2.1 && git push origin v0.2.1` — the workflow then builds an
803
807
  sdist + wheel and publishes them to PyPI.
804
808
 
805
809
  To dry-run against TestPyPI first, build locally and upload manually:
@@ -50,8 +50,8 @@ in the repository.
50
50
  Create and push a version tag:
51
51
 
52
52
  ```bash
53
- git tag v0.2.0
54
- git push origin v0.2.0
53
+ git tag v0.2.1
54
+ git push origin v0.2.1
55
55
  ```
56
56
 
57
57
  The `Publish` workflow builds the package, checks metadata, and publishes to
@@ -4,6 +4,10 @@ This guide walks a researcher from a folder of PDFs to a checked, queryable
4
4
  citation graph. It also explains which decisions deserve human review and what
5
5
  data leaves the computer during a run.
6
6
 
7
+ Metadata and reference extraction currently support Google Gemini only.
8
+ Support for additional LLM providers is planned. PDF conversion, graph queries,
9
+ and network analysis run locally.
10
+
7
11
  ## 1. Install
8
12
 
9
13
  `citegraph` requires Python 3.11 or newer. Upgrade `pip` before installing the
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "citegraph"
7
- version = "0.2.0"
8
- description = "Build a deduplicated citation graph from a folder of academic PDFs using Gemini."
7
+ version = "0.2.1"
8
+ description = "Build and analyze citation and author networks from academic PDFs with LLM-assisted extraction."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  license = { text = "MIT" }
@@ -1,4 +1,6 @@
1
- """citegraph: build a deduplicated citation graph from a folder of PDFs.
1
+ """Build and analyze citation and author networks from academic PDFs.
2
+
3
+ LLM-assisted metadata and reference extraction currently uses Google Gemini.
2
4
 
3
5
  See :class:`citegraph.Pipeline` for the high-level entry point::
4
6
 
@@ -41,4 +43,4 @@ __all__ = [
41
43
  "parse_author",
42
44
  ]
43
45
 
44
- __version__ = "0.2.0"
46
+ __version__ = "0.2.1"
@@ -23,7 +23,7 @@ def _package_version() -> str:
23
23
  try:
24
24
  return version("citegraph")
25
25
  except PackageNotFoundError:
26
- return "0.2.0"
26
+ return "0.2.1"
27
27
 
28
28
 
29
29
  def write_artifact_manifest(
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