🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 Remove `WPS354` (#3601)
This rules has more problems that it solves:
1. Two
2. Async iterators cannot use
So, it is time to remove this rule. I was wrong about that :(
See other rules with
#feature #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator
📝 Remove `WPS354` (#3601)
This rules has more problems that it solves:
1. Two
yields and yield from are two different things2. Async iterators cannot use
yield from, but WPS354 still raises even in async defSo, it is time to remove this rule. I was wrong about that :(
See other rules with
disabled_since attribute on how to disable a rule.#feature #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator
🫡1
🚀 New issue to ag2ai/faststream by @yann-combarnous
📝 Bug: AsyncAPI documentation fails when Confluent uses oauth bearer authentication (#2774)
Describe the bug
When using Confluent Kafka with oauthbearer authentication, the generated AsyncAPI schema is:
An empty $ref: "" causes the AsyncAPI React component to attempt file resolution via readFile. This is a FastStream bug in schema generation.
How to reproduce
Include source code:
Expected behavior
AsyncAPI documentation is correctly generated.
Observed behavior
It fails with a file cannot be read error.
Screenshots
If applicable, attach screenshots to help illustrate the problem.
Environment
Running FastStream 0.6.5 with CPython 3.13.11 on Darwin
Additional context
#bug #good_first_issue #faststream #ag2ai
sent via relator
📝 Bug: AsyncAPI documentation fails when Confluent uses oauth bearer authentication (#2774)
Describe the bug
When using Confluent Kafka with oauthbearer authentication, the generated AsyncAPI schema is:
"securitySchemes":{"oauthbearer":{"type":"oauth2","$ref":""}}
An empty $ref: "" causes the AsyncAPI React component to attempt file resolution via readFile. This is a FastStream bug in schema generation.
How to reproduce
Include source code:
from faststream.confluent import KafkaBroker
broker = KafkaBroker(
config={ ...config... },
security=SASLOAuthBearer(use_ssl=True)
)
...
Expected behavior
AsyncAPI documentation is correctly generated.
Observed behavior
It fails with a file cannot be read error.
Screenshots
If applicable, attach screenshots to help illustrate the problem.
Environment
Running FastStream 0.6.5 with CPython 3.13.11 on Darwin
Additional context
#bug #good_first_issue #faststream #ag2ai
sent via relator
Необходимо добавить возможность настраивать текст в новом TimeSelect виджете в aiogram-dialog
https://github.com/Tishka17/aiogram_dialog/issues/519
https://github.com/Tishka17/aiogram_dialog/issues/519
GitHub
TimeSelect text customization · Issue #519 · Tishka17/aiogram_dialog
Add TimeSelect params with TextWidget for regular button and selected. Current value must be passed within data Default values should keep current behavior: e.g. 12 and [12]
🚀 New issue to wemake-services/django-modern-rest by @milssky
📝 Improving XML processing in `XMLParser` for correct validation of Pydantic models (#541)
The current implementation of
1. Extra nesting (Root Element):
2. Type mismatch for empty tags: XML does not have built-in types. Empty tags () are parsed by
Most likely, this bug ( #499 ) is related to this, but the problem may be complex.
#enhancement #help_wanted #django_modern_rest
sent via relator
📝 Improving XML processing in `XMLParser` for correct validation of Pydantic models (#541)
The current implementation of
XMLParser in django_test_app (and the example in the documentation) leads to massive validation errors (400 Bad Request) during automated testing via Schemathesis. The problem is caused by two factors:1. Extra nesting (Root Element):
xmltodict.parse always returns a dictionary where the data is nested in the key corresponding to the name of the root tag. Pydantic models (for example, _RequestModel) expects the data to be "flat", which is why validation crashes with the field required error for all fields, since they are wrapped in the tag name.2. Type mismatch for empty tags: XML does not have built-in types. Empty tags () are parsed by
xmltodict as None. If the Pydantic model expects str, it causes an error validation, although in the context of XML, an empty tag is often equivalent to an empty string.Most likely, this bug ( #499 ) is related to this, but the problem may be complex.
#enhancement #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `auth=` parameter to `sse()` function (#546)
I forgot to add
django-modern-rest/dmr/sse/builder.py
Lines 63 to 79 in 8866e4c
This is totally required. Docs and tests are also required :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add `auth=` parameter to `sse()` function (#546)
I forgot to add
auth= to parameters ofdjango-modern-rest/dmr/sse/builder.py
Lines 63 to 79 in 8866e4c
This is totally required. Docs and tests are also required :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 `WPS457` false positive with `while` in `try` / `except` (#3603)
I have the following code:
It should not raise
It can clearly raise and we handle the error. So, it is not infinite.
PRs are welcome! 👍
#bug #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator
📝 `WPS457` false positive with `while` in `try` / `except` (#3603)
I have the following code:
def factory() -> Iterator[bytes]:
try:
while True: # noqa: WPS457
yield async_to_sync(async_anext)(iterator)
except StopAsyncIteration:
pass
It should not raise
WPS457, because while is in try / except.It can clearly raise and we handle the error. So, it is not infinite.
PRs are welcome! 👍
#bug #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator
🚀 New issue to ag2ai/faststream by @lesnik512
📝 Feature: Static membership for aiokafka broker (group_instance_id) (#2782)
Hi!
Seems like aiokafka broker missing group_instance_id argument which required for static membership to work.
https://aiokafka.readthedocs.io/en/stable/api.html
For confluent kafka it exists #2606
#enhancement #good_first_issue #faststream #ag2ai
sent via relator
📝 Feature: Static membership for aiokafka broker (group_instance_id) (#2782)
Hi!
Seems like aiokafka broker missing group_instance_id argument which required for static membership to work.
https://aiokafka.readthedocs.io/en/stable/api.html
group_instance_id (str or None) – name of the group instance ID used for static membership (KIP-345)
For confluent kafka it exists #2606
#enhancement #good_first_issue #faststream #ag2ai
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support `etag` (#572)
Docs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag
Implementation example: https://docs.litestar.dev/latest/usage/responses.html#etag
We already can set
What do we need exactly?
1. We need
2. We need docs about sending
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Support `etag` (#572)
Docs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag
Implementation example: https://docs.litestar.dev/latest/usage/responses.html#etag
We already can set
etag as a header in @modify with NewHeader.What do we need exactly?
1. We need
ETag dataclass to represent the parsed header. It should also know how to unparse itself into a header2. We need docs about sending
ETag header and getting header If-Match back#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `Settings.semantic_responses` flag (#589)
Users might not need our semantic responses at all. It needs a kill switch.
We need to add
If set to
Probably, we should add
This would need several tests:
1. Snapshot test for the resulting OpenAPI spec
2. Test that response validation would still be required, missing responses must raise
Also, this would require docs in
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add `Settings.semantic_responses` flag (#589)
Users might not need our semantic responses at all. It needs a kill switch.
We need to add
Settings.semantic_responses flag, which should be True by default.If set to
False, we should not add any extra response specs to the final metadata.Probably, we should add
if check for this in EndpointMetadata.response_spec_providersThis would need several tests:
1. Snapshot test for the resulting OpenAPI spec
2. Test that response validation would still be required, missing responses must raise
419Also, this would require docs in
configuration.rst#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
❤1
Исправить одну строчку в новом релизе, чтобы исправить гонку.
https://github.com/reagento/dishka/issues/686
https://github.com/reagento/dishka/issues/686
GitHub
Possible race condition in compilation · Issue #686 · reagento/dishka
In version 1.9 new cache key generation introduced in factory compilation as a unique object. Because of this, compilation is no more idempotent. This should be replaced with CompilationKey See: ht...
😱2👍1
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add 3 more tests for component schema generation (#603)
There are several cases that we don't cover in
1. We need to test
django-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 66 in 8555cd5
2. We need to test
django-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 67 in 8555cd5
These corner cases can just be added to the existing
1. We also need to test at least one file field as a list, add one field to
django-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 122 in 8555cd5
This can be added to
This is a super easy issue for first-timers only :)
#enhancement #good_first_issue #help_wanted #python #django_modern_rest
sent via relator
📝 Add 3 more tests for component schema generation (#603)
There are several cases that we don't cover in
tests/test_unit/test_openapi/test_schema_snapshots.py1. We need to test
Query component schema generation with one field in __dmr_force_list__ and one other regular fielddjango-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 66 in 8555cd5
2. We need to test
Query component with at least one field indjango-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 67 in 8555cd5
These corner cases can just be added to the existing
_QueryModel1. We also need to test at least one file field as a list, add one field to
__dmr_force_list__ for FileMetadata component as welldjango-modern-rest/tests/test_unit/test_openapi/test_schema_snapshots.py
Line 122 in 8555cd5
This can be added to
_SeveralFiles model.This is a super easy issue for first-timers only :)
#enhancement #good_first_issue #help_wanted #python #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Make an `@overload`ed function from `load_schema` (#625)
Currently
Otherwise it needs extra params:
django-modern-rest/dmr/openapi/mappers/schema_loader.py
Lines 21 to 28 in 6c06cd9
This needs to be an overload.
This is a very easy task :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Make an `@overload`ed function from `load_schema` (#625)
Currently
load_schema can accept just a single argument if should_generate_examples is False.Otherwise it needs extra params:
django-modern-rest/dmr/openapi/mappers/schema_loader.py
Lines 21 to 28 in 6c06cd9
This needs to be an overload.
This is a very easy task :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support django's `i18n` for translation (#426)
All our user-facing texts must use django's i18n.
We will only provide en-us translation for now. Later more can be added if needed.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Support django's `i18n` for translation (#426)
All our user-facing texts must use django's i18n.
We will only provide en-us translation for now. Later more can be added if needed.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Formalize our CDN / static files support for OpenAPI renderers (#678)
I think that we should be able to configure: do we want to use local static files, served by django for OpenAPI renderers and interactive APIs, or should we use CDN for this.
Currently:
• Swagger uses local static files
• Scalar / Redoc use CDNs
Plan:
1. Introduce
2. Only when some lib has this explicit setting, we should use the CDN. Otherwise, they should use local static files which should be copied to
3. We need to document the EXACT versions we have bundleded in our static files
4. We need to copy their licenses as well, not just static files. Because we take their code / build result. They can go to our
#enhancement #good_first_issue #help_wanted #openapi #django_modern_rest
sent via relator
📝 Formalize our CDN / static files support for OpenAPI renderers (#678)
I think that we should be able to configure: do we want to use local static files, served by django for OpenAPI renderers and interactive APIs, or should we use CDN for this.
Currently:
• Swagger uses local static files
• Scalar / Redoc use CDNs
Plan:
1. Introduce
openapi_static_cdn: {'scalar': 'https://cdn_url.com'} option, where we can specify when these libs should use CDN2. Only when some lib has this explicit setting, we should use the CDN. Otherwise, they should use local static files which should be copied to
dmr3. We need to document the EXACT versions we have bundleded in our static files
4. We need to copy their licenses as well, not just static files. Because we take their code / build result. They can go to our
LICENSE.md at the very bottom, specify why it is there#enhancement #good_first_issue #help_wanted #openapi #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Make an `@overload` from `SchemaGenerator.__call__` (#679)
This code right now is not ideal:
django-modern-rest/dmr/openapi/generators/schema.py
Lines 22 to 31 in 8917dd3
Because when
While it is
This needs to be an
This is a very easy task for first-timers only :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Make an `@overload` from `SchemaGenerator.__call__` (#679)
This code right now is not ideal:
django-modern-rest/dmr/openapi/generators/schema.py
Lines 22 to 31 in 8917dd3
Because when
skip_registration=True, we know that we return a Schema object only.While it is
skip_registration=False we can return Schema | Reference.This needs to be an
@overloaded function with correct return types.This is a very easy task for first-timers only :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 Add `llms.txt` and `llms-full.txt` (#3619)
Let's add
It will generate
Plugin: https://github.com/wemake-services/django-modern-rest/blob/048bfa4e19f897a6ca9fbae63af14df56882b991/docs/conf.py#L72
Configuration: https://github.com/wemake-services/django-modern-rest/blob/048bfa4e19f897a6ca9fbae63af14df56882b991/docs/conf.py#L256-L258
#help_wanted #levelstarter #documentation #good_first_issue #wemake_python_styleguide #wps
sent via relator
📝 Add `llms.txt` and `llms-full.txt` (#3619)
Let's add
sphinx_llms_txt extension for the WPS: https://sphinx-llms-txt.readthedocs.io/en/latest/It will generate
llms.txt and llms-full.txtPlugin: https://github.com/wemake-services/django-modern-rest/blob/048bfa4e19f897a6ca9fbae63af14df56882b991/docs/conf.py#L72
Configuration: https://github.com/wemake-services/django-modern-rest/blob/048bfa4e19f897a6ca9fbae63af14df56882b991/docs/conf.py#L256-L258
#help_wanted #levelstarter #documentation #good_first_issue #wemake_python_styleguide #wps
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Integrate property-based `schemathesis` tests for routes that require `jwt` auth (#687)
We use
But, right now it does not not have any information about how it can get our JWT token to test protected APIs. This is a downside of our setup.
So, what should we do?
1. We should add a dynamic auth class for the jwt auth: https://schemathesis.readthedocs.io/en/stable/guides/auth/#dynamic-token-authentication
2. Next, modify all controllers' bodies in https://github.com/wemake-services/django-modern-rest/blob/master/django_test_app/server/apps/jwt_auth/views.py to raise an error
3. Test that
4. Revert
This is going to be interesing!
Refs schemathesis/schemathesis#3620
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Integrate property-based `schemathesis` tests for routes that require `jwt` auth (#687)
We use
schemathesis to run property-based tests on our API: https://github.com/wemake-services/django-modern-rest/blob/master/tests/test_integration/test_openapi/test_schema.pyBut, right now it does not not have any information about how it can get our JWT token to test protected APIs. This is a downside of our setup.
So, what should we do?
1. We should add a dynamic auth class for the jwt auth: https://schemathesis.readthedocs.io/en/stable/guides/auth/#dynamic-token-authentication
2. Next, modify all controllers' bodies in https://github.com/wemake-services/django-modern-rest/blob/master/django_test_app/server/apps/jwt_auth/views.py to raise an error
3. Test that
schemathsis can successfully log in and find these failure4. Revert
views.py changes and ensure that now all tests passThis is going to be interesing!
Refs schemathesis/schemathesis#3620
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
❤1
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Deploy example application somewhere (#691)
We have an example Django app that we can deploy somewhere: https://github.com/wemake-services/django-modern-rest/tree/master/django_test_app
So, users would have a real life application to test and interact with.
I propose finding a service that:
• Is free for our case
• Can support deployments from GitHub Actions, so we can do that in CI as well
• Provides some kind of a permanent link, so we can share it
• Does not require complex deployment strategy
Like PythonAnywhere or Heroku or Vercel, etc.
Any help is appreciated.
#documentation #enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Deploy example application somewhere (#691)
We have an example Django app that we can deploy somewhere: https://github.com/wemake-services/django-modern-rest/tree/master/django_test_app
So, users would have a real life application to test and interact with.
I propose finding a service that:
• Is free for our case
• Can support deployments from GitHub Actions, so we can do that in CI as well
• Provides some kind of a permanent link, so we can share it
• Does not require complex deployment strategy
Like PythonAnywhere or Heroku or Vercel, etc.
Any help is appreciated.
#documentation #enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Translate `django-modenr-rest` to your native language! (#718)
Docs: https://docs.djangoproject.com/en/6.0/topics/i18n/
How to do it?
1. Run
2. Run
3. Translate the new file created in
4. Run
5. Done! You are awesome, submit the PR :)
We welcome all contributions!
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Translate `django-modenr-rest` to your native language! (#718)
Docs: https://docs.djangoproject.com/en/6.0/topics/i18n/
How to do it?
1. Run
poetry install --all-groups --all-extras2. Run
poetry run django-admin makemessages -l YOUR_LOCALE, for example: poetry run django-admin makemessages -l ru_RU, full list of locales: https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes3. Translate the new file created in
dmr/locale/YOUR_LOCALE/LC_MESSAGES/django.po4. Run
poetry run django-admin compilemessages5. Done! You are awesome, submit the PR :)
We welcome all contributions!
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator