Changelog
All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning. See conventional commits for commit guidelines.
0.16.0 (2026-08-30)
Features
- client: add transport error retries to retryconfig (#555) (abed96f)
- client: add httpconfig.user_agent (b5ab996)
- client: add HTTPConfig and deprecate http arguments (7f54b60)
- client: add retryconfig and deprecate retry arguments (45652bf)
Performance improvements
Code Refactoring
0.15.2 (2026-08-28)
Bug Fixes
Code Refactoring
- client: deprecate get_retry_after method (#548) (ab536d0)
- types: replace _Element with etree.Element in type annotations (#545) (91593df)
0.15.1 (2026-08-25)
Bug Fixes
Documentation
0.15.0 (2026-08-22)
Features
Code Refactoring
- iterator: use getattr to handle optional deleted attribute (#523) (7e4ec74)
- models: declare explicit attributes in identify, set, metadataformat (#525) (46d5075)
- models: fix type error in record.get_metadata namespace handling (#522) (a978135)
- types: add isinstance checks for type narrowing (#524) (c6b9f77)
- types: ensure get_namespace always returns str (#519) (fe14463)
- enable flake8-annotations rule and add type annotations (#518) (351b3df)
0.14.4 (2026-08-22)
Bug Fixes
0.14.3 (2026-08-21)
Performance improvements
Code Refactoring
Testing
0.14.2 (2026-04-10)
Performance improvements
0.14.1 (2026-04-10)
Bug Fixes
Documentation
0.14.0 (2026-02-15)
Features
Documentation
- citation: add concept doi to citation.cff (#368) (41e3835)
- readme: add doi badge (#367) (609211d)
- set up versioned docs with mike (#374) (347f7dc)
0.13.0 (2024-05-07)
Features
Documentation
- readme: add codeql badge (#365) (eca3e3b)
- tutorial: fix typo (#353) (65f75b8)
- add references to exceptions in docstrings (#351) (4df8491)
0.12.1 (2024-04-25)
Bug Fixes
Code Refactoring
- client: set up explicit default encoding in httpx.Client (#330) (25ef4cb)
- iterator: rename params argument to query in itemiterator (#329) (1de6cd5)
- make all exceptions available in the main init file (#348) (bad60ff)
Documentation
- add api reference pages for all modules (#344) (8578031)
- add python standard library inventory (#338) (20d176c)
0.12.0 (2024-04-04)
Features
Documentation
- readme: add download badges to readme (#294) (c375ea9)
- add pypi project version to release notes template (#282) (c9d37ea)
- update environment section in bug report template (#281) (a2c225a)
- add ci to types of changes in pr template (#272) (f2745e7)
- rename code of conduct (#270) (1994bf3)
- add license headers to documentation (#258) (63aa318)
0.11.0 (2024-01-25)
Features
Documentation
- readme: add pypi downloads badge to readme (#243) (1f87b18)
- readme: add pypi package information to readme (#237) (ada4dcf)
- readme: add minor improvements to readme (#234) (9871491)
- update python version in contributor guide (#248) (81366d8)
- add initial citation.cff (#240) (135a433)
- make urls in docstrings clickable (#233) (55bf699)
0.10.0 (2024-01-22)
Features
- [breaking] make request arguments explicit (#212) (c61fab3)
- [breaking] remove request_args from scythe class and _request method (#199) (2be27aa)
- [breaking] drop support for oai-pmh version 1.0 (#183) (8644c4b)
- [breaking] drop support for python < 3.10 (#180) (cb3b99c)
Code Refactoring
- client: remove obsolete is_error_code() (#177) (1e6dfe1)
- add accept text/xml headers to client config (#155) (4d92818)
Testing
Documentation
- readme: update required python version (8237d2c)
- readme: restyle project metadata table (#214) (e2487cc)
- readme: rephrase introduction about fork (#202) (de65418)
- update author name (5f286e1)
- add more alternatives (#192) (5062a38)
- add full changelog to release notes (#149) (19a98f5)
0.9.0 (2023-11-18)
Features
Performance improvements
Documentation
- readme: add similar projects section (f45781f)
- readme: add acknowledgments section (20ecd64)
- readme: add short descriptions of requirements (a573150)
- remove outdated credits page (47c80e8)
- rename api docs page to client (cf77d57)
- change breaking changes heading (#138) (69a8572)
0.8.0 (2023-11-16)
First release of oaipmh-scythe, a fork of sickle. Forked from sickle 0.7.0 (commit 14ef88e).
Breaking Changes
- drop support for Python 2
- drop support for EOL Python 3.7 and below
- rename Sickle class to Scythe to reflect the change of the project name
- switch to PEP8 compliant names for methods (ListRecords() -> list_records())
- remove .next() method from iterator classes
Features
- set up default custom user agent (oaipmh-scythe/{version})
Performance Improvements
- make iterator classes yield their responses
Code Refactoring
- switch from requests to httpx
- make BaseOAIIterator an ABC
- move version information to
__about__.py - add a custom base exception
Testing
- switch from nose to pytest
- add tests for Python 3.8 - 3.12 in CI
- use canned responses from Zenodo to test harvesting logic (vcr.py)
Documentation
- update license text
- update authors and contributors
- update copyright notice in src files
- add contributor guide
- add security policy
- add issue and pull request templates
- add custom GitHub labels
- switch from Sphinx to mkdocs-material
- switch from Read the Docs to GitHub pages
- switch from reStructuredText to Markdown
- switch to Zenodo for harvesting examples
- update README badges
Other
- switch from Travis CI to Github actions for CI
- add scheduled dependency updates with Dependabot
- add pre-commit hooks (e.g. ruff, mypy)
- switch to src layout
- switch from setup.py to pyproject.toml
- switch to hatch for project setup
- add type annotations
- switch to Google style docstrings
- rename first tags of sickle project for consistency (e.g. v0.5 -> 0.5.0)
- enable CodeQL scanning
- add OpenSSF Scorecard report
Entries below are from upstream https://github.com/mloesch/sickle.
0.7.0 (2020-05-17)
- method for record metadata extraction has been extracted (
Record.get_metadata()) to make subclassing easier (mloesch/sickle#38) - retryable HTTP status codes and default wait time between retries can be customized (mloesch/sickle#21 mloesch/sickle#41)
- retry logic has been fixed:
max_retriesparameter now refers to no. of retries, not counting the initial request anymore - the default number of HTTP retries has been set to 0 (= no retries)
- fix for mloesch/sickle#39
0.6.5 (2020-01-12)
- fix: repr methods where causing an exception on Python 3 (mloesch/sickle#30)
0.6.4 (2018-10-02)
- fix: resumption token with empty body indicates last response (mloesch/sickle#25)
0.6.3 (2018-04-08)
- fix unicode problems (issues 20 & 22)
0.6.2 (2017-08-11)
- missing datestamp and identifier elements in record header don\'t break harvesting
- lxml resolve_entities disabled (http://lxml.de/FAQ.html#how-do-i-use-lxml-safely-as-a-web-service-endpoint)
0.6.1 (2016-11-13)
- it is now possible to pass any keyword arguments to requests
- the encoding used to decode the server response can be overridden
0.5.0 (2015-11-12)
- support for Python 3
- consider resumption tokens with empty tag bodies
0.4.0 (2015-05-31)
- bug fix: resumptionToken parameter is exclusive
- added support for harvesting complete OAI-XML responses
0.3.0 (2013-04-17)
- added support for protected OAI interfaces (basic authentication)
- made class mapping for OAI elements configurable
- added options for HTTP timeout and max retries
- added handling of HTTP 503 responses
0.2.0 (2013-02-26)
- OAI items are now represented as their own classes instead of XML elements
- library raises OAI-specific exceptions
- made lxml a required dependency
0.1.0 (2013-02-20)
First public release.