Changelog#
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased#
0.1.5 - 2024-04-22#
- Improve error message when attempting to use alluka.inject without DI.
0.1.4 - 2023-12-27#
Added#
- Python 3.12 support.
0.1.3 - 2022-11-12#
Added#
alluka.abc.Client
is now set as a type dependency by default.
Changed#
- Renamed
AsyncOnlyError
toSyncOnlyError
(AsyncOnlyError
has been kept as a deprecated alias). - Relaxed typing around DI for async callbacks to allow for returning a union of
Coroutine[Any, Any, T] | T
.
Fixed#
- Don't error on async callbacks which return a coroutine after being awaited during DI when assertions are enabled.
Removed#
- The project metadata dunder attributes from alluka. importlib.metadata should be used to get this metadata instead.
0.1.2 - 2022-07-06#
Changed#
- The optional
introspect_annotations
parameter foralluka.Client.__init__
is now keyword only. tanjun.abc.Client
is now a realabc.ABC
.
Deprecated#
alluka.abc.Undefined
andalluka.abc.UNDEFINED
for removal inv0.2.0
as these will no-longer be used.get_type_dependency
andget_cached_result
returningUNDEFINED
as the default when no default is passed will be replaced by aKeyError
raise inv0.2.0
.
0.1.1 - 2022-03-20#
Fixed#
- Regression around handling of "signature-less" builtin functions. A ValueError will no longer be raised in these cases.
0.1.0 - 2022-02-25#
All of the 0.1.0
entries are relative to the feature set exposed while this was a part of Tanjun.
Added#
- Support for synchronous dependency injection (this comes with
SyncOnlyError
) - Abstract interface for the client with limited functionality.
call_with_di
andcall_with_async_di
toalluka.abc.Context
as a shorthand for executing a callback with that context.call_with_di
,call_with_async_di
,call_with_ctx
andcall_with_ctx_async
methods to the injection client for executing callbacks with DI.- Support for inferring the type of a parameter from its type hint when no
type
orcallback
is explicitly provided. - Support for using
typing.Annotated
to declare parameter DI. This takes two forms:parameter: alluka.Inject[Type]
to infer specifically a type dependency.parameter: typing.Annotated(Type, alluka.inject(type=.../callback=...))
.
Changed#
- Passed keyword arguments are now prioritised over dependency injection.
Removed#
- The public
CallackDescriptor
andTypeDescriptor
classes as callbacks are now processed within the client and any necessary caching is kept internal.