-
Notifications
You must be signed in to change notification settings - Fork 93
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update CI inline with rest of aio-libs (#395)
- Loading branch information
1 parent
83168cd
commit 8d81f96
Showing
38 changed files
with
597 additions
and
460 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
codecov: | ||
notify: | ||
after_n_builds: 10 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# .coveragerc to control coverage.py | ||
[run] | ||
branch = True | ||
omit = aiosmtpd/docs/* | ||
|
||
[report] | ||
exclude_also = | ||
^\s*if TYPE_CHECKING: | ||
: \.\.\.(\s*#.*)?$ | ||
^ +\.\.\.$ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
version: 2 | ||
updates: | ||
- package-ecosystem: pip | ||
directory: "/" | ||
schedule: | ||
interval: daily | ||
|
||
- package-ecosystem: "github-actions" | ||
directory: "/" | ||
schedule: | ||
interval: "monthly" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
name: Dependabot auto-merge | ||
on: pull_request_target | ||
|
||
permissions: | ||
pull-requests: write | ||
contents: write | ||
|
||
jobs: | ||
dependabot: | ||
runs-on: ubuntu-latest | ||
if: ${{ github.actor == 'dependabot[bot]' }} | ||
steps: | ||
- name: Dependabot metadata | ||
id: metadata | ||
uses: dependabot/fetch-metadata@v1.6.0 | ||
with: | ||
github-token: "${{ secrets.GITHUB_TOKEN }}" | ||
- name: Enable auto-merge for Dependabot PRs | ||
run: gh pr merge --auto --squash "$PR_URL" | ||
env: | ||
PR_URL: ${{github.event.pull_request.html_url}} | ||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
name: CI | ||
|
||
on: | ||
push: | ||
branches: | ||
- master | ||
- '[0-9].[0-9]+' # matches to backport branches, e.g. 3.6 | ||
tags: [ 'v*' ] | ||
pull_request: | ||
branches: | ||
- master | ||
- '[0-9].[0-9]+' | ||
|
||
jobs: | ||
lint: | ||
name: Linter | ||
runs-on: ubuntu-latest | ||
timeout-minutes: 5 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.11 | ||
cache: 'pip' | ||
cache-dependency-path: '**/requirements*.txt' | ||
- name: Install dependencies | ||
uses: py-actions/py-dependency-install@v4 | ||
with: | ||
path: requirements-dev.txt | ||
- name: Install itself | ||
run: | | ||
pip install . | ||
- name: Mypy | ||
run: mypy | ||
- name: Flake8 | ||
run: python -m flake8 aiosmtpd setup.py housekeep.py release.py | ||
- name: Docs Checking | ||
run: | | ||
# Prepare sphinx and the deps for sphinx extensions | ||
sphinx-build --color -b doctest -d build/.doctree aiosmtpd/docs build/doctest | ||
sphinx-build --color -b html -d build/.doctree aiosmtpd/docs build/html | ||
sphinx-build --color -b man -d build/.doctree aiosmtpd/docs build/man | ||
- name: Other QA Checks | ||
shell: bash | ||
run: | | ||
# Final checks before launching the runners | ||
ver_sed='s/^__version__ = (["'"'"'])(.*)\1/\2/p;d' | ||
verfile="aiosmtpd/__init__.py" | ||
if [[ $GITHUB_REF != refs/heads/master ]]; then | ||
# Fetch master because some test cases need its existence | ||
git fetch --no-tags --prune --no-recurse-submodules --depth=1 origin master:master | ||
fi | ||
pytest -v aiosmtpd/qa | ||
check-manifest -v | ||
- name: Prepare twine checker | ||
run: | | ||
pip install -U build twine wheel | ||
python -m build | ||
- name: Run twine checker | ||
run: | | ||
twine check dist/* | ||
test: | ||
name: Test | ||
strategy: | ||
matrix: | ||
pyver: ['3.8', '3.9', '3.10', '3.11', '3.12'] | ||
os: [ubuntu, macos, windows] | ||
include: | ||
- pyver: pypy-3.8 | ||
os: ubuntu | ||
runs-on: ${{ matrix.os }}-latest | ||
timeout-minutes: 15 | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python ${{ matrix.pyver }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.pyver }} | ||
cache: 'pip' | ||
cache-dependency-path: '**/requirements*.txt' | ||
- name: Install dependencies | ||
uses: py-actions/py-dependency-install@v4 | ||
with: | ||
path: requirements.txt | ||
- name: Run unittests | ||
run: pytest | ||
env: | ||
COLOR: 'yes' | ||
- run: python -m coverage xml | ||
- name: Upload coverage | ||
uses: codecov/codecov-action@v3 | ||
with: | ||
fail_ci_if_error: true | ||
|
||
check: # This job does nothing and is only used for the branch protection | ||
if: always() | ||
|
||
needs: [lint, test] | ||
|
||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Decide whether the needed jobs succeeded or failed | ||
uses: re-actors/alls-green@release/v1 | ||
with: | ||
jobs: ${{ toJSON(needs) }} | ||
|
||
deploy: | ||
name: Deploy | ||
environment: release | ||
runs-on: ubuntu-latest | ||
needs: [check] | ||
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
- name: Setup Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: 3.11 | ||
- name: Install dependencies | ||
run: | ||
python -m pip install -U pip wheel setuptools build twine | ||
- name: Build dists | ||
run: | | ||
python -m build | ||
- name: Make Release | ||
uses: aio-libs/create-release@v1.6.6 | ||
with: | ||
changes_file: aiosmtpd/docs/NEWS.rst | ||
name: aiosmtpd | ||
version_file: aiosmtpd/__init__.py | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
pypi_token: ${{ secrets.PYPI_API_TOKEN }} | ||
dist_dir: dist | ||
fix_issue_regex: "`#(\\d+) <https://github.com/aio-libs/aiosmtpd/issues/\\1>`" | ||
fix_issue_repl: "(#\\1)" |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
[mypy] | ||
files = aiosmtpd, examples | ||
check_untyped_defs = True | ||
follow_imports_for_stubs = True | ||
#disallow_any_decorated = True | ||
#disallow_any_generics = True | ||
disallow_any_unimported = True | ||
#disallow_incomplete_defs = True | ||
disallow_subclassing_any = True | ||
#disallow_untyped_calls = True | ||
disallow_untyped_decorators = True | ||
#disallow_untyped_defs = True | ||
# TODO(PY312): explicit-override | ||
enable_error_code = ignore-without-code, possibly-undefined, redundant-expr, redundant-self, truthy-bool, truthy-iterable, unused-awaitable | ||
extra_checks = True | ||
implicit_reexport = False | ||
no_implicit_optional = True | ||
pretty = True | ||
show_column_numbers = True | ||
show_error_codes = True | ||
show_error_code_links = True | ||
strict_equality = True | ||
warn_incomplete_stub = True | ||
warn_redundant_casts = True | ||
#warn_return_any = True | ||
warn_unreachable = True | ||
warn_unused_ignores = True | ||
|
||
[mypy-aiosmtpd.tests.*] | ||
# TODO: Type tests | ||
ignore_errors = True | ||
|
||
[mypy-aiosmtpd.proxy_protocol] | ||
disable_error_code = misc | ||
# TODO: Fix this. Maybe try switching to dataclasses? | ||
#aiosmtpd/proxy_protocol.py:312:9: error: Trying to assign name "error" that is not in "__slots__" of type "aiosmtpd.proxy_protocol.ProxyData" [misc] | ||
# self.error = error_msg | ||
# ^~~~~~~~~~ | ||
|
||
[mypy-sphinx_rtd_theme.*] | ||
ignore_missing_imports = True |
Oops, something went wrong.