Skip to content

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

  • config: replace tuple lookup to set lookup (#556) (a626a71)

Code Refactoring

  • client: [breaking] enforce keyword-only arguments in init (#543) (18a9ee0)

0.15.2 (2026-08-28)

Bug Fixes

  • client: check oai-pmh errors before http status codes (#549) (8ec9821)

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

  • warnings: use futurewarning instead of deprecationwarning (#542) (18bab4c)

Documentation

  • display deprecated section as admonition in api docs (#541) (e35b70e)

0.15.0 (2026-08-22)

Features

  • client: [breaking] replace httpx with httpx2 (#527) (4cf79fd)

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

  • utils: filter none values in filter_dict_except_resumption_token (#517) (cc77d98)

0.14.3 (2026-08-21)

Performance improvements

  • utils: pre-compile regex pattern for namespace handling (#515) (62f3201)

Code Refactoring

  • models: deprecate unused iter methods (#467) (6e2b72b)

Testing

  • switch from pytest-recording to cassetter (#513) (8bf8475)

0.14.2 (2026-04-10)

Performance improvements

  • pre-compile regex pattern in get_namespace (#451) (42bd6b1)

0.14.1 (2026-04-10)

Bug Fixes

  • client: add application/xml to headers (#462) (0d65ebe)

Documentation

0.14.0 (2026-02-15)

Features

Documentation

0.13.0 (2024-05-07)

Features

  • client: make numeric arguments accept 'int | float' (#366) (b53bbed)

Documentation

0.12.1 (2024-04-25)

Bug Fixes

  • exceptions: rename nometadataformat to nometadataformats (#349) (255acb2)

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

  • client: add authentication parameter (#316) (035c0fe)

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

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_retries parameter 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)

0.6.4 (2018-10-02)

0.6.3 (2018-04-08)

  • fix unicode problems (issues 20 & 22)

0.6.2 (2017-08-11)

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.