rcf3 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.
@@ -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: "github-actions" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
12
+ groups:
13
+ default:
14
+ patterns:
15
+ - "*"
@@ -0,0 +1,140 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ sdist:
11
+ name: Build sdist
12
+ runs-on: ubuntu-slim
13
+ defaults:
14
+ run:
15
+ shell: nu {0}
16
+
17
+ steps:
18
+ - uses: hustcer/setup-nu@v3
19
+ - uses: actions/checkout@v6
20
+ - uses: dtolnay/rust-toolchain@stable
21
+ - uses: astral-sh/setup-uv@v8.1.0
22
+
23
+ - name: Build sdist
24
+ run: uv build --sdist
25
+
26
+ - run: ls dist
27
+
28
+ - uses: actions/upload-artifact@v7
29
+ with:
30
+ name: sdist
31
+ path: ./dist/*.tar.gz
32
+ if-no-files-found: error
33
+
34
+ wheel:
35
+ name: Build wheel (${{ matrix.os }}, ${{ matrix.target }})
36
+ runs-on: ${{ matrix.os }}
37
+ strategy:
38
+ fail-fast: false
39
+ matrix:
40
+ include:
41
+ - os: ubuntu-latest
42
+ target: x86_64-unknown-linux-gnu
43
+ args: --out dist --interpreter 3.11 3.14t pypy3.11
44
+ manylinux: manylinux_2_28
45
+ - os: ubuntu-24.04-arm
46
+ target: aarch64-unknown-linux-gnu
47
+ args: --out dist --interpreter 3.11 3.14t pypy3.11
48
+ manylinux: manylinux_2_28
49
+ - os: ubuntu-24.04-riscv
50
+ target: riscv64gc-unknown-linux-gnu
51
+ args: --out dist --interpreter 3.11 3.14t
52
+ manylinux: auto
53
+ - os: ubuntu-latest
54
+ target: x86_64-unknown-linux-musl
55
+ args: --out dist --interpreter 3.11 3.14t
56
+ manylinux: musllinux_1_2
57
+ - os: ubuntu-24.04-arm
58
+ target: aarch64-unknown-linux-musl
59
+ args: --out dist --interpreter 3.11 3.14t
60
+ manylinux: musllinux_1_2
61
+ - os: ubuntu-24.04-riscv
62
+ target: riscv64gc-unknown-linux-musl
63
+ args: --out dist --interpreter 3.11 3.14t
64
+ manylinux: auto
65
+ - os: macos-latest
66
+ target: aarch64-apple-darwin
67
+ args: --out dist --interpreter 3.11 3.14t pypy3.11
68
+ manylinux: auto
69
+ - os: windows-latest
70
+ target: x86_64-pc-windows-msvc
71
+ args: --out dist --interpreter 3.11 3.14t pypy3.11
72
+ manylinux: auto
73
+ - os: windows-11-arm
74
+ target: aarch64-pc-windows-msvc
75
+ args: --out dist --interpreter 3.11 3.14t
76
+ manylinux: auto
77
+
78
+ defaults:
79
+ run:
80
+ shell: nu {0}
81
+
82
+ steps:
83
+ - uses: hustcer/setup-nu@v3
84
+ - uses: actions/checkout@v6
85
+ - uses: dtolnay/rust-toolchain@stable
86
+ with:
87
+ targets: ${{ matrix.target }}
88
+ - uses: astral-sh/setup-uv@v8.1.0
89
+
90
+ - name: Build wheel
91
+ uses: PyO3/maturin-action@v1
92
+ with:
93
+ target: ${{ matrix.target }}
94
+ manylinux: ${{ matrix.manylinux }}
95
+ args: ${{ matrix.args }}
96
+
97
+ - run: ls dist
98
+
99
+ - uses: actions/upload-artifact@v7
100
+ with:
101
+ name: wheels-${{ matrix.os }}-${{ matrix.target }}-${{ strategy.job-index }}
102
+ path: ./dist/*.whl
103
+ if-no-files-found: error
104
+
105
+ publish:
106
+ name: Publish
107
+ runs-on: ubuntu-latest
108
+ needs: [wheel, sdist]
109
+ environment: publish
110
+ permissions:
111
+ id-token: write
112
+ attestations: write
113
+ artifact-metadata: write
114
+
115
+ defaults:
116
+ run:
117
+ shell: nu {0}
118
+
119
+ steps:
120
+ - uses: hustcer/setup-nu@v3
121
+ - uses: astral-sh/setup-uv@v8.1.0
122
+ - uses: actions/download-artifact@v8
123
+ with:
124
+ path: dist
125
+ merge-multiple: true
126
+
127
+ - run: ls dist
128
+
129
+ - name: Generate artifact attestation
130
+ uses: actions/attest@v4
131
+ with:
132
+ subject-path: "dist/*"
133
+
134
+ - name: Publish to PyPI
135
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
136
+ run: uv publish
137
+
138
+ - name: Publish to PyPI dry-run
139
+ if: ${{ !startsWith(github.ref, 'refs/tags/') }}
140
+ run: uv publish --dry-run
@@ -0,0 +1,50 @@
1
+ name: Test - Python
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - "**/*.py"
9
+ - "src/python.rs"
10
+ - ".github/workflows/test-python.yaml"
11
+ pull_request:
12
+ branches:
13
+ - main
14
+ paths:
15
+ - "**/*.py"
16
+ - "src/python.rs"
17
+ - ".github/workflows/test-python.yaml"
18
+ schedule:
19
+ - cron: "0 0 * * 0"
20
+ workflow_dispatch:
21
+ workflow_call:
22
+
23
+ jobs:
24
+ test:
25
+ name: pytest (${{ matrix.os }}, ${{ matrix.container || 'host' }})
26
+ runs-on: ${{ matrix.os }}
27
+ container: ${{ case(contains(matrix.os, 'ubuntu'), matrix.container, null) }}
28
+ strategy:
29
+ fail-fast: false
30
+ matrix:
31
+ include:
32
+ - os: ubuntu-latest
33
+ container: quay.io/pypa/manylinux_2_34
34
+ - os: ubuntu-24.04-arm
35
+ container: quay.io/pypa/manylinux_2_34
36
+ - os: ubuntu-latest
37
+ container: quay.io/pypa/musllinux_1_2_x86_64
38
+ - os: macos-latest
39
+ - os: windows-latest
40
+
41
+ steps:
42
+ - uses: actions/checkout@v6
43
+ - uses: dtolnay/rust-toolchain@stable
44
+ - uses: astral-sh/setup-uv@v8.1.0
45
+ - uses: mozilla-actions/sccache-action@v0.0.10
46
+ - name: Run tests
47
+ run: uvx nox -s test
48
+ env:
49
+ SCCACHE_GHA_ENABLED: "true"
50
+ RUSTC_WRAPPER: "sccache"
@@ -0,0 +1,49 @@
1
+ name: Test - Rust
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - "**/*.rs"
9
+ - ".github/workflows/test-rust.yaml"
10
+ pull_request:
11
+ branches:
12
+ - main
13
+ paths:
14
+ - "**/*.rs"
15
+ - ".github/workflows/test-rust.yaml"
16
+ schedule:
17
+ - cron: "0 0 * * 0"
18
+ workflow_dispatch:
19
+ workflow_call:
20
+
21
+ jobs:
22
+ test:
23
+ name: cargo test (${{ matrix.os }})
24
+ runs-on: ${{ matrix.os }}
25
+ strategy:
26
+ fail-fast: false
27
+ matrix:
28
+ os:
29
+ - ubuntu-latest
30
+ - ubuntu-24.04-arm
31
+ - macos-latest
32
+ - windows-latest
33
+ - windows-11-arm
34
+
35
+ env:
36
+ SCCACHE_GHA_ENABLED: "true"
37
+ RUSTC_WRAPPER: "sccache"
38
+
39
+ steps:
40
+ - uses: actions/checkout@v6
41
+ - uses: dtolnay/rust-toolchain@stable
42
+ - uses: mozilla-actions/sccache-action@v0.0.10
43
+ - name: Run tests
44
+ run: cargo test --verbose
45
+ - name: Run tests (no-default-features)
46
+ if: runner.os != 'Windows'
47
+ run: cargo test --verbose --no-default-features
48
+ - name: Check serde (no-default-features)
49
+ run: cargo check --verbose --no-default-features --features serde
rcf3-0.1.0/.gitignore ADDED
@@ -0,0 +1,247 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ *.lcov
51
+ .hypothesis/
52
+ .pytest_cache/
53
+ cover/
54
+
55
+ # Translations
56
+ *.mo
57
+ *.pot
58
+
59
+ # Django stuff:
60
+ *.log
61
+ local_settings.py
62
+ db.sqlite3
63
+ db.sqlite3-journal
64
+
65
+ # Flask stuff:
66
+ instance/
67
+ .webassets-cache
68
+
69
+ # Scrapy stuff:
70
+ .scrapy
71
+
72
+ # Sphinx documentation
73
+ docs/_build/
74
+
75
+ # PyBuilder
76
+ .pybuilder/
77
+ target/
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # IPython
83
+ profile_default/
84
+ ipython_config.py
85
+
86
+ # pyenv
87
+ # For a library or package, you might want to ignore these files since the code is
88
+ # intended to run in multiple environments; otherwise, check them in:
89
+ # .python-version
90
+
91
+ # pipenv
92
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
93
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
94
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
95
+ # install all needed dependencies.
96
+ # Pipfile.lock
97
+
98
+ # UV
99
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
100
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
101
+ # commonly ignored for libraries.
102
+ uv.lock
103
+
104
+
105
+ # poetry
106
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
107
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
108
+ # commonly ignored for libraries.
109
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
110
+ # poetry.lock
111
+ # poetry.toml
112
+
113
+ # pdm
114
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
115
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
116
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
117
+ # pdm.lock
118
+ # pdm.toml
119
+ .pdm-python
120
+ .pdm-build/
121
+
122
+ # pixi
123
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
124
+ # pixi.lock
125
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
126
+ # in the .venv directory. It is recommended not to include this directory in version control.
127
+ .pixi/*
128
+ !.pixi/config.toml
129
+
130
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
131
+ __pypackages__/
132
+
133
+ # Celery stuff
134
+ celerybeat-schedule*
135
+ celerybeat.pid
136
+
137
+ # Redis
138
+ *.rdb
139
+ *.aof
140
+ *.pid
141
+
142
+ # RabbitMQ
143
+ mnesia/
144
+ rabbitmq/
145
+ rabbitmq-data/
146
+
147
+ # ActiveMQ
148
+ activemq-data/
149
+
150
+ # SageMath parsed files
151
+ *.sage.py
152
+
153
+ # Environments
154
+ .env
155
+ .envrc
156
+ .venv
157
+ env/
158
+ venv/
159
+ ENV/
160
+ env.bak/
161
+ venv.bak/
162
+
163
+ # Spyder project settings
164
+ .spyderproject
165
+ .spyproject
166
+
167
+ # Rope project settings
168
+ .ropeproject
169
+
170
+ # mkdocs documentation
171
+ /site
172
+
173
+ # mypy
174
+ .mypy_cache/
175
+ .dmypy.json
176
+ dmypy.json
177
+
178
+ # Pyre type checker
179
+ .pyre/
180
+
181
+ # pytype static type analyzer
182
+ .pytype/
183
+
184
+ # Cython debug symbols
185
+ cython_debug/
186
+
187
+ # PyCharm
188
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
189
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
190
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
191
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
192
+ # .idea/
193
+
194
+ # Abstra
195
+ # Abstra is an AI-powered process automation framework.
196
+ # Ignore directories containing user credentials, local state, and settings.
197
+ # Learn more at https://abstra.io/docs
198
+ .abstra/
199
+
200
+ # Visual Studio Code
201
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
202
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
203
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
204
+ # you could uncomment the following to ignore the entire vscode folder
205
+ # .vscode/
206
+ # Temporary file for partial code execution
207
+ tempCodeRunnerFile.py
208
+
209
+ # Ruff stuff:
210
+ .ruff_cache/
211
+
212
+ # PyPI configuration file
213
+ .pypirc
214
+
215
+ # Marimo
216
+ marimo/_static/
217
+ marimo/_lsp/
218
+ __marimo__/
219
+
220
+ # Streamlit
221
+ .streamlit/secrets.toml
222
+
223
+ # Generated by Cargo
224
+ # will have compiled files and executables
225
+ debug
226
+ target
227
+
228
+ # These are backup files generated by rustfmt
229
+ **/*.rs.bk
230
+
231
+ # MSVC Windows builds of rustc generate these, which store debugging information
232
+ *.pdb
233
+
234
+ # Generated by cargo mutants
235
+ # Contains mutation testing data
236
+ **/mutants.out*/
237
+
238
+ # rustc will dump stack traces when hitting an internal compiler error to PWD
239
+ rustc-ice-*.txt
240
+
241
+ # RustRover
242
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
243
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
244
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
245
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
246
+ #.idea/
247
+ Cargo.lock
@@ -0,0 +1,31 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v6.0.0
4
+ hooks:
5
+ - id: check-ast
6
+ - id: check-case-conflict
7
+ - id: check-json
8
+ - id: check-merge-conflict
9
+ - id: check-toml
10
+ - id: check-yaml
11
+ - id: trailing-whitespace
12
+ args: [--markdown-linebreak-ext=md]
13
+ - id: end-of-file-fixer
14
+ - id: mixed-line-ending
15
+
16
+ - repo: https://github.com/astral-sh/ruff-pre-commit
17
+ rev: v0.15.12
18
+ hooks:
19
+ - id: ruff-check
20
+ args: [--fix, --exit-non-zero-on-fix]
21
+ - id: ruff-format
22
+
23
+ - repo: https://github.com/tombi-toml/tombi-pre-commit
24
+ rev: v0.11.1
25
+ hooks:
26
+ - id: tombi-format
27
+
28
+ - repo: https://github.com/AndrejOrsula/pre-commit-cargo
29
+ rev: 0.5.0
30
+ hooks:
31
+ - id: cargo-fmt
@@ -0,0 +1,3 @@
1
+ {
2
+ "rust-analyzer.cargo.features": "all"
3
+ }