# ChangeLog

## CHANGES

### 5.9.0

- zuul: Use openstack-python3-next-jobs template

- pre-commit: Bump versions

- Do not install code to build release notes

- Drop support for Python 3.10

### 5.8.0

- typing: Correct type of Extension.plugin argument

- tox: Use new constraints option

- pre-commit: Bump dependencies

- Update packaging configuration

- ruff: Configure hacking as external linter

- Update master for stable/2026.1

- Remove unused Makefile for doc

### 5.7.0

- Add typing classifier

- Enable logging related ruff checks

- Run mypy from tox

- Delay string interpolations at logging calls

- Remove reference to tag framework

### 5.6.0

- Deprecate warn_on_missing_entrypoint parameter

- Add py.typed file

- Unskip test

- Add conflict resolution support

- Make better use of super

- typing: Remove use of _init_attributes (2/2)

- typing: Remove use of _init_attributes (1/2)

- typing: Remove unnecessary method subclass

- docs: Update to use pyproject.toml

- tests: Trivial fixups

- Remove unnecessary type docstring field lists

- typing: Add hints to tests

- typing: Make better use of ParamSpec

- typing: Add initial type hints

- Deprecate verify_requirements flag

- Remove use of mutable default param

- trivial: Remove references to importlib_metadata

- Enable ruff, ruff-format

- Apply ruff, ruff-format

- docs: Remove cruft from configuration files

- pre-commit: Bump versions

- reno: Update master for unmaintained/2024.1

- Bump pyupgrade target to 3.10+

- Migrate bandit options to pyproject.toml

- pre-commit: Bump dependencies

- Migrate setup configuration to pyproject.toml

- Drop Python 3.9 support

- Update master for stable/2025.2

### 5.5.0

- add pyproject.toml to support pip 23.1

- tox: Remove basepython

- Update master for stable/2025.1

### 5.4.1

- Skip installation to speed up pep8

- reno: Update master for unmaintained/2023.1

### 5.4.0

- Remove explicit pbr dependency

- Add note about requirements lower bounds

- Remove Python 3.8 support

- Run pyupgrade to clean up Python 2 syntaxes

- Declare Python 3.12 support

- Update master for stable/2024.2

### 5.3.0

- reno: Update master for unmaintained/zed

- Remove old excludes

- Update master for stable/2024.1

- reno: Update master for unmaintained/xena

- reno: Update master for unmaintained/wallaby

- reno: Update master for unmaintained/victoria

### 5.2.0

- pre-commit: Integrate bandit

- pre-commit: Bump versions

- reno: Update master for unmaintained/yoga

- Bump hacking

- Update python classifier in setup.cfg

- Update master for stable/2023.2

### 5.1.0

- Revert “Moves supported python runtimes from version 3.8 to 3.10”

- Moves supported python runtimes from version 3.8 to 3.10

- Update master for stable/2023.1

### 5.0.0

### 4.1.1

- Order old importlib-metadata results by group

### 4.1.0

- Remove Extension.extras

- Fix compatibility with Python 3.12, importlib-metadata 5.0

- Fix compatibility with Python 3.10, 3.9.11

- Catch NotADirectoryError error

- Add Python3 antelope unit tests

- Update master for stable/zed

- remove unicode from code

### 4.0.0

- Fix remaining logic to support Python 3.6/7

- Drop python3.6/3.7 support in testing runtime

- Add Python3 zed unit tests

- Update master for stable/yoga

### 3.5.0

- Add Python3 yoga unit tests

- Update master for stable/xena

- Rely on member access, the preferred access since importlib_metadata 4.8

### 3.4.0

- setup.cfg: Replace dashes with underscores

- Fix formatting of release list

- Remove lower-constraints remnants

- Move flake8 as a pre-commit local target

- Add Python3 xena unit tests

- Update master for stable/wallaby

- Dropping lower constraints testing

### 3.3.0

- Use TOX_CONSTRAINTS_FILE

- Use py3 as the default runtime for tox

