-
Notifications
You must be signed in to change notification settings - Fork 36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move pytest to pyproject.toml
and other small changes
#535
Move pytest to pyproject.toml
and other small changes
#535
Conversation
1. Drop pytest.ini and move settings to toml 2. Drop redundant `flake-aaa` and `flake8-multiline-containers`
1. Check `isort` and `black` format on lint make target 2. Check created migrations on `test` make target 3. Check project on `lint` target 4. Deps with `resolver=backtracking` as pip-tools recommendation
1. Add `psycopg2-binary` cause CI test assumes postgres as DB 2. Update all existed deps to the latest supported versions
1. Use python version from `.python-version` file 2. Add `PYTHON_VERSION` dockerfile var arg
@f213 посмотри 🙏 Проверил что в таком виде проект собирается и нормально github ci проходит. |
@@ -5,22 +5,28 @@ install-deps: deps | |||
pip-sync requirements.txt | |||
|
|||
deps: | |||
pip-compile --output-file=requirements.txt pyproject.toml | |||
pip-compile --resolver=backtracking --output-file=requirements.txt pyproject.toml |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
На всякий случай оставлю это здесь: я поковырял возможность конфигурировать pip-tools через pyproject.toml и нашёл jazzband/pip-tools#604, в которой пока ничего не сделали. Надеюсь, сделают :-)
@f213 подправил замечания + обновил описание PR. Если всё норм, можно мерджить. Что поменялось:
|
@nkiryanov а не хочешь найти тулзу, которая выпиливает неиспользованные импорты? Я тут понял, что сейчас за меня это делает pycharm, а хотелось бы, чтобы форматер |
О, этого отличная идея. Посмотрю. |
@f213 если что не могу сам смерджить: нет прав. |
А теперь? |
@@ -5,4 +5,4 @@ | |||
|
|||
class AppPagination(PageNumberPagination): | |||
page_size_query_param = "page_size" | |||
max_page_size = settings.MAX_PAGE_SIZE | |||
max_page_size = settings.MAX_PAGE_SIZE # type: ignore |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nkiryanov @f213 @kazqvaizer вот такие тайп-игноры придется теперь ставить везде где есть settings.
Это происходит, т.к. в django-stubs есть какой-то баг. Последний коммент верный. Чтобы этого не было - надо ограничивать версию django-stubs до ==1.12.0.
По мере роста проекта писать везде тайп-игнор напрягает. Но и стопорить версию по идее не правильно. К тому же она за собой стопорит версию drf-stubs, т.к. требует django-stubs>=1.13.0
Что лучше, ставим в новых проектах везде тайп-игнор пока не пофиксят?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ну я бы попридержал версию django-stubs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Думал об этом и склонялся к другому варианту: лучше type: ignore
для настроек.
Почему:
- В стабах тоже фиксят баги. Так у нас будет
type: ignore
для одного конкретного сценария, а если не обновлять то могут бытьtype: ignore
в соврешенно разных местах (сталкивался с багом с тайпингом менеджера кверисета который появлялся с обновлением django и который чинился обновлением стабов) - Настройки не так часто вызываем и игноров будет не оч. много. А если пофиксят, нам
mypy
сообщит, что больше не нужны - Вроде новый LTS релиз не за горами и для него будет нужна новая версия стабов. Всё равно столкнёмся (если не пофиксят)
Ну, а если долго не будут фиксить, то подумать что можно сделать с настройками.
pytest
перевезли в общийpyproject.toml
deps
иdev-deps
: зависимости собираются с-resolver=backtracking
как рекомендуетpip-tools
fmt-check
— проверяет сортировку импортов и форматирование black. Ну чтоб в lint всё не собиратьlint
:fmt-check
: что-то у меня с сортировкой импортов было не ок, но ошибок не было. Теперь будутtest
flake-aaa
иflake8-multiline-containers
: первую не используем, вторая конфликтует с blackpsycopg2-binary
: как минимум вci
запускаем тесты с postgresBaseService
: теперь возвращает Anygithub.ci
.python-version
файлаgithub.ci
через экшн cache: так можем явно указать какие папки кэшировать (нам нужен venv).Dockerfile
: версию python нужно передавать в build-args. Так удобнее.drf-spectacular