oxytest 0.1.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 (51) hide show
  1. oxytest-0.1.0/.github/dependabot.yml +40 -0
  2. oxytest-0.1.0/.github/workflows/ci.yml +113 -0
  3. oxytest-0.1.0/.github/workflows/docs.yml +68 -0
  4. oxytest-0.1.0/.github/workflows/publish.yml +87 -0
  5. oxytest-0.1.0/.gitignore +23 -0
  6. oxytest-0.1.0/.python-version +1 -0
  7. oxytest-0.1.0/CHANGELOG.md +20 -0
  8. oxytest-0.1.0/Cargo.lock +228 -0
  9. oxytest-0.1.0/Cargo.toml +17 -0
  10. oxytest-0.1.0/LICENSE +21 -0
  11. oxytest-0.1.0/PKG-INFO +146 -0
  12. oxytest-0.1.0/README.md +112 -0
  13. oxytest-0.1.0/benchmarks/__init__.py +0 -0
  14. oxytest-0.1.0/benchmarks/bench_suite.py +229 -0
  15. oxytest-0.1.0/docs/en/api-reference.md +156 -0
  16. oxytest-0.1.0/docs/en/benchmarks.md +44 -0
  17. oxytest-0.1.0/docs/en/contributing.md +97 -0
  18. oxytest-0.1.0/docs/en/getting-started.md +100 -0
  19. oxytest-0.1.0/docs/en/index.md +43 -0
  20. oxytest-0.1.0/docs/en/migration.md +130 -0
  21. oxytest-0.1.0/docs/en/usage.md +112 -0
  22. oxytest-0.1.0/docs/es/api-reference.md +156 -0
  23. oxytest-0.1.0/docs/es/benchmarks.md +44 -0
  24. oxytest-0.1.0/docs/es/contributing.md +97 -0
  25. oxytest-0.1.0/docs/es/getting-started.md +100 -0
  26. oxytest-0.1.0/docs/es/index.md +43 -0
  27. oxytest-0.1.0/docs/es/migration.md +130 -0
  28. oxytest-0.1.0/docs/es/usage.md +106 -0
  29. oxytest-0.1.0/mkdocs.yml +35 -0
  30. oxytest-0.1.0/pyproject.toml +55 -0
  31. oxytest-0.1.0/python/oxytest/__init__.py +64 -0
  32. oxytest-0.1.0/python/oxytest/__main__.py +4 -0
  33. oxytest-0.1.0/python/oxytest/_compat.py +773 -0
  34. oxytest-0.1.0/python/oxytest/_core.pyi +22 -0
  35. oxytest-0.1.0/python/oxytest/_fixtures.py +243 -0
  36. oxytest-0.1.0/python/oxytest/py.typed +0 -0
  37. oxytest-0.1.0/src/discovery.rs +141 -0
  38. oxytest-0.1.0/src/lib.rs +15 -0
  39. oxytest-0.1.0/src/runner.rs +183 -0
  40. oxytest-0.1.0/src/types.rs +104 -0
  41. oxytest-0.1.0/tests/__init__.py +0 -0
  42. oxytest-0.1.0/tests/sample_tests/__init__.py +0 -0
  43. oxytest-0.1.0/tests/sample_tests/conftest.py +11 -0
  44. oxytest-0.1.0/tests/sample_tests/test_class.py +30 -0
  45. oxytest-0.1.0/tests/sample_tests/test_fixtures.py +36 -0
  46. oxytest-0.1.0/tests/sample_tests/test_param.py +23 -0
  47. oxytest-0.1.0/tests/sample_tests/test_simple.py +35 -0
  48. oxytest-0.1.0/tests/test_compat.py +148 -0
  49. oxytest-0.1.0/tests/test_discovery.py +82 -0
  50. oxytest-0.1.0/tests/test_runner.py +84 -0
  51. oxytest-0.1.0/uv.lock +781 -0
