Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .coverage
Binary file not shown.
34 changes: 6 additions & 28 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,10 @@ jobs:
installer-parallel: true

- name: Install dependencies
run: |
poetry install --no-interaction --no-ansi --with dev
run: make init

- name: Run Ruff
run: |
poetry run ruff format --check .
poetry run ruff check .
run: make lint

# --------------------------------------------------------------------------
# TYPE CHECK (Mypy)
Expand All @@ -70,13 +67,10 @@ jobs:
installer-parallel: true

- name: Install dependencies
run: |
poetry install --no-interaction --no-ansi --with dev
run: make init

- name: Run Mypy
run: |
poetry run mypy --install-types --non-interactive || true
poetry run mypy src/ tests/ --ignore-missing-imports --disable-error-code=call-overload
run: make typecheck

# --------------------------------------------------------------------------
# TESTS (Pytest + Coverage)
Expand Down Expand Up @@ -108,28 +102,12 @@ jobs:
virtualenvs-in-project: true
installer-parallel: true

- name: Cache virtualenv
uses: actions/cache@v4
id: cache
with:
path: .venv
key: v1-poetry-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }}

- name: Install dependencies (with dev)
if: steps.cache.outputs.cache-hit != 'true'
run: |
poetry env use "${{ steps.py.outputs.python-path }}"
poetry install --no-interaction --no-ansi --with dev

- name: Sync dependencies (cache hit)
if: steps.cache.outputs.cache-hit == 'true'
run: |
poetry env use "${{ steps.py.outputs.python-path }}"
poetry install --no-interaction --no-ansi --with dev
run: make init

- name: Run Pytest
run: |
poetry run pytest -q --cov=change_me --cov-report=term-missing --cov-report=xml --cov-fail-under=85
run: make test

- name: Upload coverage XML artifact
if: ${{ matrix.python-version == '3.12' }}
Expand Down
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,9 @@ htmlcov/
.nox/
../.coverage
.coveragerc
.coverage.*
.coverage
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
Expand Down
19 changes: 13 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,25 @@ SHELL := /bin/bash
init:
python3 -m venv .venv
poetry install --with dev
pre-commit install
poetry run pre-commit install
poetry env info
@echo "Created virtual environment"

test:
poetry run pytest --cov=src/ --cov-report=term-missing --no-cov-on-fail
poetry run pytest --cov=src/ --cov-report=term-missing --no-cov-on-fail --cov-report=xml --cov-fail-under=10
rm .coverage

format:
ruff format
ruff check --fix
lint:
poetry run ruff format
poetry run ruff check --fix

typecheck:
poetry run mypy src/ tests/ --ignore-missing-imports

format:
make lint
make typecheck

clean:
rm -rf .venv
rm -rf .mypy_cache
Expand All @@ -24,7 +31,7 @@ clean:
rm -rf juninit-pytest.xml
rm -rf logs/*
find . -name ".coverage*" -delete
find . -name --pycache__ -exec rm -r {} +
find . -name __pycache__ -exec rm -r {} +

update:
poetry cache clear pypi --all
Expand Down
93 changes: 93 additions & 0 deletions coverage.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?xml version="1.0" ?>
<coverage version="7.11.3" timestamp="1763113609225" lines-valid="52" lines-covered="52" line-rate="1" branches-covered="0" branches-valid="0" branch-rate="0" complexity="0">
<!-- Generated by coverage.py: https://coverage.readthedocs.io/en/7.11.3 -->
<!-- Based on https://raw.githubusercontent.com/cobertura/web/master/htdocs/xml/coverage-04.dtd -->
<sources>
<source>/Users/tsmoragiewicz/Documents/repos/template-python/src</source>
</sources>
<packages>
<package name="change_me" line-rate="1" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="change_me/__init__.py" complexity="0" line-rate="1" branch-rate="0">
<methods/>
<lines/>
</class>
<class name="__main__.py" filename="change_me/__main__.py" complexity="0" line-rate="1" branch-rate="0">
<methods/>
<lines>
<line number="3" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="8" hits="1"/>
<line number="11" hits="1"/>
<line number="20" hits="1"/>
<line number="21" hits="1"/>
</lines>
</class>
<class name="utils.py" filename="change_me/utils.py" complexity="0" line-rate="1" branch-rate="0">
<methods/>
<lines>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="5" hits="1"/>
<line number="7" hits="1"/>
<line number="9" hits="1"/>
<line number="18" hits="1"/>
<line number="26" hits="1"/>
<line number="27" hits="1"/>
<line number="28" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="33" hits="1"/>
<line number="47" hits="1"/>
<line number="49" hits="1"/>
<line number="50" hits="1"/>
<line number="52" hits="1"/>
<line number="53" hits="1"/>
<line number="56" hits="1"/>
<line number="57" hits="1"/>
<line number="58" hits="1"/>
<line number="59" hits="1"/>
</lines>
</class>
</classes>
</package>
<package name="change_me.config" line-rate="1" branch-rate="0" complexity="0">
<classes>
<class name="__init__.py" filename="change_me/config/__init__.py" complexity="0" line-rate="1" branch-rate="0">
<methods/>
<lines/>
</class>
<class name="definitions.py" filename="change_me/config/definitions.py" complexity="0" line-rate="1" branch-rate="0">
<methods/>
<lines>
<line number="3" hits="1"/>
<line number="4" hits="1"/>
<line number="6" hits="1"/>
<line number="8" hits="1"/>
<line number="12" hits="1"/>
<line number="13" hits="1"/>
<line number="14" hits="1"/>
<line number="15" hits="1"/>
<line number="18" hits="1"/>
<line number="20" hits="1"/>
<line number="22" hits="1"/>
<line number="25" hits="1"/>
<line number="26" hits="1"/>
<line number="29" hits="1"/>
<line number="30" hits="1"/>
<line number="31" hits="1"/>
<line number="32" hits="1"/>
<line number="33" hits="1"/>
<line number="34" hits="1"/>
<line number="35" hits="1"/>
<line number="37" hits="1"/>
<line number="39" hits="1"/>
<line number="42" hits="1"/>
<line number="43" hits="1"/>
</lines>
</class>
</classes>
</package>
</packages>
</coverage>
Loading
Loading