Находки в опенсорсе: Python
852 subscribers
4 photos
133 links
Легкие задачки в опенсорсе из мира Python

Чат: @opensource_findings_chat
Download Telegram
New issue to wemake-services/django-modern-rest by @sobolevn
Write tests for "double validation" problem
(#85)

We need to be sure that double validation does not happen. Ever.
See what "double validation" is: fastapi/fastapi#3021

To be sure, we need to write tests for it.

Tests would be rather easy to write:

• One for @modify
• One for @validate
• One for raw data return
 Also test disabled response validation mode to do 0 validations.

See the attached issue to learn how to make sure that double validation happened.
No matter what - we need to do a 1 or 0 validations.

#django_modern_rest #help_wanted #enhancement #good_first_issue

sent via relator
🔥1
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Endpoint customizations are not tested (#104)

Similar to https://github.com/wemake-services/django-modern-rest/issues/93 we have several important public APIs for Endpoint customization: https://github.com/wemake-services/django-modern-rest/blob/9e1a24deb3a65683f991ebd14465b0b20e0c22b1/djangomodernrest/endpoint.py#L53-L58

But, we never test that they can actually be applied. This is a very simple issue with just 2 extra tests with existing examples from https://github.com/wemake-services/django-modern-rest/pull/95

#helpwanted #goodfirst_issue #enhancement

sent via relator
👍2
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Write a test for custom handle_error and handle_async_error types (#110)

Our endpoints have two methods to handle custom errors: https://github.com/wemake-services/django-modern-rest/blob/17edd60e1d13b88f4ee2c229095c237b1919b415/djangomodernrest/endpoint.py#L118-L132

But, they are not tested to be customized. Please, add two cases with:

1. Async endpoint and handle_async_error that custom errors can be serialized to json the right way

2. Sync endpoint and handle_error with the same logic

#helpwanted #goodfirst_issue #enhancement

sent via relator
New issue to wemake-services/django-modern-rest by @sobolevn
Split `rest` app into several django apps
(#171)

Our integration tests need some love.
Please, split this big app into smaller and more managable ones:

• basic parsing can stay there
• openapi should go into its own app
• middleware stuff should go into other app as well
 https://github.com/wemake-services/django-modern-rest/blob/master/django_test_app/server/apps/rest/views.py

Also, make sure that test files are also different in tests/test_integration

#django_modern_rest #help_wanted #good_first_issue #enhancement

sent via relator
New issue to wemake-services/django-modern-rest by @sobolevn
Customize `.. literalinclude` directive to automatically create links to the source files
(#191)

Some examples have a big number of import statements that take around 30%-50% of the whole example. We can use :lines: NUM- to hide imports, but, we still want to show the whole file when needed.

To fix this I propose adding a sphinx custom directive called .. literalincludelinked, which will produce

🖼️Image

Here are some basic examples of how to do something similar:
https://chatgpt.com/share/68ff5943-c07c-8009-8ae1-cc6520b452d7

PRs are very welcome!

#django_modern_rest #documentation #help_wanted #enhancement #good_first_issue

sent via relator
New issue to wemake-services/django-modern-rest by @sobolevn
Validate that controllers with `blueprints` can't have `component_parsers`
(#217)

Otherwise we would do two parsings in a single HTTP request.
This is not good.

Right now this code is possible:

@final
class _ErrorBody(pydantic.BaseModel):
error: int

class _ErrorHandlingBlueprint(
Blueprint[PydanticSerializer],
Body[_ErrorBody], # <- first body parsing
):
def post(self) -> str:
return str(self.parsed_body.error)

class _ErrorHandlingController(
Controller[PydanticSerializer],
Body[dict[str, int]], # <- second body parsing
):
blueprints: ClassVar[Sequence[_BlueprintT]] = [_ErrorHandlingBlueprint]

def get(self) -> int:
return self.parsed_body.get('error', 0)

This must raise a validation exception in ControllerValidator.

We allow endpoints in the final composed controllers, but they must not use any parsing. Like OPTIONS, for example. If users want to have parsed data, then they should create a blueprint.

#django_modern_rest #good_first_issue #enhancement #help_wanted

sent via relator