cixstack 1.0.0rc1__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.
- cixstack-1.0.0rc1/.ci.yaml +170 -0
- cixstack-1.0.0rc1/.github/dependabot.yml +15 -0
- cixstack-1.0.0rc1/.github/workflows/ci.yml +239 -0
- cixstack-1.0.0rc1/.github/workflows/publish.yml +48 -0
- cixstack-1.0.0rc1/.gitignore +11 -0
- cixstack-1.0.0rc1/.yamllint.yaml +3 -0
- cixstack-1.0.0rc1/PKG-INFO +25 -0
- cixstack-1.0.0rc1/README.md +431 -0
- cixstack-1.0.0rc1/cixstack/__main__.py +273 -0
- cixstack-1.0.0rc1/cixstack/args.py +106 -0
- cixstack-1.0.0rc1/cixstack/cli/alias.py +40 -0
- cixstack-1.0.0rc1/cixstack/cli/cache.py +54 -0
- cixstack-1.0.0rc1/cixstack/cli/cleanup.py +136 -0
- cixstack-1.0.0rc1/cixstack/cli/config.py +132 -0
- cixstack-1.0.0rc1/cixstack/cli/fix.py +130 -0
- cixstack-1.0.0rc1/cixstack/cli/hook.py +142 -0
- cixstack-1.0.0rc1/cixstack/cli/init.py +115 -0
- cixstack-1.0.0rc1/cixstack/cli/match_.py +139 -0
- cixstack-1.0.0rc1/cixstack/cli/run.py +370 -0
- cixstack-1.0.0rc1/cixstack/cli/start.py +65 -0
- cixstack-1.0.0rc1/cixstack/cli/status.py +152 -0
- cixstack-1.0.0rc1/cixstack/cli/watch.py +83 -0
- cixstack-1.0.0rc1/cixstack/context.py +111 -0
- cixstack-1.0.0rc1/cixstack/core.py +670 -0
- cixstack-1.0.0rc1/cixstack/errors.py +70 -0
- cixstack-1.0.0rc1/cixstack/models/compat.py +166 -0
- cixstack-1.0.0rc1/cixstack/models/v1.py +432 -0
- cixstack-1.0.0rc1/cixstack/models/v2.py +170 -0
- cixstack-1.0.0rc1/cixstack/utils.py +350 -0
- cixstack-1.0.0rc1/hooks/pre-commit +5 -0
- cixstack-1.0.0rc1/hooks/pre-push +5 -0
- cixstack-1.0.0rc1/pyproject.toml +96 -0
- cixstack-1.0.0rc1/tests/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/alias/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/alias/test_args.py +55 -0
- cixstack-1.0.0rc1/tests/cli/alias/test_context.py +46 -0
- cixstack-1.0.0rc1/tests/cli/alias/test_main.py +16 -0
- cixstack-1.0.0rc1/tests/cli/cache/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/cache/test_context.py +19 -0
- cixstack-1.0.0rc1/tests/cli/cache/test_main.py +609 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_args.py +135 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_context.py +105 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_evolve_context.py +179 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_main.py +234 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_run_context.py +213 -0
- cixstack-1.0.0rc1/tests/cli/cleanup/test_valid_jobs.py +61 -0
- cixstack-1.0.0rc1/tests/cli/config/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/config/test_args.py +20 -0
- cixstack-1.0.0rc1/tests/cli/config/test_context.py +40 -0
- cixstack-1.0.0rc1/tests/cli/config/test_main.py +442 -0
- cixstack-1.0.0rc1/tests/cli/error_paths_test.py +77 -0
- cixstack-1.0.0rc1/tests/cli/fix/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_args.py +90 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_context.py +106 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_evolve_context.py +184 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_main.py +245 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_run_context.py +167 -0
- cixstack-1.0.0rc1/tests/cli/fix/test_valid_jobs.py +22 -0
- cixstack-1.0.0rc1/tests/cli/hook/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/hook/test_args.py +67 -0
- cixstack-1.0.0rc1/tests/cli/hook/test_context.py +161 -0
- cixstack-1.0.0rc1/tests/cli/hook/test_main.py +159 -0
- cixstack-1.0.0rc1/tests/cli/init/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/init/test_args.py +27 -0
- cixstack-1.0.0rc1/tests/cli/init/test_context.py +39 -0
- cixstack-1.0.0rc1/tests/cli/init/test_main.py +60 -0
- cixstack-1.0.0rc1/tests/cli/match_/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/match_/test_args.py +37 -0
- cixstack-1.0.0rc1/tests/cli/match_/test_context.py +210 -0
- cixstack-1.0.0rc1/tests/cli/match_/test_main.py +219 -0
- cixstack-1.0.0rc1/tests/cli/run/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/run/test_args.py +662 -0
- cixstack-1.0.0rc1/tests/cli/run/test_cache_invalidation.py +184 -0
- cixstack-1.0.0rc1/tests/cli/run/test_context.py +155 -0
- cixstack-1.0.0rc1/tests/cli/run/test_evolve_context.py +187 -0
- cixstack-1.0.0rc1/tests/cli/run/test_main.py +437 -0
- cixstack-1.0.0rc1/tests/cli/run/test_run_context.py +799 -0
- cixstack-1.0.0rc1/tests/cli/start/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/start/test_args.py +38 -0
- cixstack-1.0.0rc1/tests/cli/start/test_context.py +102 -0
- cixstack-1.0.0rc1/tests/cli/start/test_main.py +279 -0
- cixstack-1.0.0rc1/tests/cli/status/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/status/test_args.py +82 -0
- cixstack-1.0.0rc1/tests/cli/status/test_context.py +115 -0
- cixstack-1.0.0rc1/tests/cli/status/test_evolve_context.py +367 -0
- cixstack-1.0.0rc1/tests/cli/status/test_main.py +453 -0
- cixstack-1.0.0rc1/tests/cli/status/test_run_context.py +162 -0
- cixstack-1.0.0rc1/tests/cli/test_main.py +520 -0
- cixstack-1.0.0rc1/tests/cli/test_parse_commands.py +68 -0
- cixstack-1.0.0rc1/tests/cli/watch/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/cli/watch/test_main.py +154 -0
- cixstack-1.0.0rc1/tests/conftest.py +511 -0
- cixstack-1.0.0rc1/tests/core/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/core/test_cache.py +140 -0
- cixstack-1.0.0rc1/tests/core/test_events.py +268 -0
- cixstack-1.0.0rc1/tests/core/test_logging.py +152 -0
- cixstack-1.0.0rc1/tests/core/test_runner.py +1614 -0
- cixstack-1.0.0rc1/tests/core/test_sandbox.py +330 -0
- cixstack-1.0.0rc1/tests/core/test_services.py +159 -0
- cixstack-1.0.0rc1/tests/models/__init__.py +0 -0
- cixstack-1.0.0rc1/tests/models/test_compat.py +451 -0
- cixstack-1.0.0rc1/tests/models/test_is_match.py +83 -0
- cixstack-1.0.0rc1/tests/models/test_repo_config.py +385 -0
- cixstack-1.0.0rc1/tests/models/test_v1.py +325 -0
- cixstack-1.0.0rc1/tests/ruff.toml +4 -0
- cixstack-1.0.0rc1/tests/test_context.py +236 -0
- cixstack-1.0.0rc1/tests/test_env.py +314 -0
- cixstack-1.0.0rc1/tests/test_errors.py +193 -0
- cixstack-1.0.0rc1/tests/test_fuzz.py +375 -0
- cixstack-1.0.0rc1/tests/test_fuzz_extended.py +428 -0
- cixstack-1.0.0rc1/tests/test_utils.py +699 -0
- cixstack-1.0.0rc1/uv.lock +507 -0
- cixstack-1.0.0rc1/vulture/allowlist.py +59 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
files:
|
|
2
|
+
python: &python
|
|
3
|
+
- pyproject\.toml
|
|
4
|
+
- uv\.lock
|
|
5
|
+
- cixstack/.*\.py
|
|
6
|
+
- tests/.*\.py
|
|
7
|
+
- .*ruff\.toml
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-uv-lock:
|
|
11
|
+
sandbox: strict
|
|
12
|
+
matches: *python
|
|
13
|
+
command: uv lock --locked
|
|
14
|
+
fix: uv lock
|
|
15
|
+
|
|
16
|
+
format-ruff:
|
|
17
|
+
needs:
|
|
18
|
+
- build-uv-lock
|
|
19
|
+
sandbox: strict
|
|
20
|
+
matches: *python
|
|
21
|
+
command: uv run --extra dev ruff format cixstack/ tests/ --check
|
|
22
|
+
fix: uv run --extra dev ruff format cixstack/ tests/
|
|
23
|
+
|
|
24
|
+
format-ruff-imports:
|
|
25
|
+
needs:
|
|
26
|
+
- build-uv-lock
|
|
27
|
+
sandbox: strict
|
|
28
|
+
matches: *python
|
|
29
|
+
command: |
|
|
30
|
+
uv run --extra dev \
|
|
31
|
+
ruff check cixstack/ tests/ \
|
|
32
|
+
--select I --select F --select TC003 --select TC002 --select TC001 --select UP037
|
|
33
|
+
fix: |
|
|
34
|
+
uv run --extra dev \
|
|
35
|
+
ruff check cixstack/ tests/ \
|
|
36
|
+
--select I --select F --select TC003 --select TC002 --select TC001 --select UP037 \
|
|
37
|
+
--fix
|
|
38
|
+
|
|
39
|
+
format-prettier:
|
|
40
|
+
sandbox: repo
|
|
41
|
+
matches:
|
|
42
|
+
- .*.md
|
|
43
|
+
- .*.json
|
|
44
|
+
- .*.yml
|
|
45
|
+
- .*.yaml
|
|
46
|
+
- .gitignore # Prettier reads ignore paths from .gitignore
|
|
47
|
+
command: npx prettier --check .
|
|
48
|
+
fix: npx prettier --write .
|
|
49
|
+
|
|
50
|
+
lint-ty:
|
|
51
|
+
needs:
|
|
52
|
+
- build-uv-lock
|
|
53
|
+
sandbox: strict
|
|
54
|
+
matches: *python
|
|
55
|
+
command: |
|
|
56
|
+
uv run --extra dev ty check cixstack/ tests/ \
|
|
57
|
+
--ignore unresolved-attribute \
|
|
58
|
+
--ignore invalid-argument-type
|
|
59
|
+
|
|
60
|
+
lint-ruff:
|
|
61
|
+
needs:
|
|
62
|
+
- build-uv-lock
|
|
63
|
+
sandbox: strict
|
|
64
|
+
matches: *python
|
|
65
|
+
command: uv run --extra dev ruff check cixstack/ tests/
|
|
66
|
+
|
|
67
|
+
lint-yamllint:
|
|
68
|
+
sandbox: strict
|
|
69
|
+
matches:
|
|
70
|
+
- .*\.yaml
|
|
71
|
+
- .*\.yml
|
|
72
|
+
command: uvx yamllint .
|
|
73
|
+
|
|
74
|
+
lint-vulture:
|
|
75
|
+
needs:
|
|
76
|
+
- build-uv-lock
|
|
77
|
+
sandbox: strict
|
|
78
|
+
matches:
|
|
79
|
+
- pyproject\.toml
|
|
80
|
+
- uv\.lock
|
|
81
|
+
- cixstack/.*\.py
|
|
82
|
+
- tests/.*\.py
|
|
83
|
+
- .*ruff\.toml
|
|
84
|
+
- vulture/allowlist\.py
|
|
85
|
+
command: uv run --extra dev vulture cixstack/ tests/ vulture/allowlist.py
|
|
86
|
+
fix: uv run --extra dev vulture cixstack/ tests/ | sort > vulture/allowlist.py
|
|
87
|
+
|
|
88
|
+
test-pytest: &test-pytest
|
|
89
|
+
needs:
|
|
90
|
+
- build-uv-lock
|
|
91
|
+
- format-ruff
|
|
92
|
+
- format-ruff-imports
|
|
93
|
+
- format-prettier
|
|
94
|
+
- lint-ty
|
|
95
|
+
- lint-ruff
|
|
96
|
+
- lint-yamllint
|
|
97
|
+
- lint-vulture
|
|
98
|
+
sandbox: strict
|
|
99
|
+
matches: *python
|
|
100
|
+
matches_settings:
|
|
101
|
+
python: ast
|
|
102
|
+
command: |
|
|
103
|
+
uv run --extra dev pytest tests/ \
|
|
104
|
+
--cov=cixstack \
|
|
105
|
+
--cov-report=term-missing \
|
|
106
|
+
&& \
|
|
107
|
+
uv run --extra dev coverage report --fail-under=99
|
|
108
|
+
env:
|
|
109
|
+
CIX_SEARCH_PATH: ""
|
|
110
|
+
|
|
111
|
+
test-pytest-covopt:
|
|
112
|
+
<<: *test-pytest
|
|
113
|
+
needs:
|
|
114
|
+
- build-uv-lock
|
|
115
|
+
- format-ruff
|
|
116
|
+
- format-ruff-imports
|
|
117
|
+
matrix:
|
|
118
|
+
file: git diff --quiet && git diff --cached --quiet || covopt select
|
|
119
|
+
command: uv run --extra dev pytest "${file}"
|
|
120
|
+
|
|
121
|
+
build-uv-build:
|
|
122
|
+
needs:
|
|
123
|
+
- build-uv-lock
|
|
124
|
+
- format-ruff
|
|
125
|
+
- format-ruff-imports
|
|
126
|
+
- format-prettier
|
|
127
|
+
- lint-ty
|
|
128
|
+
- lint-ruff
|
|
129
|
+
- lint-yamllint
|
|
130
|
+
- lint-vulture
|
|
131
|
+
- test-pytest
|
|
132
|
+
command: uv build
|
|
133
|
+
|
|
134
|
+
groups:
|
|
135
|
+
build: &build
|
|
136
|
+
- build-uv-lock
|
|
137
|
+
- build-uv-build
|
|
138
|
+
|
|
139
|
+
format: &format
|
|
140
|
+
- format-ruff
|
|
141
|
+
- format-ruff-imports
|
|
142
|
+
- format-prettier
|
|
143
|
+
|
|
144
|
+
lint: &lint
|
|
145
|
+
- lint-ty
|
|
146
|
+
- lint-ruff
|
|
147
|
+
- lint-yamllint
|
|
148
|
+
- lint-vulture
|
|
149
|
+
|
|
150
|
+
test: &test
|
|
151
|
+
- test-pytest
|
|
152
|
+
|
|
153
|
+
all: &all
|
|
154
|
+
- *build
|
|
155
|
+
- *format
|
|
156
|
+
- *lint
|
|
157
|
+
- *test
|
|
158
|
+
|
|
159
|
+
pre-commit: *all
|
|
160
|
+
pre-push: *all
|
|
161
|
+
|
|
162
|
+
alias:
|
|
163
|
+
st: status
|
|
164
|
+
track: "!watch --no-title -c unbuffer cixstack run -qq"
|
|
165
|
+
f: "!ci config -o json | jq -r '.CONFIG_PATHS[]'"
|
|
166
|
+
seq: "!parallel -j 1 -u --halt soon,fail=1 ci run :::"
|
|
167
|
+
|
|
168
|
+
config:
|
|
169
|
+
hashing:
|
|
170
|
+
default: paste <(git ls-files) <(git ls-files | git hash-object --stdin-paths)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "uv" # See documentation for possible values
|
|
9
|
+
directory: "/" # Location of package manifests
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "monthly"
|
|
12
|
+
- package-ecosystem: "github-actions" # See documentation for possible values
|
|
13
|
+
directory: "/" # Location of package manifests
|
|
14
|
+
schedule:
|
|
15
|
+
interval: "monthly"
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on: push
|
|
4
|
+
|
|
5
|
+
jobs:
|
|
6
|
+
python-checks:
|
|
7
|
+
runs-on: ubuntu-24.04
|
|
8
|
+
|
|
9
|
+
steps:
|
|
10
|
+
- name: Checkout repository
|
|
11
|
+
uses: actions/checkout@v6
|
|
12
|
+
|
|
13
|
+
- name: Install uv # for uvx
|
|
14
|
+
uses: astral-sh/setup-uv@v7
|
|
15
|
+
|
|
16
|
+
- name: uv-lock
|
|
17
|
+
run: uv lock --locked
|
|
18
|
+
|
|
19
|
+
- name: ruff-format
|
|
20
|
+
run: uv run --extra dev ruff format cixstack/ --check
|
|
21
|
+
|
|
22
|
+
- name: ruff-lint-imports
|
|
23
|
+
run: uv run --extra dev ruff check cixstack/ --select I
|
|
24
|
+
|
|
25
|
+
- name: ty-typecheck
|
|
26
|
+
run: |
|
|
27
|
+
uv run --extra dev ty check cixstack/ tests/ \
|
|
28
|
+
--ignore unresolved-attribute \
|
|
29
|
+
--ignore invalid-argument-type
|
|
30
|
+
|
|
31
|
+
- name: ruff-lint
|
|
32
|
+
run: uv run --extra dev ruff check cixstack/
|
|
33
|
+
|
|
34
|
+
- name: yamllint
|
|
35
|
+
run: uvx yamllint .
|
|
36
|
+
|
|
37
|
+
node-checks:
|
|
38
|
+
runs-on: ubuntu-24.04
|
|
39
|
+
|
|
40
|
+
steps:
|
|
41
|
+
- name: Checkout repository
|
|
42
|
+
uses: actions/checkout@v6
|
|
43
|
+
|
|
44
|
+
- name: Install node # for npx
|
|
45
|
+
uses: actions/setup-node@v6
|
|
46
|
+
with:
|
|
47
|
+
node-version: 24
|
|
48
|
+
|
|
49
|
+
- name: prettier-format
|
|
50
|
+
run: npx prettier --check .
|
|
51
|
+
|
|
52
|
+
test-cli-uv:
|
|
53
|
+
runs-on: ubuntu-24.04
|
|
54
|
+
|
|
55
|
+
steps:
|
|
56
|
+
- name: Checkout repository
|
|
57
|
+
uses: actions/checkout@v6
|
|
58
|
+
|
|
59
|
+
- name: Install uv # for uvx
|
|
60
|
+
uses: astral-sh/setup-uv@v7
|
|
61
|
+
|
|
62
|
+
- name: Install node # for npx
|
|
63
|
+
uses: actions/setup-node@v6
|
|
64
|
+
with:
|
|
65
|
+
node-version: 24
|
|
66
|
+
|
|
67
|
+
- name: Run with uvx
|
|
68
|
+
run: |
|
|
69
|
+
# ci
|
|
70
|
+
uvx --from=. ci run
|
|
71
|
+
uvx --from=. ci status
|
|
72
|
+
|
|
73
|
+
# cixstack
|
|
74
|
+
uvx --from=. ci run --no-cache
|
|
75
|
+
uvx --from=. ci status
|
|
76
|
+
|
|
77
|
+
# covopt
|
|
78
|
+
uv tool install covopt
|
|
79
|
+
|
|
80
|
+
- name: Install with uv
|
|
81
|
+
run: uv tool install --from $PWD cixstack --refresh --force
|
|
82
|
+
|
|
83
|
+
- name: Test ci run with various args
|
|
84
|
+
run: |
|
|
85
|
+
ci run
|
|
86
|
+
ci run format
|
|
87
|
+
ci run format --config-path .ci.yaml --repo-path .
|
|
88
|
+
ci run format -c .ci.yaml -r .
|
|
89
|
+
ci run format --quiet
|
|
90
|
+
ci run format -q
|
|
91
|
+
ci run format -qq
|
|
92
|
+
ci run format -qqq
|
|
93
|
+
ci run format -qqqqqqqqqqqqqqqqqqqqqqqqqq
|
|
94
|
+
ci run format --no-cache
|
|
95
|
+
ci run format -n 2
|
|
96
|
+
ci run format --max-jobs 2
|
|
97
|
+
ci run format --fail-fast
|
|
98
|
+
ci run format --ff
|
|
99
|
+
|
|
100
|
+
- name: Test ci fix with various args
|
|
101
|
+
run: |
|
|
102
|
+
ci fix
|
|
103
|
+
ci fix format
|
|
104
|
+
ci fix format-ruff format-ruff-imports
|
|
105
|
+
ci fix --config-path .ci.yaml --repo-path .
|
|
106
|
+
ci fix -c .ci.yaml -r .
|
|
107
|
+
ci fix --quiet
|
|
108
|
+
ci fix -q
|
|
109
|
+
ci fix -n 1
|
|
110
|
+
ci fix --max-jobs 2
|
|
111
|
+
|
|
112
|
+
- name: Test ci cleanup
|
|
113
|
+
run: ci cleanup
|
|
114
|
+
|
|
115
|
+
- name: Test ci status
|
|
116
|
+
run: |
|
|
117
|
+
ci run # To populate the cache and pass jobs
|
|
118
|
+
ci status
|
|
119
|
+
ci status format lint
|
|
120
|
+
ci status --config-path .ci.yaml --repo-path .
|
|
121
|
+
ci status -c .ci.yaml -r .
|
|
122
|
+
|
|
123
|
+
- name: Run pre-commit hook
|
|
124
|
+
run: ci run pre-commit
|
|
125
|
+
|
|
126
|
+
- name: Run pre-push hook
|
|
127
|
+
run: ci run pre-push
|
|
128
|
+
|
|
129
|
+
- name: Config
|
|
130
|
+
run: |
|
|
131
|
+
ci config
|
|
132
|
+
ci config -o json
|
|
133
|
+
ci config -o shell
|
|
134
|
+
|
|
135
|
+
- name: Config with custom CIX_SEARCH_PATH
|
|
136
|
+
run: |
|
|
137
|
+
export CIX_SEARCH_PATH=".:$(git rev-parse --show-toplevel 2>/dev/null || echo '.'):$HOME/.config/cixstack"
|
|
138
|
+
ci config
|
|
139
|
+
ci config -o json
|
|
140
|
+
ci config -o shell
|
|
141
|
+
|
|
142
|
+
cd .github/workflows
|
|
143
|
+
ci config
|
|
144
|
+
ci config -o json
|
|
145
|
+
ci config -o shell
|
|
146
|
+
|
|
147
|
+
cd /
|
|
148
|
+
ci config
|
|
149
|
+
ci config -o json
|
|
150
|
+
ci config -o shell
|
|
151
|
+
|
|
152
|
+
- name: Install alias dependencies
|
|
153
|
+
run: |
|
|
154
|
+
# GNU parallel for seq alias
|
|
155
|
+
# jq for f alias
|
|
156
|
+
sudo apt-get update
|
|
157
|
+
sudo apt-get install -y parallel jq
|
|
158
|
+
|
|
159
|
+
- name: Test aliases
|
|
160
|
+
run: |
|
|
161
|
+
ci st
|
|
162
|
+
ci f
|
|
163
|
+
ci seq format build format build lint test
|
|
164
|
+
ci st
|
|
165
|
+
|
|
166
|
+
test-pytest:
|
|
167
|
+
# Dedicated pytest job so a regression in the tool doesn't cause tests to
|
|
168
|
+
# not run, which could mask errors.
|
|
169
|
+
runs-on: ubuntu-24.04
|
|
170
|
+
|
|
171
|
+
steps:
|
|
172
|
+
- name: Checkout repository
|
|
173
|
+
uses: actions/checkout@v6
|
|
174
|
+
|
|
175
|
+
- name: Install uv
|
|
176
|
+
uses: astral-sh/setup-uv@v7
|
|
177
|
+
|
|
178
|
+
- name: Run pytest
|
|
179
|
+
run: |
|
|
180
|
+
uv run --extra dev pytest tests/ \
|
|
181
|
+
--cov=cixstack \
|
|
182
|
+
--cov-report=term-missing \
|
|
183
|
+
&& \
|
|
184
|
+
uv run --extra dev coverage report --fail-under=95
|
|
185
|
+
|
|
186
|
+
test-pytest-freethreading-nogil:
|
|
187
|
+
# Dedicated pytest job so a regression in the tool doesn't cause tests to
|
|
188
|
+
# not run, which could mask errors.
|
|
189
|
+
runs-on: ubuntu-24.04
|
|
190
|
+
|
|
191
|
+
steps:
|
|
192
|
+
- name: Checkout repository
|
|
193
|
+
uses: actions/checkout@v6
|
|
194
|
+
|
|
195
|
+
- name: Install uv
|
|
196
|
+
uses: astral-sh/setup-uv@v7
|
|
197
|
+
|
|
198
|
+
- name: Run pytest
|
|
199
|
+
run: |
|
|
200
|
+
uv run --python 3.14t --extra dev pytest tests/
|
|
201
|
+
env:
|
|
202
|
+
PYTHON_GIL: 0
|
|
203
|
+
|
|
204
|
+
test-cli-pip:
|
|
205
|
+
runs-on: ubuntu-24.04
|
|
206
|
+
|
|
207
|
+
steps:
|
|
208
|
+
- name: Checkout repository
|
|
209
|
+
uses: actions/checkout@v6
|
|
210
|
+
|
|
211
|
+
- name: Install uv # for uvx
|
|
212
|
+
uses: astral-sh/setup-uv@v7
|
|
213
|
+
|
|
214
|
+
- name: Install node # for npx
|
|
215
|
+
uses: actions/setup-node@v6
|
|
216
|
+
with:
|
|
217
|
+
node-version: 24
|
|
218
|
+
|
|
219
|
+
- name: Setup python 3.14
|
|
220
|
+
uses: actions/setup-python@v6
|
|
221
|
+
with:
|
|
222
|
+
python-version: 3.14
|
|
223
|
+
|
|
224
|
+
- name: Install with pip
|
|
225
|
+
run: |
|
|
226
|
+
python3.14 -m venv .venv
|
|
227
|
+
. .venv/bin/activate
|
|
228
|
+
pip install .
|
|
229
|
+
|
|
230
|
+
- name: Install covopt
|
|
231
|
+
run: uv tool install covopt
|
|
232
|
+
|
|
233
|
+
- name: Run some commands
|
|
234
|
+
run: |
|
|
235
|
+
. .venv/bin/activate
|
|
236
|
+
ci run # To populate the cache and pass jobs
|
|
237
|
+
ci status
|
|
238
|
+
ci run
|
|
239
|
+
ci st
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: "Publish"
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
# Publish on any tag starting with a `v`, e.g., v0.1.0
|
|
7
|
+
- v*
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
run:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
environment:
|
|
13
|
+
name: pypi
|
|
14
|
+
permissions:
|
|
15
|
+
id-token: write
|
|
16
|
+
contents: read
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout
|
|
19
|
+
uses: actions/checkout@v6
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v7
|
|
22
|
+
- name: Install Python 3.14
|
|
23
|
+
run: uv python install 3.14
|
|
24
|
+
- name: Build
|
|
25
|
+
run: uv build
|
|
26
|
+
# Check that basic features work and we didn't miss to include crucial files
|
|
27
|
+
- name: Smoke test (wheel)
|
|
28
|
+
run: |
|
|
29
|
+
uv run \
|
|
30
|
+
--isolated \
|
|
31
|
+
--no-project \
|
|
32
|
+
--with dist/*.whl \
|
|
33
|
+
--with pytest \
|
|
34
|
+
--with gitpython \
|
|
35
|
+
--with hypothesis \
|
|
36
|
+
pytest tests
|
|
37
|
+
- name: Smoke test (source distribution)
|
|
38
|
+
run: |
|
|
39
|
+
uv run \
|
|
40
|
+
--isolated \
|
|
41
|
+
--no-project \
|
|
42
|
+
--with dist/*.tar.gz \
|
|
43
|
+
--with pytest \
|
|
44
|
+
--with gitpython \
|
|
45
|
+
--with hypothesis \
|
|
46
|
+
pytest tests
|
|
47
|
+
- name: Publish
|
|
48
|
+
run: uv publish
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cixstack
|
|
3
|
+
Version: 1.0.0rc1
|
|
4
|
+
Summary: A simple workflow manager built in Python
|
|
5
|
+
Author-email: Olle Lindgren <olle.ln@outlook.com>
|
|
6
|
+
Requires-Python: <3.15,>=3.14
|
|
7
|
+
Requires-Dist: argcomplete>=3.6.2
|
|
8
|
+
Requires-Dist: attrs>=25.0.0
|
|
9
|
+
Requires-Dist: cattrs>=25.0.0
|
|
10
|
+
Requires-Dist: diskcache>=5.6.3
|
|
11
|
+
Requires-Dist: pygit2>=1.19.1
|
|
12
|
+
Requires-Dist: python-dotenv>=1.1.1
|
|
13
|
+
Requires-Dist: pyyaml>=6.0
|
|
14
|
+
Requires-Dist: termcolor>=3.2.0
|
|
15
|
+
Requires-Dist: xxhash>=3.5.0
|
|
16
|
+
Provides-Extra: dev
|
|
17
|
+
Requires-Dist: coverage>=7.13.4; extra == 'dev'
|
|
18
|
+
Requires-Dist: gitpython>=3.1.45; extra == 'dev'
|
|
19
|
+
Requires-Dist: hypothesis>=6.151.9; extra == 'dev'
|
|
20
|
+
Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
|
|
21
|
+
Requires-Dist: pytest>=9.0.2; extra == 'dev'
|
|
22
|
+
Requires-Dist: ruff>=0.14.13; extra == 'dev'
|
|
23
|
+
Requires-Dist: ty>=0.0.1a24; extra == 'dev'
|
|
24
|
+
Requires-Dist: vulture==2.14; extra == 'dev'
|
|
25
|
+
Requires-Dist: yamllint>=1.38.0; extra == 'dev'
|