🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Test and declare officail `NamedTuple` support (#774)
Here's the code:
As we can see,
1. Add a test case to
2. Add a doc example here https://django-modern-rest.readthedocs.io/en/latest/pages/getting-started.html#showcase
3. Add a changelog entry, that it is now officially supported
We welcome new contributors :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Test and declare officail `NamedTuple` support (#774)
Here's the code:
>>> from typing import NamedTuple
>>> class A(NamedTuple):
... x: int
... y: int
...
>>> import pydantic
>>> pydantic.TypeAdapter(A).validate_python({'x': 1, 'y': 2})
A(x=1, y=2)
>>> pydantic.TypeAdapter(A).validate_python({'x': 1, 'y': 'a'})
Traceback (most recent call last):
File "<python-input-11>", line 1, in <module>
pydantic.TypeAdapter(A).validate_python({'x': 1, 'y': 'a'})
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
File "/Users/sobolev/Desktop/django-modern-rest/.venv/lib/python3.13/site-packages/pydantic/type_adapter.py", line 441, in validate_python
return self.validator.validate_python(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
object,
^^^^^^^
...<6 lines>...
by_name=by_name,
^^^^^^^^^^^^^^^^
)
^
pydantic_core._pydantic_core.ValidationError: 1 validation error for call[A]
y
Input should be a valid integer, unable to parse string as an integer [type=int_parsing, input_value='a', input_type=str]
For further information visit https://errors.pydantic.dev/2.12/v/int_parsing
As we can see,
NamedTuple models work well with pydantic. So, here's what we need to do:1. Add a test case to
test_plugins/test_pydantic that it works with NamedTuple2. Add a doc example here https://django-modern-rest.readthedocs.io/en/latest/pages/getting-started.html#showcase
3. Add a changelog entry, that it is now officially supported
We welcome new contributors :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🔥1
🚀 New issue to ag2ai/faststream by @hmvp
📝 Bug: topic patterns are not correctly documented (#2804)
Describe the bug
When using a pattern for a kafka topic the generated asyncapi spec (and docs) does not include that handler
How to reproduce
With something along the lines of:
Expected behavior
The subscriber is included in the asyncapi spec and docs. As far as I can see the asyncapi spec actually allows for this even when using Path variables.
Observed behavior
The asyncapi docs don't contain that subscriber.
Screenshots
Environment
Running FastStream 0.6.7 with CPython 3.14.0 on Linux
Additional context
#bug #good_first_issue #faststream #ag2ai
sent via relator
📝 Bug: topic patterns are not correctly documented (#2804)
Describe the bug
When using a pattern for a kafka topic the generated asyncapi spec (and docs) does not include that handler
How to reproduce
With something along the lines of:
broker = KafkaBroker(...)
router = KafkaRouter()
@router.subscriber(pattern="some.wildcard.topic.*")
def handle_event(event: Event): ...
broker.include_router(router)
app = AsgiFastStream(
broker,
asyncapi_path="/docs",
)
Expected behavior
The subscriber is included in the asyncapi spec and docs. As far as I can see the asyncapi spec actually allows for this even when using Path variables.
Observed behavior
The asyncapi docs don't contain that subscriber.
Screenshots
Environment
Running FastStream 0.6.7 with CPython 3.14.0 on Linux
Additional context
#bug #good_first_issue #faststream #ag2ai
sent via relator
🚀 New issue to ag2ai/faststream by @dumpler
📝 Bug: Logger not properly passed to Confluent Kafka Producer and AdminClient (#2691)
Describe the bug
There are two related issues with logger configuration in the Confluent Kafka components:
1.
Late Logger Setup in AsyncConfluentProducer
In faststream/confluent/helpers/client.py at line 46, the Producer object is created before the _setup() method is called for loger_state. This results in the Producer receiving a NoSetLoggerObject instead of the intended logger passed during initialization.
2.
Missing Logger in AdminClient
The AdminClient in AdminService does not accept a logger parameter, even though it should. Currently, only the configuration is passed, leaving the AdminClient without proper logging.
How to reproduce
Include source code:
Expected behavior
1. The Producer in AsyncConfluentProducer should use the logger passed to KafkaRouter.
2. The AdminClient should inherit the same logger as other components.
Observed behavior
1. The Producer uses NoSetLoggerObject instead of the provided logger.
2. The AdminClient lacks logger configuration, leading to potential silent failures or inadequate logging.
Environment
Running FastStream 0.6.3 with CPython 3.13.1 on Linux
#bug #good_first_issue #faststream #ag2ai
sent via relator
📝 Bug: Logger not properly passed to Confluent Kafka Producer and AdminClient (#2691)
Describe the bug
There are two related issues with logger configuration in the Confluent Kafka components:
1.
Late Logger Setup in AsyncConfluentProducer
In faststream/confluent/helpers/client.py at line 46, the Producer object is created before the _setup() method is called for loger_state. This results in the Producer receiving a NoSetLoggerObject instead of the intended logger passed during initialization.
2.
Missing Logger in AdminClient
The AdminClient in AdminService does not accept a logger parameter, even though it should. Currently, only the configuration is passed, leaving the AdminClient without proper logging.
How to reproduce
Include source code:
import logging
import uvicorn
from fastapi import FastAPI
from faststream.confluent.fastapi import KafkaRouter
logger = logging.getLogger("faststream")
router = KafkaRouter(
bootstrap_servers="kafka:9092",
enable_idempotence=True,
allow_auto_create_topics=False,
schema_url="/asyncapi",
include_in_schema=True,
logger=logger,
)
app = FastAPI()
app.include_router(router)
uvicorn.run(app, host="0.0.0.0", port=8000)
Expected behavior
1. The Producer in AsyncConfluentProducer should use the logger passed to KafkaRouter.
2. The AdminClient should inherit the same logger as other components.
Observed behavior
1. The Producer uses NoSetLoggerObject instead of the provided logger.
2. The AdminClient lacks logger configuration, leading to potential silent failures or inadequate logging.
Environment
Running FastStream 0.6.3 with CPython 3.13.1 on Linux
#bug #good_first_issue #faststream #ag2ai
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add docs and example about `django-health-check` integration (#831)
One can use https://github.com/codingjoe/django-health-check for health checks.
No special integration from our side is required.
This information can be added here: https://github.com/wemake-services/django-modern-rest/blob/master/docs/pages/integrations.rst
#documentation #enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add docs and example about `django-health-check` integration (#831)
One can use https://github.com/codingjoe/django-health-check for health checks.
No special integration from our side is required.
This information can be added here: https://github.com/wemake-services/django-modern-rest/blob/master/docs/pages/integrations.rst
#documentation #enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support `orjson` as a possible backend for `JsonParser` / `JsonRenderer` (#857)
Currently we always use
django-modern-rest/dmr/parsers.py
Lines 132 to 134 in 69822ff
But, we can make this module customizable. We can pass
Something like:
And later
This would need multiple test cases: install
And we can document that with an example in the
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Support `orjson` as a possible backend for `JsonParser` / `JsonRenderer` (#857)
Currently we always use
json as a module in JsonParser and JsonRenderer:django-modern-rest/dmr/parsers.py
Lines 132 to 134 in 69822ff
But, we can make this module customizable. We can pass
orjson module there, since it also has a similar API.Something like:
class JsonParser(Parser):
__slots__ = ('_json_module', ...)
def __init__(self, json_module: _JsonModule = json, ...) -> None:
self._json_module = json_module
And later
self._json_module.loads(...)This would need multiple test cases: install
orjson as unit-test dependency and add unit tests for this new renderer / parser.And we can document that with an example in the
integrations.rst docs.#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add a Django command to export OpenAPI schemas (#858)
It migth be useful to people who want to share the schema. Or automate something with it.
I propose to add a django command:
Args:
• Where to find schema, I think we should reuse
• All json formatting ones:
• Format:
We should print it to the stdout always. Usages:
This would need tests, we can test it as a subprocess, it is a django command after all.
And docs.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add a Django command to export OpenAPI schemas (#858)
It migth be useful to people who want to share the schema. Or automate something with it.
I propose to add a django command:
dmr_export_schema.Args:
• Where to find schema, I think we should reuse
import_string logic from Django. Required• All json formatting ones:
sort_keys and indent• Format:
json or yaml, check that yaml is installed. Default is jsonWe should print it to the stdout always. Usages:
# regular:
python manage.py dmr_export_schema server.urls:schema
# pretty:
python manage.py dmr_export_schema server.urls:schema --format json --indent=2 --sort-keys
This would need tests, we can test it as a subprocess, it is a django command after all.
And docs.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @LesPrimus
📝 UnsolvableAnnotationsError when subclassing a concrete Controller subclass` (#873)
What's wrong?
Bug:
Description
When creating an intermediate concrete controller class and then subclassing it,
is already resolved on the parent.
Reproduction
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 UnsolvableAnnotationsError when subclassing a concrete Controller subclass` (#873)
What's wrong?
Bug:
UnsolvableAnnotationsError when subclassing a concrete Controller subclassDescription
When creating an intermediate concrete controller class and then subclassing it,
__init_subclass__ raises UnsolvableAnnotationsError even though the serializeris already resolved on the parent.
Reproduction
from dmr import Controller
from dmr.plugins.pydantic import PydanticSerializer
from dmr.serializer import BaseSerializer
class BaseController[T: BaseSerializer](Controller[T]):
pass
class PydanticController(BaseController[PydanticSerializer]):
pass
# This raises UnsolvableAnnotationsError
class UserController(PydanticController):
def get(self) -> ...:
...
Error
dmr.exceptions.UnsolvableAnnotationsError: Type args () are not correct for <class 'UserController'>,
at least 1 type arg must be provided
Expected behavior
UserController should inherit the serializer from its concrete parent PydanticController,
which already has serializer = PydanticSerializer set.
--
Thanks for the awesome library, I just started exploring it and I'm really enjoying it so far!
--
### How it should be?
Subclassing a concrete `Controller` subclass (one that already has a resolved serializer)
should work without requiring the type argument to be re-specified.
`UserController(PydanticController)` should behave the same as `UserController(BaseController[PydanticSerializer])`.
### Used versions
- `django-modern-rest==0.5.0`
- `Python 3.14.0`
### OS information
- `Linux tuxedo-stellaris 6.17.0-111019-tuxedo x86_64 (Ubuntu 24.04)`
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to ag2ai/faststream by @ce1ebrimbor
📝 Feature: Support broker-level ack_policy default with per-subscriber override (#2826)
Problem
Currently
There is no way to set a default
Proposed solution
Add an
The resolution order would be: subscriber-level > broker-level > built-in default (
Why this matters
• Safety:
• DRY: Services with 10+ subscribers shouldn't need to repeat
• Consistency with other broker-level settings:
#enhancement #good_first_issue #faststream #ag2ai
sent via relator
📝 Feature: Support broker-level ack_policy default with per-subscriber override (#2826)
Problem
Currently
ack_policy can only be set per-subscriber:@broker.subscriber("orders.topic", ack_policy=AckPolicy.NACK_ON_ERROR)
async def handle_order(msg: OrderMessage) -> None:
...
There is no way to set a default
ack_policy at the broker (or router) level. In practice, most services want the same policy across all subscribers — typically NACK_ON_ERROR for at-least-once delivery with DLQ. This forces every @broker.subscriber() call to repeat the same ack_policy= argument, which is error-prone: forgetting it on a single subscriber silently falls back to ACK_FIRST (at-most-once), which can cause silent message loss.Proposed solution
Add an
ack_policy parameter to KafkaBroker (and equivalently to RabbitBroker, NatsBroker, etc.) that sets the default for all subscribers registered on that broker. Individual subscribers can still override it.broker = KafkaBroker("localhost:9092", ack_policy=AckPolicy.NACK_ON_ERROR)
# Inherits NACK_ON_ERROR from broker
@broker.subscriber("orders.topic")
async def handle_order(msg: OrderMessage) -> None:
...
# Overrides to ACK for this specific subscriber
@broker.subscriber("notifications.topic", ack_policy=AckPolicy.ACK)
async def handle_notification(msg: NotificationMessage) -> None:
...
The resolution order would be: subscriber-level > broker-level > built-in default (
ACK_FIRST).Why this matters
• Safety:
ACK_FIRST as a silent default is dangerous for services that use DLQ or need at-least-once delivery. A broker-level default lets teams enforce their delivery guarantee in one place.• DRY: Services with 10+ subscribers shouldn't need to repeat
ack_policy=AckPolicy.NACK_ON_ERROR on every one.• Consistency with other broker-level settings:
decoder, middlewares, security, and logger are all broker-level defaults that subscribers inherit. ack_policy is the notable exception.#enhancement #good_first_issue #faststream #ag2ai
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Optimize `dmr_rf` and `dmr_client` test features for faster tests (#889)
We provide our own fixtures that are subclasses of Django's builtin one.
Django has this code inside: https://github.com/django/django/blob/7dc826b9758d634623a6f5ca05d0ca2048a0ce48/django/test/client.py#L450-L458
We need to optimize this method, because
It won't be noticable on 1 tests, but will be on 2k tests (which is the case for our own test base).
See how we conditionally dump our schema here: https://github.com/wemake-services/django-modern-rest/blob/master/dmr/openapi/dump.py
Maybe we should reuse the same for tests?
#good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Optimize `dmr_rf` and `dmr_client` test features for faster tests (#889)
We provide our own fixtures that are subclasses of Django's builtin one.
Django has this code inside: https://github.com/django/django/blob/7dc826b9758d634623a6f5ca05d0ca2048a0ce48/django/test/client.py#L450-L458
def _encode_json(self, data, content_type):
"""
Return encoded JSON if data is a dict, list, or tuple and content_type
is application/json.
"""
should_encode = JSON_CONTENT_TYPE_RE.match(content_type) and isinstance(
data, (dict, list, tuple)
)
return json.dumps(data, cls=self.json_encoder) if should_encode else data
We need to optimize this method, because
json.dumps is slow, but msgspec is fast.It won't be noticable on 1 tests, but will be on 2k tests (which is the case for our own test base).
See how we conditionally dump our schema here: https://github.com/wemake-services/django-modern-rest/blob/master/dmr/openapi/dump.py
Maybe we should reuse the same for tests?
#good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `RefreshTokenSyncController` and `RefreshTokenAsyncController` (#907)
Add
Basically, they should accept
It should be similar to the existing views:
django-modern-rest/dmr/security/jwt/views.py
Lines 99 to 132 in dba07e8
Example from a real project: https://github.com/Griger10/g-pulse/blob/3d520b8444736eaaeffad1cf2221019f3ffad6c4/services/api/apps/accounts/api/views.py#L93
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add `RefreshTokenSyncController` and `RefreshTokenAsyncController` (#907)
Add
RefreshTokenSyncController and RefreshTokenAsyncControllerBasically, they should accept
refresh_token and return new pairs of access_token and refresh_token. But they should be reusable as well as the existing controllers.It should be similar to the existing views:
django-modern-rest/dmr/security/jwt/views.py
Lines 99 to 132 in dba07e8
Example from a real project: https://github.com/Griger10/g-pulse/blob/3d520b8444736eaaeffad1cf2221019f3ffad6c4/services/api/apps/accounts/api/views.py#L93
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @Peopl3s
📝 TagSchema and RoleSchema do not enforce max_length, causing unhandled DB errors (#944)
What's wrong?
The Tag and Role Django models define name = CharField(max_length=100), but the corresponding Pydantic schemas accept any-length strings.
When a client sends a name longer than 100 characters, Pydantic validation passes (HTTP 422 is never raised), and the value reaches the database layer where PostgreSQL raises DataError: value too long for type character varying(100). This results in an unhandled 500 instead of a proper 422 validation error. On SQLite the value is silently stored without truncation, masking the bug in tests.
How it should be?
Add max_length constraints to match the model definition:
Used versions
0.7.0
OS information
MacOS
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 TagSchema and RoleSchema do not enforce max_length, causing unhandled DB errors (#944)
What's wrong?
The Tag and Role Django models define name = CharField(max_length=100), but the corresponding Pydantic schemas accept any-length strings.
class TagSchema(pydantic.BaseModel):
name: str <!-----------------------------HERE
class RoleSchema(pydantic.BaseModel):
name: str <!-----------------------------HERE
When a client sends a name longer than 100 characters, Pydantic validation passes (HTTP 422 is never raised), and the value reaches the database layer where PostgreSQL raises DataError: value too long for type character varying(100). This results in an unhandled 500 instead of a proper 422 validation error. On SQLite the value is silently stored without truncation, masking the bug in tests.
How it should be?
Add max_length constraints to match the model definition:
class TagSchema(pydantic.BaseModel):
name: str = Field(max_length=100)
class RoleSchema(pydantic.BaseModel):
name: str = Field(max_length=100)
Used versions
0.7.0
OS information
MacOS
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to ag2ai/faststream by @BrikozO
📝 Bug: (#2842)
#bug #good_first_issue #faststream #ag2ai
sent via relator
📝 Bug: (#2842)
#bug #good_first_issue #faststream #ag2ai
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Test `Valkey` support (#980)
Currently we only test
#good_first_issue #help_wanted #ci #django_modern_rest
sent via relator
📝 Test `Valkey` support (#980)
Currently we only test
redis as the database for SyncRedis and AsyncRedis throttling backends. We also need to test Valkey, because we claim to support it.#good_first_issue #help_wanted #ci #django_modern_rest
sent via relator
Поддержать конвертацию t-строк(!) и обычных строк в текстовые виджеты aiogram-dialog
https://github.com/Tishka17/aiogram_dialog/issues/529
https://github.com/Tishka17/aiogram_dialog/issues/529
GitHub
Implicit Const and Format widgets from strings and t-strings · Issue #529 · Tishka17/aiogram_dialog
We should cast each string to Const widget, while t-strings should become something like Format. To achieve this we should do cast in each Button widget, keyboard placeholder and Window. On python ...
👍4
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Convert our `Empty` class usage to `typing_extensions.Sentinel` (#995)
Current way:
django-modern-rest/dmr/types.py
Lines 48 to 55 in 5ca7975
New (modern) way: https://typing-extensions.readthedocs.io/en/latest/#typing_extensions.Sentinel
1. We need to change how
2. We need to change all
This is a very easy task for new contributors :)
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Convert our `Empty` class usage to `typing_extensions.Sentinel` (#995)
Current way:
django-modern-rest/dmr/types.py
Lines 48 to 55 in 5ca7975
New (modern) way: https://typing-extensions.readthedocs.io/en/latest/#typing_extensions.Sentinel
1. We need to change how
EmptyObj is defined to be EMPTY: Final = Sentinel('EMPTY')2. We need to change all
isinstance(..., Empty) to check for the sentinelThis is a very easy task for new contributors :)
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to ag2ai/faststream by @zueve
📝 Bug: (#2868)
Describe the bug
Can't forward
How to reproduce
Include source code:
And/Or steps to reproduce the behaviour:
1. Create a KafkaBroker.
2. Try to pass client_rack to the broker constructor.
3. Observe that the parameter is not accepted.
4. There is no alternative way to configure it via subscriber(...) either.
Expected behavior
KafkaBroker should allow passing client_rack (or generic consumer kwargs) and forward it to the underlying aiokafka.AIOKafkaConsumer.
Observed behavior
client_rack is not supported in KafkaBroker constructor, nor in subscriber configuration, so it cannot be passed to aiokafka.
Screenshots
N/A.
Environment
Running FastStream 0.6.7 with CPython 3.14.5 on Linux
Additional context
aiokafka.AIOKafkaConsumer supports client_rack since 0.14.0 version
#bug #good_first_issue #aiokafka #faststream #ag2ai
sent via relator
📝 Bug: (#2868)
Describe the bug
Can't forward
client_rack to aiokafka consumer through FastStream Kafka API.How to reproduce
Include source code:
from faststream import FastStream
from faststream.kafka import KafkaBroker
# Attempt to configure at broker level
broker = KafkaBroker(
"localhost:9092",
client_rack="us-east-1a", # not supported
)
app = FastStream(broker)
And/Or steps to reproduce the behaviour:
1. Create a KafkaBroker.
2. Try to pass client_rack to the broker constructor.
3. Observe that the parameter is not accepted.
4. There is no alternative way to configure it via subscriber(...) either.
Expected behavior
KafkaBroker should allow passing client_rack (or generic consumer kwargs) and forward it to the underlying aiokafka.AIOKafkaConsumer.
Observed behavior
client_rack is not supported in KafkaBroker constructor, nor in subscriber configuration, so it cannot be passed to aiokafka.
Screenshots
N/A.
Environment
Running FastStream 0.6.7 with CPython 3.14.5 on Linux
Additional context
aiokafka.AIOKafkaConsumer supports client_rack since 0.14.0 version
#bug #good_first_issue #aiokafka #faststream #ag2ai
sent via relator
🚀 New issue to ag2ai/faststream by @dzeveloper
📝 Feature: Consumer-Only Mode for KafkaBroker (#2879)
When deploying a subscriber-only service, it's common to provision Kafka credentials scoped strictly to
Proposal:
#enhancement #good_first_issue #confluent #aiokafka #faststream #ag2ai
sent via relator
📝 Feature: Consumer-Only Mode for KafkaBroker (#2879)
When deploying a subscriber-only service, it's common to provision Kafka credentials scoped strictly to
READ + DESCRIBE ACLs on specific topics. Today, KafkaBroker always starts a producer during broker.start(), regardless of whether any @broker.publisher is registered. This causes the producer to attempt a connection using consumer-only credentials, which fails or raises errors at the broker/ACL level.Proposal:
# Option A: broker-level flag
broker = KafkaBroker("localhost:9092", consumer_only=True)
# Option B: skip producer if no publishers are registered (automatic)
# No API change needed — broker inspects registered publishers at start()
#enhancement #good_first_issue #confluent #aiokafka #faststream #ag2ai
sent via relator
👍1
Добавить два поля в openapi.Schema
https://github.com/wemake-services/django-modern-rest/issues/1039
#django_modern_rest #openapi
https://github.com/wemake-services/django-modern-rest/issues/1039
#django_modern_rest #openapi
GitHub
Support `$dynamicRef` and `$dynamicAnchor` openapi props · Issue #1039 · wemake-services/django-modern-rest
Spec: https://spec.openapis.org/oas/v3.2.0.html#generic-template-data-structures https://learn.openapis.org/referencing/dynamic.html Example: https://json-schema.org/blog/posts/dynamicref-and-gener...
👍1
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Flaky test: `test_redis_sync_leaky_bucket` (#1043)
Output:
It fails from time to time: https://github.com/wemake-services/django-modern-rest/actions/runs/26490639540/job/78007463856?pr=1042
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Flaky test: `test_redis_sync_leaky_bucket` (#1043)
Output:
______________________ test_redis_sync_leaky_bucket[True] ______________________
tests/test_integration/test_throttling/test_backends/test_redis_backend/test_redis_backend.py:110: in test_redis_sync_leaky_bucket
assert response.status_code == HTTPStatus.TOO_MANY_REQUESTS
E assert 200 == <HTTPStatus.TOO_MANY_REQUESTS: 429>
E + where 200 = <HttpResponse status_code=200, "application/json">.status_code
E + and <HTTPStatus.TOO_MANY_REQUESTS: 429> = HTTPStatus.TOO_MANY_REQUESTS
================================ tests coverage ================================
=========================== short test summary info ============================
FAILED tests/test_integration/test_throttling/test_backends/test_redis_backend/test_redis_backend.py::test_redis_sync_leaky_bucket[True] - assert 200 == <HTTPStatus.TOO_MANY_REQUESTS: 429>
+ where 200 = <HttpResponse status_code=200, "application/json">.status_code
+ and <HTTPStatus.TOO_MANY_REQUESTS: 429> = HTTPStatus.TOO_MANY_REQUESTS
============ 1 failed, 2479 passed, 10 skipped in 243.50s (0:04:03) ============
It fails from time to time: https://github.com/wemake-services/django-modern-rest/actions/runs/26490639540/job/78007463856?pr=1042
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator