unitforge 0.5.0__tar.gz → 0.5.2__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 (95) hide show
  1. {unitforge-0.5.0 → unitforge-0.5.2}/Cargo.lock +6 -6
  2. {unitforge-0.5.0 → unitforge-0.5.2}/Cargo.toml +2 -9
  3. {unitforge-0.5.0 → unitforge-0.5.2}/PKG-INFO +1 -1
  4. {unitforge-0.5.0 → unitforge-0.5.2}/python/unitforge/__init__.pyi +10 -0
  5. {unitforge-0.5.0 → unitforge-0.5.2}/src/lib.rs +1 -32
  6. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/angular_acceleration.rs +3 -0
  7. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/angular_velocity.rs +3 -0
  8. {unitforge-0.5.0 → unitforge-0.5.2}/src/relations.rs +1 -0
  9. {unitforge-0.5.0 → unitforge-0.5.2}/unitforge_macros/Cargo.toml +2 -2
  10. {unitforge-0.5.0 → unitforge-0.5.2}/.gitignore +0 -0
  11. {unitforge-0.5.0 → unitforge-0.5.2}/.gitlab-ci.yml +0 -0
  12. {unitforge-0.5.0 → unitforge-0.5.2}/Readme.md +0 -0
  13. {unitforge-0.5.0 → unitforge-0.5.2}/Readme_py.md +0 -0
  14. {unitforge-0.5.0 → unitforge-0.5.2}/install_hooks.sh +0 -0
  15. {unitforge-0.5.0 → unitforge-0.5.2}/pyproject.toml +0 -0
  16. {unitforge-0.5.0 → unitforge-0.5.2}/python/unitforge/__init__.py +0 -0
  17. {unitforge-0.5.0 → unitforge-0.5.2}/python/unitforge/py.typed +0 -0
  18. {unitforge-0.5.0 → unitforge-0.5.2}/scripts/generate_python_stubs.py +0 -0
  19. {unitforge-0.5.0 → unitforge-0.5.2}/src/errors.rs +0 -0
  20. {unitforge-0.5.0 → unitforge-0.5.2}/src/impl_macros.rs +0 -0
  21. {unitforge-0.5.0 → unitforge-0.5.2}/src/internal.rs +0 -0
  22. {unitforge-0.5.0 → unitforge-0.5.2}/src/prelude.rs +0 -0
  23. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/acceleration.rs +0 -0
  24. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/angle.rs +0 -0
  25. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/area.rs +0 -0
  26. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/area_of_moment.rs +0 -0
  27. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/charge.rs +0 -0
  28. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/compliance.rs +0 -0
  29. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/density.rs +0 -0
  30. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/distance.rs +0 -0
  31. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force.rs +0 -0
  32. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_area.rs +0 -0
  33. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_distance.rs +0 -0
  34. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_div_distance_power_four.rs +0 -0
  35. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_per_volume.rs +0 -0
  36. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_stress.rs +0 -0
  37. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/force_volume.rs +0 -0
  38. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/frequency.rs +0 -0
  39. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/inverse_angle.rs +0 -0
  40. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/inverse_area.rs +0 -0
  41. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/inverse_distance.rs +0 -0
  42. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/inverse_stress.rs +0 -0
  43. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/mass.rs +0 -0
  44. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/mass_per_distance.rs +0 -0
  45. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/molar_mass.rs +0 -0
  46. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/pressure_rate.rs +0 -0
  47. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/rotational_stiffness.rs +0 -0
  48. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/specific_gas_constant.rs +0 -0
  49. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/stiffness.rs +0 -0
  50. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/strain.rs +0 -0
  51. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/stress.rs +0 -0
  52. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/stress_squared.rs +0 -0
  53. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/temperature.rs +0 -0
  54. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/time.rs +0 -0
  55. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/universal_gas_constant.rs +0 -0
  56. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/velocity.rs +0 -0
  57. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/velocity_squared.rs +0 -0
  58. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/voltage.rs +0 -0
  59. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities/volume.rs +0 -0
  60. {unitforge-0.5.0 → unitforge-0.5.2}/src/quantities.template.rs +0 -0
  61. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/bindings/matrix3_py.template.rs +0 -0
  62. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/bindings/vector3_py.template.rs +0 -0
  63. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/matrix2.rs +0 -0
  64. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/matrix2x3.rs +0 -0
  65. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/matrix3.rs +0 -0
  66. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/matrix3x2.rs +0 -0
  67. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/vector2.rs +0 -0
  68. {unitforge-0.5.0 → unitforge-0.5.2}/src/small_linalg/vector3.rs +0 -0
  69. {unitforge-0.5.0 → unitforge-0.5.2}/test.sh +0 -0
  70. {unitforge-0.5.0 → unitforge-0.5.2}/tests/common/mod.rs +0 -0
  71. {unitforge-0.5.0 → unitforge-0.5.2}/tests/matrix2.rs +0 -0
  72. {unitforge-0.5.0 → unitforge-0.5.2}/tests/matrix2x3.rs +0 -0
  73. {unitforge-0.5.0 → unitforge-0.5.2}/tests/matrix3.rs +0 -0
  74. {unitforge-0.5.0 → unitforge-0.5.2}/tests/matrix3x2.rs +0 -0
  75. {unitforge-0.5.0 → unitforge-0.5.2}/tests/ndarray_dot.rs +0 -0
  76. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantities.rs +0 -0
  77. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/constants.rs +0 -0
  78. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/construction.rs +0 -0
  79. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/enum_iter.rs +0 -0
  80. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/metadata.rs +0 -0
  81. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/normalization.rs +0 -0
  82. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/plain_storage.rs +0 -0
  83. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/relations.rs +0 -0
  84. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/runtime_quantity.rs +0 -0
  85. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core/scalar_edges.rs +0 -0
  86. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_core.rs +0 -0
  87. {unitforge-0.5.0 → unitforge-0.5.2}/tests/quantity_serde.rs +0 -0
  88. {unitforge-0.5.0 → unitforge-0.5.2}/tests/small_linalg_edge_cases.rs +0 -0
  89. {unitforge-0.5.0 → unitforge-0.5.2}/tests/small_linalg_interfaces.rs +0 -0
  90. {unitforge-0.5.0 → unitforge-0.5.2}/tests/test_quantities.py +0 -0
  91. {unitforge-0.5.0 → unitforge-0.5.2}/tests/test_small_linalg.py +0 -0
  92. {unitforge-0.5.0 → unitforge-0.5.2}/tests/typecheck/mypy_smoke.py +0 -0
  93. {unitforge-0.5.0 → unitforge-0.5.2}/tests/vector2.rs +0 -0
  94. {unitforge-0.5.0 → unitforge-0.5.2}/tests/vector3.rs +0 -0
  95. {unitforge-0.5.0 → unitforge-0.5.2}/unitforge_macros/src/lib.rs +0 -0
