- bump deps
- circular imports on DI system
- typing issues
- add support for generic values in dependency injection
- use abstract class for DI Middleware
- benchmarks
- Python 3.8 support has been dropped because of end-of-life (EOL), please update to a supported version
- drop support for python 3.8 and bump deps (#243)
- add benchmarks
- prevent ConsumerStoppedError exception when engine or a stream is stopped. Related to #234 (#238)
- streams_utils: properly identify if typed or not
- typing errors caused by optionals in tests
- test_client: use proper type hint in Producer.send (#216)
- move consumer record to kstreams
- add maintainer instead of author (#213)
- Update DeprecationWarnings
- bump missing dev dependencies
- bump ruff dep and format files
- bump dependencies
- expose a Stream.get_middleware function
- error policy STOP_APPLICATION added. Closes #162 (#207)
- Stream error policy added (#206)
- check whether Stream is running when TestStreamClient is leaving the context. This allows to send more events after a Stream has crashed and still the TestStreamClient will be able to leave the context without hanging (#204)
- add Send type hint parameter to udf when a Stream is defined (#202)
- subscribe topics by pattern (#199)
- StreamEngine hooks on_startup, on_stop, after_startup and after_stop added (#193)
- always subscribe to topics when a Stream is started. Multiple calls to subscribe do not affect the consumer even though it was already subscribed. (#191)
- structured-concurrency: first step to introduce structured concurrency paradigm. Now StreamEngine will stop on a Stream crash (only when running with aiorun). Closes #60 due to the use of flag
stop_on_unhandled_errors
with aiorun. Related to #162 (#190)
- stop properly a stream when it crashes from ExceptionMiddleware (#189)
- log possible error in the typed handler wrapper (#181)
- deserializer deprecation warning added. Examples with deserialization updated to middlewares (#172)
- StreamEngine: graceful shutdown must wait for all events to be processed before Streams are stopped. Related to #162 (#171)
- make sure that there is not an asyncio.Task when udf is an async generators. Middleware repr added. (#167)
- TestStreamClient: support custom classes for test consumers and producers
- mypy updated from version 0.9 to 1.8.0. Some typing fixed. Closes #159 (#165)
- aiorun dependency removed (#164)
- Middleware capability introduced (#155)
- pyproject.toml: Lock pydantic on > 2.0 because it is not compatible with 1.x since v0.15.2 (#160)
- coroutine anext introduced for python versions lower than 3.10 (#161)
- AsyncGenerator: Stream as async generators (yield from stream) are only available with the new typing approach (#157)
- Updated code to Pydantic 2.0 (get rid of deprecation warnings) (#156)
- Stream: handle errors.ConsumerStoppedError exception for the new consumtion way (#150)
- TestStreamClient: add ability to create extra topics before the test cycle starts (#149)
- getmany added to Stream. Closes #128 (#147)
- typing: StreamFunc type to match the udf signature. (#142)
- first steps to add dependency injection. Inspect udf coroutines in order to inject different args on it (#141)
- TestClient: call task_done after the topic has consumed the cr (#138)
- increase total events also when using sync testing (#136)
- spelling mistake in log message (#133)
- pydantic: add support for pydantic v2 (#132)
- Kafka backend: use enum values when represent kafka backend as dict. Close #130 (#131)
- end_offsets off by 1
- option to disable monitoring during testing added (#125)
- Prometheus scrape metrics task fixed in order to have a proper shutdown (#124)
- race condition when creating metrics at the same time that a stream is removed (#121)
- consumer committed metrics should use committed and not last_stable_offset (#120)
- race condition when creating metrics at the same time that a stream is removed (#121)
- consumer committed metrics should use committed and not last_stable_offset (#120)
- pyyaml issue
- deserializer signature (#117)
- set default partition when producing with engine (#116)
- typo in docs (#113)
- call seek_to_initial_offsets method after TestConsumer is subscribed (#112)
- seek to initial offsets using the rebalance listener (#111)
- skips removing metric if metrics dont exist
- remove metrics for removed stream
- position_lag metric added. consumer_lag now is based on last commited offset rather than consumer position (#106)
- Singlenton removed from PrometheusMonitor (#105)
- MetricsRebalanceListener added (#104)
- not set a default rebalance listener to a stream. ManualCommitRebalanceListener added (#103)
- KstreamsRebalanceListener added as default rebalance listener (#102)
- RebalanceListener interface added so a rebalance listener can be set to Streams (#100)
- dependencies updated (#98)
- TestStreamClient should not wait for topics that are empty (#93)
- default cadata to None
- call deserializer regardless consumer_record value (#83)
- adds ability for stream to be initiated with initial offsets
- test_utils: replace sleep with async queue join when stopping test stream (#78)
- add remove-stream function to stream_engine
- stream: recreate consumer when a stream instance is restarted (#77)
- teststreamclient: check if consumer is none before creating one
- TestStreamClient: remove unused/unclosed mock producer (#74)
- test_clients.py: adds end_offsets to consumer test client
- add partitions_for_topic method to consumer test client (#70)
- clean up topic events after leaving the async context (#68)
- test client initial partition (#67)
- TestConsumer partition assigments, TestProducer consumer record and record metadata (#66)
- use partition 1 as default partition when producing with test client. Producer test client record metadata fixed. Closes #64
- add commit and commited functions to consumer test client. Closes #61 (#63)
- examples: rename some examples and fix broken links
- missing default deserializer
- module singlenton renamed to singleton (#56)
- get topics using the TestStreamClient
- decorator wrapper and tests
- comment error
- singlenton removed from StreamEngine
- add
stream
decorator
- rename some types and typos in docs
- expose
ConsumerRecord
fromkstreams
- remove the
value_
prefix fromvalue_serializer
andvalue_deserializer
- typing
- remove unsubscribe before stopping consumer (#40)
- unsubscribe consumer before stopping (#37)
- add kafka backend module
- remove stream base class (#34)
- add streams instances without decorator (#28)
- add mypy and some type hints
- call serialization methods only when value is present (#27)
- replace engine initializers methods with start and stop (#24)
- pipeline tag filter (#19)
- Yield from stream. Closes #4