Находки в опенсорсе: Python
الذهاب إلى القناة على Telegram
Легкие задачки в опенсорсе из мира Python Чат: @opensource_findings_chat
إظهار المزيد985
المشتركون
لا توجد بيانات24 ساعات
-17 أيام
+130 أيام
أرشيف المشاركات
🚀 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:
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 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:
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 wemake-services/django-modern-rest by @sobolevn
📝 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 NamedTuple
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🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Provide `dmr.cookies.set_cookies` helper function (#773)
Currently we have two places where we duplicate this code:
django-modern-rest/dmr/streaming/controller.py
Lines 172 to 178 in a6bc356
and
django-modern-rest/dmr/response.py
Lines 256 to 259 in a6bc356
So, it can probably be useful to others as well.
Let's move this to
cookies.py as a public helper function.
Also, document it in public-api.rst
This is a very easy task for new contributors.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Provide our own `settings` fixture (#760)
When using
settings fixture from pytest-django we frequently change them.
However, we have dmr_clean_settings fixture, which should be use when we touch our own settings.
So, let's add a new fixture to dmr_pytest.py which will return unchanged settings: LazySettings, but will also use dmr_clean_settings.
Also, remove all dmr_clean_settings from our own tests, where settings is used.
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Use the latest django version by default (#759)
Currently we use
5.2 by default:
django-modern-rest/pyproject.toml
Line 77 in bea5f2d
But, we need to use the latest one. Which is 6.0.
Also, we would need to change this CI job to use 5.2 instead:
django-modern-rest/.github/workflows/test.yml
Lines 71 to 78 in bea5f2d
#good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support `Path` with `*args` (#754)
Right now
Path component only supports parsing from request.kwargs. Which is like 99% of cases.
However, parsing from request.args is not supported:
django-modern-rest/dmr/components.py
Lines 655 to 662 in b3f9c08
What should we do instead?
1. When request.args is provided we should require models like:
>>> import pydantic
>>> class UserId(pydantic.BaseModel):
... user_id: int
>>> PathModel = pydantic.RootModel[tuple[tuple[int, ...], UserId]]
>>> PathModel.model_validate((('1', '2', '3'), {'user_id': 10}))
RootModel[tuple[tuple[int, ...], UserId]](root=((1, 2, 3), UserId(user_id=10)))
1. We would return tuple[Args, Kwargs] from this component if request.args is set
2. Test this with unnamed re_path urls https://docs.djangoproject.com/en/6.0/topics/http/urls/#using-unnamed-regular-expression-groups
3. Test this in tests/test_unit/test_components/test_path.py
4. Document this feature in docs/pages/components/path.rst
5. Provide an example in docs/examples/components/path_args.py and include it to path.rst
6. Provide a changelog entry
7. Remove _UNNAMED_PATH_PARAMS_MSG and all translations of this string, recompile all translations with make translations
Contributions are welcome! This is an intermediate level task :)
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Test `Controller[BaseSerializer]` corner case (#749)
Currently we don't test that
Controller[BaseSerializer] is not a valid way of creating a controller class.
It must accept subclasses for BaseSerializer, but not BaseSerializer itself.
We need:
• a test case here https://github.com/wemake-services/django-modern-rest/blob/master/tests/test_unit/test_controllers/test_extend_controller.py
• a possible fix to raise an error when BaseSerializer is given to a controller here:
django-modern-rest/dmr/controller.py
Lines 157 to 164 in acb9c17
This is a very easy task, so new contributors are very welcome!
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Support `openapi.yaml` (#745)
Litestar supports
openapi.yaml view, so should we: https://docs.litestar.dev/latest/usage/openapi/ui_plugins.html
It should be only available if msgspec is installed, it can dump yaml with msgspec.yaml.
Everything else should be identical to openapi.json view.
This is a rather easy task, so new contributors are very welcome!
#documentation #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
poetry install --all-groups --all-extras
2. 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_codes
3. Translate the new file created in dmr/locale/YOUR_LOCALE/LC_MESSAGES/django.po
4. Run poetry run django-admin compilemessages
5. Done! You are awesome, submit the PR :)
We welcome all contributions!
#enhancement #good_first_issue #help_wanted #django_modern_rest
sent via relator🚀 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
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 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.py
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 schemathsis can successfully log in and find these failure
4. Revert views.py changes and ensure that now all tests pass
This is going to be interesing!
Refs schemathesis/schemathesis#3620
#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
sphinx_llms_txt extension for the WPS: https://sphinx-llms-txt.readthedocs.io/en/latest/
It will generate llms.txt and llms-full.txt
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🚀 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
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/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
openapi_static_cdn: {'scalar': 'https://cdn_url.com'} option, where we can specify when these libs should use CDN
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 dmr
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 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
📝 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
📝 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
📝 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.py
1. We need to test Query component schema generation with one field in __dmr_force_list__ and one other regular field
django-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 in
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 _QueryModel
1. We also need to test at least one file field as a list, add one field to __dmr_force_list__ for FileMetadata component as well
django-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Исправить одну строчку в новом релизе, чтобы исправить гонку.
https://github.com/reagento/dishka/issues/686
متاح الآن! بحث تيليغرام 2025 — أهم رؤى العام 