- Adding pre-commit

- Fix cache dir flooding when running from /tmp

- Add Python3 wallaby unit tests

- Update master for stable/victoria

### 3.2.2

- fix supported python versions in documentation

### 3.2.1

- Fix the bug 1892610. There’re some syntax errors in the comment of stevedore code

### 3.2.0

- add property methods to extension for more entry point values

### 3.1.0

- sphinxext: fix warning message for detailed list

### 3.0.0

- add release note before major version update

- switch to importlib.metadata package

### 2.0.1

- Remove Travis CI config

- Replace external mock with built-in unittest.mock

### 2.0.0

- Stop to use the __future__ module

- Switch to newer openstackdocstheme and reno versions

- Add Python3 victoria unit tests

- Mark sphinx extensions thread safe

- Remove dead files

- Drop Python 2.7 support

- Update master for stable/ussuri

### 1.32.0

- Switch to Ussuri jobs

- Blacklist sphinx 2.1.0 (autodoc bug)

- Update the constraints url

- Update master for stable/train

### 1.31.0

- Add Python 3 Train unit tests

- Add local bindep.txt

- Cap Bandit below 1.6.0 and update Sphinx requirement

- update git.openstack.org to opendev

- OpenDev Migration Patch

- Dropping the py35 testing

- Update master for stable/stein

- Delete repeated param description

- add python 3.7 unit test job

### 1.30.1

- Use template for lower-constraints

- Change openstack-dev to openstack-discuss

### 1.30.0

- Update sphinx logging to not use app object

- Removed older version of python added 3.5

- Update doc/conf.py to avoid warnings with sphinx 1.8

- add lib-forward-testing-python3 test job

- fix wrong link

- add python 3.6 unit test job

- import zuul job settings from project-config

- Update reno for stable/rocky

### 1.29.0

- Remove unnecessary py27 testenv

- Switch to stestr

- fix tox python3 overrides

- Trivial: Update pypi url to new url

- Trivial: Update pypi url to new url

- set default python to python3

- add lower-constraints job

- Updated from global requirements

- Update links in README

- Update reno for stable/queens

- Updated from global requirements

- Updated from global requirements

- Follow the new PTI for document build

### 1.28.0

- Updated from global requirements

- Remove -U from pip install

- Avoid tox_install.sh for constraints support

- add bandit to pep8 job

- move doc requirements to doc/requirements.txt

- Remove setting of version/release from releasenotes

- Updated from global requirements

### 1.27.1

- Move reno to optional docs requirements

- Remove duplicate optional requirement

### 1.27.0

- Updated from global requirements

### 1.26.0

- Updated from global requirements

- Remove Pillow from test-requirements

- Make openstackdocstheme an optional doc dependency

- Updated from global requirements

- Add an ExtensionManager.items() method

- Update reno for stable/pike

- Updated from global requirements

### 1.25.0

- Update URLs in documents according to document migration

### 1.24.0

- switch from oslosphinx to openstackdocstheme

- turn on warning-is-error for doc build

- move documentation into the new standard layout

- Updated from global requirements

- fix setuptools url

### 1.23.0

- Updated from global requirements

- Remove ‘run_sphinx’ script

- Remove unused doc/requirements.txt

- Mark as Production/Stable instead of Alpha

### 1.22.0

- Remove oslotest from test-requirements

- Updated from global requirements

- Updated from global requirements

- Updated from global requirements

- Update reno for stable/ocata

### 1.21.0

- Updated from global requirements

- Updated from global requirements

- Updated from global requirements

- Remove support for py34

### 1.20.0

- extension: add entry_point_names method

- extension: expose _find_entry_points as list_entry_points

- Allow suppression of warnings from DriverManager

- Show team and repo badges on README

- Add Constraints support

### 1.19.1

- Broken link at stevedore developer documentation

### 1.19.0

- Add Apache 2.0 license to source file

- Updated from global requirements

- Add reno for release notes management

- Updated from global requirements

- Remove reference to non-existing page

### 1.18.0

- Updated from global requirements

- Fix typos in exception.py

### 1.17.1

- do not emit warnings for missing hooks

### 1.17.0

- Remove discover from test-requirements

- make error reporting for extension loading quieter

- Add Python 3.5 classifier and venv

- Replace assertEquals() with assertEqual()

### 1.16.0

- Fix NamedExtensionManager fails when loading failing extension in order

- Remove irrelated output item

- Fix broken link about setuptools entry points

- NamedExtensionManager: call a callback when some names cannot be found

- Updated from global requirements

### 1.15.0

- Updated from global requirements

### 1.14.0

- Trivial: ignore openstack/common in flake8 exclude list

### 1.13.0

- dont claim copyright for future years

### 1.12.0

- Add a reference to entry_point_inspector

### 1.11.0

- Updated from global requirements

- Trival:Remove unused logging import

- Remove work around for NullHandler

- remove unnecessary dependency on argparse

### 1.10.0

- Use Stevedore exceptions for finding extensions

- Clean up Python 2.6 related stuff

- Updated from global requirements

- Remove Python 2.6 classifier

- cleanup tox.ini

### 1.9.0

- Updated from global requirements

- docs - Set pbr ‘warnerrors’ option for doc build

- Add clarifying language to description of scanning for plugins

- clean up default tox environment list

- Show how to add a plugin in a separate package

- replace the hard-coded history list with an auto-generated one

- Fix spelling typo for maunal

- Updated from global requirements

- Examples typo fix

### 1.8.0

- Updated from global requirements

- Updated from global requirements

- Updated from global requirements

### 1.7.0

- Updated from global requirements

- Updated from global requirements

- Titlecase looks nicer sometimes in detailed mode

- Updated from global requirements

- Updated from global requirements

- Updated from global requirements

- Update homepage to openstack hosted docs page

### 1.6.0

- Document the signature for check_func

- Updated from global requirements

- Switch badges from ‘pypip.in’ to ‘shields.io’

- Remove unnecessary openstack-common.conf

### 1.5.0

- Removed non-free color profile from .jpg

- Add sphinx integration

- Updated from global requirements

- Fix Python versions supported

- Remove run_cross_tests.sh

- fix author contact details

- re-raise exception with full traceback

### 1.4.0

- Uncap library requirements for liberty

- Add pypi download + version badges

- Updated from global requirements

### 1.3.0

- Updated from global requirements

- Fix test for finding multiple drivers

- ignore .testrepository directory created by testr

- clean up default environments run by tox

### 1.2.0

- Use pkg_resources resolve() and require() instead of load()

- Fix the README.rst file format for pypi

- Workflow documentation is now in infra-manual

- Implement a __contains__ override for extension manager

- Update link to docs in README

- Bring doc build up to standard

### 1.1.0

- Add pbr to dependency list

- Updated from global requirements

- Add more detail to the README

- Migrate tox to use testr

- Update repository location in docs

### 1.0.0

- Build universal wheels

- Work toward Python 3.4 support and testing

- warn against sorting requirements

### 1.0.0.0a1

- Updated from global requirements

- Fix incorrect image reference in documentation

- Fix requirement handling in tox

- Updated from global requirements

- use six.add_metaclass

- Updated from global requirements

- driver: raise by default on import failure

- Add doc requirements to venv environ

- Import run_cross_tests.sh from oslo-incubator

- fix link to entry point docs

### 0.15

- Only log error when no load handler is set

- Update readme with links to bug tracker and source

- Update .gitreview after moving the repository

### 0.14.1

- Fix the test manager implementation

### 0.14

- prep history for 0.14 release

- Make requirements checking optional

- Update docstrings

- Remove requirements checking for dependencies

- fix typo in contrib docs

- Add contributing instructions for github mirrors

- Allow a on_load_failure_callback to be provided

- Add venv environment to tox

- driver: remove useless arg propagate_map_exceptions

- Move to stackforge

- update release announcement file

- update release number in history

