From 9f9298f590ed16bba4e5c4be0c137dea96000981 Mon Sep 17 00:00:00 2001 From: Mike <15776765+MikeWooster@users.noreply.github.com> Date: Sun, 7 Jun 2026 20:24:20 +0100 Subject: [PATCH 1/3] docs: drop dormancy banner, note apiclient namespace clash (#88) --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 3b4bb9f..e3509ff 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,5 @@ [![Unit Tests](https://github.com/MikeWooster/api-client/actions/workflows/test.yml/badge.svg)](https://github.com/MikeWooster/api-client/actions/workflows/test.yml) -# Note to users of this API - -To those that have been paying attention to the commit history will note that -I have had no time to actively maintain this library. If there are any volunteers -to continue the development of this library, I would be happy to add you as -contributors. Please get in touch, and I will try to sort out a group to continue -this development. Also note, that my reply time may not be that timely, so please -be patient. - # Python API Client A client for communicating with an api should be a clean abstraction @@ -39,6 +30,16 @@ that code away from the clean abstraction you have designed. pip install api-client ``` +The distribution is `api-client`, but the import package is `apiclient`: + +```python +from apiclient import APIClient +``` + +> **Note:** this package imports as `apiclient` and conflicts with any other installed +> library that uses the same import name (such as `google-api-python-client`). See +> [#88](https://github.com/MikeWooster/api-client/issues/88). + ## Usage ### Simple Example From f86393188c8f47536ae9b1056663d105b59f496f Mon Sep 17 00:00:00 2001 From: Mike <15776765+MikeWooster@users.noreply.github.com> Date: Sun, 7 Jun 2026 20:24:20 +0100 Subject: [PATCH 2/3] build: use find_packages and drop dead generate_changelog script --- scripts/generate_changelog.py | 12 ------------ setup.py | 2 +- 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 scripts/generate_changelog.py diff --git a/scripts/generate_changelog.py b/scripts/generate_changelog.py deleted file mode 100644 index 5d2c554..0000000 --- a/scripts/generate_changelog.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -Generate a new changelog entry from commits since the last entry. -""" -# TODO: create this script - - -def main(): - pass - - -if __name__ == "__main__": - main() diff --git a/setup.py b/setup.py index 8b21b6e..c93c8bb 100644 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ author_email="", url="https://github.com/MikeWooster/api-client", python_requires=">=3.10", - packages=["apiclient"], + packages=setuptools.find_packages(exclude=["tests", "tests.*"]), package_data={"apiclient": ["py.typed"]}, classifiers=[ "Development Status :: 5 - Production/Stable", From dea4709060cd9f1a64a6cffce801289f4923dc19 Mon Sep 17 00:00:00 2001 From: Mike <15776765+MikeWooster@users.noreply.github.com> Date: Sun, 7 Jun 2026 20:24:20 +0100 Subject: [PATCH 3/3] release: 2.0.0 --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ VERSION | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cd613ee --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,31 @@ +# Changelog + +All notable changes to this project are documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## 2.0.0 + +### Added +- Support for Python 3.10 through 3.14. +- A `py.typed` marker so type checkers use the bundled inline type hints (#77). +- A wheel is now published alongside the source distribution. + +### Changed +- Minimum supported Python is now 3.10. +- Type hints modernised to use PEP 604 unions (`X | None`) and built-in generics. +- `clone()` preserves attributes set in subclass constructors (#73). +- `@endpoint` includes inherited attributes and ignores methods and functions (#68). +- **Breaking:** paginator `next_page` callbacks now receive a `Response` object instead of the + decoded body. Use `response.get_json()` for the body and `response.get_original()` for the + underlying response (e.g. headers and links) (#86). + +### Removed +- Support for Python 3.6, 3.7, 3.8 and 3.9. +- The `OptionalDict`, `OptionalStr`, `OptionalInt` and `OptionalJsonType` aliases from `apiclient.utils.typing` (use `X | None` directly). + +### Fixed +- Unrelated exceptions are no longer masked as `UnexpectedError`; only request errors are wrapped (#80). +- `post()`, `put()` and `patch()` type hints accept JSON arrays, not just objects (#90). +- `paginators` imports `APIClient` from `apiclient.client` instead of the package root (#78). diff --git a/VERSION b/VERSION index 3a3cd8c..227cea2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3.1 +2.0.0