@@ -0,0 +1,40 @@
1
+ version: 2
2
+ updates:
3
+ # Python runtime + dev dependencies in pyproject.toml.
4
+ # PRs are grouped per-week to keep noise low.
5
+ - package-ecosystem: "pip"
6
+ directory: "/"
7
+ schedule:
8
+ interval: "weekly"
9
+ day: "monday"
10
+ open-pull-requests-limit: 5
11
+ labels:
12
+ - "dependencies"
13
+ groups:
14
+ python-deps:
15
+ patterns:
16
+ - "*"
17
+
18
+ # GitHub Actions versions (uses: actions/checkout@vN, etc.). Pin
19
+ # bumps land alongside ecosystem-wide security advisories.
20
+ - package-ecosystem: "github-actions"
21
+ directory: "/"
22
+ schedule:
23
+ interval: "weekly"
24
+ day: "monday"
25
+ open-pull-requests-limit: 3
26
+ labels:
27
+ - "dependencies"
28
+ - "ci"
29
+
30
+ # Rust crates (PyO3, rayon, walkdir). Cargo.lock is not tracked yet;
31
+ # enable this section once Cargo.lock is committed to the repo.
32
+ # - package-ecosystem: "cargo"
33
+ # directory: "/"
34
+ # schedule:
35
+ # interval: "weekly"
36
+ # day: "monday"
37
+ # open-pull-requests-limit: 5
38
+ # labels:
39
+ # - "dependencies"
40
+ # - "rust"
@@ -0,0 +1,113 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ env:
10
+ CARGO_TERM_COLOR: always
11
+ PYTHON_VERSION: "3.14"
12
+
13
+ jobs:
14
+ lint:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v6
18
+ - uses: actions/setup-python@v6
19
+ with:
20
+ python-version: ${{ env.PYTHON_VERSION }}
21
+ - uses: astral-sh/setup-uv@v7
22
+ - name: Install linters
23
+ run: uv sync --extra lint
24
+ - name: Run ruff
25
+ run: uv run ruff check python/ tests/ --ignore=E501
26
+ - name: Run ty
27
+ run: uv run ty check python/oxytest/ --python-version 3.14 --exit-zero --output-format github
28
+
29
+ rust:
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v6
33
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
34
+ - uses: Swatinem/rust-cache@v2
35
+ - name: Build
36
+ run: cargo build
37
+ - name: Test
38
+ run: cargo test
39
+
40
+ test-linux:
41
+ runs-on: ubuntu-latest
42
+ strategy:
43
+ matrix:
44
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
45
+ steps:
46
+ - uses: actions/checkout@v6
47
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
48
+ - uses: Swatinem/rust-cache@v2
49
+ - uses: actions/setup-python@v6
50
+ with:
51
+ python-version: ${{ matrix.python-version }}
52
+ - uses: astral-sh/setup-uv@v7
53
+ - name: Build wheel (Debug)
54
+ run: |
55
+ uv pip install maturin --system
56
+ maturin build --out dist
57
+ - name: Install wheel and test deps
58
+ run: |
59
+ uv pip install --system dist/*.whl
60
+ uv pip install --system pytest
61
+ - name: Run tests
62
+ run: |
63
+ python -m pytest tests/ -v --ignore=tests/sample_tests
64
+ python -m oxytest tests/sample_tests/ -v
65
+
66
+ test-windows:
67
+ runs-on: windows-latest
68
+ steps:
69
+ - uses: actions/checkout@v6
70
+ - uses: actions/setup-python@v6
71
+ with:
72
+ python-version: ${{ env.PYTHON_VERSION }}
73
+ - uses: astral-sh/setup-uv@v7
74
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
75
+ - uses: Swatinem/rust-cache@v2
76
+ - name: Build wheel (Debug)
77
+ run: |
78
+ uv pip install maturin --system
79
+ maturin build --out dist
80
+ - name: Install wheel and test deps
81
+ shell: pwsh
82
+ run: |
83
+ $wheel = Get-ChildItem dist/*.whl | Select-Object -First 1
84
+ uv pip install --system $wheel.FullName
85
+ uv pip install --system pytest
86
+ - name: Run tests
87
+ shell: pwsh
88
+ run: |
89
+ python -m pytest tests/ -v --ignore=tests/sample_tests
90
+ python -m oxytest tests/sample_tests/ -v
91
+
92
+ test-macos:
93
+ runs-on: macos-latest
94
+ steps:
95
+ - uses: actions/checkout@v6
96
+ - uses: actions/setup-python@v6
97
+ with:
98
+ python-version: ${{ env.PYTHON_VERSION }}
99
+ - uses: astral-sh/setup-uv@v7
100
+ - uses: actions-rust-lang/setup-rust-toolchain@v1
101
+ - uses: Swatinem/rust-cache@v2
102
+ - name: Build wheel (Debug)
103
+ run: |
104
+ uv pip install maturin --system
105
+ maturin build --out dist
106
+ - name: Install wheel and test deps
107
+ run: |
108
+ uv pip install --system dist/*.whl
109
+ uv pip install --system pytest
110
+ - name: Run tests
111
+ run: |
112
+ python -m pytest tests/ -v --ignore=tests/sample_tests
113
+ python -m oxytest tests/sample_tests/ -v
@@ -0,0 +1,68 @@
1
+ name: Build & deploy docs
2
+
3
+ on:
4
+ push:
5
+ branches: ["main"]
6
+ paths:
7
+ - "docs/**"
8
+ - "mkdocs.yml"
9
+ - ".github/workflows/docs.yml"
10
+ workflow_run:
11
+ workflows: ["Publish"]
12
+ types: [completed]
13
+ workflow_dispatch:
14
+
15
+ # Burst of pushes to main only needs the latest docs build to
16
+ # ship — earlier in-flight builds are immediately stale. Cancel
17
+ # them so we don't burn runner minutes deploying superseded HTML.
18
+ concurrency:
19
+ group: docs-${{ github.ref }}
20
+ cancel-in-progress: true
21
+
22
+ permissions:
23
+ contents: read
24
+ pages: write
25
+ id-token: write
26
+
27
+ jobs:
28
+ build:
29
+ if: >
30
+ github.event_name != 'workflow_run' ||
31
+ github.event.workflow_run.conclusion == 'success'
32
+ runs-on: ubuntu-latest
33
+ steps:
34
+ - uses: actions/checkout@v6
35
+
36
+ - uses: astral-sh/setup-uv@v7
37
+ with:
38
+ version: "latest"
39
+
40
+ - name: Install
41
+ run: uv sync --extra docs
42
+
43
+ - name: Build site
44
+ env:
45
+ SITE_URL: https://rroblf01.github.io/oxytest/
46
+ run: uv run mkdocs build --strict
47
+
48
+ - uses: actions/upload-pages-artifact@v5
49
+ with:
50
+ path: ./site
51
+
52
+ deploy:
53
+ needs: build
54
+ runs-on: ubuntu-latest
55
+ # GitHub Pages requires deploys to a given environment to be
56
+ # serialised — never cancelled mid-flight or two deploys can
57
+ # race the live site. The workflow-level concurrency above
58
+ # already cancels superseded *builds*; this job-level group
59
+ # only kicks in once the build artefact is ready.
60
+ concurrency:
61
+ group: pages
62
+ cancel-in-progress: false
63
+ environment:
64
+ name: github-pages
65
+ url: ${{ steps.deployment.outputs.page_url }}
66
+ steps:
67
+ - id: deployment
68
+ uses: actions/deploy-pages@v5
@@ -0,0 +1,87 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ wheels:
9
+ strategy:
10
+ matrix:
11
+ include:
12
+ - os: ubuntu-latest
13
+ target: x86_64
14
+ - os: ubuntu-24.04-arm
15
+ target: aarch64
16
+ - os: macos-latest
17
+ target: x86_64
18
+ - os: macos-latest
19
+ target: aarch64
20
+ - os: windows-latest
21
+ target: x86_64
22
+ runs-on: ${{ matrix.os }}
23
+ steps:
24
+ - uses: actions/checkout@v6
25
+
26
+ - uses: actions/setup-python@v6
27
+ with:
28
+ python-version: "3.14"
29
+
30
+ - name: Build Wheels
31
+ uses: PyO3/maturin-action@v1.51.0
32
+ with:
33
+ target: ${{ matrix.target }}
34
+ args: --release --out dist --interpreter python3.10 python3.11 python3.12 python3.13 python3.14
35
+ sccache: 'true'
36
+ manylinux: manylinux_2_28
37
+
38
+ - uses: actions/upload-artifact@v7
39
+ with:
40
+ name: wheels-${{ matrix.os }}-${{ matrix.target }}
41
+ path: dist/*.whl
42
+
43
+ sdist:
44
+ runs-on: ubuntu-latest
45
+ steps:
46
+ - uses: actions/checkout@v6
47
+
48
+ - name: Build sdist
49
+ uses: PyO3/maturin-action@v1.51.0
50
+ with:
51
+ command: sdist
52
+ args: --out dist
53
+
54
+ - uses: actions/upload-artifact@v7
55
+ with:
56
+ name: wheels-sdist
57
+ path: dist/*.tar.gz
58
+
59
+ publish:
60
+ needs: [wheels, sdist]
61
+ runs-on: ubuntu-latest
62
+ environment:
63
+ name: pypi
64
+ url: https://pypi.org/p/oxytest
65
+ permissions:
66
+ id-token: write
67
+ contents: write
68
+ steps:
69
+ - uses: actions/download-artifact@v8
70
+ with:
71
+ pattern: wheels-*
72
+ merge-multiple: true
73
+ path: dist/
74
+
75
+ - uses: pypa/gh-action-pypi-publish@release/v1
76
+ with:
77
+ attestations: true
78
+
79
+ - uses: actions/checkout@v6
80
+ with:
81
+ fetch-depth: 0
82
+
83
+ - name: Create GitHub Release
84
+ uses: softprops/action-gh-release@v3
85
+ with:
86
+ files: dist/*
87
+ generate_release_notes: true
@@ -0,0 +1,23 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ # Rust
13
+ target/
14
+ Cargo.lock
15
+
16
+ # Docs
17
+ site/
18
+
19
+ # Benchmarks
20
+ *.bench
21
+ benchmarks/_generated/
22
+
23
+ *.so
@@ -0,0 +1 @@
1
+ 3.14
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 (unreleased)
4
+
5
+ ### Added
6
+ - Initial release of oxytest, a 100% pytest-compatible test runner in Python + Rust
7
+ - AST-based test discovery (10-100x faster than import-based)
8
+ - Sequential and parallel (Rayon) test execution
9
+ - Built-in fixtures: `tmp_path`, `tmpdir`, `capsys`, `capfd`, `monkeypatch`
10
+ - `conftest.py` loading and fixture registration
11
+ - pytest API compatibility: `main`, `approx`, `raises`, `fixture`, `mark`, `skip`, `skipif`, `xfail`, `param`, `fail`, `exit`, `set_trace`, `importorskip`
12
+ - CLI flags: `-v`, `-q`, `-x`, `-k`, `--tb`, `-n`, `--junitxml`, `-s`, `--maxfail`
13
+ - JUnit XML output
14
+ - Documentation in English and Spanish (MkDocs)
15
+
16
+ ### Changed
17
+ - N/A
18
+
19
+ ### Fixed
20
+ - N/A
@@ -0,0 +1,228 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "crossbeam-deque"
7
+ version = "0.8.6"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
10
+ dependencies = [
11
+ "crossbeam-epoch",
12
+ "crossbeam-utils",
13
+ ]
14
+
15
+ [[package]]
16
+ name = "crossbeam-epoch"
17
+ version = "0.9.18"
18
+ source = "registry+https://github.com/rust-lang/crates.io-index"
19
+ checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
20
+ dependencies = [
21
+ "crossbeam-utils",
22
+ ]
23
+
24
+ [[package]]
25
+ name = "crossbeam-utils"
26
+ version = "0.8.21"
27
+ source = "registry+https://github.com/rust-lang/crates.io-index"
28
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
29
+
30
+ [[package]]
31
+ name = "either"
32
+ version = "1.16.0"
33
+ source = "registry+https://github.com/rust-lang/crates.io-index"
34
+ checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
35
+
36
+ [[package]]
37
+ name = "heck"
38
+ version = "0.5.0"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
41
+
42
+ [[package]]
43
+ name = "libc"
44
+ version = "0.2.186"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
47
+
48
+ [[package]]
49
+ name = "once_cell"
50
+ version = "1.21.4"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
53
+
54
+ [[package]]
55
+ name = "oxytest-core"
56
+ version = "0.1.0"
57
+ dependencies = [
58
+ "pyo3",
59
+ "rayon",
60
+ "walkdir",
61
+ ]
62
+
63
+ [[package]]
64
+ name = "portable-atomic"
65
+ version = "1.13.1"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
68
+
69
+ [[package]]
70
+ name = "proc-macro2"
71
+ version = "1.0.106"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
74
+ dependencies = [
75
+ "unicode-ident",
76
+ ]
77
+
78
+ [[package]]
79
+ name = "pyo3"
80
+ version = "0.29.0"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
83
+ dependencies = [
84
+ "libc",
85
+ "once_cell",
86
+ "portable-atomic",
87
+ "pyo3-build-config",
88
+ "pyo3-ffi",
89
+ "pyo3-macros",
90
+ ]
91
+
92
+ [[package]]
93
+ name = "pyo3-build-config"
94
+ version = "0.29.0"
95
+ source = "registry+https://github.com/rust-lang/crates.io-index"
96
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
97
+ dependencies = [
98
+ "target-lexicon",
99
+ ]
100
+
101
+ [[package]]
102
+ name = "pyo3-ffi"
103
+ version = "0.29.0"
104
+ source = "registry+https://github.com/rust-lang/crates.io-index"
105
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
106
+ dependencies = [
107
+ "libc",
108
+ "pyo3-build-config",
109
+ ]
110
+
111
+ [[package]]
112
+ name = "pyo3-macros"
113
+ version = "0.29.0"
114
+ source = "registry+https://github.com/rust-lang/crates.io-index"
115
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
116
+ dependencies = [
117
+ "proc-macro2",
118
+ "pyo3-macros-backend",
119
+ "quote",
120
+ "syn",
121
+ ]
122
+
123
+ [[package]]
124
+ name = "pyo3-macros-backend"
125
+ version = "0.29.0"
126
+ source = "registry+https://github.com/rust-lang/crates.io-index"
127
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
128
+ dependencies = [
129
+ "heck",
130
+ "proc-macro2",
131
+ "quote",
132
+ "syn",
133
+ ]
134
+
135
+ [[package]]
136
+ name = "quote"
137
+ version = "1.0.45"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
140
+ dependencies = [
141
+ "proc-macro2",
142
+ ]
143
+
144
+ [[package]]
145
+ name = "rayon"
146
+ version = "1.12.0"
147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
148
+ checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
149
+ dependencies = [
150
+ "either",
151
+ "rayon-core",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "rayon-core"
156
+ version = "1.13.0"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
159
+ dependencies = [
160
+ "crossbeam-deque",
161
+ "crossbeam-utils",
162
+ ]
163
+
164
+ [[package]]
165
+ name = "same-file"
166
+ version = "1.0.6"
167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
168
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
169
+ dependencies = [
170
+ "winapi-util",
171
+ ]
172
+
173
+ [[package]]
174
+ name = "syn"
175
+ version = "2.0.117"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
178
+ dependencies = [
179
+ "proc-macro2",
180
+ "quote",
181
+ "unicode-ident",
182
+ ]
183
+
184
+ [[package]]
185
+ name = "target-lexicon"
186
+ version = "0.13.5"
187
+ source = "registry+https://github.com/rust-lang/crates.io-index"
188
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
189
+
190
+ [[package]]
191
+ name = "unicode-ident"
192
+ version = "1.0.24"
193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
194
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
195
+
196
+ [[package]]
197
+ name = "walkdir"
198
+ version = "2.5.0"
199
+ source = "registry+https://github.com/rust-lang/crates.io-index"
200
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
201
+ dependencies = [
202
+ "same-file",
203
+ "winapi-util",
204
+ ]
205
+
206
+ [[package]]
207
+ name = "winapi-util"
208
+ version = "0.1.11"
209
+ source = "registry+https://github.com/rust-lang/crates.io-index"
210
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
211
+ dependencies = [
212
+ "windows-sys",
213
+ ]
214
+
215
+ [[package]]
216
+ name = "windows-link"
217
+ version = "0.2.1"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
220
+
221
+ [[package]]
222
+ name = "windows-sys"
223
+ version = "0.61.2"
224
+ source = "registry+https://github.com/rust-lang/crates.io-index"
225
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
226
+ dependencies = [
227
+ "windows-link",
228
+ ]
@@ -0,0 +1,17 @@
1
+ [package]
2
+ name = "oxytest-core"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ description = "Oxytest Rust core - fast pytest-compatible test runner"
6
+ license = "MIT"
7
+ authors = ["Ricardo Robles <ricardo.r.f@hotmail.com>"]
8
+ readme = "README.md"
9
+
10
+ [lib]
11
+ name = "oxytest_core"
12
+ crate-type = ["cdylib"]
13
+
14
+ [dependencies]
15
+ pyo3 = { version = "0.29", features = ["extension-module"] }
16
+ rayon = "1.10"
17
+ walkdir = "2.5"
oxytest-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ricardo Robles Fernández
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.