unitforge 0.3.10__tar.gz → 0.3.12__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 (75) hide show
  1. {unitforge-0.3.10 → unitforge-0.3.12}/.gitignore +2 -0
  2. unitforge-0.3.12/.gitlab-ci.yml +87 -0
  3. {unitforge-0.3.10 → unitforge-0.3.12}/Cargo.lock +9 -2
  4. {unitforge-0.3.10 → unitforge-0.3.12}/Cargo.toml +5 -4
  5. {unitforge-0.3.10 → unitforge-0.3.12}/PKG-INFO +3 -1
  6. {unitforge-0.3.10 → unitforge-0.3.12}/pyproject.toml +2 -0
  7. unitforge-0.3.12/python/unitforge/__init__.pyi +1744 -0
  8. unitforge-0.3.12/python/unitforge/py.typed +0 -0
  9. unitforge-0.3.12/scripts/generate_python_stubs.py +502 -0
  10. {unitforge-0.3.10 → unitforge-0.3.12}/src/impl_macros.rs +1 -1
  11. {unitforge-0.3.10 → unitforge-0.3.12}/src/lib.rs +4 -4
  12. unitforge-0.3.12/src/quantities.template.rs +624 -0
  13. {unitforge-0.3.10 → unitforge-0.3.12}/src/relations.rs +1 -0
  14. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/bindings/matrix3_py.template.rs +1 -1
  15. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/bindings/vector3_py.template.rs +29 -6
  16. {unitforge-0.3.10 → unitforge-0.3.12}/tests/test_small_linalg.py +14 -1
  17. unitforge-0.3.12/tests/typecheck/mypy_smoke.py +48 -0
  18. unitforge-0.3.12/unitforge_macros/Cargo.toml +15 -0
  19. unitforge-0.3.10/build.rs → unitforge-0.3.12/unitforge_macros/src/lib.rs +306 -92
  20. unitforge-0.3.10/.gitlab-ci.yml +0 -49
  21. unitforge-0.3.10/src/quantities.template.rs +0 -240
  22. {unitforge-0.3.10 → unitforge-0.3.12}/Readme.md +0 -0
  23. {unitforge-0.3.10 → unitforge-0.3.12}/Readme_py.md +0 -0
  24. {unitforge-0.3.10 → unitforge-0.3.12}/src/prelude.rs +0 -0
  25. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/acceleration.rs +0 -0
  26. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/angle.rs +0 -0
  27. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/angular_acceleration.rs +0 -0
  28. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/angular_velocity.rs +0 -0
  29. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/area.rs +0 -0
  30. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/area_of_moment.rs +0 -0
  31. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/charge.rs +0 -0
  32. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/compliance.rs +0 -0
  33. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/density.rs +0 -0
  34. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/distance.rs +0 -0
  35. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force.rs +0 -0
  36. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_area.rs +0 -0
  37. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_distance.rs +0 -0
  38. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_div_distance_power_four.rs +0 -0
  39. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_per_volume.rs +0 -0
  40. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_stress.rs +0 -0
  41. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/force_volume.rs +0 -0
  42. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/inverse_area.rs +0 -0
  43. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/inverse_distance.rs +0 -0
  44. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/inverse_stress.rs +0 -0
  45. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/mass.rs +0 -0
  46. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/mass_div_time_squared_volume.rs +0 -0
  47. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/mass_per_distance.rs +0 -0
  48. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/rotational_stiffness.rs +0 -0
  49. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/stiffness.rs +0 -0
  50. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/strain.rs +0 -0
  51. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/stress.rs +0 -0
  52. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/stress_squared.rs +0 -0
  53. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/time.rs +0 -0
  54. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/velocity.rs +0 -0
  55. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/velocity_squared.rs +0 -0
  56. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/voltage.rs +0 -0
  57. {unitforge-0.3.10 → unitforge-0.3.12}/src/quantities/volume.rs +0 -0
  58. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/matrix2.rs +0 -0
  59. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/matrix2x3.rs +0 -0
  60. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/matrix3.rs +0 -0
  61. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/matrix3x2.rs +0 -0
  62. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/vector2.rs +0 -0
  63. {unitforge-0.3.10 → unitforge-0.3.12}/src/small_linalg/vector3.rs +0 -0
  64. {unitforge-0.3.10 → unitforge-0.3.12}/src/tests/quantity_unit_tests.rs +0 -0
  65. {unitforge-0.3.10 → unitforge-0.3.12}/src/tests/serde_tests.rs +0 -0
  66. {unitforge-0.3.10 → unitforge-0.3.12}/tests/matrix2.rs +0 -0
  67. {unitforge-0.3.10 → unitforge-0.3.12}/tests/matrix2x3.rs +0 -0
  68. {unitforge-0.3.10 → unitforge-0.3.12}/tests/matrix3.rs +0 -0
  69. {unitforge-0.3.10 → unitforge-0.3.12}/tests/matrix3x2.rs +0 -0
  70. {unitforge-0.3.10 → unitforge-0.3.12}/tests/ndarray_dot.rs +0 -0
  71. {unitforge-0.3.10 → unitforge-0.3.12}/tests/quantities.rs +0 -0
  72. {unitforge-0.3.10 → unitforge-0.3.12}/tests/small_linalg_interfaces.rs +0 -0
  73. {unitforge-0.3.10 → unitforge-0.3.12}/tests/test_quantities.py +0 -0
  74. {unitforge-0.3.10 → unitforge-0.3.12}/tests/vector2.rs +0 -0
  75. {unitforge-0.3.10 → unitforge-0.3.12}/tests/vector3.rs +0 -0
