Находки в опенсорсе: Python
前往频道在 Telegram
970
订阅者
无数据24 小时
-47 天
-630 天
帖子存档
🚀 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
Можно будет кратко на сцене рассказать про свой проект и показать его всем желающим.
Подавайте заявки, если интересно :)
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Rename `serialization.py` into `serializer.py` (#428)
This file: https://github.com/wemake-services/django-modern-rest/blob/master/django_modern_rest/serialization.py
Why? Because it stores only a basic serializer.
Plugins name these files
serializer.py:
1. https://github.com/wemake-services/django-modern-rest/blob/master/django_modern_rest/plugins/pydantic/serializer.py
2. https://github.com/wemake-services/django-modern-rest/blob/master/django_modern_rest/plugins/msgspec/serializer.py
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 False positive for `WPS430` with whitelisted name (#3589)
def wrap_handler(
method: _MethodSyncHandler | _MethodAsyncHandler,
) -> SyncErrorHandlerT | AsyncErrorHandlerT:
if inspect.iscoroutinefunction(method):
@wraps(method)
async def decorator(
endpoint: 'Endpoint',
controller: 'Controller[BaseSerializer]',
exc: Exception,
) -> HttpResponse:
return await method( # type: ignore[no-any-return]
controller.active_blueprint,
endpoint,
controller,
exc,
)
else:
@wraps(method)
def decorator(
endpoint: 'Endpoint',
controller: 'Controller[BaseSerializer]',
exc: Exception,
) -> HttpResponse:
return method( # type: ignore[return-value]
controller.active_blueprint,
endpoint,
controller,
exc,
)
return decorator
This code falsy raises two WPS430 violations.
69:9 WPS430 Found nested function: factory async def factory( ^ 84:9 WPS430 Found nested function: factory def factory( ^But, the name is correct.
decorator name is in whitelist of names. This is a false positive.
We need to fix it and add a test case.
#bug #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Fix `Sequence[SyncAuth | AsyncAuth]` to be `Sequence[SyncAuth] | Sequence[AsyncAuth]` (#408)
I've made a mistake in
modify and validate typing:
django-modern-rest/django_modern_rest/endpoint.py
Line 411 in 65d7638
I used Sequence[SyncAuth | AsyncAuth] instead of Sequence[SyncAuth] | Sequence[AsyncAuth].
Here's the difference: https://mypy-play.net/?mypy=latest&python=3.12&flags=strict&gist=487fad8c5bdaa2e7d2b4e84a3fa25a6d
We need to fix the typings of @modify and @validate and add a typesafety/ test that providing both sync and async auth at the same time is a type error.
This issue is created for people who make their first (!) contribution :)
Please, let them feel welcome!
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Negotiate response renderer as soon as possible (#402)
I think that it would be fair not to do anything if we can't find a renderer for the response.
It is better than we do it right now, when we finish all the business logic, just to find out that we can't show a proper response.
We should move
response_negotiator call before the actual endpoint execution.
Maybe here?
django-modern-rest/django_modern_rest/endpoint.py
Lines 148 to 150 in 697c348
We should also add a test case that endpoint logic is not executed if there's something wrong with the negotiation.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Test that `HttpResponseRedirect` works and provide `APIRedirect` exception (#107)
We have a TODO item for redirects:
django-modern-rest/django_modern_rest/controller.py
Line 187 in be877dc
DRF uses regular
HttpResonseRedirect and it seems to work well.
We need to test that we also can return HttpResponseRedirect in @validate endpoints.
In @modify endpoints we should better provide a helper called APIRedirect which should be a subclass of APIError with location field.
See the original implementation of HttpRedirectResponse here https://github.com/django/django/blob/ca3e0484ef31d13053af6a9d50667813e22fc282/django/http/response.py#L628-L653
Make sure that preserve_request also works.
@Peopl3s are you interested? This is a nice beginner-friendly task :)
#enhancement #help_wanted #django_modern_rest
sent via relatorНеобходимо добавить метаинформацию в новые исключения, которые кидаются при построенни графа зависимостей и были добавлены в связи с реализацией новой фичи активации провайдеров.
https://github.com/reagento/dishka/issues/643
#dishka
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Create `json_dumps` internal helper (#383)
We have to dump
json in some internal places of our code:
django-modern-rest/django_modern_rest/openapi/renderers/base.py
Lines 16 to 31 in 9e6132e
But, right now we don't use msgspec there if it is available. But, we should :)
So, let's create a new internal/json file and make a helper there. Then use it in base.py
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relatorпоследний релиз
django-stubs для lts версий 5.2 вышел!
продолжаем добавлять поддержку django@6.0. нужна ваша помощь!
https://github.com/typeddjango/django-stubs/releases/tag/5.2.9
#typing #django_stubs🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support `pyrefly` (#367)
https://pyrefly.org is already quite stable.
We use it in https://github.com/typeddjango/django-stubs/blob/master/pyrefly.toml with no major complains.
I really want to add this in CI as soon as possible.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to ag2ai/faststream by @esinevgeny
📝 Bug: ValueError while calling redis client.xautoclaim (#2736)
Describe the bug
ValueError while calling xautoclaim
How to reproduce
Use the next route and launch the faststream, if there are messages with PENDING status in stream the issue will be observed
@broker.subscriber(
stream=StreamSub("test:test", group="workers",
consumer="worker",
min_idle_time=5000)
)
async def worker(msg: RedisStreamMessage, redis: Redis):
logger.error(f"Claim {msg.correlation_id}")
await msg.ack(redis=redis, group="workers")
Actual
Traceback (most recent call last):
File "/venv/lib64/python3.12/site-packages/faststream/redis/subscriber/usecases/basic.py", line 91, in _consume
await self._get_msgs(*args)
File "/venv/lib64/python3.12/site-packages/faststream/redis/subscriber/usecases/stream_subscriber.py", line 341, in _get_msgs
for stream_name, msgs in await read(self.last_id):
^^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/lib64/python3.12/site-packages/faststream/redis/subscriber/usecases/stream_subscriber.py", line 140, in read
(next_id, messages, _) = stream_message
^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 3, got 2)
Environment
Running FastStream 0.6.5 with CPython 3.12.11 on Linux
redis 7.1.0
Also checked on redis 5.3.0
#bug #good_first_issue #faststream #ag2ai
sent via relator🚀 New issue to wemake-services/wemake-python-styleguide by @luminoso
📝 False positive for WPS457 when using asyncio to control loops (#3573)
What's wrong
For the code:
import asyncio
async def infinite_loop() -> None:
try:
while True:
await asyncio.sleep(1)
print("I'm alive. And doing work.")
except asyncio.CancelledError:
print("Loop cancelled")
t = asyncio.create_task(infinite_loop())
await asyncio.sleep(5)
t.cancel()
WPS457: Found an infinite while loop is raised. But infinite loop is being handled. Just not within the while loop.
How it should be
Not to raise WPS457.
Not 100% sure here if it is the best practice or not.
Also probably the solution is too complex and is just easier to add a noqa in the code.
Flake8 version and plugins
{
"platform": {
"python_implementation": "CPython",
"python_version": "3.13.9",
"system": "Linux"
},
"plugins": [
{
"plugin": "mccabe",
"version": "0.7.0"
},
{
"plugin": "pycodestyle",
"version": "2.14.0"
},
{
"plugin": "pyflakes",
"version": "3.4.0"
},
{
"plugin": "wemake-python-styleguide",
"version": "1.4.0"
}
],
"version": "7.3.0"
}
pip information
pip 25.3 from /var/home/luminoso/.local/lib/python3.14/site-packages/pip (python 3.14) anyio==4.11.0 archspec==0.2.5 argcomplete==3.6.3 asttokens==3.0.0 attrs==25.4.0 boto3==1.42.4 botocore==1.42.4 Brlapi==0.8.7 Brotli==1.1.0 certifi==2025.7.9 charset-normalizer==3.4.3 click==8.1.7 conda==25.11.0 conda-package-handling==2.4.0 conda_package_streaming==0.11.0 cupshelpers==1.0 dasbus==1.7 dbus-python==1.4.0 decorator==5.2.1 distro==1.9.0 executing==2.2.1 fedora-third-party==0.10 file-magic==0.4.0 frozendict==2.4.6 gbinder-python==1.1.2 h11==0.16.0 httpcore==1.0.9 httpx==0.28.1 idna==3.10 ipython==8.37.0 jedi==0.19.2 jmespath==1.0.1 jsonpatch==1.33 jsonpointer==2.4 jsonschema==4.23.0 jsonschema-specifications==2024.10.1 langtable==0.0.69 louis==3.33.0 matplotlib-inline==0.1.7 menuinst==2.3.1 mercurial==7.1.1 mutagen==1.47.0 nftables==0.1 olefile==0.47 packaging==25.0 parso==0.8.5 pexpect==4.9.0 pillow==11.3.0 platformdirs==4.2.2 pluggy==1.6.0 progressbar2==4.5.0 prompt_toolkit==3.0.41 psutil==7.0.0 ptyprocess==0.7.0 pure_eval==0.2.3 PyAudio==0.2.13 pycairo==1.28.0 pyclip==0.7.0 pycosat==0.6.6 pycryptodomex==3.23.0 pycups==2.0.4 pyenchant==3.2.2 pygdbmi==0.11.0.0 Pygments==2.19.1 PyGObject==3.54.5 pyinotify==0.9.6 PySocks==1.7.1 python-dateutil==2.9.0.post0 python-linux-procfs==0.7.3 python-utils==3.9.1 pyudev==0.24.3 pyxdg==0.27 PyYAML==6.0.2 pyynl @ file:///builddir/build/BUILD/kernel-6.17.10-build/kernel-6.17.10/linux-6.17.10-300.fc43.x86_64/tools/net/ynl RapidFuzz==3.12.2 referencing==0.36.2 regex==2025.10.23 requests==2.32.5 rpds-py==0.27.0 rpm==6.0.0 rpmautospec==0.8.3 rpmautospec-core==0.1.5 ruamel.yaml==0.18.16 ruamel.yaml.clib==0.2.12 s3transfer==0.16.0 selinux @ file:///builddir/build/BUILD/libselinux-3.9-build/libselinux-3.9/src sentry-sdk==2.35.0 sepolicy @ file:///builddir/build/BUILD/policycoreutils-3.9-build/selinux-3.9/python/sepolicy setools==4.6.0 setuptools==78.1.1 six==1.17.0 sniffio==1.3.1 sos==4.10.1 stack_data==0.6.3 tqdm==4.67.1 traitlets==5.14.3 typing_extensions==4.15.0 urllib3==2.5.0 wcwidth==0.2.13 websockets==15.0.1 yt-dlp==2025.10.22 zstandard==0.25.0OS information
$ lsb_release -a LSB Version: n/a Distributor ID: Fedora Description: Fedora Linux 43.20251209.0 (Kinoite) Release: 43 Codename: n/a#bug #help_wanted #levelstarter #good_first_issue #wemake_python_styleguide #wps sent via relator
Добавляем типы для django 6.0!
https://github.com/typeddjango/django-stubs/issues/2944
#typing #django_stubs
