mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
Some checks failed
Tests / tests (macos-latest, 3.10) (push) Has been cancelled
Tests / tests (macos-latest, 3.11) (push) Has been cancelled
Tests / tests (macos-latest, 3.12) (push) Has been cancelled
Tests / tests (macos-latest, 3.13) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.11) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.12) (push) Has been cancelled
Tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
Tests / tests (windows-latest, 3.10) (push) Has been cancelled
Tests / tests (windows-latest, 3.11) (push) Has been cancelled
Tests / tests (windows-latest, 3.12) (push) Has been cancelled
Tests / tests (windows-latest, 3.13) (push) Has been cancelled
Tests / pypy-tests (macos-latest, pypy3.10) (push) Has been cancelled
Tests / pypy-tests (macos-latest, pypy3.11) (push) Has been cancelled
Tests / pypy-tests (ubuntu-latest, pypy3.10) (push) Has been cancelled
Tests / pypy-tests (ubuntu-latest, pypy3.11) (push) Has been cancelled
* 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>
141 lines
3.6 KiB
YAML
141 lines
3.6 KiB
YAML
name: Tests
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- dev-3.x
|
||
paths:
|
||
- ".github/workflows/tests.yml"
|
||
- "aiogram/**"
|
||
- "tests/**"
|
||
- "codecov.yaml"
|
||
- "pyproject.toml"
|
||
pull_request:
|
||
branches:
|
||
- dev-3.x
|
||
paths:
|
||
- ".github/workflows/tests.yml"
|
||
- "aiogram/**"
|
||
- "tests/**"
|
||
- "pyproject.toml"
|
||
|
||
jobs:
|
||
tests:
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
os:
|
||
- ubuntu-latest
|
||
- macos-latest
|
||
- windows-latest
|
||
python-version:
|
||
- "3.10"
|
||
- "3.11"
|
||
- "3.12"
|
||
- "3.13"
|
||
|
||
defaults:
|
||
# Windows sucks. Force use bash instead of PowerShell
|
||
run:
|
||
shell: bash
|
||
|
||
runs-on: ${{ matrix.os }}
|
||
|
||
env:
|
||
# Windows has some limitations:
|
||
# – Redis and MongoDB is not supported on GitHub Windows runners;
|
||
IS_WINDOWS: ${{ startswith(matrix.os, 'windows') }}
|
||
# MongoDB has some limitations:
|
||
# – MongoDB container action is only supported on Linux;
|
||
IS_UBUNTU: ${{ startswith(matrix.os, 'ubuntu') }}
|
||
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
||
uses: actions/setup-python@v5
|
||
with:
|
||
python-version: ${{ matrix.python-version }}
|
||
cache: "pip"
|
||
cache-dependency-path: pyproject.toml
|
||
|
||
- name: Install project dependencies
|
||
run: |
|
||
pip install -e .[dev,test,redis,mongo,proxy,i18n,fast,signature]
|
||
|
||
- name: Lint code
|
||
run: |
|
||
ruff check --output-format=github aiogram examples
|
||
mypy aiogram
|
||
black --check --diff aiogram tests
|
||
|
||
- name: Setup redis
|
||
if: ${{ env.IS_WINDOWS == 'false' }}
|
||
uses: shogo82148/actions-setup-redis@v1
|
||
with:
|
||
redis-version: 6
|
||
|
||
- name: Setup mongodb
|
||
if: ${{ env.IS_UBUNTU == 'true' }}
|
||
uses: supercharge/mongodb-github-action@1.10.0
|
||
with:
|
||
mongodb-version: "7.0"
|
||
mongodb-username: mongo
|
||
mongodb-password: mongo
|
||
mongodb-port: 27017
|
||
|
||
- name: Run tests
|
||
run: |
|
||
flags="$flags --cov=aiogram --cov-config .coveragerc --cov-report=xml"
|
||
[[ "$IS_WINDOWS" == "false" ]] && flags="$flags --redis redis://localhost:6379/0"
|
||
[[ "$IS_UBUNTU" == "true" ]] && flags="$flags --mongo mongodb://mongo:mongo@localhost:27017"
|
||
pytest $flags
|
||
|
||
- name: Upload coverage data
|
||
uses: codecov/codecov-action@v4
|
||
with:
|
||
token: ${{ secrets.CODECOV_TOKEN }}
|
||
files: coverage.xml
|
||
flags: unittests
|
||
name: py-${{ matrix.python-version }}-${{ matrix.os }}
|
||
fail_ci_if_error: true
|
||
|
||
pypy-tests:
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
os:
|
||
- ubuntu-latest
|
||
- macos-latest
|
||
# - windows-latest
|
||
python-version:
|
||
- "pypy3.10"
|
||
- "pypy3.11"
|
||
|
||
defaults:
|
||
# Windows sucks. Force use bash instead of PowerShell
|
||
run:
|
||
shell: bash
|
||
|
||
runs-on: ${{ matrix.os }}
|
||
|
||
steps:
|
||
- name: Checkout code
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
||
uses: actions/setup-python@v5
|
||
with:
|
||
python-version: ${{ matrix.python-version }}
|
||
cache: "pip"
|
||
cache-dependency-path: pyproject.toml
|
||
|
||
- name: Install project dependencies
|
||
run: |
|
||
pip install -e .[dev,test,redis,mongo,proxy,i18n,fast,signature]
|
||
|
||
- name: Run tests
|
||
run: |
|
||
flags=""
|
||
pytest $flags
|