@@ -1,5 +1,7 @@
1
1
  debug/
2
2
  target/
3
+ dist/
4
+ python/
3
5
  **/*.rs.bk
4
6
  .idea/
5
7
  .gitlab-ci-local/
@@ -0,0 +1,87 @@
1
+ image: "rust:latest"
2
+
3
+ lint:
4
+ script:
5
+ - rustup component add clippy
6
+ - cargo clippy --no-deps -- -D warnings
7
+ allow_failure: true
8
+
9
+ lint_serde:
10
+ script:
11
+ - rustup component add clippy
12
+ - cargo clippy -F serde --no-deps -- -D warnings
13
+ allow_failure: true
14
+
15
+ lint_strum:
16
+ script:
17
+ - rustup component add clippy
18
+ - cargo clippy -F strum --no-deps -- -D warnings
19
+ allow_failure: true
20
+
21
+ lint_pyo3:
22
+ script:
23
+ - rustup component add clippy
24
+ - cargo clippy -F pyo3 --no-deps -- -D warnings
25
+ allow_failure: true
26
+
27
+ test:
28
+ script:
29
+ - rustc --version && cargo --version
30
+ - cargo test --workspace --verbose
31
+
32
+ test_serde:
33
+ script:
34
+ - rustc --version && cargo --version
35
+ - cargo test -F serde --workspace
36
+
37
+ test_strum:
38
+ script:
39
+ - cargo test -F strum --workspace
40
+
41
+ test_pyo3:
42
+ script:
43
+ - apt-get update && apt-get install -y python3 python3-venv python3.13-dev
44
+ - python3 -m venv .venv
45
+ - source .venv/bin/activate
46
+ - pip install --upgrade pip setuptools wheel maturin pytest numpy
47
+ - python scripts/generate_python_stubs.py
48
+ - maturin develop --features pyo3
49
+ - pytest tests
50
+ - deactivate
51
+
52
+ typecheck_pyo3_stubs:
53
+ script:
54
+ - apt-get update && apt-get install -y python3 python3-venv python3.13-dev
55
+ - python3 -m venv .venv
56
+ - source .venv/bin/activate
57
+ - pip install --upgrade pip setuptools wheel maturin numpy "mypy==1.8.0"
58
+ - python scripts/generate_python_stubs.py
59
+ - python scripts/generate_python_stubs.py --check
60
+ - MYPYPATH=python mypy --python-version 3.7 tests/typecheck/mypy_smoke.py
61
+ - maturin build --features pyo3 --out dist
62
+ - |
63
+ python - <<'PY'
64
+ import glob
65
+ import zipfile
66
+
67
+ wheels = sorted(glob.glob("dist/*.whl"))
68
+ if not wheels:
69
+ raise SystemExit("No wheels built in dist/")
70
+
71
+ required = {
72
+ "unitforge/__init__.py",
73
+ "unitforge/__init__.pyi",
74
+ "unitforge/py.typed",
75
+ }
76
+ with zipfile.ZipFile(wheels[-1]) as wheel:
77
+ names = set(wheel.namelist())
78
+ missing = sorted(required - names)
79
+ if missing:
80
+ raise SystemExit(f"Wheel is missing required typing artifacts: {missing}")
81
+ print("Wheel typing artifacts verified.")
82
+ PY
83
+ - pip install --force-reinstall --no-deps dist/*.whl
84
+ - TMP_DIR="$(mktemp -d)"
85
+ - cp tests/typecheck/mypy_smoke.py "$TMP_DIR"/
86
+ - (cd "$TMP_DIR" && mypy --python-version 3.7 mypy_smoke.py)
87
+ - deactivate
@@ -369,15 +369,22 @@ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
369
369
 
370
370
  [[package]]
371
371
  name = "unitforge"
372
- version = "0.3.10"
372
+ version = "0.3.12"
373
373
  dependencies = [
374
374
  "ndarray",
375
375
  "num-traits",
376
376
  "numpy",
377
377
  "pyo3",
378
- "regex",
379
378
  "serde",
380
379
  "serde_json",
381
380
  "strum",
382
381
  "strum_macros",
382
+ "unitforge_macros",
383
+ ]
384
+
385
+ [[package]]
386
+ name = "unitforge_macros"
387
+ version = "0.3.12"
388
+ dependencies = [
389
+ "regex",
383
390
  ]
@@ -4,7 +4,7 @@ crate-type = ["cdylib", "rlib"]
4
4
 
5
5
  [package]
6
6
  name = "unitforge"
7
- version = "0.3.10"
7
+ version = "0.3.12"
8
8
  edition = "2021"
9
9
  authors = ["Dr.Q team <info@askdrq.com>", "Henrik Stromberg <henrik@askdrq.com>"]
10
10
  description = "A library for unit and quantity consistent computations in Rust"
@@ -23,11 +23,12 @@ pyo3 = { version = "0.26.0", features = ["extension-module", "auto-initialize",
23
23
  numpy = { version = "0.26.0", optional = true }
24
24
  strum = { version = "0.27.2", optional = true }
25
25
  strum_macros = { version = "0.27.2", optional = true }
26
-
27
- [build-dependencies]
28
- regex = "1.11.1"
26
+ unitforge_macros = { version = "0.3.10", path = "unitforge_macros" }
29
27
 
30
28
  [features]
31
29
  serde = ["dep:serde", "dep:serde_json", "ndarray/serde"]
32
30
  pyo3 = ["dep:pyo3", "dep:numpy"]
33
31
  strum = ["dep:strum", "dep:strum_macros"]
32
+
33
+ [workspace]
34
+ members = ["unitforge_macros"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unitforge
3
- Version: 0.3.10
3
+ Version: 0.3.12
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -9,7 +9,9 @@ Classifier: Topic :: Scientific/Engineering :: Physics
9
9
  Requires-Dist: numpy>=2.2.0
10
10
  Summary: A library for unit and quantity consistent computations in Rust
11
11
  Keywords: units,quantities,simulation,physics
12
+ Author: Dr.Q team <info@askdrq.com>, Henrik Stromberg <henrik@askdrq.com>
12
13
  Author-email: "Dr.Q team" <info@askdrq.com>, Henrik Stromberg <henrik@askdrq.com>
14
+ License: MIT
13
15
  Requires-Python: >=3.7
14
16
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
15
17
  Project-URL: Repository, https://gitlab.com/henrikjstromberg/unitforge
@@ -32,3 +32,5 @@ Repository = "https://gitlab.com/henrikjstromberg/unitforge"
32
32
  [tool.maturin]
33
33
  bindings = "pyo3"
34
34
  features = ["pyo3"]
35
+ python-source = "python"
36
+ module-name = "unitforge.unitforge"