aiogram/Makefile

133 lines
4.2 KiB
Makefile
Raw Permalink 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
uv sync --all-extras --group dev --group test
uv run pre-commit install
2019-11-15 14:21:35 +02:00
# =================================================================================================
# Code quality
# =================================================================================================
2020-05-26 22:13:01 +03:00
.PHONY: lint
lint:
Added full support of the Bot API 9.4 (#1761) * Bump API schema to version 9.4, add new object types, methods, and properties. * Add tests for `ChatOwnerChanged` and `ChatOwnerLeft` message types * Add tests for `GetUserProfileAudios`, `RemoveMyProfilePhoto`, and `SetMyProfilePhoto` methods * Bump version * Update Makefile variables and refactor `test_get_user_profile_audios.py` * Document new features and updates from Bot API 9.4 in changelog * Add `ButtonStyle` enum to represent button styles in the Telegram API * Fix review issues from PR #1761 - Remove stray '-' artifact from GameHighScore docstring and butcher schema - Fix Makefile reformat target scope inconsistency (ruff check --fix) - Fix ButtonStyle enum source URL (#chat -> #inlinekeyboardbutton) - Add User.get_profile_audios() shortcut method (parallel to get_profile_photos) - Test ChatOwnerLeft with new_owner=None (edge case) - Add VideoQuality type and Video.qualities nesting tests - Add User.get_profile_audios() test Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Revert "Fix review issues from PR #1761" This reverts commit 2184e98988fd14de2347e43d9ed5a938d27a76e4. * Update source links for `ButtonStyle` documentation to reflect accurate API references * Fix review issues from PR #1761 (#1762) * Fix review issues from PR #1761 - Remove stray '-' artifact from GameHighScore docstring - Fix Makefile reformat target scope inconsistency (ruff check --fix) - Add User.get_profile_audios() shortcut method (parallel to get_profile_photos) - Test ChatOwnerLeft with new_owner=None (edge case) - Add VideoQuality type and Video.qualities nesting tests - Add User.get_profile_audios() test Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Address review comments: use fixture and variables in tests, add changelog Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Address review follow-ups for PR #1762 --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> * Reformat code * Shut up, ruff --------- Co-authored-by: latand <latand666@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Kostiantyn Kriuchkov <36363097+Latand@users.noreply.github.com>
2026-02-10 23:43:52 +02:00
uv run ruff format --check --diff $(package_dir)
uv run ruff check --show-fixes --preview $(package_dir) $(examples_dir)
uv run mypy $(package_dir)
.PHONY: reformat
reformat:
uv run ruff format $(code_dir)
uv run ruff check --fix $(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
uv run 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/
uv run pytest --cov=aiogram --cov-config .coveragerc --html=$(reports_dir)/tests/index.html tests/ --redis $(redis_connection) --mongo $(mongo_connection)
uv run 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:
uv run coverage html -d $(reports_dir)/coverage
uv run 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:
uv run --extra docs bash -c 'cd $(docs_dir) && make gettext'
uv run --extra 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:
uv run --extra 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
uv build
.PHONY: bump
bump:
uv run python scripts/bump_version.py $(args)
uv run python scripts/bump_versions.py
update-api:
uv run --extra cli butcher parse
uv run --extra cli butcher refresh
uv run --extra cli butcher apply all
@$(MAKE) bump
.PHONY: towncrier-build
towncrier-build:
uv run --extra docs towncrier build --yes
.PHONY: towncrier-draft
towncrier-draft:
uv run --extra docs towncrier build --draft
.PHONY: towncrier-draft-github
towncrier-draft-github:
mkdir -p dist
uv run --extra 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 uv run python -c 'from aiogram import __version__; print(__version__)')"
git tag v$(shell uv run python -c 'from aiogram import __version__; print(__version__)')