@@ -231,9 +231,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
231
231
 
232
232
  [[package]]
233
233
  name = "regex"
234
- version = "1.11.1"
234
+ version = "1.12.3"
235
235
  source = "registry+https://github.com/rust-lang/crates.io-index"
236
- checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
236
+ checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
237
237
  dependencies = [
238
238
  "aho-corasick",
239
239
  "memchr",
@@ -243,9 +243,9 @@ dependencies = [
243
243
 
244
244
  [[package]]
245
245
  name = "regex-automata"
246
- version = "0.4.9"
246
+ version = "0.4.14"
247
247
  source = "registry+https://github.com/rust-lang/crates.io-index"
248
- checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
248
+ checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
249
249
  dependencies = [
250
250
  "aho-corasick",
251
251
  "memchr",
@@ -351,7 +351,7 @@ checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
351
351
 
352
352
  [[package]]
353
353
  name = "unitforge"
354
- version = "0.5.0"
354
+ version = "0.5.2"
355
355
  dependencies = [
356
356
  "ndarray",
357
357
  "num-traits",
@@ -367,7 +367,7 @@ dependencies = [
367
367
 
368
368
  [[package]]
369
369
  name = "unitforge_macros"
370
- version = "0.5.0"
370
+ version = "0.5.2"
371
371
  dependencies = [
372
372
  "regex",
373
373
  ]
@@ -1,10 +1,6 @@
1
- [lib]
2
- name = "unitforge"
3
- crate-type = ["cdylib", "rlib"]
4
-
5
1
  [package]
6
2
  name = "unitforge"
7
- version = "0.5.0"
3
+ version = "0.5.2"
8
4
  edition = "2021"
9
5
  authors = ["Dr.Q team <info@askdrq.com>", "Henrik Stromberg <henrik@askdrq.com>"]
10
6
  description = "A library for unit and quantity consistent computations in Rust"
@@ -24,7 +20,7 @@ pyo3 = { version = "0.28.3", features = ["extension-module", "auto-initialize",
24
20
  numpy = { version = "0.28.0", optional = true }
25
21
  strum = { version = "0.28.0", optional = true }
26
22
  strum_macros = { version = "0.28.0", optional = true }
27
- unitforge_macros = { version = "0.5.0", path = "unitforge_macros" }
23
+ unitforge_macros = { version = "0.5.2", path = "unitforge_macros" }
28
24
 
29
25
  [features]
30
26
  default = []
@@ -38,6 +34,3 @@ no_std = []
38
34
 
39
35
  [workspace]
40
36
  members = ["unitforge_macros"]
41
-
42
- [profile.dev]
43
- panic = "abort"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: unitforge
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Classifier: Programming Language :: Python :: 3
5
5
  Classifier: Programming Language :: Rust
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -158,6 +158,7 @@ class Angle:
158
158
  class AngularAccelerationUnit:
159
159
  rad_ssq: ClassVar["AngularAccelerationUnit"]
160
160
  deg_ssq: ClassVar["AngularAccelerationUnit"]
161
+ rpm_s: ClassVar["AngularAccelerationUnit"]
161
162
 
162
163
  class AngularAcceleration:
163
164
  def __init__(self, value: float, unit: "AngularAccelerationUnit") -> None: ...
@@ -196,6 +197,7 @@ class AngularAcceleration:
196
197
  class AngularVelocityUnit:
197
198
  rad_s: ClassVar["AngularVelocityUnit"]
198
199
  deg_s: ClassVar["AngularVelocityUnit"]
200
+ rpm: ClassVar["AngularVelocityUnit"]
199
201
 
200
202
  class AngularVelocity:
201
203
  def __init__(self, value: float, unit: "AngularVelocityUnit") -> None: ...
@@ -448,6 +450,8 @@ class Density:
448
450
  @overload
449
451
  def __mul__(self, rhs: "Area") -> "MassPerDistance": ...
450
452
  @overload
453
+ def __mul__(self, rhs: "VelocitySquared") -> "Stress": ...
454
+ @overload
451
455
  def __mul__(self, rhs: "Volume") -> "Mass": ...
452
456
  @overload
453
457
  def __mul__(self, rhs: Any) -> Any: ...
@@ -1664,6 +1668,8 @@ class Stress:
1664
1668
  @overload
1665
1669
  def __truediv__(self, rhs: "Area") -> "ForcePerDistancePowerFour": ...
1666
1670
  @overload
1671
+ def __truediv__(self, rhs: "Density") -> "VelocitySquared": ...
1672
+ @overload
1667
1673
  def __truediv__(self, rhs: "Distance") -> "ForcePerVolume": ...
1668
1674
  @overload
1669
1675
  def __truediv__(self, rhs: "ForcePerDistancePowerFour") -> "Area": ...
@@ -1678,6 +1684,8 @@ class Stress:
1678
1684
  @overload
1679
1685
  def __truediv__(self, rhs: "Time") -> "PressureRate": ...
1680
1686
  @overload
1687
+ def __truediv__(self, rhs: "VelocitySquared") -> "Density": ...
1688
+ @overload
1681
1689
  def __truediv__(self, rhs: Any) -> Any: ...
1682
1690
  def __rmul__(self, rhs: float) -> "Stress": ...
1683
1691
  def __repr__(self) -> str: ...
@@ -1918,6 +1926,8 @@ class VelocitySquared:
1918
1926
  @overload
1919
1927
  def __mul__(self, rhs: Vector3) -> Vector3: ...
1920
1928
  @overload
1929
+ def __mul__(self, rhs: "Density") -> "Stress": ...
1930
+ @overload
1921
1931
  def __mul__(self, rhs: "Mass") -> "ForceDistance": ...
1922
1932
  @overload
1923
1933
  def __mul__(self, rhs: Any) -> Any: ...
@@ -1,37 +1,6 @@
1
- #![cfg_attr(
2
- all(
3
- feature = "no_std",
4
- any(feature = "storage-f64", feature = "storage-f32"),
5
- not(all(feature = "storage-f64", feature = "storage-f32")),
6
- not(any(
7
- feature = "serde",
8
- feature = "ndarray",
9
- feature = "pyo3",
10
- feature = "strum"
11
- ))
12
- ),
13
- no_std
14
- )]
1
+ #![cfg_attr(feature = "no_std", no_std)]
15
2
  #![allow(non_camel_case_types)]
16
3
 
17
- #[cfg(all(
18
- feature = "no_std",
19
- any(feature = "storage-f64", feature = "storage-f32"),
20
- not(all(feature = "storage-f64", feature = "storage-f32")),
21
- not(any(
22
- feature = "serde",
23
- feature = "ndarray",
24
- feature = "pyo3",
25
- feature = "strum"
26
- )),
27
- not(test),
28
- not(target_os = "none")
29
- ))]
30
- #[panic_handler]
31
- fn panic(_info: &core::panic::PanicInfo<'_>) -> ! {
32
- loop {}
33
- }
34
-
35
4
  #[cfg(all(feature = "storage-f64", feature = "storage-f32"))]
36
5
  compile_error!("features `storage-f64` and `storage-f32` are mutually exclusive");
37
6
 
@@ -9,6 +9,7 @@ use core::f64::consts::PI;
9
9
  pub enum AngularAccelerationUnit {
10
10
  rad_ssq,
11
11
  deg_ssq,
12
+ rpm_s,
12
13
  }
13
14
 
14
15
  impl AngularAccelerationUnit {
@@ -16,6 +17,7 @@ impl AngularAccelerationUnit {
16
17
  match self {
17
18
  AngularAccelerationUnit::rad_ssq => (1., 0),
18
19
  AngularAccelerationUnit::deg_ssq => (PI / 180., 0),
20
+ AngularAccelerationUnit::rpm_s => (2.0 * PI / 60.0, 0),
19
21
  }
20
22
  }
21
23
  }
@@ -25,6 +27,7 @@ impl PhysicsUnit for AngularAccelerationUnit {
25
27
  match &self {
26
28
  AngularAccelerationUnit::rad_ssq => "rad/s²",
27
29
  AngularAccelerationUnit::deg_ssq => "°/s²",
30
+ AngularAccelerationUnit::rpm_s => "rpm/s",
28
31
  }
29
32
  }
30
33
 
@@ -9,6 +9,7 @@ use core::f64::consts::PI;
9
9
  pub enum AngularVelocityUnit {
10
10
  rad_s,
11
11
  deg_s,
12
+ rpm,
12
13
  }
13
14
 
14
15
  impl AngularVelocityUnit {
@@ -16,6 +17,7 @@ impl AngularVelocityUnit {
16
17
  match self {
17
18
  AngularVelocityUnit::rad_s => (1., 0),
18
19
  AngularVelocityUnit::deg_s => (PI / 180., 0),
20
+ AngularVelocityUnit::rpm => (2.0 * PI / 60.0, 0),
19
21
  }
20
22
  }
21
23
  }
@@ -25,6 +27,7 @@ impl PhysicsUnit for AngularVelocityUnit {
25
27
  match &self {
26
28
  AngularVelocityUnit::rad_s => "rad/s",
27
29
  AngularVelocityUnit::deg_s => "°/s",
30
+ AngularVelocityUnit::rpm => "rpm",
28
31
  }
29
32
  }
30
33
 
@@ -59,6 +59,7 @@ impl_mul_relation_with_other!(Force, Volume, ForceVolume);
59
59
  impl_mul_relation_with_other!(Velocity, AngularVelocity, Acceleration);
60
60
  impl_mul_relation_with_other!(SpecificGasConstant, MolarMass, UniversalGasConstant);
61
61
  impl_mul_relation_with_other!(SpecificGasConstant, Temperature, VelocitySquared);
62
+ impl_mul_relation_with_other!(Density, VelocitySquared, Stress);
62
63
  impl_mul!(InverseDistance, Distance, f64);
63
64
  impl_mul!(InverseAngle, Angle, f64);
64
65
  impl_mul!(InverseStress, Stress, f64);
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "unitforge_macros"
3
- version = "0.5.0"
3
+ version = "0.5.2"
4
4
  edition = "2021"
5
5
  authors = ["Dr.Q team <info@askdrq.com>", "Henrik Stromberg <henrik@askdrq.com>"]
6
6
  description = "Proc macros for generating units, quantities, and Python bindings in unitforge"
@@ -12,4 +12,4 @@ keywords = ["units", "quantities", "simulation", "physics"]
12
12
  proc-macro = true
13
13
 
14
14
  [dependencies]
15
- regex = "1.11.1"
15
+ regex = "1.12.3"
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