🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `slotscheck` to the CI (#68)
There's an amazing tool called https://github.com/ariebovenberg/slotscheck
We use
List of things to do:
• Add
• Add the configuration to
• Add the call to
This should be a really small task for several minutes :)
#help_wanted #good_first_issue #dependencies #github_actions
sent via relator
📝 Add `slotscheck` to the CI (#68)
There's an amazing tool called https://github.com/ariebovenberg/slotscheck
We use
__slots__ in this project by default. So, we would love to test their defition.List of things to do:
• Add
slotscheck to test deps• Add the configuration to
pyproject.toml• Add the call to
MakefileThis should be a really small task for several minutes :)
#help_wanted #good_first_issue #dependencies #github_actions
sent via relator
👍1
  🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add `codespell` to the CI (#72)
We need to add
Example:
• https://github.com/dry-python/returns/blob/1d74c969a94ce13648be2fe2a8bfad3b12f73069/pyproject.toml#L64
• Configuration (should be moved to
• Running: https://github.com/dry-python/returns/blob/1d74c969a94ce13648be2fe2a8bfad3b12f73069/.github/workflows/test.yml#L61
PRs are welcome!
#enhancement #good_first_issue #github_actions #help_wanted
sent via relator
📝 Add `codespell` to the CI (#72)
We need to add
codespell to the CI, because I make a lot of typos :)Example:
• https://github.com/dry-python/returns/blob/1d74c969a94ce13648be2fe2a8bfad3b12f73069/pyproject.toml#L64
• Configuration (should be moved to
pyproject.toml): https://github.com/dry-python/returns/blob/1d74c969a94ce13648be2fe2a8bfad3b12f73069/setup.cfg#L170-L173• Running: https://github.com/dry-python/returns/blob/1d74c969a94ce13648be2fe2a8bfad3b12f73069/.github/workflows/test.yml#L61
PRs are welcome!
#enhancement #good_first_issue #github_actions #help_wanted
sent via relator
❤1👍1
  🚀 New issue to wemake-services/wemake-python-styleguide by @sobolevn
📝 `WPS226` false positive on fstring parts (#3548)
This code raises a violation:
When
Output:
This does not seem right, because strings that are part of
PR would be rather easy :)
#help_wanted #levelstarter #good_first_issue #bug
sent via relator
  📝 `WPS226` false positive on fstring parts (#3548)
This code raises a violation:
x = f'single {1}'
y = f'single {1}'
When
--max-string-usage=1 is provided.Output:
1:5 WPS226 Found string literal over-use: single > 1
x = f'single {1}'
^
This does not seem right, because strings that are part of
f strings should not be counted by WPS226PR would be rather easy :)
#help_wanted #levelstarter #good_first_issue #bug
sent via relator
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
• One for
• 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
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
📝 Create
We have kwargs for
And they are used here: https://github.com/wemake-services/django-modern-rest/blob/2edcf631b26758c84adafe1a0f24a8de824c8fca/djangomodernrest/plugins/msgspec.py#L136-L142
We need to make a
#goodfirstissue #help_wanted #enhancement
sent via relator
📝 Create
TypedDict for the msgspec.convert call (#124)We have kwargs for
msgspec.convert defined here: https://github.com/wemake-services/django-modern-rest/blob/2edcf631b26758c84adafe1a0f24a8de824c8fca/djangomodernrest/plugins/msgspec.py#L81And they are used here: https://github.com/wemake-services/django-modern-rest/blob/2edcf631b26758c84adafe1a0f24a8de824c8fca/djangomodernrest/plugins/msgspec.py#L136-L142
We need to make a
TypedDict for the possible values of these kwargs.#goodfirstissue #help_wanted #enhancement
sent via relator
👍2
  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
#django_modern_rest #help_wanted #good_first_issue #enhancement
sent via relator
  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
Split code from `middleware.rst` into its own example file (#186)
We store our examples as independent files, so it would be easier for us to work with them: type checking, linting, etc.
Right now
#django_modern_rest #documentation #good_first_issue #help_wanted
sent via relator
  Split code from `middleware.rst` into its own example file (#186)
We store our examples as independent files, so it would be easier for us to work with them: type checking, linting, etc.
Right now
middleware.rst has a lot of code with no examples. We need to create a new example/middleware/<example_name>.py and split the code.#django_modern_rest #documentation #good_first_issue #help_wanted
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
To fix this I propose adding a sphinx custom directive called
🖼️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
  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:
This must raise a validation exception in
We allow endpoints in the final composed controllers, but they must not use any parsing. Like
#django_modern_rest #good_first_issue #enhancement #help_wanted
sent via relator
  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
