aiogram/Makefile

134 lines
4 KiB
Makefile
Raw Normal View History

.DEFAULT_GOAL := lint
2019-11-15 12:17:57 +02:00
package_dir := aiogram
tests_dir := tests
scripts_dir := scripts
examples_dir := examples
code_dir := $(package_dir) $(tests_dir) $(scripts_dir) $(examples_dir)
2020-01-11 20:01:49 +02:00
reports_dir := reports
redis_connection := redis://localhost:6379
mongo_connection := mongodb://mongo:mongo@localhost:27017
2019-11-15 14:21:35 +02:00
# =================================================================================================
# Environment
# =================================================================================================
2020-05-26 22:13:01 +03:00
.PHONY: clean
2019-11-15 14:21:35 +02:00
clean:
rm -rf `find . -name __pycache__`
rm -f `find . -type f -name '*.py[co]' `
rm -f `find . -type f -name '*~' `
rm -f `find . -type f -name '.*~' `
2019-11-28 23:21:19 +02:00
rm -rf `find . -name .pytest_cache`
2019-11-15 14:21:35 +02:00
rm -rf *.egg-info
2019-11-17 23:40:52 +02:00
rm -f report.html
rm -f .coverage
rm -rf {build,dist,site,.cache,.mypy_cache,.ruff_cache,reports}
2019-11-15 14:21:35 +02:00
.PHONY: install
install: clean
pip install -e ."[dev,test,docs]" -U --upgrade-strategy=eager
pre-commit install
2019-11-15 14:21:35 +02:00
# =================================================================================================
# Code quality
# =================================================================================================
2020-05-26 22:13:01 +03:00
.PHONY: lint
lint:
isort --check-only $(code_dir)
black --check --diff $(code_dir)
EOL of Py3.9 (#1726) * Drop py3.9 and pypy3.9 Add pypy3.11 (testing) into `tests.yml` Remove py3.9 from matrix in `tests.yml` Refactor not auto-gen code to be compatible with py3.10+, droping ugly 3.9 annotation. Replace some `from typing` imports to `from collections.abc`, due to deprecation Add `from __future__ import annotations` and `if TYPE_CHECKING:` where possible Add some `noqa` to calm down Ruff in some places, if Ruff will be used as default linting+formatting tool in future Replace some relative imports to absolute Sort `__all__` tuples in `__init__.py` and some other `.py` files Sort `__slots__` tuples in classes Split raises into `msg` and `raise` (`EM101`, `EM102`) to not duplicate error message in the traceback Add `Self` from `typing_extenstion` where possible Resolve typing problem in `aiogram/filters/command.py:18` Concatenate nested `if` statements Convert `HandlerContainer` into a dataclass in `aiogram/fsm/scene.py` Bump tests docker-compose.yml `redis:6-alpine` -> `redis:8-alpine` Bump tests docker-compose.yml `mongo:7.0.6` -> `mongo:8.0.14` Bump pre-commit-config `black==24.4.2` -> `black==25.9.0` Bump pre-commit-config `ruff==0.5.1` -> `ruff==0.13.3` Update Makefile lint for ruff to show fixes Add `make outdated` into Makefile Use `pathlib` instead of `os.path` Bump `redis[hiredis]>=5.0.1,<5.3.0` -> `redis[hiredis]>=6.2.0,<7` Bump `cryptography>=43.0.0` -> `cryptography>=46.0.0` due to security reasons Bump `pytz~=2023.3` -> `pytz~=2025.2` Bump `pycryptodomex~=3.19.0` -> `pycryptodomex~=3.23.0` due to security reasons Bump linting and formatting tools * Add `1726.removal.rst` * Update aiogram/utils/dataclass.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update aiogram/filters/callback_data.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update 1726.removal.rst * Remove `outdated` from Makefile * Add `__slots__` to `HandlerContainer` * Remove unused imports * Add `@dataclass` with `slots=True` to `HandlerContainer` --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 19:19:23 +03:00
ruff check --show-fixes --preview $(package_dir) $(examples_dir)
mypy $(package_dir)
.PHONY: reformat
reformat:
black $(code_dir)
isort $(code_dir)
2019-11-15 12:44:24 +02:00
2019-11-15 14:21:35 +02:00
# =================================================================================================
# Tests
# =================================================================================================
.PHONY: test-run-services
test-run-services:
@#docker-compose -f tests/docker-compose.yml -p aiogram3-dev up -d
2019-11-15 14:21:35 +02:00
2020-05-26 22:13:01 +03:00
.PHONY: test
test: test-run-services
pytest --cov=aiogram --cov-config .coveragerc tests/ --redis $(redis_connection) --mongo $(mongo_connection)
2019-11-18 14:57:11 +02:00
2020-05-26 22:13:01 +03:00
.PHONY: test-coverage
test-coverage: test-run-services
2020-01-11 20:01:49 +02:00
mkdir -p $(reports_dir)/tests/
pytest --cov=aiogram --cov-config .coveragerc --html=$(reports_dir)/tests/index.html tests/ --redis $(redis_connection) --mongo $(mongo_connection)
coverage html -d $(reports_dir)/coverage
2020-05-26 00:23:35 +03:00
2020-05-26 22:13:01 +03:00
.PHONY: test-coverage-view
2020-05-26 00:23:35 +03:00
test-coverage-view:
coverage html -d $(reports_dir)/coverage
python -c "import webbrowser; webbrowser.open('file://$(shell pwd)/reports/coverage/index.html')"
2019-11-15 14:21:35 +02:00
# =================================================================================================
# Docs
# =================================================================================================
locales := uk_UA
locale_targets := $(addprefix docs-serve-, $(locales))
locales_pot := _build/gettext
docs_dir := docs
docs-gettext:
2023-07-30 18:32:37 +03:00
hatch run docs:bash -c 'cd $(docs_dir) && make gettext'
hatch run docs:bash -c 'cd $(docs_dir) && sphinx-intl update -p $(locales_pot) $(addprefix -l , $(locales))'
.PHONY: docs-gettext
2019-11-15 14:11:50 +02:00
docs-serve:
2024-09-08 15:53:44 +03:00
hatch run docs:sphinx-autobuild --watch aiogram/ --watch CHANGES.rst --watch README.rst docs/ docs/_build/ $(OPTS)
.PHONY: docs-serve
$(locale_targets): docs-serve-%:
$(MAKE) docs-serve OPTS="-D language=$(subst docs-serve-,,$@)"
.PHONY: $(locale_targets)
2019-11-18 14:57:11 +02:00
# =================================================================================================
# Project
# =================================================================================================
2019-11-17 23:40:52 +02:00
2020-05-26 22:13:01 +03:00
.PHONY: build
build: clean
hatch build
.PHONY: bump
bump:
hatch version $(args)
python scripts/bump_versions.py
update-api:
butcher parse
butcher refresh
butcher apply all
@$(MAKE) bump
.PHONY: towncrier-build
towncrier-build:
2023-11-24 23:29:21 +02:00
hatch run docs:towncrier build --yes
.PHONY: towncrier-draft
towncrier-draft:
hatch run docs:towncrier build --draft
.PHONY: towncrier-draft-github
towncrier-draft-github:
mkdir -p dist
hatch run docs:towncrier build --draft | pandoc - -o dist/release.md
.PHONY: prepare-release
2022-04-19 22:09:43 +03:00
prepare-release: bump towncrier-build
2022-04-19 22:09:43 +03:00
.PHONY: release
release:
git add .
git commit -m "Release $(shell poetry version -s)"
2023-02-19 18:10:11 +02:00
git tag v$(shell hatch version -s)