feat: add invalidate_cache for @cached decorator #990
Workflow file for this run
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
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@v5 | |
with: | |
python-version: 3.9 | |
cache: 'pip' | |
cache-dependency-path: '**/requirements*.txt' | |
- name: Pre-Commit hooks | |
uses: pre-commit/[email protected] | |
- name: Install dependencies | |
uses: py-actions/py-dependency-install@v4 | |
with: | |
path: requirements-dev.txt | |
- name: Install itself | |
run: | | |
pip install . | |
- name: Run linter | |
run: | | |
make lint | |
- 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: | |
os: [ubuntu] | |
pyver: ['3.8', '3.9', '3.10', '3.11'] | |
redis: ['latest'] | |
ujson: [''] | |
include: | |
- os: ubuntu | |
pyver: pypy-3.9 | |
redis: 'latest' | |
- os: ubuntu | |
pyver: '3.9' | |
redis: '5.0.14' | |
- os: ubuntu | |
pyver: '3.9' | |
redis: 'latest' | |
ujson: 'ujson' | |
services: | |
redis: | |
image: redis:${{ matrix.redis }} | |
ports: | |
- 6379:6379 | |
options: >- | |
--health-cmd "redis-cli ping" | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
memcached: | |
image: memcached | |
ports: | |
- 11211:11211 | |
runs-on: ${{ matrix.os }}-latest | |
timeout-minutes: 15 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Python ${{ matrix.pyver }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.pyver }} | |
allow-prereleases: true | |
cache: 'pip' | |
cache-dependency-path: '**/requirements*.txt' | |
- name: Install ujson | |
if: ${{ matrix.ujson == 'ujson' }} | |
run: pip install ujson | |
- name: Install dependencies | |
uses: py-actions/py-dependency-install@v4 | |
with: | |
path: requirements.txt | |
- name: Run unittests | |
env: | |
COLOR: 'yes' | |
run: pytest tests --cov-report xml --cov-report html | |
- name: Run functional tests | |
run: bash examples/run_all.sh | |
- name: Uninstall optional backends | |
run: pip uninstall -y aiomcache redis | |
- name: Run unittests with minimal backend set | |
env: | |
COLOR: 'yes' | |
run: | | |
pytest --cov-report xml --cov-report html --cov-append tests/acceptance tests/ut -m "not memcached and not redis" --ignore "tests/ut/backends/test_memcached.py" --ignore "tests/ut/backends/test_redis.py" | |
- name: Produce coverage report | |
run: python -m coverage xml | |
- name: Upload coverage | |
uses: codecov/codecov-action@v4 | |
with: | |
file: ./coverage.xml | |
flags: unit | |
fail_ci_if_error: false | |
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 | |
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') | |
needs: [check] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Update pip, wheel, setuptools, build, twine | |
run: | | |
python -m pip install -U pip wheel setuptools build twine | |
- name: Build dists | |
run: | | |
python -m build | |
- name: Make Release | |
uses: aio-libs/[email protected] | |
with: | |
changes_file: CHANGES.rst | |
name: aiocache | |
version_file: aiocache/__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/aiocache/issues/\\1>`" | |
fix_issue_repl: "(#\\1)" |