petekstatic 0.1.1__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.
- petekstatic-0.1.1/.cargo/config.toml +10 -0
- petekstatic-0.1.1/.github/workflows/ci.yml +92 -0
- petekstatic-0.1.1/.github/workflows/release.yml +76 -0
- petekstatic-0.1.1/.gitignore +42 -0
- petekstatic-0.1.1/API.md +1110 -0
- petekstatic-0.1.1/CHANGELOG.md +1164 -0
- petekstatic-0.1.1/CLAUDE.md +260 -0
- petekstatic-0.1.1/Cargo.lock +1982 -0
- petekstatic-0.1.1/Cargo.toml +107 -0
- petekstatic-0.1.1/LICENSE +91 -0
- petekstatic-0.1.1/PKG-INFO +83 -0
- petekstatic-0.1.1/README.md +61 -0
- petekstatic-0.1.1/SPEC.md +904 -0
- petekstatic-0.1.1/benches/mc.rs +371 -0
- petekstatic-0.1.1/benches/scatter_condition.rs +72 -0
- petekstatic-0.1.1/benches/surface.rs +60 -0
- petekstatic-0.1.1/benches/uncertainty_mc.rs +11 -0
- petekstatic-0.1.1/crates/petekstatic-py/Cargo.toml +24 -0
- petekstatic-0.1.1/crates/petekstatic-py/src/lib.rs +243 -0
- petekstatic-0.1.1/pyproject.toml +36 -0
- petekstatic-0.1.1/python/petekstatic/__init__.py +20 -0
- petekstatic-0.1.1/rustfmt.toml +2 -0
- petekstatic-0.1.1/src/data/adapter.rs +171 -0
- petekstatic-0.1.1/src/data/logs.rs +137 -0
- petekstatic-0.1.1/src/data/mod.rs +24 -0
- petekstatic-0.1.1/src/data/petekio/mod.rs +19 -0
- petekstatic-0.1.1/src/data/wireframe.rs +398 -0
- petekstatic-0.1.1/src/error/error.rs +65 -0
- petekstatic-0.1.1/src/error/mod.rs +10 -0
- petekstatic-0.1.1/src/grid/box_construction.rs +172 -0
- petekstatic-0.1.1/src/grid/cell.rs +55 -0
- petekstatic-0.1.1/src/grid/geometry.rs +216 -0
- petekstatic-0.1.1/src/grid/grid.rs +141 -0
- petekstatic-0.1.1/src/grid/index.rs +113 -0
- petekstatic-0.1.1/src/grid/klayer.rs +20 -0
- petekstatic-0.1.1/src/grid/mod.rs +29 -0
- petekstatic-0.1.1/src/grid/point.rs +53 -0
- petekstatic-0.1.1/src/grid/property.rs +102 -0
- petekstatic-0.1.1/src/grid/segment.rs +24 -0
- petekstatic-0.1.1/src/grid/volume.rs +71 -0
- petekstatic-0.1.1/src/gridder/layering.rs +1639 -0
- petekstatic-0.1.1/src/gridder/mod.rs +22 -0
- petekstatic-0.1.1/src/gridder/surface.rs +1232 -0
- petekstatic-0.1.1/src/lib.rs +46 -0
- petekstatic-0.1.1/src/model/builder.rs +2952 -0
- petekstatic-0.1.1/src/model/draw.rs +378 -0
- petekstatic-0.1.1/src/model/mc.rs +1179 -0
- petekstatic-0.1.1/src/model/mod.rs +1415 -0
- petekstatic-0.1.1/src/model/model.rs +643 -0
- petekstatic-0.1.1/src/model/pipeline.rs +1271 -0
- petekstatic-0.1.1/src/model/population.rs +208 -0
- petekstatic-0.1.1/src/model/provenance.rs +212 -0
- petekstatic-0.1.1/src/model/spec.rs +220 -0
- petekstatic-0.1.1/src/model/template.rs +2073 -0
- petekstatic-0.1.1/src/model/tornado.rs +389 -0
- petekstatic-0.1.1/src/model/trend.rs +304 -0
- petekstatic-0.1.1/src/model/view/frame.rs +132 -0
- petekstatic-0.1.1/src/model/view/map.rs +570 -0
- petekstatic-0.1.1/src/model/view/mod.rs +80 -0
- petekstatic-0.1.1/src/model/view/section.rs +1508 -0
- petekstatic-0.1.1/src/model/view/volume.rs +658 -0
- petekstatic-0.1.1/src/model/view/wire.rs +273 -0
- petekstatic-0.1.1/src/model/zones.rs +125 -0
- petekstatic-0.1.1/src/petro/mod.rs +13 -0
- petekstatic-0.1.1/src/petro/power_mean.rs +138 -0
- petekstatic-0.1.1/src/petro/upscale.rs +161 -0
- petekstatic-0.1.1/src/spill/budget.rs +231 -0
- petekstatic-0.1.1/src/spill/mod.rs +30 -0
- petekstatic-0.1.1/src/spill/spill.rs +444 -0
- petekstatic-0.1.1/src/uncertainty/distribution.rs +150 -0
- petekstatic-0.1.1/src/uncertainty/gaussian.rs +94 -0
- petekstatic-0.1.1/src/uncertainty/mod.rs +21 -0
- petekstatic-0.1.1/src/uncertainty/monte_carlo.rs +70 -0
- petekstatic-0.1.1/src/uncertainty/rng.rs +64 -0
- petekstatic-0.1.1/src/uncertainty/summary.rs +81 -0
- petekstatic-0.1.1/src/volumetrics/backing.rs +409 -0
- petekstatic-0.1.1/src/volumetrics/fvf.rs +97 -0
- petekstatic-0.1.1/src/volumetrics/grv.rs +469 -0
- petekstatic-0.1.1/src/volumetrics/mod.rs +31 -0
- petekstatic-0.1.1/src/volumetrics/names.rs +9 -0
- petekstatic-0.1.1/src/volumetrics/populate.rs +83 -0
- petekstatic-0.1.1/src/volumetrics/valid.rs +65 -0
- petekstatic-0.1.1/src/wireframe.rs +135 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# PyO3 extension-module builds on macOS must defer Python symbol resolution to
|
|
2
|
+
# the host interpreter at import time (the symbols aren't linked). maturin sets
|
|
3
|
+
# this itself when building wheels; this makes plain `cargo build` /
|
|
4
|
+
# `maturin develop` of the `petekstatic-py` cdylib link on macOS too. Scoped to
|
|
5
|
+
# Apple targets, so Linux/Windows builds are unaffected.
|
|
6
|
+
[target.x86_64-apple-darwin]
|
|
7
|
+
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
|
|
8
|
+
|
|
9
|
+
[target.aarch64-apple-darwin]
|
|
10
|
+
rustflags = ["-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup"]
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
rust:
|
|
14
|
+
name: fmt / clippy / test
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
19
|
+
with:
|
|
20
|
+
components: clippy, rustfmt
|
|
21
|
+
- uses: Swatinem/rust-cache@v2
|
|
22
|
+
- name: fmt
|
|
23
|
+
run: cargo fmt --all --check
|
|
24
|
+
- name: clippy (warnings = errors)
|
|
25
|
+
run: cargo clippy --workspace --all-targets -- -D warnings
|
|
26
|
+
- name: test
|
|
27
|
+
run: cargo test --workspace
|
|
28
|
+
|
|
29
|
+
wheel:
|
|
30
|
+
# Build the abi3-py310 wheel and install + pytest it on each interpreter so
|
|
31
|
+
# a per-version link/ABI break surfaces here, not for users.
|
|
32
|
+
name: wheel build + pytest (py ${{ matrix.python-version }})
|
|
33
|
+
runs-on: ubuntu-latest
|
|
34
|
+
strategy:
|
|
35
|
+
fail-fast: false
|
|
36
|
+
matrix:
|
|
37
|
+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
|
|
38
|
+
steps:
|
|
39
|
+
- uses: actions/checkout@v4
|
|
40
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
41
|
+
- uses: Swatinem/rust-cache@v2
|
|
42
|
+
- uses: actions/setup-python@v5
|
|
43
|
+
with:
|
|
44
|
+
python-version: ${{ matrix.python-version }}
|
|
45
|
+
allow-prereleases: true
|
|
46
|
+
- name: install maturin + pytest
|
|
47
|
+
run: pip install maturin pytest
|
|
48
|
+
- name: build release wheel
|
|
49
|
+
run: maturin build --release --out dist
|
|
50
|
+
- name: install wheel
|
|
51
|
+
run: pip install --find-links dist --no-index petekstatic
|
|
52
|
+
- name: pytest (wheel surface)
|
|
53
|
+
run: pytest python/tests -q
|
|
54
|
+
- name: import + build_flat_model smoke
|
|
55
|
+
run: |
|
|
56
|
+
python - <<'PY'
|
|
57
|
+
import petekstatic
|
|
58
|
+
m = petekstatic.build_flat_model()
|
|
59
|
+
ip = m.in_place(boi=1.25)
|
|
60
|
+
assert ip["ooip_sm3"] > 0.0
|
|
61
|
+
print("petekstatic ok:", ip["ooip_sm3"])
|
|
62
|
+
PY
|
|
63
|
+
|
|
64
|
+
wheel-windows:
|
|
65
|
+
# Windows release-target tripwire: the 0.1.0 release shipped with NO
|
|
66
|
+
# win_amd64 wheel and nobody noticed until a user hit it. This job builds
|
|
67
|
+
# + installs + smokes the wheel on windows-latest so a missing/broken
|
|
68
|
+
# Windows target fails CI, not a user's `pip install`. One interpreter is
|
|
69
|
+
# enough (abi3-py310); the smoke, not the full pytest, is the point.
|
|
70
|
+
name: wheel build + smoke (windows)
|
|
71
|
+
runs-on: windows-latest
|
|
72
|
+
steps:
|
|
73
|
+
- uses: actions/checkout@v4
|
|
74
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
75
|
+
- uses: Swatinem/rust-cache@v2
|
|
76
|
+
- uses: actions/setup-python@v5
|
|
77
|
+
with:
|
|
78
|
+
python-version: "3.11"
|
|
79
|
+
- name: install maturin
|
|
80
|
+
run: pip install maturin
|
|
81
|
+
- name: build release wheel
|
|
82
|
+
run: maturin build --release --out dist
|
|
83
|
+
- name: install wheel
|
|
84
|
+
run: pip install --find-links dist --no-index petekstatic
|
|
85
|
+
- name: import + build_flat_model smoke
|
|
86
|
+
shell: python
|
|
87
|
+
run: |
|
|
88
|
+
import petekstatic
|
|
89
|
+
m = petekstatic.build_flat_model()
|
|
90
|
+
ip = m.in_place(boi=1.25)
|
|
91
|
+
assert ip["ooip_sm3"] > 0.0
|
|
92
|
+
print("petekstatic ok on windows:", ip["ooip_sm3"])
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
tags: ["v*"]
|
|
5
|
+
permissions:
|
|
6
|
+
contents: read
|
|
7
|
+
jobs:
|
|
8
|
+
gates:
|
|
9
|
+
# Same rust gates as ci.yml — a tag can only publish what passes them.
|
|
10
|
+
name: gates (fmt / clippy / test)
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
15
|
+
with:
|
|
16
|
+
components: clippy, rustfmt
|
|
17
|
+
- uses: Swatinem/rust-cache@v2
|
|
18
|
+
- name: fmt
|
|
19
|
+
run: cargo fmt --all --check
|
|
20
|
+
- name: clippy (warnings = errors)
|
|
21
|
+
run: cargo clippy --workspace --all-targets -- -D warnings
|
|
22
|
+
- name: test
|
|
23
|
+
run: cargo test --workspace
|
|
24
|
+
build-wheels:
|
|
25
|
+
name: wheels (${{ matrix.os }}-${{ matrix.target }})
|
|
26
|
+
needs: gates
|
|
27
|
+
runs-on: ${{ matrix.os }}
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
include:
|
|
32
|
+
- { os: ubuntu-latest, target: x86_64 }
|
|
33
|
+
- { os: ubuntu-latest, target: aarch64 }
|
|
34
|
+
- { os: macos-latest, target: aarch64 }
|
|
35
|
+
- { os: macos-latest, target: x86_64 }
|
|
36
|
+
- { os: windows-latest, target: x64 }
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v4
|
|
39
|
+
- uses: actions/setup-python@v5
|
|
40
|
+
with: { python-version: "3.x" }
|
|
41
|
+
- name: Build wheels
|
|
42
|
+
uses: PyO3/maturin-action@v1
|
|
43
|
+
with:
|
|
44
|
+
target: ${{ matrix.target }}
|
|
45
|
+
args: --release --out dist
|
|
46
|
+
manylinux: auto
|
|
47
|
+
- uses: actions/upload-artifact@v4
|
|
48
|
+
with:
|
|
49
|
+
name: wheels-${{ matrix.os }}-${{ matrix.target }}
|
|
50
|
+
path: dist
|
|
51
|
+
sdist:
|
|
52
|
+
name: build sdist
|
|
53
|
+
needs: gates
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
steps:
|
|
56
|
+
- uses: actions/checkout@v4
|
|
57
|
+
- name: Build sdist
|
|
58
|
+
uses: PyO3/maturin-action@v1
|
|
59
|
+
with:
|
|
60
|
+
command: sdist
|
|
61
|
+
args: --out dist
|
|
62
|
+
- uses: actions/upload-artifact@v4
|
|
63
|
+
with:
|
|
64
|
+
name: wheels-sdist
|
|
65
|
+
path: dist
|
|
66
|
+
publish:
|
|
67
|
+
name: publish to PyPI (trusted publishing)
|
|
68
|
+
needs: [gates, build-wheels, sdist]
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
environment: pypi
|
|
71
|
+
permissions:
|
|
72
|
+
id-token: write
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/download-artifact@v4
|
|
75
|
+
with: { pattern: wheels-*, merge-multiple: true, path: dist }
|
|
76
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Rust / Cargo
|
|
2
|
+
/target/
|
|
3
|
+
**/*.rs.bk
|
|
4
|
+
# Library crate — do not commit the lockfile; let downstreams pin.
|
|
5
|
+
Cargo.lock
|
|
6
|
+
|
|
7
|
+
# Python / PyO3 (py feature, maturin)
|
|
8
|
+
__pycache__/
|
|
9
|
+
*.so
|
|
10
|
+
*.pyd
|
|
11
|
+
.venv/
|
|
12
|
+
.pytest_cache/
|
|
13
|
+
.ruff_cache/
|
|
14
|
+
.mypy_cache/
|
|
15
|
+
|
|
16
|
+
# Local dev working folder — see dev-docs/README.md for the canonical layout.
|
|
17
|
+
# Durable dirs (plans/, designs/, bench/scripts/, bench/results/, todos.md) +
|
|
18
|
+
# time-boxed dirs auto-purged by the dev-docs-cleanup skill: temp/ (>1d, offload
|
|
19
|
+
# large output here to dodge the response token gate), bench/out/ (>14d, heavy
|
|
20
|
+
# generated artifacts), bin/ (>7d, soft-deleted docs). All local, never committed.
|
|
21
|
+
/dev-docs/
|
|
22
|
+
|
|
23
|
+
# Cross-project coordination channel — see inbox/README.md. unread/ + read/,
|
|
24
|
+
# operated by the read-inbox / notify skills. Local working state, never committed.
|
|
25
|
+
/inbox/
|
|
26
|
+
|
|
27
|
+
# Local Claude Code tooling (skills/config) — working state, never committed
|
|
28
|
+
# (matches the petekTools/petekSim convention).
|
|
29
|
+
/.claude/
|
|
30
|
+
|
|
31
|
+
# OS noise
|
|
32
|
+
.DS_Store
|
|
33
|
+
|
|
34
|
+
# Python build artifacts
|
|
35
|
+
/dist/
|
|
36
|
+
*.whl
|
|
37
|
+
|
|
38
|
+
# MkDocs build output
|
|
39
|
+
/site/
|
|
40
|
+
|
|
41
|
+
# Local coordinator-graph MCP config (machine-specific absolute path)
|
|
42
|
+
/.mcp.json
|