Changelog#
This project uses a curated changelog to highlight notable changes by release. Detailed commit history remains available in GitHub.
The format is based on the Keep a Changelog guidelines, and this project adheres to Semantic Versioning.
Unreleased#
Added#
No unreleased additions at this time.
Changed#
No unreleased changes at this time.
1.0.1 - 2026-05-16#
This patch release updates security-sensitive runtime and development dependencies to remediate Dependabot-reported vulnerabilities.
Warning
It is the final PyDPlus release line that supports Python 3.9. Future major releases will require Python 3.12 or newer.
Changed#
Updated the package version to
1.0.1inpyproject.toml.Updated the minimum
urllib3version to2.7.0on Python 3.10 and newer to remediate CVE-2026-44431 and CVE-2026-44432.Retained a Python 3.9-specific
urllib3constraint below2.7.0becauseurllib3 2.7.0requires Python 3.10 or newer.Updated the minimum
cryptographyversion to46.0.7to remediate CVE-2026-39892.Updated the minimum
pytestdevelopment dependency version to9.0.3on Python 3.10 and newer to remediate CVE-2025-71176.Updated CI and testing documentation to reflect that the pytest suite now runs on Python 3.10 and newer while runtime packaging support remains Python 3.9+.
1.0.0 - 2026-04-02#
This was the first release of the pydplus package on PyPI with its original
features and functionality.
Added#
Added shared pytest fixtures and integration-test controls in
tests/conftest.py.Added unit tests in
tests/unit/test_logging.pyforpydplus.utils.log_utils.Added secure RSA ID Plus legacy credential parsing and explicit PEM persistence helpers in
src/pydplus/credentials.py.Added
IDPlusCredentialErrorinsrc/pydplus/errors/exceptions.pyfor credential parsing and key-material handling failures.Added OAuth Private Key JWT support for Administration API connections in
src/pydplus/auth.py.Added OAuth token caching and one-time 401 refresh/retry handling in
src/pydplus/api.py.Added OAuth unit coverage in
tests/unit/test_auth.pyandtests/unit/test_api_oauth.py.Added OAuth scope normalization helpers and strict scope-validation coverage in
tests/unit/test_core_utils.py.
Changed#
Refactored tests into
tests/unit/andtests/integration/with updated testing documentation and default coverage reporting.Adopted Ruff for linting, import sorting, and formatting; added Ruff configuration in
pyproject.toml; replaced the CI flake8 step with Ruff check/format validation; set the line-length standard to 130 characters; and documented targetedE501override guidance for comment/special-case lines.Documented the Requests
extract_zipped_paths()advisory triage: PyDPlus does not call the affected utility, maintainers should dismiss the related Dependabot alert as not affected, and runtime environments should setTMPDIRto a restricted-write directory where applicable.Updated
pygmentsfrom2.19.1to2.19.2(latest available) and documented risk-limiting guidance for the low-severity ReDoS advisory affecting lexer behavior in documentation tooling paths.Updated
cryptographyminimum version to46.0.6to remediate the name-constraint enforcement advisory affecting peer-name validation.Updated
pydplus.utils.log_utilswith comprehensive type hints/docstrings and improved handler/level configuration behavior.Updated
pydplus.core.PyDPlusto accept legacy key material (parsed object or.keypath) and wire it into legacy connection initialization.Updated legacy auth private-key loading to support in-memory PEM data from connection info in addition to file paths.
Refactored package-module logging to use
logging.getLogger(__name__)without import-time self-configuration and updated development logging guidance/helpers accordingly.Updated
pydplus.core.PyDPlusandcompile_connection_info()to support OAuth private-key JWK configuration via arguments, helper settings, and environment variables.Updated connection-type resolution to preserve explicit values and auto-detect complete OAuth/Legacy credential sets before defaulting.
Updated helper/environment constant mappings to include OAuth private-key path, file, and inline JWK fields.
Added explicit
oauth_issuer_urlsupport and updated OAuth issuer inference defaults to prefer Authentication API hosts for/oauth/tokenrequests, while retainingoauth_api_typeoverrides.Updated OAuth client-credentials handling to require explicit scopes, accept
+-delimited/space-delimited/iterable scope inputs, normalize internally to+-delimited values, send space-delimitedscopevalues to/oauth/tokenwith explicit form content-type, validate againstconst.OAUTH_SCOPES, and include scope-aware token caching behavior.Updated OAuth scope-preset handling so helper files define presets under
connection.oauth.scope_preset, environment variables usePYDPLUS_OAUTH_SCOPE_PRESET, and presets are merged additively with explicit scopes instead of replacing them.Updated
pydplus.utils.core_utils.get_random_string()to use thesecretsmodule for cryptographically secure random string generation.Updated
pygmentsfrom2.19.2to2.20.0inpoetry.lock, added an explicitpygments>=2.20.0dev constraint inpyproject.toml, and pinnedPygments>=2.20.0indocs/requirements.txtto remediate the Dependabot-reported ReDoS vulnerability affecting versions earlier than2.20.0.