Skip to content

1.0.0 - #3125

Draft
Lancetnik wants to merge 19 commits into
mainfrom
1.0.0
Draft

1.0.0#3125
Lancetnik wants to merge 19 commits into
mainfrom
1.0.0

Conversation

@Lancetnik

Copy link
Copy Markdown
Member

Description

The 1.0.0 release closes the 0.x cycle: everything that carried a deprecation warning is removed, the generated API Reference is dropped from the docs, and the version is bumped.

Removed: the FastAPI plugin

Deprecated since 0.7 with the warning "will be removed in 1.0.0". The integration lives in the separate faststream_fastapi package.

  • faststream._internal.fastapi and faststream.<broker>.fastapi for kafka, confluent, rabbit, nats, redis and mqtt, including KafkaRouter, RabbitRouter, NatsRouter, RedisRouter, RedisSentinelRouter, MQTTRouter and the Context/Logger/*Message/*Broker annotations exported next to them.
  • The docs page getting-started/integrations/fastapi/, all docs_src/integrations/fastapi/* snippets, examples/fastapi_integration/ and every test_fastapi.py (brokers, asyncapi, docs, examples).
  • README and the docs landing page now point to the external package in a short "FastAPI Plugin" section. The "FastAPI Integration" section of redis/sentinel.md is gone with RedisSentinelRouter.
  • faststream.specification.asyncapi.message.get_response_schema() existed only for FastAPI's Dependant object and had no callers; removed.
  • Test scaffolding that existed for the plugin (is_fastapi, dependency_builder, FastAPICompatible) is folded into ArgumentsTestcase; tests/mypy/* no longer type-check a FastAPIRouter.

Removed: StartAbleApplication.set_broker()

Deprecated in favour of add_broker() ("will be removed in 0.8.0"). Use app.add_broker(broker).

Removed: the generated API Reference

The mkdocstrings-based "Reference - Code API" section and everything that produced it:

  • docs/create_api_docs.py, docs/docs/en/api/, the public_api symlink, the mkdocstrings plugin and hook in mkdocs.yml, the mkdocstrings[python] and griffe dependencies.
  • The build-api-docs, build-fast and build-navigation commands of docs/docs.py and the live --full flag; the docs-build-api just recipe; the "Build API Reference" step of docs_build.yaml.
  • docs/docs/navigation_template.txt is now a plain, tracked docs/docs/SUMMARY.md with no {api} placeholders. .gitignore, .pre-commit-config.yaml, labeler.yml and the how-to index pages are updated accordingly.

Version

  • pyproject.toml: 0.7.5 → 1.0.0 (uv.lock regenerated).
  • README and docs "Versioning Policy" rewritten for SemVer; the pre-1.0 "each minor is a major" wording is gone.
  • types-Deprecated dropped from the lint group: nothing imports the deprecated package.

fastapi stays in the testing group: the raw lifespan-based integration example under docs_src/integrations/http_frameworks_integrations/fastapi.py and its test still use it.

Type of change

  • Breaking change (a fix or feature that would disrupt existing functionality)
  • Documentation (typos, code examples, or any documentation updates)
  • This change requires a documentation update

Checklist

  • My code adheres to the style guidelines of this project (just lint shows no errors)
  • I have conducted a self-review of my own code
  • I have made the necessary changes to the documentation
  • My changes do not generate any new warnings
  • Both new and existing unit tests pass successfully on my local environment
  • I have ensured that static analysis tests are passing (mypy faststream tests/mypy is clean)

Lancetnik and others added 3 commits September 12, 2026 20:21
Both were scheduled for removal in 1.0.0. The FastAPI integration now
lives in the `faststream_fastapi` package; docs and README point there.
`StartAbleApplication.set_broker()` is gone, use `add_broker()`.
`get_response_schema()` only existed for FastAPI's Dependant object and
had no callers left, so it goes too.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The mkdocstrings-based "Reference - Code API" section is gone together
with `create_api_docs.py`, the `build-api-docs` / `build-fast` commands,
the `docs-build-api` recipe and the CI step. Navigation is a plain,
tracked `docs/docs/SUMMARY.md` instead of a rendered template.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Bump the package version and rewrite the versioning policy: from 1.0.0
FastStream follows SemVer, and the pre-1.0 "minor is major" wording is gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Lancetnik Lancetnik added the 1.0.0 Planned for the 1.0.0 release (may require breaking changes) label Sep 12, 2026
@github-actions github-actions Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code Confluent Issues related to `faststream.confluent` module AioKafka Issues related to `faststream.kafka` module NATS Issues related to `faststream.nats` module and NATS broker features Redis Issues related to `faststream.redis` module and Redis features MQTT Issues related to `faststream.mqtt` module AsyncAPI Issues related to AsyncAPI specification generation labels Sep 12, 2026
Lancetnik and others added 6 commits September 21, 2026 22:26
Conflict resolution:
- the FastAPI plugin, its tests and the generated API Reference stay
  removed; the edits main made to them (strict mypy, lint) are dropped,
  along with the new FastAPI router cases in tests/mypy, test_client_rack
  and test_sentinel
- docs: main's i18n removal and `docs-check` gate are kept, without the
  API reference steps; the tracked navigation moves to
  docs/docs/en/SUMMARY.md, since `docs/docs/en/` is now the `docs_dir`
- release.md links to the renamed `#fastapi-plugin` anchor
- version stays 1.0.0; uv.lock is main's lock re-resolved

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`check_site.py` no longer special-cases `api/` and `public_api/`, and the
sitemap override goes: without those pages it equals mkdocs' own template.
The two `test_fastapi` snapshots lost their tests when the FastAPI plugin
was removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The FastAPI plugin page stays removed; main only fixed its grammar.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
`on_error_fail` belongs to the macros plugin and stays; the mkdocstrings
block next to it does not exist on 1.0.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The five how-to pages send contributors to the navigation file by its
GitHub URL on `main`. On 1.0.0 that file moved to
`docs/docs/en/SUMMARY.md`, a path `main` gains only when this release
ships, so lychee answers 404 and takes the `docs` gate with it.

It went unnoticed because PR #3125 is a draft and every test job skips
drafts; #3131 is the first non-draft PR on this base to run the check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
redis-py 8.0.0 gave the async `RedisCluster` `publish` and `pubsub`, so the
synchronous workaround from #2854 can go: no second Redis client, no
`ThreadPoolExecutor` in an otherwise async path, and no cluster-only code
branch wherever Pub/Sub is involved.

`RedisClusterFastProducer`, `_SyncPubSubProxy`, `sync_publish()`,
`_get_sync_cluster()` and the `_sync_cluster` / `_thread_pool` fields on the
base `ConnectionState` are gone. Cluster now uses the same `RedisFastProducer`
and the stock `ChannelSubscriber.start()` as standalone, which also means every
connection option — `credential_provider` for IAM / token auth included —
reaches Channels, Lists and Streams through one client.

BREAKING CHANGE: `faststream[redis]` now requires `redis>=8.0.0`.

Closes #3009

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Lancetnik Lancetnik changed the title 1.0.0: remove deprecated APIs and the generated API Reference 1.0.0 Sep 23, 2026
Lancetnik and others added 3 commits September 23, 2026 20:26
…tch auto-connect

`_get_driver_info()` only existed to branch between `driver_info` and
`lib_name`/`lib_version`; with the `redis>=8` floor it is a constant.

`RedisClusterBroker.publish_batch` was the last publish path that connected
implicitly — cluster `publish` and standalone `publish_batch` both require a
started broker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Python 3.11 is now the minimum: requires-python, classifiers, the CI
matrix, the type checkers' target, ruff's target, the dev container and
`just init` default move to 3.11.

- `ExceptionGroup` and `tomllib` come from the standard library; the
  `exceptiongroup` shim, the `tomli` fallback and `INSTALL_TOML` are gone.
- Typing features 3.11 already has are imported from `typing`;
  `typing_extensions` keeps only what is newer than 3.11.
- `datetime.UTC`, builtin `TimeoutError`, and no PERF203 suppressions:
  `try` in a loop is zero-cost on 3.11.

BREAKING CHANGE: the `(str, Enum)` classes (`AckPolicy`, `ExchangeType`,
`QueueType`, `ContentTypes`, the confluent config enums and others) are
`StrEnum` now, so `str()` and `format()` of a member return its value
instead of `ClassName.MEMBER`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lancetnik and others added 7 commits September 23, 2026 22:23
Pydantic 2.4 is the minimum now, declared as a direct dependency.

- `_compat` loses `PYDANTIC_V2` and the v1 branch; the thin wrappers
  (`model_to_json`, `model_parse`, `model_schema`, `get_model_fields`,
  `model_to_jsonable`, `DEF_KEY`) give way to the pydantic v2 API at
  the call sites. `dump_json` stays: it serializes arbitrary data.
- Specification models set `model_config` directly instead of
  switching on the pydantic version.
- The `pydantic_v1`/`pydantic_v2` test marks, the v1 settings snippet
  and its docs tab are gone; README and the index page no longer
  suggest downgrading to v1.

BREAKING CHANGE: Pydantic v1 is no longer supported; FastStream
requires `pydantic>=2.4,<3`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	faststream/_internal/fastapi/_compat.py
#	faststream/_internal/fastapi/config.py
#	faststream/_internal/fastapi/get_dependant.py
#	faststream/_internal/fastapi/router.py
#	faststream/redis/configs/state.py
#	faststream/redis/publisher/producer.py
#	pyproject.toml
#	uv.lock
The second half of #3201: messages, responses and publish commands, routers
with their `Route` and publisher objects, test clients and fakes, context, ASGI,
the specification schema dataclasses and the telemetry/prometheus/acknowledgement
middleware factories. The temporary `exclude-classes` group goes with it.

`StreamMessage.__copy__` walks the slots, and `StreamMessage` declares
`__weakref__` so a message can still key a WeakKeyDictionary.

BREAKING CHANGE: these objects no longer accept attributes they do not declare;
`message.custom = 1`, `Response(...).custom = 1` and `vars(message)` raise. A
user's own subclass keeps a `__dict__`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
On 3.10, `dataclass(slots=True)` re-emitted every inherited field into the
subclass, so the chain under `BrokerConfig`, `EndpointConfig` and
`SpecificationConfig` stayed unslotted. With 3.11 as the floor the 37 configs
take `slots=True` and their `exclude-classes` entry goes.

Below 3.13 a bare `super()` in a slotted dataclass still points at the class from
before the rebuild, so the four calls in the Kafka (confluent) and MQTT broker
configs name their class.

`RabbitConfig` is gone: a mixin with its own fields cannot sit beside a slotted
base, so `queue` and `exchange` are declared on the four Rabbit configs directly.

BREAKING CHANGE: the configs no longer accept attributes they do not declare, and
`faststream.rabbit.configs.RabbitConfig` no longer exists.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

1.0.0 Planned for the 1.0.0 release (may require breaking changes) AioKafka Issues related to `faststream.kafka` module AsyncAPI Issues related to AsyncAPI specification generation Confluent Issues related to `faststream.confluent` module dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code MQTT Issues related to `faststream.mqtt` module NATS Issues related to `faststream.nats` module and NATS broker features Observability Redis Issues related to `faststream.redis` module and Redis features

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants