Skip to content

Commit 852006d

Browse files
author
Ang
committed
release: prepare 0.1.0
First formal PyPI release since 0.0.12. - CHANGELOG.md / docs/changelog.rst: fold Unreleased into a dated 0.1.0 section summarising the full pyOpenSci review pass (issues #3, #5-#34, #36) plus this sprint's follow-ups. - CITATION.cff: update date-released to 2026-04-17 and rewrite abstract to say BibTeX only (APA/MLA support was removed). - .zenodo.json: same abstract alignment. pyproject.toml and onecite/__init__.py already carry version = 0.1.0; no bump needed.
1 parent f00edbc commit 852006d

4 files changed

Lines changed: 100 additions & 35 deletions

File tree

.zenodo.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"title": "OneCite: Citation Management and Academic Reference Toolkit",
3-
"description": "OneCite is a command-line tool and Python library that automates citation management. It supports multiple input formats (DOI, arXiv ID, PMID, paper titles, etc.) and generates clean, accurate bibliographic entries in BibTeX, APA, or MLA format.",
3+
"description": "OneCite is a command-line tool and Python library that automates citation management. It accepts multiple input formats (DOI, arXiv ID, PMID, paper titles, etc.) and produces clean BibTeX entries.",
44
"creators": [
55
{
66
"name": "He, Zhiang",

CHANGELOG.md

Lines changed: 59 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
66

77
## [Unreleased]
88

9-
### Changed
10-
- Split monolithic ``pipeline.py`` (~3000 lines) into a proper
11-
``onecite/pipeline/`` package with one module per stage
12-
(``parser.py`` / ``identifier.py`` / ``enricher.py`` /
13-
``formatter.py``) plus a ``_utils.py`` for shared helpers (#17).
14-
Public imports (``from onecite.pipeline import IdentifierModule``)
15-
and mocking targets (``patch("onecite.pipeline.requests.get", ...)``)
16-
continue to work unchanged.
17-
- Unify CrossRef request and parsing methods in pipeline (#26)
9+
## [0.1.0] - 2026-04-17
1810

19-
### Fixed
20-
- README no longer advertises OpenAlex and dblp as data sources — they
21-
were never wired into the code (#6).
22-
- README quick-start example now shows ``booktitle`` (NeurIPS) instead
23-
of ``journal = "arXiv preprint"`` for the ``@inproceedings`` sample
24-
(#28).
25-
- ``docs/api/pipeline.rst`` rewritten to match the actual module
26-
structure; removed references to classes and methods that never
27-
existed (``Validator`` / ``Identifier`` / ``Completer`` / ``Formatter``,
28-
``set_source_priority``, ``set_timeout``, ``add_template_path``) (#11).
29-
- ``docs/output_formats.rst``, ``docs/faq.rst``, ``docs/quick_start.rst``,
30-
``docs/python_api.rst``, ``docs/templates.rst``, ``docs/index.rst`` and
31-
docstrings in ``core.py`` / ``formatter.py`` no longer advertise
32-
APA / MLA output — the renderers were removed and the CLI rejects
33-
those values (#31, #32).
34-
35-
## [0.1.0] - 2025-02-09
11+
First formal PyPI release since `0.0.12`. Incorporates the complete
12+
pyOpenSci review pass (issues #3, #5#34, #36) plus follow-up cleanup.
3613

3714
### Added
3815
- RST documentation using Sphinx
@@ -44,6 +21,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
4421
- Auto-deploy documentation to GitHub Pages via CI
4522

4623
### Changed
24+
- **Split monolithic `pipeline.py` (~3000 lines)** into a proper
25+
`onecite/pipeline/` package with one module per stage
26+
(`parser.py` / `identifier.py` / `enricher.py` / `formatter.py`)
27+
plus a `_utils.py` for shared helpers (#17). Public imports
28+
(`from onecite.pipeline import IdentifierModule`) and mocking targets
29+
(`patch("onecite.pipeline.requests.get", ...)`) continue to work
30+
unchanged because `__init__.py` re-exports every public symbol and
31+
keeps `requests` at the package level.
32+
- Unify CrossRef request and parsing methods (#26); all CrossRef calls
33+
now go through a single helper with a proper `User-Agent` header and
34+
`mailto` query-string parameter (#21).
35+
- Rewrite fuzzy-search scoring as a weighted title / author / year /
36+
venue model with three confidence tiers (auto-adopt / interactive /
37+
cautious) and a unified low-confidence threshold (#3, #23, #27).
38+
- Simplify identifier routing; CrossRef and Semantic Scholar are always
39+
consulted for text queries, with signal-based additional queries to
40+
PubMed / Google Books / OpenAIRE / BASE (#8, #23).
41+
- Use `bibtexparser.dumps()` for BibTeX rendering (#30).
42+
- Expose `use_google_scholar` as a real CLI flag and API parameter
43+
instead of a hard-coded `False` (#10).
44+
- Clarify that templates define metadata-field requirements and a
45+
fallback BibTeX entry type, not output formatting (#16, #29).
4746
- Refactored exception hierarchy
4847
- Added type hints to Python API
4948
- Updated README examples
@@ -53,11 +52,45 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
5352
- Fixed Documentation URL in pyproject.toml to point to GitHub Pages
5453

5554
### Removed
55+
- APA and MLA output renderers; they produced inconsistent output and
56+
the CLI now rejects anything other than `--output-format bibtex`.
57+
Users wanting APA/MLA should post-process the BibTeX through pandoc
58+
or citeproc-py (#31, #32).
59+
- Hard-coded "well-known paper" shortcut that masked failures on the
60+
main example input (#19).
5661
- MCP integration page and all related references
5762
- `.readthedocs.yml` (docs now hosted on GitHub Pages)
5863
- `docs/_build/` build artifacts from repository
5964

6065
### Fixed
66+
- README / `docs/index.rst` / `docs/faq.rst` no longer advertise
67+
OpenAlex or dblp as data sources — they were never wired into the
68+
code (#6).
69+
- README quick-start example now shows `booktitle` (NeurIPS) instead
70+
of `journal = "arXiv preprint"` for the `@inproceedings` sample
71+
(#28).
72+
- `docs/api/pipeline.rst` rewritten to match the actual module
73+
structure; removed references to classes and methods that never
74+
existed (`Validator` / `Identifier` / `Completer` / `Formatter`,
75+
`set_source_priority`, `set_timeout`, `add_template_path`) (#11).
76+
- `docs/output_formats.rst`, `docs/faq.rst`, `docs/quick_start.rst`,
77+
`docs/python_api.rst`, `docs/templates.rst`, `docs/index.rst` and
78+
docstrings in `core.py` / `formatter.py` no longer advertise APA /
79+
MLA output (#31, #32).
80+
- Crossref author names parsed as `given family` instead of mangled
81+
concatenations (#22).
82+
- Semantic Scholar HTTP 429 responses return an empty candidate list
83+
cleanly instead of bubbling up (#25).
84+
- Previously-unused exception classes (`ParseError`, `ValidationError`,
85+
`FormatError`) are now actually raised in the right places (#13).
86+
- `CONTRIBUTING.md` no longer tells developers to use a `requirements.txt`
87+
that does not exist; the documented install is `pip install -e .[dev]`
88+
(#12).
89+
- `black` formatting is enforced via `pyproject.toml` `[tool.black]`
90+
plus a pre-commit hook (#15).
91+
- URL-bearing entries are no longer queried twice (#20).
92+
- Fallback paths mark entries as `identification_failed` rather than
93+
fabricating plausible-looking but invented metadata (#24).
6194
- CrossRef and Semantic Scholar response parsing edge cases
6295
- API documentation using incorrect return value fields (`output_content` -> `results`)
6396
- Version number inconsistencies across metadata files

CITATION.cff

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ authors:
88
email: "ang@hezhiang.com"
99
repository-code: "https://github.com/HzaCode/OneCite"
1010
url: "https://github.com/HzaCode/OneCite"
11-
abstract: "OneCite is a command-line tool and Python library that automates citation management. It supports multiple input formats (DOI, arXiv ID, PMID, paper titles, etc.) and generates clean, accurate bibliographic entries in BibTeX, APA, or MLA format."
11+
abstract: "OneCite is a command-line tool and Python library that automates citation management. It accepts multiple input formats (DOI, arXiv ID, PMID, paper titles, etc.) and produces clean BibTeX entries."
1212
keywords:
1313
- citation
1414
- bibliography
@@ -20,5 +20,5 @@ keywords:
2020
- research
2121
license: MIT
2222
version: "0.1.0"
23-
date-released: "2025-02-09"
23+
date-released: "2026-04-17"
2424

docs/changelog.rst

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ The format is based on `Keep a Changelog <https://keepachangelog.com/>`_, and th
88
Unreleased
99
----------
1010

11-
[0.1.0] - 2025-02-09
11+
[0.1.0] - 2026-04-17
1212
---------------------
1313

14+
First formal PyPI release since ``0.0.12``. Incorporates the complete
15+
pyOpenSci review pass (issues #3, #5–#34, #36) plus follow-up cleanup.
16+
See ``CHANGELOG.md`` at the repository root for the full per-issue list.
17+
1418
Added
1519
~~~~~
1620

@@ -25,24 +29,52 @@ Added
2529
Changed
2630
~~~~~~~
2731

32+
- **Split monolithic pipeline.py (~3000 lines)** into a proper
33+
``onecite/pipeline/`` package with one module per stage (#17)
34+
- Unify CrossRef request and parsing methods, with ``User-Agent`` and
35+
``mailto`` set per CrossRef etiquette (#21, #26)
36+
- Rewrite fuzzy-search scoring as a weighted title/author/year/venue
37+
model with three confidence tiers (#3, #23, #27)
38+
- Simplify identifier routing; CrossRef and Semantic Scholar are the
39+
always-on sources, with signal-based PubMed / Google Books /
40+
OpenAIRE / BASE queries (#8, #23)
41+
- Use ``bibtexparser.dumps()`` for BibTeX rendering (#30)
42+
- Expose ``use_google_scholar`` as a real CLI flag and API parameter (#10)
43+
- Clarify that templates define metadata-field requirements and a
44+
fallback BibTeX entry type, not output formatting (#16, #29)
2845
- Refactored exception hierarchy
2946
- Added type hints to Python API
30-
- Updated README examples
31-
- Bumped minimum Python version declaration in docs to 3.10
32-
- Updated CI actions to latest versions (checkout v4, setup-python v5)
33-
- Updated copyright year to 2024-2025
34-
- Fixed Documentation URL in pyproject.toml to point to GitHub Pages
3547

3648
Removed
3749
~~~~~~~
3850

51+
- APA and MLA output renderers; the CLI now rejects anything other than
52+
``--output-format bibtex``. Use pandoc or citeproc-py to convert the
53+
generated BibTeX to APA / MLA (#31, #32)
54+
- Hard-coded "well-known paper" shortcut that masked failures on the
55+
main example input (#19)
3956
- MCP integration page and all related references
4057
- ``.readthedocs.yml`` (docs now hosted on GitHub Pages)
4158
- ``docs/_build/`` build artifacts from repository
4259

4360
Fixed
4461
~~~~~
4562

63+
- OpenAlex and dblp no longer listed as data sources — they were never
64+
wired into the code (#6)
65+
- ``docs/api/pipeline.rst`` rewritten to match the real modules;
66+
removed references to nonexistent classes / methods (#11)
67+
- README and docs ``@inproceedings`` example now uses ``booktitle``
68+
instead of ``journal = "arXiv preprint"`` (#28)
69+
- Crossref author names parsed as ``given family`` (#22)
70+
- Semantic Scholar HTTP 429 handled cleanly (#25)
71+
- Previously-unused exception classes now raised in the right places
72+
(#13)
73+
- ``CONTRIBUTING.md`` documents ``pip install -e .[dev]`` instead of
74+
the non-existent ``requirements.txt`` (#12)
75+
- URL-bearing entries no longer queried twice (#20)
76+
- Fallback paths mark entries as ``identification_failed`` rather than
77+
fabricating invented metadata (#24)
4678
- CrossRef and Semantic Scholar response parsing edge cases
4779
- API documentation using incorrect return value fields
4880
- Version number inconsistencies across metadata files

0 commit comments

Comments
 (0)