reactorcheck 0.2.2__tar.gz → 0.2.3__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.
- reactorcheck-0.2.3/.github/ISSUE_TEMPLATE/bug-report.yml +72 -0
- reactorcheck-0.2.3/.github/ISSUE_TEMPLATE/config.yml +5 -0
- reactorcheck-0.2.3/.github/ISSUE_TEMPLATE/feature-request.yml +42 -0
- reactorcheck-0.2.3/.github/ISSUE_TEMPLATE/real-dataset-compatibility.yml +74 -0
- reactorcheck-0.2.3/.github/ISSUE_TEMPLATE/scientific-result-question.yml +56 -0
- reactorcheck-0.2.3/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- reactorcheck-0.2.3/.github/dependabot.yml +22 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/.github/workflows/ci.yml +3 -2
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/.github/workflows/release.yml +3 -1
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/CHANGELOG.md +7 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/CITATION.cff +1 -1
- reactorcheck-0.2.3/CONTRIBUTING.md +60 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/PKG-INFO +14 -9
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/README.md +12 -8
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/pyproject.toml +2 -1
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/__init__.py +1 -1
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/units.py +1 -1
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_project_metadata.py +4 -3
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_version.py +1 -1
- reactorcheck-0.2.2/CONTRIBUTING.md +0 -24
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/.gitignore +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/LICENSE +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/assets/composition-result.png +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/assets/example-result.png +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/assets/social-preview.png +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/dependency-licenses.md +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/interchange.md +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/public-data-sources.md +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/docs/scientific-definitions.md +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/examples/synthetic_composition.csv +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/examples/synthetic_composition.xlsx +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/examples/synthetic_composition_config.json +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/examples/synthetic_config.json +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/examples/synthetic_reactor.csv +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/schemas/reactorcheck-interchange.experimental.schema.json +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/scripts/generate_example_assets.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/scripts/validate_public_reactor_data.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/__main__.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/calculations.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/cli.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/composition.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/gui.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/gui_controller.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/io.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/models.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/plotting.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/py.typed +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/qc.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/service.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/species.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/src/reactorcheck/steady.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/conftest.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/gui_widget_smoke.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_calculations.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_composition.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_io_cli_gui.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_public_data_regressions.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_service.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_species.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_steady.py +0 -0
- {reactorcheck-0.2.2 → reactorcheck-0.2.3}/tests/test_units.py +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report reproducible incorrect software behavior.
|
|
3
|
+
title: "bug: "
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Do not upload unpublished, confidential, proprietary, licensed, identifying, or sensitive research data. Never include credentials, tokens, or internal paths. Prefer a minimal synthetic reproducer.
|
|
9
|
+
- type: input
|
|
10
|
+
id: version
|
|
11
|
+
attributes:
|
|
12
|
+
label: ReactorCheck version
|
|
13
|
+
placeholder: "reactorcheck --version"
|
|
14
|
+
validations:
|
|
15
|
+
required: true
|
|
16
|
+
- type: input
|
|
17
|
+
id: python
|
|
18
|
+
attributes:
|
|
19
|
+
label: Python version
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
- type: dropdown
|
|
23
|
+
id: os
|
|
24
|
+
attributes:
|
|
25
|
+
label: Operating system
|
|
26
|
+
options: [Linux, macOS, Windows, Other]
|
|
27
|
+
validations:
|
|
28
|
+
required: true
|
|
29
|
+
- type: input
|
|
30
|
+
id: installation
|
|
31
|
+
attributes:
|
|
32
|
+
label: Installation method
|
|
33
|
+
placeholder: "PyPI, editable source install, or other"
|
|
34
|
+
validations:
|
|
35
|
+
required: true
|
|
36
|
+
- type: dropdown
|
|
37
|
+
id: interface
|
|
38
|
+
attributes:
|
|
39
|
+
label: Interface
|
|
40
|
+
options: [CLI, GUI, Python API]
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: expected
|
|
45
|
+
attributes:
|
|
46
|
+
label: Expected behavior
|
|
47
|
+
validations:
|
|
48
|
+
required: true
|
|
49
|
+
- type: textarea
|
|
50
|
+
id: observed
|
|
51
|
+
attributes:
|
|
52
|
+
label: Observed behavior
|
|
53
|
+
validations:
|
|
54
|
+
required: true
|
|
55
|
+
- type: textarea
|
|
56
|
+
id: error
|
|
57
|
+
attributes:
|
|
58
|
+
label: Sanitized error message
|
|
59
|
+
- type: textarea
|
|
60
|
+
id: reproducer
|
|
61
|
+
attributes:
|
|
62
|
+
label: Minimal reproducer
|
|
63
|
+
description: Use synthetic or clearly redistributable data only.
|
|
64
|
+
validations:
|
|
65
|
+
required: true
|
|
66
|
+
- type: checkboxes
|
|
67
|
+
id: privacy
|
|
68
|
+
attributes:
|
|
69
|
+
label: Public-data safety
|
|
70
|
+
options:
|
|
71
|
+
- label: I have not included private research data, credentials, internal paths, or identifying metadata.
|
|
72
|
+
required: true
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a change backed by a concrete research workflow.
|
|
3
|
+
title: "feature: "
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: workflow
|
|
7
|
+
attributes:
|
|
8
|
+
label: Research workflow requiring this feature
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
- type: input
|
|
12
|
+
id: instrument
|
|
13
|
+
attributes:
|
|
14
|
+
label: Instrument or data format involved
|
|
15
|
+
- type: input
|
|
16
|
+
id: public_data
|
|
17
|
+
attributes:
|
|
18
|
+
label: Public example dataset DOI / URL
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: workaround
|
|
21
|
+
attributes:
|
|
22
|
+
label: Current manual workaround
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: interpretation
|
|
27
|
+
attributes:
|
|
28
|
+
label: Scientific interpretation impact
|
|
29
|
+
description: Explain whether this could change definitions, units, assumptions, or numerical results.
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
- type: textarea
|
|
33
|
+
id: proposal
|
|
34
|
+
attributes:
|
|
35
|
+
label: Proposed behavior
|
|
36
|
+
- type: checkboxes
|
|
37
|
+
id: privacy
|
|
38
|
+
attributes:
|
|
39
|
+
label: Public-data safety
|
|
40
|
+
options:
|
|
41
|
+
- label: I have not included confidential research data, personal information, credentials, or proprietary files.
|
|
42
|
+
required: true
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: Real dataset compatibility
|
|
2
|
+
description: Report a laboratory export or public dataset that ReactorCheck cannot process as documented.
|
|
3
|
+
title: "compatibility: "
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
Do not upload confidential, unpublished, proprietary, sensitive, or licensed raw files to this public issue. A sanitized header/schema or minimal synthetic reproducer is usually enough.
|
|
9
|
+
- type: input
|
|
10
|
+
id: version
|
|
11
|
+
attributes:
|
|
12
|
+
label: Project version
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: input
|
|
16
|
+
id: python
|
|
17
|
+
attributes:
|
|
18
|
+
label: Python version
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: input
|
|
22
|
+
id: os_install
|
|
23
|
+
attributes:
|
|
24
|
+
label: Operating system and installation method
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: input
|
|
28
|
+
id: instrument
|
|
29
|
+
attributes:
|
|
30
|
+
label: Instrument / vendor
|
|
31
|
+
description: Omit serial numbers and institutional identifiers.
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: input
|
|
35
|
+
id: file_type
|
|
36
|
+
attributes:
|
|
37
|
+
label: Input file type
|
|
38
|
+
placeholder: "CSV or XLSX; include worksheet layout when relevant"
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
- type: textarea
|
|
42
|
+
id: expected
|
|
43
|
+
attributes:
|
|
44
|
+
label: Expected behavior
|
|
45
|
+
validations:
|
|
46
|
+
required: true
|
|
47
|
+
- type: textarea
|
|
48
|
+
id: observed
|
|
49
|
+
attributes:
|
|
50
|
+
label: Observed behavior and sanitized error message
|
|
51
|
+
validations:
|
|
52
|
+
required: true
|
|
53
|
+
- type: dropdown
|
|
54
|
+
id: shareable
|
|
55
|
+
attributes:
|
|
56
|
+
label: Can the data be shared publicly under clear redistribution terms?
|
|
57
|
+
options: [Yes, No, Unsure]
|
|
58
|
+
validations:
|
|
59
|
+
required: true
|
|
60
|
+
- type: input
|
|
61
|
+
id: public_source
|
|
62
|
+
attributes:
|
|
63
|
+
label: Public dataset DOI / URL, if applicable
|
|
64
|
+
- type: textarea
|
|
65
|
+
id: reproducer
|
|
66
|
+
attributes:
|
|
67
|
+
label: Minimal reproducer or sanitized header/schema
|
|
68
|
+
- type: checkboxes
|
|
69
|
+
id: privacy
|
|
70
|
+
attributes:
|
|
71
|
+
label: Public-data safety
|
|
72
|
+
options:
|
|
73
|
+
- label: I have not uploaded confidential data, personal information, credentials, proprietary files, or internal paths.
|
|
74
|
+
required: true
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Scientific definition or result question
|
|
2
|
+
description: Ask about a metric, basis, unit, equation, or numerical result.
|
|
3
|
+
title: "science: "
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: Do not attach confidential or unpublished measurements. Use a hand-checkable minimal example.
|
|
8
|
+
- type: input
|
|
9
|
+
id: metric
|
|
10
|
+
attributes:
|
|
11
|
+
label: Metric / analysis
|
|
12
|
+
placeholder: "conversion, selectivity, balance, rate, flow reconstruction, ..."
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: expected_definition
|
|
17
|
+
attributes:
|
|
18
|
+
label: Expected definition
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: observed
|
|
23
|
+
attributes:
|
|
24
|
+
label: Observed result
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: input
|
|
28
|
+
id: basis
|
|
29
|
+
attributes:
|
|
30
|
+
label: Input basis
|
|
31
|
+
placeholder: "wet/dry, raw/normalized, molar/carbon, internal standard, ..."
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: input
|
|
35
|
+
id: units
|
|
36
|
+
attributes:
|
|
37
|
+
label: Units
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
40
|
+
- type: textarea
|
|
41
|
+
id: reference
|
|
42
|
+
attributes:
|
|
43
|
+
label: Reference, DOI, and relevant equation
|
|
44
|
+
- type: textarea
|
|
45
|
+
id: example
|
|
46
|
+
attributes:
|
|
47
|
+
label: Hand-checkable minimal example
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
- type: checkboxes
|
|
51
|
+
id: privacy
|
|
52
|
+
attributes:
|
|
53
|
+
label: Public-data safety
|
|
54
|
+
options:
|
|
55
|
+
- label: This report contains no confidential data or identifying research metadata.
|
|
56
|
+
required: true
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## What and why
|
|
2
|
+
|
|
3
|
+
<!-- Describe the focused change and the researcher workflow it addresses. -->
|
|
4
|
+
|
|
5
|
+
## Scientific behavior
|
|
6
|
+
|
|
7
|
+
<!-- State definitions, equations, units, basis, assumptions, references/DOIs, and whether existing results change. Write "No scientific behavior change" when applicable. -->
|
|
8
|
+
|
|
9
|
+
## Verification
|
|
10
|
+
|
|
11
|
+
- [ ] Formatting, Ruff, mypy, pytest, and package build pass.
|
|
12
|
+
- [ ] New behavior has normal, boundary, invalid, and regression coverage where applicable.
|
|
13
|
+
- [ ] CLI, GUI/service wiring, and exports remain consistent.
|
|
14
|
+
- [ ] Documentation and support claims match verified behavior.
|
|
15
|
+
- [ ] No confidential data, credentials, identifying metadata, or unlicensed fixtures are included.
|
|
16
|
+
- [ ] Dependency/license changes and public-data provenance are documented.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: github-actions
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
day: monday
|
|
8
|
+
timezone: Asia/Seoul
|
|
9
|
+
open-pull-requests-limit: 5
|
|
10
|
+
groups:
|
|
11
|
+
github-actions:
|
|
12
|
+
patterns: ["*"]
|
|
13
|
+
- package-ecosystem: pip
|
|
14
|
+
directory: "/"
|
|
15
|
+
schedule:
|
|
16
|
+
interval: weekly
|
|
17
|
+
day: monday
|
|
18
|
+
timezone: Asia/Seoul
|
|
19
|
+
open-pull-requests-limit: 5
|
|
20
|
+
groups:
|
|
21
|
+
development-tools:
|
|
22
|
+
patterns: ["build", "mypy", "pandas-stubs", "pytest", "pytest-cov", "ruff", "twine", "types-*"]
|
|
@@ -17,10 +17,11 @@ concurrency:
|
|
|
17
17
|
jobs:
|
|
18
18
|
required:
|
|
19
19
|
name: CI / required
|
|
20
|
-
#
|
|
20
|
+
# Only owner-authored same-repository PRs may execute on persistent research hardware.
|
|
21
21
|
if: >-
|
|
22
22
|
github.event_name != 'pull_request' ||
|
|
23
|
-
github.
|
|
23
|
+
(github.actor == github.repository_owner &&
|
|
24
|
+
github.event.pull_request.head.repo.full_name == github.repository)
|
|
24
25
|
runs-on: [self-hosted, dgx-spark]
|
|
25
26
|
timeout-minutes: 60
|
|
26
27
|
env:
|
|
@@ -12,6 +12,8 @@ jobs:
|
|
|
12
12
|
contents: read
|
|
13
13
|
steps:
|
|
14
14
|
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
15
|
+
with:
|
|
16
|
+
persist-credentials: false
|
|
15
17
|
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
16
18
|
with:
|
|
17
19
|
python-version: "3.12"
|
|
@@ -61,4 +63,4 @@ jobs:
|
|
|
61
63
|
with:
|
|
62
64
|
name: python-package-distributions
|
|
63
65
|
path: dist/
|
|
64
|
-
- uses: pypa/gh-action-pypi-publish@
|
|
66
|
+
- uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
All notable changes follow [Keep a Changelog](https://keepachangelog.com/) and
|
|
4
4
|
versions follow semantic versioning.
|
|
5
5
|
|
|
6
|
+
## [0.2.3] - 2026-11-16
|
|
7
|
+
|
|
8
|
+
### Security
|
|
9
|
+
|
|
10
|
+
- Update the PyPI publishing action to v1.14.3 (GHSA-5xjx-3w67-w9x9).
|
|
11
|
+
Scientific calculations and public APIs are unchanged.
|
|
12
|
+
|
|
6
13
|
## [0.2.2] - 2026-08-23
|
|
7
14
|
|
|
8
15
|
### Added
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thank you for helping make catalytic-reactor calculations more transparent and
|
|
4
|
+
reproducible.
|
|
5
|
+
|
|
6
|
+
## Before opening an issue
|
|
7
|
+
|
|
8
|
+
- Search existing issues and choose the dataset-compatibility or scientific-result
|
|
9
|
+
form when applicable.
|
|
10
|
+
- Never upload unpublished, confidential, proprietary, licensed, or identifying
|
|
11
|
+
research data to a public issue. Share a minimal synthetic reproducer or sanitized
|
|
12
|
+
headers/schema instead.
|
|
13
|
+
- Do not include credentials, internal paths, instrument serial numbers, or private
|
|
14
|
+
sample names.
|
|
15
|
+
|
|
16
|
+
## Development checks
|
|
17
|
+
|
|
18
|
+
Install `.[dev]`, create a focused branch, and run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
ruff format --check .
|
|
22
|
+
ruff check .
|
|
23
|
+
mypy src
|
|
24
|
+
pytest
|
|
25
|
+
python -m build
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Scientific changes
|
|
29
|
+
|
|
30
|
+
Keep equations in the core, never in GUI callbacks. A change to conversion,
|
|
31
|
+
selectivity, yield, rate, STY, GHSV/WHSV, unit conversion, flow reconstruction, or
|
|
32
|
+
mass/element balance must state:
|
|
33
|
+
|
|
34
|
+
- the scientific definition and equation;
|
|
35
|
+
- input/output units, basis, assumptions, and physical bounds;
|
|
36
|
+
- a primary reference or DOI when relevant;
|
|
37
|
+
- whether existing numerical results change and why; and
|
|
38
|
+
- a hand-calculated, synthetic, or legally usable regression case covering invalid
|
|
39
|
+
as well as normal inputs.
|
|
40
|
+
|
|
41
|
+
`pytest` passing alone does not establish scientific correctness. Do not weaken an
|
|
42
|
+
assertion to conceal a disagreement; classify the cause as implementation, test,
|
|
43
|
+
definition, unit, data model, or environment.
|
|
44
|
+
|
|
45
|
+
Use small Conventional Commit-style changes such as `feat:`, `fix:`, `test:`, and
|
|
46
|
+
`docs:`. Synthetic data must be redistributable, and public-data-derived fixtures must
|
|
47
|
+
identify their source, license, and reduction method.
|
|
48
|
+
|
|
49
|
+
After changing the public composition example, run
|
|
50
|
+
`python scripts/generate_example_assets.py` and inspect both PNG files before
|
|
51
|
+
committing the regenerated XLSX/visual assets.
|
|
52
|
+
|
|
53
|
+
## Self-hosted CI safety
|
|
54
|
+
|
|
55
|
+
The required CI job runs on the persistent `dgx-spark` self-hosted runner.
|
|
56
|
+
Pushes and manual dispatches may use that runner. Pull requests run there only when
|
|
57
|
+
the current repository owner opens them from a same-repository branch. Fork and
|
|
58
|
+
bot-authored pull-request jobs are deliberately skipped so unreviewed code or dependency
|
|
59
|
+
updates cannot execute on research hardware. Maintainers must review those changes before
|
|
60
|
+
reproducing them in an owner-authored same-repository branch.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: reactorcheck
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Unit-aware catalytic reactor analysis from compositions or measured species flows.
|
|
5
5
|
Project-URL: Homepage, https://github.com/hdkim99/ReactorCheck
|
|
6
6
|
Project-URL: Repository, https://github.com/hdkim99/ReactorCheck
|
|
7
7
|
Project-URL: Issues, https://github.com/hdkim99/ReactorCheck/issues
|
|
8
8
|
Project-URL: Documentation, https://github.com/hdkim99/ReactorCheck#readme
|
|
9
|
+
Project-URL: Releases, https://github.com/hdkim99/ReactorCheck/releases
|
|
9
10
|
Author: Hyun Dong Kim
|
|
10
11
|
License: MIT License
|
|
11
12
|
|
|
@@ -62,6 +63,7 @@ Description-Content-Type: text/markdown
|
|
|
62
63
|
**Turn reactor compositions or measured species flows into auditable catalytic metrics and QC.**
|
|
63
64
|
|
|
64
65
|
[](https://github.com/hdkim99/ReactorCheck/actions/workflows/ci.yml)
|
|
66
|
+
[](https://pypi.org/project/reactorcheck/)
|
|
65
67
|
[](https://www.python.org/)
|
|
66
68
|
[](https://github.com/hdkim99/ReactorCheck/blob/main/LICENSE)
|
|
67
69
|
|
|
@@ -88,22 +90,24 @@ Python 3.10 or newer is required. Tk is needed only for the desktop GUI.
|
|
|
88
90
|
python -m pip install reactorcheck
|
|
89
91
|
```
|
|
90
92
|
|
|
91
|
-
|
|
92
|
-
clone the public source and use an editable install instead:
|
|
93
|
+
## 30-second example
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
Download the two public-safe example inputs and run them with the PyPI installation:
|
|
95
96
|
|
|
96
97
|
```bash
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
reactorcheck analyze
|
|
101
|
-
--config
|
|
98
|
+
mkdir reactorcheck-demo && cd reactorcheck-demo
|
|
99
|
+
curl -LO https://raw.githubusercontent.com/hdkim99/ReactorCheck/main/examples/synthetic_composition.csv
|
|
100
|
+
curl -LO https://raw.githubusercontent.com/hdkim99/ReactorCheck/main/examples/synthetic_composition_config.json
|
|
101
|
+
reactorcheck analyze synthetic_composition.csv \
|
|
102
|
+
--config synthetic_composition_config.json \
|
|
102
103
|
--output reactorcheck-composition.xlsx \
|
|
103
104
|
--plot reactorcheck-composition.png
|
|
104
105
|
reactorcheck-gui
|
|
105
106
|
```
|
|
106
107
|
|
|
108
|
+
If you are already in a source checkout, use the paths under `examples/` shown in
|
|
109
|
+
the repository instead. Clone the repository and install `-e .` only for development.
|
|
110
|
+
|
|
107
111
|
The synthetic CO hydrogenation example is available as both
|
|
108
112
|
[`CSV`](https://github.com/hdkim99/ReactorCheck/blob/main/examples/synthetic_composition.csv) and
|
|
109
113
|
[`XLSX`](https://github.com/hdkim99/ReactorCheck/blob/main/examples/synthetic_composition.xlsx). Its hand calculation reconstructs
|
|
@@ -191,6 +195,7 @@ tabular/JSON schemas rather than shared private code.
|
|
|
191
195
|
## Development
|
|
192
196
|
|
|
193
197
|
```bash
|
|
198
|
+
python -m pip install -e .
|
|
194
199
|
python -m pip install -e ".[dev]"
|
|
195
200
|
ruff format --check .
|
|
196
201
|
ruff check .
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
**Turn reactor compositions or measured species flows into auditable catalytic metrics and QC.**
|
|
4
4
|
|
|
5
5
|
[](https://github.com/hdkim99/ReactorCheck/actions/workflows/ci.yml)
|
|
6
|
+
[](https://pypi.org/project/reactorcheck/)
|
|
6
7
|
[](https://www.python.org/)
|
|
7
8
|
[](https://github.com/hdkim99/ReactorCheck/blob/main/LICENSE)
|
|
8
9
|
|
|
@@ -29,22 +30,24 @@ Python 3.10 or newer is required. Tk is needed only for the desktop GUI.
|
|
|
29
30
|
python -m pip install reactorcheck
|
|
30
31
|
```
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
clone the public source and use an editable install instead:
|
|
33
|
+
## 30-second example
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
Download the two public-safe example inputs and run them with the PyPI installation:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
reactorcheck analyze
|
|
42
|
-
--config
|
|
38
|
+
mkdir reactorcheck-demo && cd reactorcheck-demo
|
|
39
|
+
curl -LO https://raw.githubusercontent.com/hdkim99/ReactorCheck/main/examples/synthetic_composition.csv
|
|
40
|
+
curl -LO https://raw.githubusercontent.com/hdkim99/ReactorCheck/main/examples/synthetic_composition_config.json
|
|
41
|
+
reactorcheck analyze synthetic_composition.csv \
|
|
42
|
+
--config synthetic_composition_config.json \
|
|
43
43
|
--output reactorcheck-composition.xlsx \
|
|
44
44
|
--plot reactorcheck-composition.png
|
|
45
45
|
reactorcheck-gui
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
If you are already in a source checkout, use the paths under `examples/` shown in
|
|
49
|
+
the repository instead. Clone the repository and install `-e .` only for development.
|
|
50
|
+
|
|
48
51
|
The synthetic CO hydrogenation example is available as both
|
|
49
52
|
[`CSV`](https://github.com/hdkim99/ReactorCheck/blob/main/examples/synthetic_composition.csv) and
|
|
50
53
|
[`XLSX`](https://github.com/hdkim99/ReactorCheck/blob/main/examples/synthetic_composition.xlsx). Its hand calculation reconstructs
|
|
@@ -132,6 +135,7 @@ tabular/JSON schemas rather than shared private code.
|
|
|
132
135
|
## Development
|
|
133
136
|
|
|
134
137
|
```bash
|
|
138
|
+
python -m pip install -e .
|
|
135
139
|
python -m pip install -e ".[dev]"
|
|
136
140
|
ruff format --check .
|
|
137
141
|
ruff check .
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "reactorcheck"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.3"
|
|
8
8
|
description = "Unit-aware catalytic reactor analysis from compositions or measured species flows."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -59,6 +59,7 @@ Homepage = "https://github.com/hdkim99/ReactorCheck"
|
|
|
59
59
|
Repository = "https://github.com/hdkim99/ReactorCheck"
|
|
60
60
|
Issues = "https://github.com/hdkim99/ReactorCheck/issues"
|
|
61
61
|
Documentation = "https://github.com/hdkim99/ReactorCheck#readme"
|
|
62
|
+
Releases = "https://github.com/hdkim99/ReactorCheck/releases"
|
|
62
63
|
|
|
63
64
|
[tool.hatch.build.targets.wheel]
|
|
64
65
|
packages = ["src/reactorcheck"]
|
|
@@ -17,7 +17,7 @@ ureg.define("sccm = centimeter ** 3 / minute")
|
|
|
17
17
|
|
|
18
18
|
STANDARD_TEMPERATURE = 273.15 * ureg.kelvin
|
|
19
19
|
STANDARD_PRESSURE = 1.0 * ureg.atmosphere
|
|
20
|
-
GAS_CONSTANT = 8.31446261815324 * ureg.joule / ureg.mole / ureg.kelvin
|
|
20
|
+
GAS_CONSTANT: pint.Quantity[Any] = 8.31446261815324 * ureg.joule / ureg.mole / ureg.kelvin
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class UnitError(ValueError):
|
|
@@ -16,12 +16,13 @@ def test_readme_leads_with_pypi_install_and_has_current_status() -> None:
|
|
|
16
16
|
assert "publication is prepared but has not been performed" not in readme
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
def
|
|
19
|
+
def test_general_ci_targets_dgx_and_blocks_external_or_bot_pull_requests() -> None:
|
|
20
20
|
workflow = (ROOT / ".github" / "workflows" / "ci.yml").read_text()
|
|
21
21
|
assert "runs-on: [self-hosted, dgx-spark]" in workflow
|
|
22
22
|
assert "ubuntu-latest" not in workflow
|
|
23
23
|
assert "workflow_dispatch:" in workflow
|
|
24
|
-
assert "github.
|
|
24
|
+
assert workflow.count("github.actor == github.repository_owner") == 1
|
|
25
|
+
assert workflow.count("github.event.pull_request.head.repo.full_name == github.repository") == 1
|
|
25
26
|
assert "PIP_NO_CACHE_DIR" in workflow
|
|
26
27
|
assert "actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09" in workflow
|
|
27
28
|
assert "actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1" in workflow
|
|
@@ -53,7 +54,7 @@ def test_release_workflow_is_trusted_publishing_only() -> None:
|
|
|
53
54
|
assert "/tmp/reactorcheck-release-venv/bin/python -m pip check" in workflow
|
|
54
55
|
assert "id-token: write" in workflow
|
|
55
56
|
assert "name: pypi" in workflow
|
|
56
|
-
assert "pypa/gh-action-pypi-publish@
|
|
57
|
+
assert "pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086" in workflow
|
|
57
58
|
assert "PYPI_API_TOKEN" not in workflow
|
|
58
59
|
assert "secrets." not in workflow
|
|
59
60
|
publish = workflow.split(" publish:\n", maxsplit=1)[1]
|
|
@@ -18,4 +18,4 @@ def _match(path: Path, pattern: str) -> str:
|
|
|
18
18
|
def test_version_surfaces_are_consistent() -> None:
|
|
19
19
|
pyproject = _match(ROOT / "pyproject.toml", r'^version = "([^"]+)"$')
|
|
20
20
|
citation = _match(ROOT / "CITATION.cff", r"^version: ([^\s]+)$")
|
|
21
|
-
assert __version__ == pyproject == citation == "0.2.
|
|
21
|
+
assert __version__ == pyproject == citation == "0.2.3"
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Contributing
|
|
2
|
-
|
|
3
|
-
Install `.[dev]`, create a focused branch, and run `ruff check .`, `mypy src`,
|
|
4
|
-
`pytest`, and `python -m build` before opening a pull request. Keep scientific
|
|
5
|
-
equations in the core, never in GUI callbacks. New equations require a definition,
|
|
6
|
-
units, assumptions, a hand-calculated or synthetic regression case, and physical
|
|
7
|
-
edge cases. Do not weaken assertions to conceal a scientific disagreement; record
|
|
8
|
-
whether the cause is implementation, test, definition, unit, model, or environment.
|
|
9
|
-
|
|
10
|
-
Use small Conventional Commit-style changes such as `feat:`, `fix:`, `test:`, and
|
|
11
|
-
`docs:`. Synthetic data must be redistributable. Never commit private experimental
|
|
12
|
-
data, credentials, or personally identifying metadata.
|
|
13
|
-
|
|
14
|
-
After changing the public composition example, run
|
|
15
|
-
`python scripts/generate_example_assets.py` and inspect both PNG files before
|
|
16
|
-
committing the regenerated XLSX/visual assets.
|
|
17
|
-
|
|
18
|
-
## Self-hosted CI safety
|
|
19
|
-
|
|
20
|
-
The required CI job runs on the persistent `dgx-spark` self-hosted runner.
|
|
21
|
-
Pushes, manual dispatches, and pull requests from this repository may use that
|
|
22
|
-
runner. Pull requests from forks are deliberately skipped so unreviewed fork
|
|
23
|
-
code cannot execute on research hardware. Maintainers must not weaken this gate;
|
|
24
|
-
review fork changes before reproducing them in a same-repository branch.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{reactorcheck-0.2.2 → reactorcheck-0.2.3}/schemas/reactorcheck-interchange.experimental.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|