Находки в опенсорсе: Python
Open in Telegram
Легкие задачки в опенсорсе из мира Python Чат: @opensource_findings_chat
Show more985
Subscribers
No data24 hours
-17 days
+130 days
Posts Archive
🚀 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
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_providers
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 419
Also, this would require docs in configuration.rst
#enhancement #good_first_issue #help_wanted #django_modern_rest
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
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 header
2. 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 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
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/wemake-python-styleguide by @sobolevn
📝 `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 wemake-services/django-modern-rest by @sobolevn
📝 Add `auth=` parameter to `sse()` function (#546)
I forgot to add
auth= to parameters of
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🚀 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
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Необходимо добавить возможность настраивать текст в новом TimeSelect виджете в aiogram-dialog
https://github.com/Tishka17/aiogram_dialog/issues/519
🚀 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:
"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🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 Remove `WPS354` (#3601)
This rules has more problems that it solves:
1. Two
yields and yield from are two different things
2. Async iterators cannot use yield from, but WPS354 still raises even in async def
So, 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🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add an option to rename schemas (#505)
Right now schemas are registered like regular python classes, their name is just
type(...).__name__ we need a way to rename schemas in the openapi.
I propose adding __dmr_schema_name__ special attribute to do that.
This will also require a test case for the openapi.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @kondratevdev
📝 Enable `positive_data_acceptance` in `schemathesis` (#496)
At the moment, this check is disabled in the configuration.
We need to enable it (delete the line, because by default we have everything enabled) and fix the error that this check catches.
#enhancement #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 `WPS617` false positive with keyword args (#3596)
self._media_by_precedence = sorted(
(
media_type
for parser in self._parsers.values()
if (media_type := MediaType(parser.content_type)).quality != 0
),
key=lambda media: (media.specificity, media.quality), # noqa: WPS617
reverse=True,
)
It says:
django_modern_rest/negotiation.py
52:17 WPS617 Found lambda assigned as an attribute
key=lambda media: (media.specificity, media.quality),
^
Which is clearly a bug, it is a named param, not an attribute.
PRs are welcome, this is easy to fix.
#bug #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add unit tests for pagination (#484)
Right now we only test pagination in the doctests: https://github.com/wemake-services/django-modern-rest/blob/master/docs/examples/integrations/pagination.py
Let's add the same test to
test_unit as well. Create new test_pagination folder and put it there.
This is a very easy task for entry-level controbutors :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `cookies` support to `APIError` (#465)
Right now we support cookies in our API:
django-modern-rest/django_modern_rest/response.py
Lines 78 to 85 in ddfe907
But,
APIError does not allow to set any cookies:
django-modern-rest/django_modern_rest/response.py
Lines 64 to 75 in ddfe907
This is unfortunate. We need to be able to do anything we can do with a regular response with APIError.
This is a really easy issue for first-timers, welcome :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 JWT token blacklist app: design conditional apps (#462)
We need to design how we can add conditional django apps that have models to the framework.
For example, right now we can add an app to blacklist some jwt tokens.
What's interesting about that?
1. We need to design this app in a way that it is not required by default, with no visible parts
2. We need to design it that it will be very easy to install and use. For example: it should provide a mixin class that can be used together with
JWTSyncAuth / JWTAsyncAuth and a pre-existing common subclass
So, usage will look something like:
from django_modern_rest.some.place.for.app.models import BlacklistedJWTToken
class BlacklistMixin:
def check_auth(self, user: 'AbstractBaseUser', token: JWTToken) -> None:
super().check_user()
if BlacklistedJWTToken.objects.filter(jti=token.jti).exists():
# Token was blacklisted:
raise NotAuthenticatedError
We use jti to identify tokens, as other jwt's do.
It is now possible after #461
Sources of inspiration:
• https://github.com/jazzband/djangorestframework-simplejwt/blob/master/rest_framework_simplejwt/token_blacklist/models.py
• https://django-rest-framework-simplejwt.readthedocs.io/en/latest/blacklist_app.html
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `:language: python` to every single `.. literalinclude` (#458)
Sometimes without
:language: python sphinx does not render code correctly. Example:
🖼️Image
This happens because .. literalinclude there does not have :language: python
django-modern-rest/docs/pages/using-controller.rst
Lines 171 to 178 in d654770
We need to add it everywhere, where it is missing.
#documentation #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support conditional parsing in components (#453)
Right now we support conditional return types:
django-modern-rest/django_modern_rest/negotiation.py
Lines 212 to 228 in 35051cd
But, incomming
Body / Headers / Query can also be conditional, depending on the content-type.
Should we reuse the same feature for parsing?
OpenAPI fully supports this feature:
requestBody:
description: Optional description in *Markdown*
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/Pet"
application/xml:
schema:
$ref: "#/components/schemas/Pet"
For people who want to solve this: this is not easy!
Here's how the process should look like:
1. You present the idea and prototype implementation
2. We iterate on the design (several times maybe)
3. I approve the design
4. We can then continue with the implementation :)
#enhancement #help_wanted #django_modern_rest
sent via relatorМои друзья делают ярмарку опенсорс проектов: https://forms.phdays.com/yarmarka-proektov_2026
Можно будет кратко на сцене рассказать про свой проект и показать его всем желающим.
Подавайте заявки, если интересно :)
Available now! Telegram Research 2025 — the year's key insights 
