- Drop Python 3.5, 3.6, and 3.7.
- Add Python 3.9, 3.10, 3.11, and 3.12.
- Add a helpful error message if the
name=argument is forgotten by simply passing a string directly intoget('oops'). See #44
- Added the
__wired_factory__protocol which enables classes/functions. This feature allows objects to declare their factory in a reusable way near the definition of the class/function instead of near theServiceRegistry.register_factoryinvocation. Build some decorators that automatically inject this protocol! See #41 - Added the
wired.service_factoryvenusian decorator which can be used to discover factories by setting up avenusian.Scannerand scanning your code to auto-register the services. In the futurewiredwill likely provide top-level scanning, but for now you have to do it yourself and there are examples in the docs. See #41
- Added a
nameargument towired.dataclasses.register_dataclassto support registering services by name. See #32 - Removed the "how to write an injector" tutorial, then flatten a lot of the docs into no more than two levels (to please the RTD theme.) See #32
- Added
wired.dataclassesoptional package with support for automatically generating service factories for Python 3.7's typed-dataclasses. Thanks Paul! See #19 - Added a new tutorial on writing a DI framework around Python 3.7's typed-dataclasses. Thanks again Paul! See #16
wired.ServiceContainer.sethas been redefined to set a service instance for a specific context object instead of for a type-of-context. The new methodwired.ServiceContainer.register_singletonis a direct replacement for the old behavior.
- Add
wired.ServiceContainer.register_factoryandwired.ServiceContainer.register_singletonwhich are per-container analogues to their per-registry variants onwired.ServiceRegistry. - Edit docs to (a) improve sales pitch, (b) split into a couple of sub-pages,
and (c) provide a tutorial. Update README and
setup.pydescription a bit as well. See #6
- Add support for Python 3.7.
- Fix an issue where two different service classes with the same name would be treated as the same service, defeating the type-based lookup.
- Improve memory management slightly in cases where many short-lived context objects are used by tracking and cleaning up their weakrefs.
- Initial release.