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.
Files changed (160) hide show
  1. dataframely-1.0.0/.copier-answers.yml +12 -0
  2. dataframely-1.0.0/.envrc +2 -0
  3. dataframely-1.0.0/.gitattributes +1 -0
  4. dataframely-1.0.0/.github/CODEOWNERS +1 -0
  5. dataframely-1.0.0/.github/PULL_REQUEST_TEMPLATE.md +7 -0
  6. dataframely-1.0.0/.github/dependabot.yml +12 -0
  7. dataframely-1.0.0/.github/release-drafter.yml +101 -0
  8. dataframely-1.0.0/.github/workflows/build.yml +86 -0
  9. dataframely-1.0.0/.github/workflows/chore.yml +66 -0
  10. dataframely-1.0.0/.github/workflows/ci.yml +55 -0
  11. dataframely-1.0.0/.github/workflows/update-lockfiles.yml +34 -0
  12. dataframely-1.0.0/.gitignore +390 -0
  13. dataframely-1.0.0/.pre-commit-config.yaml +86 -0
  14. dataframely-1.0.0/.prettierignore +6 -0
  15. dataframely-1.0.0/.prettierrc +7 -0
  16. dataframely-1.0.0/.readthedocs.yml +14 -0
  17. dataframely-1.0.0/Cargo.lock +359 -0
  18. dataframely-1.0.0/Cargo.toml +14 -0
  19. dataframely-1.0.0/LICENSE +29 -0
  20. dataframely-1.0.0/PKG-INFO +97 -0
  21. dataframely-1.0.0/README.md +80 -0
  22. dataframely-1.0.0/dataframely/__init__.py +92 -0
  23. dataframely-1.0.0/dataframely/_base_collection.py +285 -0
  24. dataframely-1.0.0/dataframely/_base_schema.py +186 -0
  25. dataframely-1.0.0/dataframely/_compat.py +39 -0
  26. dataframely-1.0.0/dataframely/_extre.pyi +54 -0
  27. dataframely-1.0.0/dataframely/_filter.py +42 -0
  28. dataframely-1.0.0/dataframely/_polars.py +63 -0
  29. dataframely-1.0.0/dataframely/_rule.py +130 -0
  30. dataframely-1.0.0/dataframely/_typing.py +97 -0
  31. dataframely-1.0.0/dataframely/_validation.py +85 -0
  32. dataframely-1.0.0/dataframely/collection.py +616 -0
  33. dataframely-1.0.0/dataframely/columns/__init__.py +41 -0
  34. dataframely-1.0.0/dataframely/columns/_base.py +191 -0
  35. dataframely-1.0.0/dataframely/columns/_mixins.py +94 -0
  36. dataframely-1.0.0/dataframely/columns/_utils.py +60 -0
  37. dataframely-1.0.0/dataframely/columns/any.py +72 -0
  38. dataframely-1.0.0/dataframely/columns/bool.py +31 -0
  39. dataframely-1.0.0/dataframely/columns/datetime.py +501 -0
  40. dataframely-1.0.0/dataframely/columns/decimal.py +162 -0
  41. dataframely-1.0.0/dataframely/columns/enum.py +76 -0
  42. dataframely-1.0.0/dataframely/columns/float.py +201 -0
  43. dataframely-1.0.0/dataframely/columns/integer.py +349 -0
  44. dataframely-1.0.0/dataframely/columns/list.py +150 -0
  45. dataframely-1.0.0/dataframely/columns/string.py +126 -0
  46. dataframely-1.0.0/dataframely/columns/struct.py +105 -0
  47. dataframely-1.0.0/dataframely/config.py +54 -0
  48. dataframely-1.0.0/dataframely/exc.py +125 -0
  49. dataframely-1.0.0/dataframely/failure.py +144 -0
  50. dataframely-1.0.0/dataframely/functional.py +85 -0
  51. dataframely-1.0.0/dataframely/mypy.py +401 -0
  52. dataframely-1.0.0/dataframely/py.typed +0 -0
  53. dataframely-1.0.0/dataframely/random.py +409 -0
  54. dataframely-1.0.0/dataframely/schema.py +615 -0
  55. dataframely-1.0.0/dataframely/testing/__init__.py +27 -0
  56. dataframely-1.0.0/dataframely/testing/const.py +49 -0
  57. dataframely-1.0.0/dataframely/testing/factory.py +63 -0
  58. dataframely-1.0.0/dataframely/testing/mask.py +46 -0
  59. dataframely-1.0.0/dataframely/testing/rules.py +33 -0
  60. dataframely-1.0.0/dataframely/testing/typing.py +30 -0
  61. dataframely-1.0.0/docker-compose.yml +10 -0
  62. dataframely-1.0.0/docs/Makefile +20 -0
  63. dataframely-1.0.0/docs/_api/dataframely.collection.rst +7 -0
  64. dataframely-1.0.0/docs/_api/dataframely.columns.any.rst +7 -0
  65. dataframely-1.0.0/docs/_api/dataframely.columns.bool.rst +7 -0
  66. dataframely-1.0.0/docs/_api/dataframely.columns.datetime.rst +7 -0
  67. dataframely-1.0.0/docs/_api/dataframely.columns.decimal.rst +7 -0
  68. dataframely-1.0.0/docs/_api/dataframely.columns.enum.rst +7 -0
  69. dataframely-1.0.0/docs/_api/dataframely.columns.float.rst +7 -0
  70. dataframely-1.0.0/docs/_api/dataframely.columns.integer.rst +7 -0
  71. dataframely-1.0.0/docs/_api/dataframely.columns.list.rst +7 -0
  72. dataframely-1.0.0/docs/_api/dataframely.columns.rst +90 -0
  73. dataframely-1.0.0/docs/_api/dataframely.columns.string.rst +7 -0
  74. dataframely-1.0.0/docs/_api/dataframely.columns.struct.rst +7 -0
  75. dataframely-1.0.0/docs/_api/dataframely.config.rst +7 -0
  76. dataframely-1.0.0/docs/_api/dataframely.exc.rst +7 -0
  77. dataframely-1.0.0/docs/_api/dataframely.failure.rst +7 -0
  78. dataframely-1.0.0/docs/_api/dataframely.functional.rst +7 -0
  79. dataframely-1.0.0/docs/_api/dataframely.mypy.rst +7 -0
  80. dataframely-1.0.0/docs/_api/dataframely.random.rst +7 -0
  81. dataframely-1.0.0/docs/_api/dataframely.rst +83 -0
  82. dataframely-1.0.0/docs/_api/dataframely.schema.rst +7 -0
  83. dataframely-1.0.0/docs/_api/dataframely.testing.const.rst +7 -0
  84. dataframely-1.0.0/docs/_api/dataframely.testing.factory.rst +7 -0
  85. dataframely-1.0.0/docs/_api/dataframely.testing.mask.rst +7 -0
  86. dataframely-1.0.0/docs/_api/dataframely.testing.rst +50 -0
  87. dataframely-1.0.0/docs/_api/dataframely.testing.rules.rst +7 -0
  88. dataframely-1.0.0/docs/_api/dataframely.testing.typing.rst +7 -0
  89. dataframely-1.0.0/docs/_api/modules.rst +7 -0
  90. dataframely-1.0.0/docs/_static/custom.css +3 -0
  91. dataframely-1.0.0/docs/_static/favicon.ico +0 -0
  92. dataframely-1.0.0/docs/conf.py +123 -0
  93. dataframely-1.0.0/docs/index.rst +46 -0
  94. dataframely-1.0.0/docs/make.bat +35 -0
  95. dataframely-1.0.0/docs/sites/development.rst +48 -0
  96. dataframely-1.0.0/docs/sites/examples/real-world.ipynb +532 -0
  97. dataframely-1.0.0/docs/sites/faq.rst +5 -0
  98. dataframely-1.0.0/docs/sites/installation.rst +9 -0
  99. dataframely-1.0.0/docs/sites/quickstart.rst +261 -0
  100. dataframely-1.0.0/pixi.lock +17389 -0
  101. dataframely-1.0.0/pixi.toml +99 -0
  102. dataframely-1.0.0/pyproject.toml +88 -0
  103. dataframely-1.0.0/src/errdefs.rs +24 -0
  104. dataframely-1.0.0/src/lib.rs +59 -0
  105. dataframely-1.0.0/src/regex_repr.rs +190 -0
  106. dataframely-1.0.0/tests/collection/test_base.py +149 -0
  107. dataframely-1.0.0/tests/collection/test_cast.py +59 -0
  108. dataframely-1.0.0/tests/collection/test_create_empty.py +29 -0
  109. dataframely-1.0.0/tests/collection/test_filter_one_to_n.py +48 -0
  110. dataframely-1.0.0/tests/collection/test_filter_validate.py +233 -0
  111. dataframely-1.0.0/tests/collection/test_ignore_in_filter.py +83 -0
  112. dataframely-1.0.0/tests/collection/test_implementation.py +196 -0
  113. dataframely-1.0.0/tests/collection/test_optional_members.py +36 -0
  114. dataframely-1.0.0/tests/collection/test_sample.py +127 -0
  115. dataframely-1.0.0/tests/collection/test_validate_input.py +31 -0
  116. dataframely-1.0.0/tests/column_types/__init__.py +2 -0
  117. dataframely-1.0.0/tests/column_types/test_any.py +22 -0
  118. dataframely-1.0.0/tests/column_types/test_datetime.py +396 -0
  119. dataframely-1.0.0/tests/column_types/test_decimal.py +153 -0
  120. dataframely-1.0.0/tests/column_types/test_enum.py +54 -0
  121. dataframely-1.0.0/tests/column_types/test_float.py +206 -0
  122. dataframely-1.0.0/tests/column_types/test_integer.py +185 -0
  123. dataframely-1.0.0/tests/column_types/test_list.py +181 -0
  124. dataframely-1.0.0/tests/column_types/test_string.py +46 -0
  125. dataframely-1.0.0/tests/column_types/test_struct.py +167 -0
  126. dataframely-1.0.0/tests/columns/__init__.py +2 -0
  127. dataframely-1.0.0/tests/columns/test_alias.py +24 -0
  128. dataframely-1.0.0/tests/columns/test_check.py +19 -0
  129. dataframely-1.0.0/tests/columns/test_default_dtypes.py +48 -0
  130. dataframely-1.0.0/tests/columns/test_metadata.py +18 -0
  131. dataframely-1.0.0/tests/columns/test_polars_schema.py +13 -0
  132. dataframely-1.0.0/tests/columns/test_pyarrow.py +96 -0
  133. dataframely-1.0.0/tests/columns/test_rules.py +43 -0
  134. dataframely-1.0.0/tests/columns/test_sample.py +195 -0
  135. dataframely-1.0.0/tests/columns/test_sql_schema.py +147 -0
  136. dataframely-1.0.0/tests/columns/test_str.py +29 -0
  137. dataframely-1.0.0/tests/columns/test_utils.py +33 -0
  138. dataframely-1.0.0/tests/core_validation/__init__.py +2 -0
  139. dataframely-1.0.0/tests/core_validation/test_column_validation.py +27 -0
  140. dataframely-1.0.0/tests/core_validation/test_dtype_validation.py +106 -0
  141. dataframely-1.0.0/tests/core_validation/test_rule_evaluation.py +108 -0
  142. dataframely-1.0.0/tests/functional/test_concat.py +43 -0
  143. dataframely-1.0.0/tests/functional/test_relationships.py +77 -0
  144. dataframely-1.0.0/tests/schema/__init__.py +2 -0
  145. dataframely-1.0.0/tests/schema/test_base.py +77 -0
  146. dataframely-1.0.0/tests/schema/test_cast.py +45 -0
  147. dataframely-1.0.0/tests/schema/test_create_empty.py +33 -0
  148. dataframely-1.0.0/tests/schema/test_create_empty_if_none.py +44 -0
  149. dataframely-1.0.0/tests/schema/test_filter.py +165 -0
  150. dataframely-1.0.0/tests/schema/test_inheritance.py +22 -0
  151. dataframely-1.0.0/tests/schema/test_rule_implementation.py +67 -0
  152. dataframely-1.0.0/tests/schema/test_sample.py +137 -0
  153. dataframely-1.0.0/tests/schema/test_validate.py +116 -0
  154. dataframely-1.0.0/tests/test_compat.py +14 -0
  155. dataframely-1.0.0/tests/test_config.py +42 -0
  156. dataframely-1.0.0/tests/test_exc.py +43 -0
  157. dataframely-1.0.0/tests/test_extre.py +91 -0
  158. dataframely-1.0.0/tests/test_failure_info.py +33 -0
  159. dataframely-1.0.0/tests/test_random.py +252 -0
  160. 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
@@ -0,0 +1,2 @@
1
+ watch_file pixi.toml pixi.lock
2
+ eval "$(pixi shell-hook)"
@@ -0,0 +1 @@
1
+ pixi.lock linguist-language=YAML linguist-generated=true
@@ -0,0 +1 @@
1
+ * @borchero @AndreasAlbertQC @delsner
@@ -0,0 +1,7 @@
1
+ # Motivation
2
+
3
+ <!-- Why is this change necessary? Link issues here if applicable. -->
4
+
5
+ # Changes
6
+
7
+ <!-- What changes have been performed? -->
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: /
5
+ schedule:
6
+ interval: monthly
7
+ groups:
8
+ gh-actions:
9
+ patterns:
10
+ - "*"
11
+ commit-message:
12
+ prefix: ci
@@ -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