### 0.13

- update history file before release

- deprecate TestExtensionManager

- clean up docs for DriverManager

- simplify test instance factory contract

- driver extension manager test instance factory

- enabled extension manager test instance factory

- make Extension responsible for formatting its target name

- add test instance factory for the base, named, and hook managers

- use item access instead of temporary dict when ordering extensions

- DOC: Updated index.rst: distribute -> setuptools

- a work-around to avoid cpython bug (15881)

- add pypy to travis config

- add pypy to default test env list

- Fix pip call in tox config

- fix version number in blog announcement file

### 0.12

- update history and announce file for release

- remove version from setup.cfg and rely on git tag

- Switch to pbr

- Fix flake8 failures from pull/27

- Add map_method function to managers

- Fixes reporting the error when drivers have the same name

### 0.11

- prep for release 0.11

- Update null log handling for py26

### 0.10

- prep for 0.10 release

- fixed a bug in the test for propagating map exceptions

- Fix doc build with Python 2.6.x

- Update docstrings for map exception propagation

- Formatting fix

- Adds ability to propogate exceptions within map

### 0.9.1

- prep for 0.9.1 release

- Include all images from docs in sdist

### 0.9

- prep for 0.9 release

- add docs to default tox suite

- Remove reliance on distribute

- doc cleanup

- add reference to test class

- finish tutorial section on loading plugins

- remove line number references

- Add example of loading as a driver

- Add tutorial section on creating plugins

- add docs about names and namespaces

- touch up ceilometer design diagram

- add tox env for building docs

- Add structure for tutorial

- Add PyCon 2013 essay

- Update docs for NameDispatchExtensionManager

- Clean up autodoc for manager classes

- Add ExtensionManager.__getitem__

- Change sort for NamedExtensionManager

- Ignore missing extensions in named dispatch

- Set up extlinks extension

- document new name_order param in history

- Correct argument types in name sort tests

- fix type definition of names parameter

- optionally sort named extensions

- flake8 fixes

- Add travis-ci configuration file

- add python 3.3 support tag

- add python 3.3 setup to tox

- link to docs from README

### 0.8

- update settings for 0.8 release

- Check the names of plugins before importing them

- fix typo in docstring

- Let AssertionErrors bubble up

### 0.7.2

- prep for release 0.7.2

- fix logging support under python 2.6

- Run tests under python 2.6

### 0.7.1

- Fix logging configuration

### 0.7

- prepare release 0.7

- Cache the entry points discovered within a namespace

### 0.6

- Bump version to 0.6

- Load extensions before checking enabled status

- Fix line lengths for pep8

### 0.5

- Prepare for 0.5 release

- Add TestExtensionManager

### 0.4

- Add driver property to DriverManager

- Prepare release 0.4

- Remove the name argument to extension constructors

- fix inheritence hierarchy of DriverManager

- Set up logging in enabled module

- Log the full exception when plugin load fails

- Optimize implementation of NameDispatchExtensionManager

- Add response callback to _invoke_one_plugin()

- Refactor code for invoking plugins from map()

- clean up formatting

### 0.3

- make DriverManager callable

- add download link

- clean up announcement text

- add installation instructions

- update history for 0.3 release

- add dispatch managers

- documentation touch-up

### 0.2

- release 0.2 with docs

- finish first draft of documentation

- add API documentation

- rename loading; add enabling patterns

- add diagrams to illustrate the loading patterns

- Add descriptions of loading patterns

- add script for running sphinx as I edit

- add history file

### 0.1

- get the version from setup.py and always use today’s date

- doc files created by sphinx-quickstart

- logging tweak

- add DriverManager

- add hook manager

- break up monolithic module

- add EnabledExtensionManager and NamedExtensionManager

- add docstring gs

- make ExtensionManager iterable

- error when no extensions to map()

- add map method

- basic ExtensionManager implementation

- add license

- set up tox and fix packaging

- create setup.py

- Initial commit

this page last updated: 2026-07-13 22:23:38

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug