Skip to content

feat: add invalidate_cache for @cached decorator #990

feat: add invalidate_cache for @cached decorator

feat: add invalidate_cache for @cached decorator #990

Workflow file for this run

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)"