dataframely 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dataframely-1.0.0/.copier-answers.yml +12 -0
- dataframely-1.0.0/.envrc +2 -0
- dataframely-1.0.0/.gitattributes +1 -0
- dataframely-1.0.0/.github/CODEOWNERS +1 -0
- dataframely-1.0.0/.github/PULL_REQUEST_TEMPLATE.md +7 -0
- dataframely-1.0.0/.github/dependabot.yml +12 -0
- dataframely-1.0.0/.github/release-drafter.yml +101 -0
- dataframely-1.0.0/.github/workflows/build.yml +86 -0
- dataframely-1.0.0/.github/workflows/chore.yml +66 -0
- dataframely-1.0.0/.github/workflows/ci.yml +55 -0
- dataframely-1.0.0/.github/workflows/update-lockfiles.yml +34 -0
- dataframely-1.0.0/.gitignore +390 -0
- dataframely-1.0.0/.pre-commit-config.yaml +86 -0
- dataframely-1.0.0/.prettierignore +6 -0
- dataframely-1.0.0/.prettierrc +7 -0
- dataframely-1.0.0/.readthedocs.yml +14 -0
- dataframely-1.0.0/Cargo.lock +359 -0
- dataframely-1.0.0/Cargo.toml +14 -0
- dataframely-1.0.0/LICENSE +29 -0
- dataframely-1.0.0/PKG-INFO +97 -0
- dataframely-1.0.0/README.md +80 -0
- dataframely-1.0.0/dataframely/__init__.py +92 -0
- dataframely-1.0.0/dataframely/_base_collection.py +285 -0
- dataframely-1.0.0/dataframely/_base_schema.py +186 -0
- dataframely-1.0.0/dataframely/_compat.py +39 -0
- dataframely-1.0.0/dataframely/_extre.pyi +54 -0
- dataframely-1.0.0/dataframely/_filter.py +42 -0
- dataframely-1.0.0/dataframely/_polars.py +63 -0
- dataframely-1.0.0/dataframely/_rule.py +130 -0
- dataframely-1.0.0/dataframely/_typing.py +97 -0
- dataframely-1.0.0/dataframely/_validation.py +85 -0
- dataframely-1.0.0/dataframely/collection.py +616 -0
- dataframely-1.0.0/dataframely/columns/__init__.py +41 -0
- dataframely-1.0.0/dataframely/columns/_base.py +191 -0
- dataframely-1.0.0/dataframely/columns/_mixins.py +94 -0
- dataframely-1.0.0/dataframely/columns/_utils.py +60 -0
- dataframely-1.0.0/dataframely/columns/any.py +72 -0
- dataframely-1.0.0/dataframely/columns/bool.py +31 -0
- dataframely-1.0.0/dataframely/columns/datetime.py +501 -0
- dataframely-1.0.0/dataframely/columns/decimal.py +162 -0
- dataframely-1.0.0/dataframely/columns/enum.py +76 -0
- dataframely-1.0.0/dataframely/columns/float.py +201 -0
- dataframely-1.0.0/dataframely/columns/integer.py +349 -0
- dataframely-1.0.0/dataframely/columns/list.py +150 -0
- dataframely-1.0.0/dataframely/columns/string.py +126 -0
- dataframely-1.0.0/dataframely/columns/struct.py +105 -0
- dataframely-1.0.0/dataframely/config.py +54 -0
- dataframely-1.0.0/dataframely/exc.py +125 -0
- dataframely-1.0.0/dataframely/failure.py +144 -0
- dataframely-1.0.0/dataframely/functional.py +85 -0
- dataframely-1.0.0/dataframely/mypy.py +401 -0
- dataframely-1.0.0/dataframely/py.typed +0 -0
- dataframely-1.0.0/dataframely/random.py +409 -0
- dataframely-1.0.0/dataframely/schema.py +615 -0
- dataframely-1.0.0/dataframely/testing/__init__.py +27 -0
- dataframely-1.0.0/dataframely/testing/const.py +49 -0
- dataframely-1.0.0/dataframely/testing/factory.py +63 -0
- dataframely-1.0.0/dataframely/testing/mask.py +46 -0
- dataframely-1.0.0/dataframely/testing/rules.py +33 -0
- dataframely-1.0.0/dataframely/testing/typing.py +30 -0
- dataframely-1.0.0/docker-compose.yml +10 -0
- dataframely-1.0.0/docs/Makefile +20 -0
- dataframely-1.0.0/docs/_api/dataframely.collection.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.any.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.bool.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.datetime.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.decimal.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.enum.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.float.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.integer.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.list.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.rst +90 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.string.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.columns.struct.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.config.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.exc.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.failure.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.functional.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.mypy.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.random.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.rst +83 -0
- dataframely-1.0.0/docs/_api/dataframely.schema.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.const.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.factory.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.mask.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.rst +50 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.rules.rst +7 -0
- dataframely-1.0.0/docs/_api/dataframely.testing.typing.rst +7 -0
- dataframely-1.0.0/docs/_api/modules.rst +7 -0
- dataframely-1.0.0/docs/_static/custom.css +3 -0
- dataframely-1.0.0/docs/_static/favicon.ico +0 -0
- dataframely-1.0.0/docs/conf.py +123 -0
- dataframely-1.0.0/docs/index.rst +46 -0
- dataframely-1.0.0/docs/make.bat +35 -0
- dataframely-1.0.0/docs/sites/development.rst +48 -0
- dataframely-1.0.0/docs/sites/examples/real-world.ipynb +532 -0
- dataframely-1.0.0/docs/sites/faq.rst +5 -0
- dataframely-1.0.0/docs/sites/installation.rst +9 -0
- dataframely-1.0.0/docs/sites/quickstart.rst +261 -0
- dataframely-1.0.0/pixi.lock +17389 -0
- dataframely-1.0.0/pixi.toml +99 -0
- dataframely-1.0.0/pyproject.toml +88 -0
- dataframely-1.0.0/src/errdefs.rs +24 -0
- dataframely-1.0.0/src/lib.rs +59 -0
- dataframely-1.0.0/src/regex_repr.rs +190 -0
- dataframely-1.0.0/tests/collection/test_base.py +149 -0
- dataframely-1.0.0/tests/collection/test_cast.py +59 -0
- dataframely-1.0.0/tests/collection/test_create_empty.py +29 -0
- dataframely-1.0.0/tests/collection/test_filter_one_to_n.py +48 -0
- dataframely-1.0.0/tests/collection/test_filter_validate.py +233 -0
- dataframely-1.0.0/tests/collection/test_ignore_in_filter.py +83 -0
- dataframely-1.0.0/tests/collection/test_implementation.py +196 -0
- dataframely-1.0.0/tests/collection/test_optional_members.py +36 -0
- dataframely-1.0.0/tests/collection/test_sample.py +127 -0
- dataframely-1.0.0/tests/collection/test_validate_input.py +31 -0
- dataframely-1.0.0/tests/column_types/__init__.py +2 -0
- dataframely-1.0.0/tests/column_types/test_any.py +22 -0
- dataframely-1.0.0/tests/column_types/test_datetime.py +396 -0
- dataframely-1.0.0/tests/column_types/test_decimal.py +153 -0
- dataframely-1.0.0/tests/column_types/test_enum.py +54 -0
- dataframely-1.0.0/tests/column_types/test_float.py +206 -0
- dataframely-1.0.0/tests/column_types/test_integer.py +185 -0
- dataframely-1.0.0/tests/column_types/test_list.py +181 -0
- dataframely-1.0.0/tests/column_types/test_string.py +46 -0
- dataframely-1.0.0/tests/column_types/test_struct.py +167 -0
- dataframely-1.0.0/tests/columns/__init__.py +2 -0
- dataframely-1.0.0/tests/columns/test_alias.py +24 -0
- dataframely-1.0.0/tests/columns/test_check.py +19 -0
- dataframely-1.0.0/tests/columns/test_default_dtypes.py +48 -0
- dataframely-1.0.0/tests/columns/test_metadata.py +18 -0
- dataframely-1.0.0/tests/columns/test_polars_schema.py +13 -0
- dataframely-1.0.0/tests/columns/test_pyarrow.py +96 -0
- dataframely-1.0.0/tests/columns/test_rules.py +43 -0
- dataframely-1.0.0/tests/columns/test_sample.py +195 -0
- dataframely-1.0.0/tests/columns/test_sql_schema.py +147 -0
- dataframely-1.0.0/tests/columns/test_str.py +29 -0
- dataframely-1.0.0/tests/columns/test_utils.py +33 -0
- dataframely-1.0.0/tests/core_validation/__init__.py +2 -0
- dataframely-1.0.0/tests/core_validation/test_column_validation.py +27 -0
- dataframely-1.0.0/tests/core_validation/test_dtype_validation.py +106 -0
- dataframely-1.0.0/tests/core_validation/test_rule_evaluation.py +108 -0
- dataframely-1.0.0/tests/functional/test_concat.py +43 -0
- dataframely-1.0.0/tests/functional/test_relationships.py +77 -0
- dataframely-1.0.0/tests/schema/__init__.py +2 -0
- dataframely-1.0.0/tests/schema/test_base.py +77 -0
- dataframely-1.0.0/tests/schema/test_cast.py +45 -0
- dataframely-1.0.0/tests/schema/test_create_empty.py +33 -0
- dataframely-1.0.0/tests/schema/test_create_empty_if_none.py +44 -0
- dataframely-1.0.0/tests/schema/test_filter.py +165 -0
- dataframely-1.0.0/tests/schema/test_inheritance.py +22 -0
- dataframely-1.0.0/tests/schema/test_rule_implementation.py +67 -0
- dataframely-1.0.0/tests/schema/test_sample.py +137 -0
- dataframely-1.0.0/tests/schema/test_validate.py +116 -0
- dataframely-1.0.0/tests/test_compat.py +14 -0
- dataframely-1.0.0/tests/test_config.py +42 -0
- dataframely-1.0.0/tests/test_exc.py +43 -0
- dataframely-1.0.0/tests/test_extre.py +91 -0
- dataframely-1.0.0/tests/test_failure_info.py +33 -0
- dataframely-1.0.0/tests/test_random.py +252 -0
- dataframely-1.0.0/tests/test_typing.py +226 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# This file is managed by Copier; DO NOT EDIT OR REMOVE.
|
|
2
|
+
_commit: v0.3.0
|
|
3
|
+
_src_path: https://github.com/quantco/copier-template-python-open-source
|
|
4
|
+
add_autobump_workflow: true
|
|
5
|
+
author_email: oliver.borchert@quantco.com
|
|
6
|
+
author_name: Oliver Borchert
|
|
7
|
+
github_url: https://github.com/quantco/dataframely
|
|
8
|
+
github_user: borchero
|
|
9
|
+
minimal_python_version: py311
|
|
10
|
+
project_short_description: A declarative, polars-native data frame validation library
|
|
11
|
+
project_slug: dataframely
|
|
12
|
+
use_devcontainer: false
|
dataframely-1.0.0/.envrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pixi.lock linguist-language=YAML linguist-generated=true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @borchero @AndreasAlbertQC @delsner
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# ------------------------------------- PULL REQUEST LABELS ------------------------------------- #
|
|
2
|
+
autolabeler:
|
|
3
|
+
# Conventional Commit Types (https://github.com/commitizen/conventional-commit-types)
|
|
4
|
+
- label: build
|
|
5
|
+
title:
|
|
6
|
+
- '/^build(\(.*\))?(\!)?\:/'
|
|
7
|
+
- label: chore
|
|
8
|
+
title:
|
|
9
|
+
- '/^chore(\(.*\))?(\!)?\:/'
|
|
10
|
+
- label: ci
|
|
11
|
+
title:
|
|
12
|
+
- '/^ci(\(.*\))?(\!)?\:/'
|
|
13
|
+
- label: documentation
|
|
14
|
+
title:
|
|
15
|
+
- '/^docs(\(.*\))?(\!)?\:/'
|
|
16
|
+
- label: enhancement
|
|
17
|
+
title:
|
|
18
|
+
- '/^feat(\(.*\))?(\!)?\:/'
|
|
19
|
+
- label: fix
|
|
20
|
+
title:
|
|
21
|
+
- '/^fix(\(.*\))?(\!)?\:/'
|
|
22
|
+
- label: performance
|
|
23
|
+
title:
|
|
24
|
+
- '/^perf(\(.*\))?(\!)?\:/'
|
|
25
|
+
- label: refactor
|
|
26
|
+
title:
|
|
27
|
+
- '/^refactor(\(.*\))?(\!)?\:/'
|
|
28
|
+
- label: revert
|
|
29
|
+
title:
|
|
30
|
+
- '/^revert(\(.*\))?(\!)?\:/'
|
|
31
|
+
- label: style
|
|
32
|
+
title:
|
|
33
|
+
- '/^style(\(.*\))?(\!)?\:/'
|
|
34
|
+
- label: test
|
|
35
|
+
title:
|
|
36
|
+
- '/^test(\(.*\))?(\!)?\:/'
|
|
37
|
+
# Custom Types
|
|
38
|
+
- label: breaking
|
|
39
|
+
title:
|
|
40
|
+
- '/^[a-z]+(\(.*\))?\!\:/'
|
|
41
|
+
# ------------------------------------- AUTOMATIC VERSIONING ------------------------------------ #
|
|
42
|
+
version-resolver:
|
|
43
|
+
major:
|
|
44
|
+
labels:
|
|
45
|
+
- breaking
|
|
46
|
+
minor:
|
|
47
|
+
labels:
|
|
48
|
+
- enhancement
|
|
49
|
+
default: patch
|
|
50
|
+
# ------------------------------------ RELEASE CONFIGURATION ------------------------------------ #
|
|
51
|
+
name-template: "v$RESOLVED_VERSION"
|
|
52
|
+
tag-template: "v$RESOLVED_VERSION"
|
|
53
|
+
category-template: "### $TITLE"
|
|
54
|
+
change-template: "- $TITLE by @$AUTHOR in [#$NUMBER]($URL)"
|
|
55
|
+
replacers:
|
|
56
|
+
# remove conventional commit tag & scope from change list
|
|
57
|
+
- search: '/- [a-z]+(\(.*\))?(\!)?\: /g'
|
|
58
|
+
replace: "- "
|
|
59
|
+
template: |
|
|
60
|
+
## What's Changed
|
|
61
|
+
|
|
62
|
+
$CHANGES
|
|
63
|
+
|
|
64
|
+
**Full Changelog:** [`$PREVIOUS_TAG...v$RESOLVED_VERSION`](https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION)
|
|
65
|
+
categories:
|
|
66
|
+
- title: ⚠️ Breaking Changes
|
|
67
|
+
labels:
|
|
68
|
+
- breaking
|
|
69
|
+
- title: ✨ New Features
|
|
70
|
+
labels:
|
|
71
|
+
- enhancement
|
|
72
|
+
- title: 🐞 Bug Fixes
|
|
73
|
+
labels:
|
|
74
|
+
- fix
|
|
75
|
+
- title: 🏎️ Performance Improvements
|
|
76
|
+
labels:
|
|
77
|
+
- performance
|
|
78
|
+
- title: 📚 Documentation
|
|
79
|
+
labels:
|
|
80
|
+
- documentation
|
|
81
|
+
- title: 🏗️ Testing
|
|
82
|
+
labels:
|
|
83
|
+
- test
|
|
84
|
+
- title: ⚙️ Automation
|
|
85
|
+
labels:
|
|
86
|
+
- ci
|
|
87
|
+
- title: 🛠 Builds
|
|
88
|
+
labels:
|
|
89
|
+
- build
|
|
90
|
+
- title: 💎 Code Style
|
|
91
|
+
labels:
|
|
92
|
+
- style
|
|
93
|
+
- title: 📦 Refactorings
|
|
94
|
+
labels:
|
|
95
|
+
- refactor
|
|
96
|
+
- title: ♻️ Chores
|
|
97
|
+
labels:
|
|
98
|
+
- chore
|
|
99
|
+
- title: 🗑 Reverts
|
|
100
|
+
labels:
|
|
101
|
+
- revert
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Build
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
release:
|
|
7
|
+
types: [published]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-sdist:
|
|
11
|
+
name: Build Sdist
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
15
|
+
with:
|
|
16
|
+
fetch-depth: 0
|
|
17
|
+
- name: Set up pixi
|
|
18
|
+
uses: prefix-dev/setup-pixi@0f64e482e3d251f735019b1bc7fb0413ead75b2c # v0.8.2
|
|
19
|
+
with:
|
|
20
|
+
environments: build
|
|
21
|
+
- name: Set version
|
|
22
|
+
run: pixi run -e build set-version
|
|
23
|
+
- name: Build project
|
|
24
|
+
run: pixi run -e build build-sdist
|
|
25
|
+
- name: Upload package
|
|
26
|
+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
|
27
|
+
with:
|
|
28
|
+
name: sdist
|
|
29
|
+
path: dist/*
|
|
30
|
+
|
|
31
|
+
build-wheel:
|
|
32
|
+
name: Build Wheel (${{ matrix.target-platform }})
|
|
33
|
+
runs-on: ${{ matrix.os }}
|
|
34
|
+
strategy:
|
|
35
|
+
fail-fast: false
|
|
36
|
+
matrix:
|
|
37
|
+
include:
|
|
38
|
+
- target-platform: linux-64
|
|
39
|
+
os: ubuntu-latest
|
|
40
|
+
- target-platform: linux-aarch64
|
|
41
|
+
os: ubuntu-24.04-arm
|
|
42
|
+
- target-platform: osx-64
|
|
43
|
+
os: macos-13
|
|
44
|
+
- target-platform: osx-arm64
|
|
45
|
+
os: macos-latest
|
|
46
|
+
- target-platform: win-64
|
|
47
|
+
os: windows-latest
|
|
48
|
+
steps:
|
|
49
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
50
|
+
with:
|
|
51
|
+
fetch-depth: 0
|
|
52
|
+
- name: Set up pixi
|
|
53
|
+
uses: prefix-dev/setup-pixi@0f64e482e3d251f735019b1bc7fb0413ead75b2c # v0.8.2
|
|
54
|
+
with:
|
|
55
|
+
environments: build
|
|
56
|
+
- name: Set version
|
|
57
|
+
run: pixi run -e build set-version
|
|
58
|
+
- name: Build wheel
|
|
59
|
+
uses: PyO3/maturin-action@aef21716ff3dcae8a1c301d23ec3e4446972a6e3 # v1.49.1
|
|
60
|
+
with:
|
|
61
|
+
command: build
|
|
62
|
+
args: --out dist -i python3.11
|
|
63
|
+
manylinux: auto
|
|
64
|
+
- name: Check package
|
|
65
|
+
run: pixi run -e build check-wheel
|
|
66
|
+
- name: Upload package
|
|
67
|
+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
|
|
68
|
+
with:
|
|
69
|
+
name: wheel-${{ matrix.target-platform }}
|
|
70
|
+
path: dist/*
|
|
71
|
+
|
|
72
|
+
release:
|
|
73
|
+
name: Publish package
|
|
74
|
+
if: github.event_name == 'release'
|
|
75
|
+
needs: build-wheel
|
|
76
|
+
runs-on: ubuntu-latest
|
|
77
|
+
permissions:
|
|
78
|
+
id-token: write
|
|
79
|
+
environment: pypi
|
|
80
|
+
steps:
|
|
81
|
+
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
|
82
|
+
with:
|
|
83
|
+
path: dist
|
|
84
|
+
merge-multiple: true
|
|
85
|
+
- name: Publish package on PyPi
|
|
86
|
+
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Chore
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
branches: [main]
|
|
5
|
+
types: [opened, reopened, edited, synchronize]
|
|
6
|
+
push:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
check-pr-title:
|
|
15
|
+
name: Check PR Title
|
|
16
|
+
if: github.event_name == 'pull_request'
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
pull-requests: write
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check valid conventional commit message
|
|
23
|
+
id: lint
|
|
24
|
+
uses: amannn/action-semantic-pull-request@v5
|
|
25
|
+
with:
|
|
26
|
+
subjectPattern: ^[A-Z].+[^. ]$ # subject must start with uppercase letter and may not end with a dot/space
|
|
27
|
+
env:
|
|
28
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
29
|
+
- name: Post comment about invalid PR title
|
|
30
|
+
if: failure()
|
|
31
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
|
32
|
+
with:
|
|
33
|
+
header: conventional-commit-pr-title
|
|
34
|
+
message: |
|
|
35
|
+
Thank you for opening this pull request! 👋🏼
|
|
36
|
+
|
|
37
|
+
This repository requires pull request titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) and it looks like your proposed title needs to be adjusted.
|
|
38
|
+
|
|
39
|
+
<details><summary><b>Details</b></summary>
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
${{ steps.lint.outputs.error_message }}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
</details>
|
|
46
|
+
- name: Delete comment about invalid PR title
|
|
47
|
+
if: success()
|
|
48
|
+
uses: marocchino/sticky-pull-request-comment@v2
|
|
49
|
+
with:
|
|
50
|
+
header: conventional-commit-pr-title
|
|
51
|
+
delete: true
|
|
52
|
+
|
|
53
|
+
release-drafter:
|
|
54
|
+
name: ${{ github.event_name == 'pull_request' && 'Assign Labels' || 'Draft Release' }}
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
permissions:
|
|
57
|
+
contents: write
|
|
58
|
+
pull-requests: write
|
|
59
|
+
steps:
|
|
60
|
+
- name: ${{ github.event_name == 'pull_request' && 'Assign labels' || 'Update release draft' }}
|
|
61
|
+
uses: release-drafter/release-drafter@v6
|
|
62
|
+
with:
|
|
63
|
+
disable-releaser: ${{ github.event_name == 'pull_request' }}
|
|
64
|
+
disable-autolabeler: ${{ github.event_name == 'push' }}
|
|
65
|
+
env:
|
|
66
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
# Automatically stop old builds on the same branch/PR
|
|
8
|
+
concurrency:
|
|
9
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
pre-commit-checks:
|
|
14
|
+
name: Pre-commit Checks
|
|
15
|
+
timeout-minutes: 30
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout branch
|
|
19
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
20
|
+
with:
|
|
21
|
+
# needed for 'pre-commit-mirrors-insert-license'
|
|
22
|
+
fetch-depth: 0
|
|
23
|
+
- name: Set up pixi
|
|
24
|
+
uses: prefix-dev/setup-pixi@0f64e482e3d251f735019b1bc7fb0413ead75b2c # v0.8.2
|
|
25
|
+
with:
|
|
26
|
+
environments: default lint
|
|
27
|
+
- name: Install repository
|
|
28
|
+
run: pixi run -e default postinstall
|
|
29
|
+
- name: pre-commit
|
|
30
|
+
run: pixi run pre-commit-run --color=always --show-diff-on-failure
|
|
31
|
+
|
|
32
|
+
unit-tests:
|
|
33
|
+
name: Unit Tests (${{ matrix.os == 'ubuntu-latest' && 'Linux' || 'Windows' }}) - ${{ matrix.environment }}
|
|
34
|
+
timeout-minutes: 30
|
|
35
|
+
runs-on: ${{ matrix.os }}
|
|
36
|
+
strategy:
|
|
37
|
+
fail-fast: true
|
|
38
|
+
matrix:
|
|
39
|
+
os: [ubuntu-latest, windows-latest]
|
|
40
|
+
environment: [py311, py312, py313]
|
|
41
|
+
steps:
|
|
42
|
+
- name: Checkout branch
|
|
43
|
+
uses: actions/checkout@v4
|
|
44
|
+
- name: Set up pixi
|
|
45
|
+
uses: prefix-dev/setup-pixi@8eaba7c61d661f73d558b0b477156b7b62667fa4
|
|
46
|
+
with:
|
|
47
|
+
environments: ${{ matrix.environment }}
|
|
48
|
+
- name: Install repository
|
|
49
|
+
run: pixi run -e ${{ matrix.environment }} postinstall
|
|
50
|
+
- name: Run pytest
|
|
51
|
+
run: pixi run -e ${{ matrix.environment }} test-coverage --color=yes
|
|
52
|
+
- name: Upload codecov
|
|
53
|
+
uses: codecov/codecov-action@v5
|
|
54
|
+
with:
|
|
55
|
+
files: ./coverage.xml
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Update Lockfiles
|
|
2
|
+
on:
|
|
3
|
+
workflow_dispatch:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: 0 5 1 * *
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
pull-requests: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
pixi-update:
|
|
13
|
+
name: Pixi Update
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
17
|
+
- name: Set up pixi
|
|
18
|
+
uses: prefix-dev/setup-pixi@0f64e482e3d251f735019b1bc7fb0413ead75b2c # v0.8.2
|
|
19
|
+
with:
|
|
20
|
+
run-install: false
|
|
21
|
+
- name: Update lockfiles
|
|
22
|
+
run: pixi update --json --no-install | pixi exec pixi-diff-to-markdown >> diff.md
|
|
23
|
+
- name: Create pull request
|
|
24
|
+
uses: peter-evans/create-pull-request@67ccf781d68cd99b580ae25a5c18a1cc84ffff1f # v7.0.6
|
|
25
|
+
with:
|
|
26
|
+
token: ${{ github.token }}
|
|
27
|
+
commit-message: Update pixi lockfile
|
|
28
|
+
title: Update pixi lockfile
|
|
29
|
+
body-path: diff.md
|
|
30
|
+
branch: update-pixi
|
|
31
|
+
base: main
|
|
32
|
+
labels: pixi
|
|
33
|
+
delete-branch: true
|
|
34
|
+
add-paths: pixi.lock
|