strobengine 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,58 @@
1
+ ---
2
+ name: CI
3
+
4
+ on:
5
+ push:
6
+ branches: [main, dev]
7
+ paths-ignore:
8
+ - '**.md'
9
+ - 'LICENSE*'
10
+ - '.gitignore'
11
+ pull_request:
12
+ branches: [main, dev]
13
+ paths-ignore:
14
+ - '**.md'
15
+ - 'LICENSE*'
16
+ - '.gitignore'
17
+
18
+ jobs:
19
+ rust:
20
+ name: Rust Checks
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Checkout Code
24
+ uses: actions/checkout@v7
25
+
26
+ - name: Setup Rust Toolchain
27
+ uses: dtolnay/rust-toolchain@stable
28
+ with:
29
+ components: clippy, rustfmt
30
+
31
+ - name: Cache Cargo Dependencies
32
+ uses: swatinem/rust-cache@v2
33
+
34
+ - name: Run Rust Lints & Tests
35
+ run: |
36
+ cargo fmt --check
37
+ cargo clippy --all-targets -- -D warnings
38
+ cargo test
39
+
40
+ python:
41
+ name: Python Checks
42
+ runs-on: ubuntu-latest
43
+ steps:
44
+ - name: Checkout Code
45
+ uses: actions/checkout@v7
46
+
47
+ - name: Setup uv
48
+ uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2
49
+ with:
50
+ enable-cache: true
51
+
52
+ - name: Python Workspace Sync
53
+ run: uv sync
54
+
55
+ - name: Run Ruff Checks
56
+ run: |
57
+ uv run ruff check
58
+ uv run ruff format --check
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: Publish to TestPyPI
3
+
4
+ on:
5
+ workflow_dispatch: # Allows manual trigger from GitHub Actions UI
6
+
7
+ jobs:
8
+ build-wheels:
9
+ name: Build wheels on ${{ matrix.os }}
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ matrix:
13
+ os: [ubuntu-latest, macos-latest, windows-latest]
14
+ steps:
15
+ - uses: actions/checkout@v7
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v7
19
+ with:
20
+ python-version-file: '.python-version'
21
+
22
+ - name: Build wheels via Maturin
23
+ uses: PyO3/maturin-action@v1
24
+ with:
25
+ args: --release --out dist --find-interpreter
26
+ sccache: 'true'
27
+ sdist: false
28
+
29
+ - name: Upload wheel artifacts
30
+ uses: actions/upload-artifact@v7
31
+ with:
32
+ name: wheels-${{ matrix.os }}
33
+ path: dist/*.whl
34
+
35
+ build-sdist:
36
+ name: Build source distribution
37
+ runs-on: ubuntu-latest
38
+ steps:
39
+ - uses: actions/checkout@v7
40
+
41
+ - name: Build sdist
42
+ uses: PyO3/maturin-action@v1
43
+ with:
44
+ command: sdist
45
+ args: --out dist
46
+
47
+ - name: Upload sdist artifact
48
+ uses: actions/upload-artifact@v7
49
+ with:
50
+ name: sdist
51
+ path: dist/*.tar.gz
52
+
53
+ publish-testpypi:
54
+ name: Publish to TestPyPI
55
+ needs: [build-wheels, build-sdist]
56
+ runs-on: ubuntu-latest
57
+ environment: testpypi
58
+ permissions:
59
+ id-token: write # Required for OIDC
60
+
61
+ steps:
62
+ - name: Download all build artifacts
63
+ uses: actions/download-artifact@v8
64
+ with:
65
+ pattern: '*'
66
+ path: dist
67
+ merge-multiple: true
68
+
69
+ - name: Publish to TestPyPI
70
+ uses: pypa/gh-action-pypi-publish@release/v1
71
+ with:
72
+ repository-url: https://test.pypi.org/legacy/
73
+ packages-dir: dist/
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: Publish to PyPI
3
+
4
+ on:
5
+ workflow_dispatch: # Allows manual trigger from GitHub Actions UI
6
+ push:
7
+ tags:
8
+ - 'v*'
9
+
10
+ jobs:
11
+ build-wheels:
12
+ name: Build wheels on ${{ matrix.os }}
13
+ runs-on: ${{ matrix.os }}
14
+ strategy:
15
+ matrix:
16
+ os: [ubuntu-latest, macos-latest, windows-latest]
17
+ steps:
18
+ - uses: actions/checkout@v7
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v7
22
+ with:
23
+ python-version-file: '.python-version'
24
+
25
+ - name: Build wheels via Maturin
26
+ uses: PyO3/maturin-action@v1
27
+ with:
28
+ args: --release --out dist --find-interpreter
29
+ sccache: 'true'
30
+ sdist: false
31
+
32
+ - name: Upload wheel artifacts
33
+ uses: actions/upload-artifact@v7
34
+ with:
35
+ name: wheels-${{ matrix.os }}
36
+ path: dist/*.whl
37
+
38
+ build-sdist:
39
+ name: Build source distribution
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v7
43
+
44
+ - name: Build sdist
45
+ uses: PyO3/maturin-action@v1
46
+ with:
47
+ command: sdist
48
+ args: --out dist
49
+
50
+ - name: Upload sdist artifact
51
+ uses: actions/upload-artifact@v7
52
+ with:
53
+ name: sdist
54
+ path: dist/*.tar.gz
55
+
56
+ publish-pypi:
57
+ name: Publish to Production PyPI
58
+ needs: [build-wheels, build-sdist]
59
+ runs-on: ubuntu-latest
60
+ environment: pypi
61
+ permissions:
62
+ id-token: write # Required for OIDC
63
+
64
+ steps:
65
+ - name: Download all build artifacts
66
+ uses: actions/download-artifact@v8
67
+ with:
68
+ pattern: '*'
69
+ path: dist
70
+ merge-multiple: true
71
+
72
+ - name: Publish to PyPI
73
+ uses: pypa/gh-action-pypi-publish@release/v1
74
+ with:
75
+ packages-dir: dist/
@@ -0,0 +1,250 @@
1
+ # ==========================================
2
+ # Rust & Environment Rules
3
+ # ==========================================
4
+
5
+ # Generated by Cargo
6
+ # will have compiled files and executables
7
+ debug
8
+ target
9
+
10
+ # These are backup files generated by rustfmt
11
+ **/*.rs.bk
12
+
13
+ # MSVC Windows builds of rustc generate these, which store debugging information
14
+ *.pdb
15
+
16
+ # Generated by cargo mutants
17
+ # Contains mutation testing data
18
+ **/mutants.out*/
19
+
20
+ # RustRover
21
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
22
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
23
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
24
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
25
+ #.idea/
26
+
27
+ # ==========================================
28
+ # Python & Environment Rules
29
+ # ==========================================
30
+
31
+ # Byte-compiled / optimized / DLL files
32
+ __pycache__/
33
+ *.py[codz]
34
+ *$py.class
35
+
36
+ # C extensions
37
+ *.so
38
+
39
+ # Distribution / packaging
40
+ .Python
41
+ build/
42
+ develop-eggs/
43
+ dist/
44
+ downloads/
45
+ eggs/
46
+ .eggs/
47
+ lib/
48
+ lib64/
49
+ parts/
50
+ sdist/
51
+ var/
52
+ wheels/
53
+ share/python-wheels/
54
+ *.egg-info/
55
+ .installed.cfg
56
+ *.egg
57
+ MANIFEST
58
+
59
+ # PyInstaller
60
+ # Usually these files are written by a python script from a template
61
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
62
+ *.manifest
63
+ *.spec
64
+
65
+ # Installer logs
66
+ pip-log.txt
67
+ pip-delete-this-directory.txt
68
+
69
+ # Unit test / coverage reports
70
+ htmlcov/
71
+ .tox/
72
+ .nox/
73
+ .coverage
74
+ .coverage.*
75
+ .cache
76
+ nosetests.xml
77
+ coverage.xml
78
+ *.cover
79
+ *.py.cover
80
+ *.lcov
81
+ .hypothesis/
82
+ .pytest_cache/
83
+ cover/
84
+
85
+ # Translations
86
+ *.mo
87
+ *.pot
88
+
89
+ # Django stuff:
90
+ *.log
91
+ local_settings.py
92
+ db.sqlite3
93
+ db.sqlite3-journal
94
+
95
+ # Flask stuff:
96
+ instance/
97
+ .webassets-cache
98
+
99
+ # Scrapy stuff:
100
+ .scrapy
101
+
102
+ # Sphinx documentation
103
+ docs/_build/
104
+
105
+ # PyBuilder
106
+ .pybuilder/
107
+ target/
108
+
109
+ # Jupyter Notebook
110
+ .ipynb_checkpoints
111
+
112
+ # IPython
113
+ profile_default/
114
+ ipython_config.py
115
+
116
+ # pyenv
117
+ # For a library or package, you might want to ignore these files since the code is
118
+ # intended to run in multiple environments; otherwise, check them in:
119
+ # .python-version
120
+
121
+ # pipenv
122
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
123
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
124
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
125
+ # install all needed dependencies.
126
+ # Pipfile.lock
127
+
128
+ # UV
129
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
130
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
131
+ # commonly ignored for libraries.
132
+ # uv.lock
133
+
134
+ # poetry
135
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
136
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
137
+ # commonly ignored for libraries.
138
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
139
+ # poetry.lock
140
+ # poetry.toml
141
+
142
+ # pdm
143
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
144
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
145
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
146
+ # pdm.lock
147
+ # pdm.toml
148
+ .pdm-python
149
+ .pdm-build/
150
+
151
+ # pixi
152
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
153
+ # pixi.lock
154
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
155
+ # in the .venv directory. It is recommended not to include this directory in version control.
156
+ .pixi/*
157
+ !.pixi/config.toml
158
+
159
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
160
+ __pypackages__/
161
+
162
+ # Celery stuff
163
+ celerybeat-schedule*
164
+ celerybeat.pid
165
+
166
+ # Redis
167
+ *.rdb
168
+ *.aof
169
+ *.pid
170
+
171
+ # RabbitMQ
172
+ mnesia/
173
+ rabbitmq/
174
+ rabbitmq-data/
175
+
176
+ # ActiveMQ
177
+ activemq-data/
178
+
179
+ # SageMath parsed files
180
+ *.sage.py
181
+
182
+ # Environments
183
+ .env
184
+ .envrc
185
+ .venv
186
+ env/
187
+ venv/
188
+ ENV/
189
+ env.bak/
190
+ venv.bak/
191
+
192
+ # Spyder project settings
193
+ .spyderproject
194
+ .spyproject
195
+
196
+ # Rope project settings
197
+ .ropeproject
198
+
199
+ # mkdocs documentation
200
+ /site
201
+
202
+ # mypy
203
+ .mypy_cache/
204
+ .dmypy.json
205
+ dmypy.json
206
+
207
+ # Pyre type checker
208
+ .pyre/
209
+
210
+ # pytype static type analyzer
211
+ .pytype/
212
+
213
+ # Cython debug symbols
214
+ cython_debug/
215
+
216
+ # PyCharm
217
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
218
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
219
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
220
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
221
+ # .idea/
222
+
223
+ # Abstra
224
+ # Abstra is an AI-powered process automation framework.
225
+ # Ignore directories containing user credentials, local state, and settings.
226
+ # Learn more at https://abstra.io/docs
227
+ .abstra/
228
+
229
+ # Visual Studio Code
230
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
231
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
232
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
233
+ # you could uncomment the following to ignore the entire vscode folder
234
+ # .vscode/
235
+ # Temporary file for partial code execution
236
+ tempCodeRunnerFile.py
237
+
238
+ # Ruff stuff:
239
+ .ruff_cache/
240
+
241
+ # PyPI configuration file
242
+ .pypirc
243
+
244
+ # Marimo
245
+ marimo/_static/
246
+ marimo/_lsp/
247
+ __marimo__/
248
+
249
+ # Streamlit
250
+ .streamlit/secrets.toml
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,25 @@
1
+ # Changelog
2
+
3
+ All notable changes to `strobengine` will be documented in this file.
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ### Features
10
+
11
+ - *(config)* Add TestConfig pyclass with Python default arguments (#5)
12
+ - *(metrics)* Add TestSummary pyclass and calculate_summary (#6)
13
+ - Add StrobEngine class with sync and async interfaces (#11)
14
+
15
+ ### Miscellaneous Tasks
16
+
17
+ - Add Python environment and build artifacts to .gitignore
18
+ - Initialize strobengine hybrid workspace architecture
19
+ - *(cargo)* Fix formatting and wrap comment for abi3-py38 feature (#1)
20
+ - *(python)* Add __all__ to package init for explicit public API (#8)
21
+ - Add GitHub Actions workflow for Rust and Python checks (#10)
22
+
23
+ ### Refactoring
24
+
25
+ - Clean up __init__.py public API exports (#14)