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.
- Support for Python 3.9 and 3.10.
1.1.2 - 2024-11-17
- Moved away from using
typing.runtime_checkable
as this is unreliable in newer Python versions.
1.1.1 - 2024-10-07
- Support python 3.13.
1.1.0 - 2024-07-26
- [hikari.api.RESTClient][] can now be passed as app to [sake.redis.ResourceClient.init][].
- Case where the OwnIDStore would error on returning a phantom stored ID.
1.0.8 - 2023-12-28
- Support for Python 3.12.
1.0.7 - 2023-02-20
- Fix [hikari.errors.UnrecognisedEntityError][] handling in the Redis iterators. This will no-longer lead to an [NameError][] being raised.
1.0.6 - 2023-01-01
- Catch and ignore [hikari.errors.UnrecognisedEntityError][] during iteration.
1.0.5a1 - 2022-12-08
"tanjun"
feature flag for ensuring this is installed with a Tanjun version that's compatible with the Tanjun adapters.
- Dropped support for Python 3.8.
1.0.4a1.post1 - 2022-11-10
- Switched from aioredis to redis-py for connecting to Redis to properly support Python 3.11.
1.0.4a1 - 2022-11-10
- Bumped the minimum hikari version to 2.0.0.dev112.
- Avoid fetching the bot's user to get it's ID if a READY event has already been received.
- The Tanjun adapter get and iter methods no-longer raise [TypeError][] when the inner-client is inactive.
- Async locking when fetching the bot's ID internally and ensure it only fetches once.
- Raise [sake.errors.ClosedClient][] instead of [TypeError][] when the Sake client is inactive (from get and iter methods).
- The project metadata dunder attributes from [sake][]. [importlib.metadata][] should be used to get this metadata instead.
sake.redis_iterators
is now internal/hidden.redis.ResourceClient.get_connection
is now internal/hidden.
1.0.3a1.post1 - 2022-08-30
- Bumped the minimum hikari version to 2.0.0.dev110.
1.0.3a1 - 2022-08-27
- Fixed compatibility with newer Hikari and Tanjun releases.
1.0.2a1 - 2022-01-13
- The Redis
clear_voice_states_for_guild
method mishandling passing coroutines toasyncio.gather
leading to errors being raised.
- The Prefix and Integration cache implementations and interfaces as a part of pruning out-of-scope and useless cache stores.
1.0.1a1 - 2022-01-06
RedisResource.add_to_tanjun
method for easier integration with Tanjun. This both registers dependencies for the resource abcs and impls but also registers adapters which make Sake compatible with Tanjun's AsyncCache interfaces for the relevant resources.
abc.ABC
is now used as the base class for the abstract interfaces insake.abc
instead oftyping.Protocol
.abc.CacheIterator.len
is now guaranteed to always returnsint
.
1.0.0a1 - 2021-12-25
- Python 3.10 compatibility thx to Aioredis 2.0.0.
- Efficiency improvements brought in by the switch to listening to raw event dispatch.
ClosedClient
error which is raised in favour ofRuntimeError
when an operation is attempted on an inactive sake client.- Client
is_alive
attribute (both on the abstract interface and redit impl).
- Aioredis dependency minimum version to 2.0.0.
This comes with breaking changes to how RedisClient is initialised as
parameters have been replaced and changed (semantically speaking).
For more information on this see the documentation.
And the client returned by
RedisClient.get_connection
is now fundamentally different. - Bumped Hikari dependency minimum version to 2.0.0.dev104.
- The structure and semantics of internal aspects of RedisClient like how it manages the database connections and how it loads listeners have changed.
- Renamed
sake.traits
tosake.abc
. - Renamed
RedisClient.rest
toapp
and.dispatch
to.event_manager
. - IDs are now always stored as strings.
- Renamed
rest
toapp
inRedisClient.__init__
and moved away from inferring the event manager from this argument (it now must always be passed asevent_manager
if you want the client to listen to events to fill itself). event_managed
argument toRedisClient.__init__
to let the client be started based on the linked event manager.
sake.marshalling
and any relevant properties and arguments.- The utility functions in
sake.redis_iterators
are now private. - The "set" methods have been removed from the abstract interfaces in
sake.abc
as these are now considered implementation detail. - While this wasn't ever officially supported, passing
hikari.Unique
objects in place of IDs to RedisClients will now lead to erroneous behaviour due to an internal refactor in how IDs are handled. window_size
parameter fromRedisClient.clear_*
methods as these are no-longer chunked.