physure 0.2.3__tar.gz → 0.2.4__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 (394) hide show
  1. {physure-0.2.3 → physure-0.2.4}/Cargo.lock +275 -6
  2. {physure-0.2.3 → physure-0.2.4}/Cargo.toml +1 -1
  3. {physure-0.2.3 → physure-0.2.4}/PKG-INFO +22 -10
  4. {physure-0.2.3 → physure-0.2.4}/README.md +21 -9
  5. {physure-0.2.3 → physure-0.2.4}/physure/__init__.py +42 -3
  6. {physure-0.2.3 → physure-0.2.4}/physure/_core.pyi +11 -0
  7. physure-0.2.4/physure/application/context.py +342 -0
  8. {physure-0.2.3 → physure-0.2.4}/physure/application/functions/functions.py +7 -1
  9. {physure-0.2.3 → physure-0.2.4}/physure/application/startup.py +15 -2
  10. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/quantity.py +142 -20
  11. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/uncertainty.py +300 -6
  12. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/export.py +10 -3
  13. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/expression.py +7 -1
  14. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/native.py +63 -19
  15. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/quantity.py +10 -3
  16. {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/reaction.py +4 -5
  17. {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/species.py +6 -0
  18. {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/thermo_kinetics.py +8 -0
  19. {physure-0.2.3 → physure-0.2.4}/physure/ext/pandas_support.py +28 -2
  20. {physure-0.2.3/physure-core/src/units → physure-0.2.4/physure/infrastructure/config}/physure.conf +2 -0
  21. physure-0.2.4/physure/module.py +247 -0
  22. {physure-0.2.3 → physure-0.2.4}/physure/plotting.py +801 -0
  23. {physure-0.2.3 → physure-0.2.4}/physure/repl.py +19 -25
  24. physure-0.2.4/physure/symbolic.py +450 -0
  25. {physure-0.2.3 → physure-0.2.4}/physure-core/Cargo.toml +8 -0
  26. {physure-0.2.3 → physure-0.2.4}/physure-core/README.md +4 -1
  27. physure-0.2.4/physure-core/src/equation.rs +45 -0
  28. physure-0.2.4/physure-core/src/error.rs +107 -0
  29. {physure-0.2.3 → physure-0.2.4}/physure-core/src/lib.rs +10 -1
  30. physure-0.2.4/physure-core/src/linalg.rs +218 -0
  31. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/dual.rs +3 -0
  32. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/interval.rs +5 -0
  33. physure-0.2.4/physure-core/src/plotting.rs +931 -0
  34. physure-0.2.4/physure-core/src/quantity.rs +984 -0
  35. physure-0.2.4/physure-core/src/settings.rs +230 -0
  36. physure-0.2.4/physure-core/src/uncertainty/gaussian.rs +113 -0
  37. physure-0.2.4/physure-core/src/uncertainty/lineage.rs +352 -0
  38. physure-0.2.4/physure-core/src/uncertainty/mod.rs +20 -0
  39. physure-0.2.4/physure-core/src/uncertainty/mode.rs +155 -0
  40. physure-0.2.4/physure-core/src/uncertainty/moments.rs +976 -0
  41. {physure-0.2.3 → physure-0.2.4}/physure-core/src/uncertainty/monte_carlo.rs +19 -0
  42. physure-0.2.4/physure-core/src/uncertainty/shapes.rs +400 -0
  43. physure-0.2.4/physure-core/src/uncertainty/tests.rs +728 -0
  44. physure-0.2.4/physure-core/src/uncertainty/trait_def.rs +390 -0
  45. {physure-0.2.3 → physure-0.2.4}/physure-core/src/uncertainty/unscented.rs +56 -8
  46. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/conf.rs +156 -17
  47. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/parser.rs +77 -8
  48. {physure-0.2.3/physure/infrastructure/config → physure-0.2.4/physure-core/src/units}/physure.conf +36 -7
  49. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/rational.rs +93 -8
  50. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/registry.rs +131 -21
  51. physure-0.2.4/physure-core/src/units/tests.rs +348 -0
  52. physure-0.2.4/physure-core/src/vendor/OrbitControls.min.js +1045 -0
  53. physure-0.2.4/physure-core/src/vendor/three.min.js +6 -0
  54. {physure-0.2.3 → physure-0.2.4}/physure-core/tests/edge_cases_and_concurrency.rs +4 -4
  55. physure-0.2.4/physure-python/.cache/mkdocs-jupyter/02523ce70219dd05bed0cd384568f6698000105cf7c422878d5517c238a6dad0.json +1 -0
  56. physure-0.2.4/physure-python/.cache/mkdocs-jupyter/be0f3edde7644f4389cc447095383f9e9c470d6c676d0b37cf4797eb3d9a1275.json +1 -0
  57. physure-0.2.4/physure-python/Makefile +14 -0
  58. {physure-0.2.3 → physure-0.2.4}/physure-python/README.md +21 -9
  59. {physure-0.2.3 → physure-0.2.4}/physure-python/examples/pandas_integration.py +9 -9
  60. {physure-0.2.3 → physure-0.2.4}/physure-python/mkdocs.yml +7 -0
  61. {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/generate_units_readme.py +6 -4
  62. {physure-0.2.3 → physure-0.2.4}/physure-python/src/lib.rs +505 -13
  63. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/conftest.py +4 -0
  64. physure-0.2.4/physure-python/tests/core/test_module_bridge.py +124 -0
  65. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_rust_parity.py +5 -2
  66. physure-0.2.4/physure-python/tests/ext/test_autograd.py +116 -0
  67. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_pandas_support.py +24 -17
  68. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_phs_native.py +2 -2
  69. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_quantity.py +37 -0
  70. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_uncertainty_models.py +7 -3
  71. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_native_expr.py +7 -1
  72. physure-0.2.4/physure-python/tests/test_asymmetric_moments.py +83 -0
  73. physure-0.2.4/physure-python/tests/test_foreign_bridge.py +290 -0
  74. physure-0.2.4/physure-python/tests/test_java_uncertainty.py +79 -0
  75. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_performance_and_interop.py +2 -3
  76. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_plotting.py +74 -0
  77. physure-0.2.4/physure-python/tests/test_transpiler_parity.py +123 -0
  78. physure-0.2.4/physure-python/tests/test_uncertainty_gum.py +318 -0
  79. {physure-0.2.3 → physure-0.2.4}/physure-python/uv.lock +43 -43
  80. {physure-0.2.3 → physure-0.2.4}/physure-script/Cargo.toml +6 -0
  81. physure-0.2.4/physure-script/sonar-project.properties +9 -0
  82. physure-0.2.4/physure-script/src/ast.rs +313 -0
  83. physure-0.2.4/physure-script/src/builtins/array.rs +290 -0
  84. physure-0.2.4/physure-script/src/builtins/calc.rs +733 -0
  85. physure-0.2.4/physure-script/src/builtins/core.rs +495 -0
  86. physure-0.2.4/physure-script/src/builtins/mod.rs +109 -0
  87. physure-0.2.4/physure-script/src/builtins/plot.rs +680 -0
  88. physure-0.2.4/physure-script/src/builtins/tests.rs +312 -0
  89. physure-0.2.4/physure-script/src/codegen/java.rs +524 -0
  90. physure-0.2.4/physure-script/src/codegen/js.rs +501 -0
  91. physure-0.2.4/physure-script/src/codegen/md.rs +174 -0
  92. physure-0.2.4/physure-script/src/codegen/mod.rs +809 -0
  93. physure-0.2.4/physure-script/src/codegen/proto.rs +103 -0
  94. physure-0.2.4/physure-script/src/codegen/python.rs +523 -0
  95. physure-0.2.4/physure-script/src/codegen/rust.rs +808 -0
  96. {physure-0.2.3 → physure-0.2.4}/physure-script/src/codegen/tests.rs +16 -0
  97. physure-0.2.4/physure-script/src/debug.rs +159 -0
  98. physure-0.2.4/physure-script/src/decorators.rs +420 -0
  99. {physure-0.2.3 → physure-0.2.4}/physure-script/src/exporter.rs +9 -0
  100. physure-0.2.4/physure-script/src/inspect.rs +171 -0
  101. physure-0.2.4/physure-script/src/interpreter/binary_ops.rs +237 -0
  102. physure-0.2.4/physure-script/src/interpreter/expressions.rs +650 -0
  103. physure-0.2.4/physure-script/src/interpreter/helpers.rs +84 -0
  104. physure-0.2.4/physure-script/src/interpreter/mod.rs +153 -0
  105. physure-0.2.4/physure-script/src/interpreter/statements.rs +357 -0
  106. physure-0.2.4/physure-script/src/interpreter/tests.rs +1274 -0
  107. {physure-0.2.3 → physure-0.2.4}/physure-script/src/lexer.rs +39 -9
  108. {physure-0.2.3 → physure-0.2.4}/physure-script/src/lib.rs +8 -0
  109. physure-0.2.4/physure-script/src/module.rs +816 -0
  110. physure-0.2.4/physure-script/src/parser/expressions.rs +494 -0
  111. physure-0.2.4/physure-script/src/parser/mod.rs +61 -0
  112. physure-0.2.4/physure-script/src/parser/quantities.rs +264 -0
  113. physure-0.2.4/physure-script/src/parser/shadowing.rs +216 -0
  114. physure-0.2.4/physure-script/src/parser/statements.rs +295 -0
  115. physure-0.2.4/physure-script/src/parser/tests.rs +503 -0
  116. physure-0.2.4/physure-script/src/phs.pest +212 -0
  117. physure-0.2.4/physure-script/src/pipeline.rs +467 -0
  118. {physure-0.2.3 → physure-0.2.4}/physure-script/src/plugin.rs +97 -29
  119. {physure-0.2.3 → physure-0.2.4}/physure-script/src/resolver.rs +1 -0
  120. physure-0.2.4/physure-script/src/symbolic/ast.rs +500 -0
  121. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/compiler.rs +1 -0
  122. physure-0.2.4/physure-script/src/symbolic/diff.rs +266 -0
  123. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/display.rs +41 -1
  124. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/expr.rs +113 -3
  125. physure-0.2.4/physure-script/src/symbolic/integrate.rs +568 -0
  126. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/mod.rs +7 -0
  127. physure-0.2.4/physure-script/src/symbolic/ode.rs +395 -0
  128. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/parser.rs +139 -6
  129. physure-0.2.4/physure-script/src/symbolic/series.rs +131 -0
  130. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/solve.rs +80 -2
  131. physure-0.2.4/physure-script/src/symbolic/sym_matrix.rs +232 -0
  132. physure-0.2.4/physure-script/src/symbolic/tests.rs +579 -0
  133. physure-0.2.4/physure-script/src/symbolic/transforms.rs +247 -0
  134. {physure-0.2.3 → physure-0.2.4}/physure-script/src/value.rs +36 -0
  135. physure-0.2.4/physure-script/tests/lsp_never_panics.rs +143 -0
  136. physure-0.2.4/physure-script/tests/mathematical_correctness.rs +210 -0
  137. physure-0.2.4/physure-script/tests/transpile_parity_tests.rs +607 -0
  138. physure-0.2.4/physure-script/tests/unit_literal_regression.rs +1078 -0
  139. physure-0.2.4/physure-script/tests/unit_shadowing.rs +206 -0
  140. {physure-0.2.3 → physure-0.2.4}/pyproject.toml +4 -4
  141. physure-0.2.3/physure/application/context.py +0 -192
  142. physure-0.2.3/physure/ext/grammar.py +0 -1655
  143. physure-0.2.3/physure/symbolic.py +0 -198
  144. physure-0.2.3/physure-core/src/error.rs +0 -56
  145. physure-0.2.3/physure-core/src/quantity.rs +0 -188
  146. physure-0.2.3/physure-core/src/uncertainty/gaussian.rs +0 -71
  147. physure-0.2.3/physure-core/src/uncertainty/mod.rs +0 -12
  148. physure-0.2.3/physure-core/src/uncertainty/tests.rs +0 -153
  149. physure-0.2.3/physure-core/src/uncertainty/trait_def.rs +0 -247
  150. physure-0.2.3/physure-core/src/units/tests.rs +0 -198
  151. physure-0.2.3/physure-python/Makefile +0 -28
  152. physure-0.2.3/physure-python/docs/UNITS.md +0 -786
  153. physure-0.2.3/physure-python/docs/benchmarks.md +0 -89
  154. physure-0.2.3/physure-python/docs/chemistry_roadmap.md +0 -215
  155. physure-0.2.3/physure-python/docs/diagrams_roadmap.md +0 -192
  156. physure-0.2.3/physure-python/docs/index.md +0 -40
  157. physure-0.2.3/physure-python/docs/reference/quantity.md +0 -3
  158. physure-0.2.3/physure-python/docs/scientific_roadmap.md +0 -316
  159. physure-0.2.3/physure-python/docs/symbolic_math_roadmap.md +0 -382
  160. physure-0.2.3/physure-python/docs/torch_compile_integration.md +0 -51
  161. physure-0.2.3/physure-python/docs/tutorials/01_best_practices.ipynb +0 -186
  162. physure-0.2.3/physure-python/docs/tutorials/jax_tutorial.ipynb +0 -109
  163. physure-0.2.3/physure-python/tests/ext/test_autograd.py +0 -108
  164. physure-0.2.3/physure-python/tests/ext/test_grammar.py +0 -842
  165. physure-0.2.3/physure-python/tests/test_uncertainty_gum.py +0 -150
  166. physure-0.2.3/physure-script/src/ast.rs +0 -185
  167. physure-0.2.3/physure-script/src/builtins.rs +0 -892
  168. physure-0.2.3/physure-script/src/codegen/java.rs +0 -200
  169. physure-0.2.3/physure-script/src/codegen/mod.rs +0 -41
  170. physure-0.2.3/physure-script/src/codegen/python.rs +0 -220
  171. physure-0.2.3/physure-script/src/codegen/rust.rs +0 -192
  172. physure-0.2.3/physure-script/src/function.rs +0 -350
  173. physure-0.2.3/physure-script/src/interpreter.rs +0 -833
  174. physure-0.2.3/physure-script/src/mod.rs +0 -163
  175. physure-0.2.3/physure-script/src/parser.rs +0 -735
  176. physure-0.2.3/physure-script/src/phs.pest +0 -70
  177. physure-0.2.3/physure-script/src/symbolic/ast.rs +0 -281
  178. physure-0.2.3/physure-script/src/symbolic/diff.rs +0 -130
  179. physure-0.2.3/physure-script/src/symbolic/integrate.rs +0 -277
  180. physure-0.2.3/physure-script/src/symbolic/tests.rs +0 -260
  181. {physure-0.2.3 → physure-0.2.4}/LICENSE +0 -0
  182. {physure-0.2.3 → physure-0.2.4}/physure/__main__.py +0 -0
  183. {physure-0.2.3 → physure-0.2.4}/physure/_generated_types.py +0 -0
  184. {physure-0.2.3 → physure-0.2.4}/physure/_jit/__init__.py +0 -0
  185. {physure-0.2.3 → physure-0.2.4}/physure/_jit/tracer.py +0 -0
  186. {physure-0.2.3 → physure-0.2.4}/physure/application/__init__.py +0 -0
  187. {physure-0.2.3 → physure-0.2.4}/physure/application/factories.py +0 -0
  188. {physure-0.2.3 → physure-0.2.4}/physure/application/fit_service.py +0 -0
  189. {physure-0.2.3 → physure-0.2.4}/physure/application/functions/__init__.py +0 -0
  190. {physure-0.2.3 → physure-0.2.4}/physure/application/io.py +0 -0
  191. {physure-0.2.3 → physure-0.2.4}/physure/application/parsing.py +0 -0
  192. {physure-0.2.3 → physure-0.2.4}/physure/application/solver_service.py +0 -0
  193. {physure-0.2.3 → physure-0.2.4}/physure/application/tracing/context.py +0 -0
  194. {physure-0.2.3 → physure-0.2.4}/physure/backends/__init__.py +0 -0
  195. {physure-0.2.3 → physure-0.2.4}/physure/backends/core_backend.py +0 -0
  196. {physure-0.2.3 → physure-0.2.4}/physure/backends/jax_backend.py +0 -0
  197. {physure-0.2.3 → physure-0.2.4}/physure/backends/kernels/covariance.py +0 -0
  198. {physure-0.2.3 → physure-0.2.4}/physure/backends/numpy_backend.py +0 -0
  199. {physure-0.2.3 → physure-0.2.4}/physure/backends/python_backend.py +0 -0
  200. {physure-0.2.3 → physure-0.2.4}/physure/backends/torch/autograd_store.py +0 -0
  201. {physure-0.2.3 → physure-0.2.4}/physure/backends/torch_backend.py +0 -0
  202. {physure-0.2.3 → physure-0.2.4}/physure/cli.py +0 -0
  203. {physure-0.2.3 → physure-0.2.4}/physure/constants.py +0 -0
  204. {physure-0.2.3 → physure-0.2.4}/physure/core/__init__.py +0 -0
  205. {physure-0.2.3 → physure-0.2.4}/physure/core/autograd.py +0 -0
  206. {physure-0.2.3 → physure-0.2.4}/physure/core/dispatcher.py +0 -0
  207. {physure-0.2.3 → physure-0.2.4}/physure/core/formatting.py +0 -0
  208. {physure-0.2.3 → physure-0.2.4}/physure/core/functional.py +0 -0
  209. {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/sanitizer.py +0 -0
  210. {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/sympy_parser.py +0 -0
  211. {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/transformer.py +0 -0
  212. {physure-0.2.3 → physure-0.2.4}/physure/core/protocols.py +0 -0
  213. {physure-0.2.3 → physure-0.2.4}/physure/core/registry.py +0 -0
  214. {physure-0.2.3 → physure-0.2.4}/physure/core/registry.pyi +0 -0
  215. {physure-0.2.3 → physure-0.2.4}/physure/domain/__init__.py +0 -0
  216. {physure-0.2.3 → physure-0.2.4}/physure/domain/exceptions.py +0 -0
  217. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/__init__.py +0 -0
  218. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/_arithmetic_mixin.py +0 -0
  219. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/_backend_mixin.py +0 -0
  220. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/base_entity.py +0 -0
  221. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/conversions.py +0 -0
  222. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/converters.py +0 -0
  223. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/dimensions.py +0 -0
  224. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/equivalencies.py +0 -0
  225. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/ports/__init__.py +0 -0
  226. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/ports/unit_repository.py +0 -0
  227. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/system.py +0 -0
  228. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/units.py +0 -0
  229. {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/vectorized_uncertainty.py +0 -0
  230. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/__init__.py +0 -0
  231. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/graph.py +0 -0
  232. {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/tracer.py +0 -0
  233. {physure-0.2.3 → physure-0.2.4}/physure/ext/__init__.py +0 -0
  234. {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/__init__.py +0 -0
  235. {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/equivalency.py +0 -0
  236. {physure-0.2.3 → physure-0.2.4}/physure/ext/compiler.py +0 -0
  237. {physure-0.2.3 → physure-0.2.4}/physure/ext/currency.py +0 -0
  238. {physure-0.2.3 → physure-0.2.4}/physure/ext/helpers.py +0 -0
  239. {physure-0.2.3 → physure-0.2.4}/physure/ext/io.py +0 -0
  240. {physure-0.2.3 → physure-0.2.4}/physure/ext/numba_support.py +0 -0
  241. {physure-0.2.3 → physure-0.2.4}/physure/ext/phs_loader.py +0 -0
  242. {physure-0.2.3 → physure-0.2.4}/physure/ext/symbolic_regression.py +0 -0
  243. {physure-0.2.3 → physure-0.2.4}/physure/functional.py +0 -0
  244. {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/__init__.py +0 -0
  245. {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/__init__.py +0 -0
  246. {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/imperial.conf +0 -0
  247. {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/international.conf +0 -0
  248. {physure-0.2.3 → physure-0.2.4}/physure/nn/__init__.py +0 -0
  249. {physure-0.2.3 → physure-0.2.4}/physure/nn/layers.py +0 -0
  250. {physure-0.2.3 → physure-0.2.4}/physure/nn/loss.py +0 -0
  251. {physure-0.2.3 → physure-0.2.4}/physure/nn/networks.py +0 -0
  252. {physure-0.2.3 → physure-0.2.4}/physure/nn/utils.py +0 -0
  253. {physure-0.2.3 → physure-0.2.4}/physure/pandas_ext.py +0 -0
  254. {physure-0.2.3 → physure-0.2.4}/physure/py.typed +0 -0
  255. {physure-0.2.3 → physure-0.2.4}/physure/scripts/generate_types.py +0 -0
  256. {physure-0.2.3 → physure-0.2.4}/physure/units/__init__.py +0 -0
  257. {physure-0.2.3 → physure-0.2.4}/physure/units/__init__.pyi +0 -0
  258. {physure-0.2.3 → physure-0.2.4}/physure/units/_index.py +0 -0
  259. {physure-0.2.3 → physure-0.2.4}/physure/units/core.py +0 -0
  260. {physure-0.2.3 → physure-0.2.4}/physure/units/electromagnetism.py +0 -0
  261. {physure-0.2.3 → physure-0.2.4}/physure-core/.cargo/config.toml +0 -0
  262. {physure-0.2.3 → physure-0.2.4}/physure-core/.github/workflows/CI.yml +0 -0
  263. {physure-0.2.3 → physure-0.2.4}/physure-core/.gitignore +0 -0
  264. {physure-0.2.3 → physure-0.2.4}/physure-core/Cargo.lock +0 -0
  265. {physure-0.2.3 → physure-0.2.4}/physure-core/LICENSE +0 -0
  266. {physure-0.2.3 → physure-0.2.4}/physure-core/benches/core_benchmarks.rs +0 -0
  267. {physure-0.2.3 → physure-0.2.4}/physure-core/examples/quickstart.rs +0 -0
  268. {physure-0.2.3 → physure-0.2.4}/physure-core/scripts/filter_lcov.py +0 -0
  269. {physure-0.2.3 → physure-0.2.4}/physure-core/sonar-project.properties +0 -0
  270. {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/arrow.rs +0 -0
  271. {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/mod.rs +0 -0
  272. {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/pruning.rs +0 -0
  273. {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/store.rs +0 -0
  274. {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/tests.rs +0 -0
  275. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/dimension_vector.rs +0 -0
  276. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/hessian_propagation.rs +0 -0
  277. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/mod.rs +0 -0
  278. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/sparse_kernels.rs +0 -0
  279. {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/tests.rs +0 -0
  280. {physure-0.2.3 → physure-0.2.4}/physure-core/src/serialization.rs +0 -0
  281. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/converters.rs +0 -0
  282. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/definition.rs +0 -0
  283. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/dimension.rs +0 -0
  284. {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/mod.rs +0 -0
  285. {physure-0.2.3 → physure-0.2.4}/physure-python/Cargo.toml +0 -0
  286. {physure-0.2.3 → physure-0.2.4}/physure-python/LICENSE +0 -0
  287. {physure-0.2.3 → physure-0.2.4}/physure-python/MANIFEST.in +0 -0
  288. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_comparison.py +0 -0
  289. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_lineage.py +0 -0
  290. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_propagation.py +0 -0
  291. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_vectorized.py +0 -0
  292. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/comprehensive_plot.py +0 -0
  293. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/profile_vectorized.py +0 -0
  294. {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/run_compile_bench.py +0 -0
  295. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-11-mkml-math-functions.md +0 -0
  296. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-11-mkml-notation-layer.md +0 -0
  297. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-12-mkml-user-functions.md +0 -0
  298. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-kill-rust-fallback-illusion.md +0 -0
  299. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-rust-transcendental-delegation.md +0 -0
  300. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-unit-parser-zero-exponent-guard.md +0 -0
  301. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-11-mkml-math-functions-design.md +0 -0
  302. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-11-notation-layer-design.md +0 -0
  303. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-12-mkml-user-functions-design.md +0 -0
  304. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-16-kill-rust-fallback-illusion-design.md +0 -0
  305. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-16-rust-transcendental-delegation-design.md +0 -0
  306. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-16-unit-parser-zero-exponent-guard-design.md +0 -0
  307. {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-20-phs-rust-engine-milestone.md +0 -0
  308. {physure-0.2.3 → physure-0.2.4}/physure-python/examples/advanced_physics.py +0 -0
  309. {physure-0.2.3 → physure-0.2.4}/physure-python/examples/pinn_harmonic_oscillator.ipynb +0 -0
  310. {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/benchmark_import.py +0 -0
  311. {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/compile_units.py +0 -0
  312. {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/generate_constants_config.py +0 -0
  313. {physure-0.2.3 → physure-0.2.4}/physure-python/sonar-project.properties +0 -0
  314. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/__init__.py +0 -0
  315. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/__init__.py +0 -0
  316. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_backends.py +0 -0
  317. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_backends_and_quantity.py +0 -0
  318. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_concurrency.py +0 -0
  319. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_consistency.py +0 -0
  320. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_covariance_store.py +0 -0
  321. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional.py +0 -0
  322. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional_core.py +0 -0
  323. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional_jax.py +0 -0
  324. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_gradients.py +0 -0
  325. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_invariants.py +0 -0
  326. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_jit.py +0 -0
  327. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_pydantic.py +0 -0
  328. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_registry.py +0 -0
  329. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_serialization.py +0 -0
  330. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_sparse_backends.py +0 -0
  331. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_vectorized_unc.py +0 -0
  332. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/domain/test_bare_number_add_sub.py +0 -0
  333. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/__init__.py +0 -0
  334. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/test_fit_service.py +0 -0
  335. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/test_solver.py +0 -0
  336. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_chemistry_integration.py +0 -0
  337. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_compiler.py +0 -0
  338. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_currency.py +0 -0
  339. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_io.py +0 -0
  340. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_molar_equivalency.py +0 -0
  341. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_phs_loader.py +0 -0
  342. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_reaction.py +0 -0
  343. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_species.py +0 -0
  344. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_symbolic_regression.py +0 -0
  345. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_thermo_kinetics.py +0 -0
  346. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_torch_compile.py +0 -0
  347. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/functions/__init__.py +0 -0
  348. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/functions/test_functions.py +0 -0
  349. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/__init__.py +0 -0
  350. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_measurement_system.py +0 -0
  351. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_physics_realworld.py +0 -0
  352. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_workflow.py +0 -0
  353. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/__init__.py +0 -0
  354. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_advanced.py +0 -0
  355. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_affine_arithmetic.py +0 -0
  356. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_api.py +0 -0
  357. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_autograd_propagation.py +0 -0
  358. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_backend_mixin.py +0 -0
  359. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_constants_codata.py +0 -0
  360. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_constants_module.py +0 -0
  361. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_conversions.py +0 -0
  362. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_conversions_realworld.py +0 -0
  363. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_correctness_fixes.py +0 -0
  364. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_dimensions.py +0 -0
  365. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_lazy_prefixes.py +0 -0
  366. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_nonlinear_and_calculus.py +0 -0
  367. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_units.py +0 -0
  368. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/__init__.py +0 -0
  369. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_base_entity.py +0 -0
  370. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_lexer.py +0 -0
  371. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_parsers.py +0 -0
  372. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/performance/benchmarks.py +0 -0
  373. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/__init__.py +0 -0
  374. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/test_integration.py +0 -0
  375. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/test_nn_utils.py +0 -0
  376. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/strategies.py +0 -0
  377. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/__init__.py +0 -0
  378. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_calculus.py +0 -0
  379. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_native_coverage.py +0 -0
  380. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_solve_all.py +0 -0
  381. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_solver.py +0 -0
  382. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_tracing.py +0 -0
  383. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_ecosystem.py +0 -0
  384. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_equivalencies.py +0 -0
  385. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_jit_core.py +0 -0
  386. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_jit_uncertainty.py +0 -0
  387. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_new_features.py +0 -0
  388. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_repl.py +0 -0
  389. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_rust_transcendental_delegation.py +0 -0
  390. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_uncertainty.py +0 -0
  391. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_uncertainty_api.py +0 -0
  392. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/tools/__init__.py +0 -0
  393. {physure-0.2.3 → physure-0.2.4}/physure-python/tests/tools/test_stub_gen.py +0 -0
  394. {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/factor.rs +0 -0
@@ -560,6 +560,16 @@ dependencies = [
560
560
  "static_assertions",
561
561
  ]
562
562
 
563
+ [[package]]
564
+ name = "console_error_panic_hook"
565
+ version = "0.1.7"
566
+ source = "registry+https://github.com/rust-lang/crates.io-index"
567
+ checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
568
+ dependencies = [
569
+ "cfg-if",
570
+ "wasm-bindgen",
571
+ ]
572
+
563
573
  [[package]]
564
574
  name = "const-random"
565
575
  version = "0.1.18"
@@ -980,8 +990,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
980
990
  checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
981
991
  dependencies = [
982
992
  "cfg-if",
993
+ "js-sys",
983
994
  "libc",
984
995
  "wasi",
996
+ "wasm-bindgen",
985
997
  ]
986
998
 
987
999
  [[package]]
@@ -1517,6 +1529,16 @@ dependencies = [
1517
1529
  "autocfg",
1518
1530
  ]
1519
1531
 
1532
+ [[package]]
1533
+ name = "minicov"
1534
+ version = "0.3.8"
1535
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1536
+ checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d"
1537
+ dependencies = [
1538
+ "cc",
1539
+ "walkdir",
1540
+ ]
1541
+
1520
1542
  [[package]]
1521
1543
  name = "miniz_oxide"
1522
1544
  version = "0.8.9"
@@ -1619,6 +1641,15 @@ dependencies = [
1619
1641
  "rawpointer",
1620
1642
  ]
1621
1643
 
1644
+ [[package]]
1645
+ name = "nu-ansi-term"
1646
+ version = "0.50.3"
1647
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1648
+ checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
1649
+ dependencies = [
1650
+ "windows-sys 0.61.2",
1651
+ ]
1652
+
1622
1653
  [[package]]
1623
1654
  name = "num"
1624
1655
  version = "0.4.3"
@@ -1908,13 +1939,14 @@ dependencies = [
1908
1939
 
1909
1940
  [[package]]
1910
1941
  name = "physure"
1911
- version = "0.2.3"
1942
+ version = "0.2.4"
1912
1943
  dependencies = [
1913
1944
  "approx 0.5.1",
1914
1945
  "arrow",
1915
1946
  "chrono",
1916
1947
  "criterion",
1917
1948
  "dyn-clone",
1949
+ "getrandom 0.2.17",
1918
1950
  "nalgebra",
1919
1951
  "ndarray 0.15.6",
1920
1952
  "num-rational",
@@ -1929,25 +1961,29 @@ dependencies = [
1929
1961
 
1930
1962
  [[package]]
1931
1963
  name = "physure-cli"
1932
- version = "0.2.3"
1964
+ version = "0.2.4"
1933
1965
  dependencies = [
1934
1966
  "arboard",
1935
1967
  "chrono",
1936
1968
  "crossterm",
1937
1969
  "dirs",
1970
+ "libloading",
1938
1971
  "open",
1939
1972
  "physure",
1940
1973
  "physure-script",
1941
1974
  "ratatui",
1975
+ "semver",
1942
1976
  "serde",
1943
1977
  "serde_json",
1944
1978
  "tiny_http",
1979
+ "toml",
1980
+ "ureq",
1945
1981
  "winreg",
1946
1982
  ]
1947
1983
 
1948
1984
  [[package]]
1949
1985
  name = "physure-java"
1950
- version = "0.2.3"
1986
+ version = "0.2.4"
1951
1987
  dependencies = [
1952
1988
  "jni",
1953
1989
  "num-rational",
@@ -1957,7 +1993,7 @@ dependencies = [
1957
1993
 
1958
1994
  [[package]]
1959
1995
  name = "physure-lsp"
1960
- version = "0.2.3"
1996
+ version = "0.2.4"
1961
1997
  dependencies = [
1962
1998
  "physure",
1963
1999
  "physure-script",
@@ -1967,7 +2003,7 @@ dependencies = [
1967
2003
 
1968
2004
  [[package]]
1969
2005
  name = "physure-python"
1970
- version = "0.2.3"
2006
+ version = "0.2.4"
1971
2007
  dependencies = [
1972
2008
  "arrow",
1973
2009
  "chrono",
@@ -1987,7 +2023,7 @@ dependencies = [
1987
2023
 
1988
2024
  [[package]]
1989
2025
  name = "physure-script"
1990
- version = "0.2.3"
2026
+ version = "0.2.4"
1991
2027
  dependencies = [
1992
2028
  "libloading",
1993
2029
  "num-rational",
@@ -1995,10 +2031,23 @@ dependencies = [
1995
2031
  "pest",
1996
2032
  "pest_derive",
1997
2033
  "physure",
2034
+ "rayon",
1998
2035
  "serde",
1999
2036
  "serde_json",
2000
2037
  ]
2001
2038
 
2039
+ [[package]]
2040
+ name = "physure-wasm"
2041
+ version = "0.2.4"
2042
+ dependencies = [
2043
+ "console_error_panic_hook",
2044
+ "js-sys",
2045
+ "physure",
2046
+ "physure-script",
2047
+ "wasm-bindgen",
2048
+ "wasm-bindgen-test",
2049
+ ]
2050
+
2002
2051
  [[package]]
2003
2052
  name = "pin-project"
2004
2053
  version = "1.1.13"
@@ -2333,6 +2382,20 @@ version = "0.8.11"
2333
2382
  source = "registry+https://github.com/rust-lang/crates.io-index"
2334
2383
  checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
2335
2384
 
2385
+ [[package]]
2386
+ name = "ring"
2387
+ version = "0.17.14"
2388
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2389
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
2390
+ dependencies = [
2391
+ "cc",
2392
+ "cfg-if",
2393
+ "getrandom 0.2.17",
2394
+ "libc",
2395
+ "untrusted",
2396
+ "windows-sys 0.52.0",
2397
+ ]
2398
+
2336
2399
  [[package]]
2337
2400
  name = "rustc-hash"
2338
2401
  version = "2.1.3"
@@ -2374,6 +2437,41 @@ dependencies = [
2374
2437
  "windows-sys 0.61.2",
2375
2438
  ]
2376
2439
 
2440
+ [[package]]
2441
+ name = "rustls"
2442
+ version = "0.23.43"
2443
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2444
+ checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
2445
+ dependencies = [
2446
+ "log",
2447
+ "once_cell",
2448
+ "ring",
2449
+ "rustls-pki-types",
2450
+ "rustls-webpki",
2451
+ "subtle",
2452
+ "zeroize",
2453
+ ]
2454
+
2455
+ [[package]]
2456
+ name = "rustls-pki-types"
2457
+ version = "1.15.1"
2458
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2459
+ checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
2460
+ dependencies = [
2461
+ "zeroize",
2462
+ ]
2463
+
2464
+ [[package]]
2465
+ name = "rustls-webpki"
2466
+ version = "0.103.15"
2467
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2468
+ checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
2469
+ dependencies = [
2470
+ "ring",
2471
+ "rustls-pki-types",
2472
+ "untrusted",
2473
+ ]
2474
+
2377
2475
  [[package]]
2378
2476
  name = "rustversion"
2379
2477
  version = "1.0.23"
@@ -2470,6 +2568,15 @@ dependencies = [
2470
2568
  "syn 3.0.2",
2471
2569
  ]
2472
2570
 
2571
+ [[package]]
2572
+ name = "serde_spanned"
2573
+ version = "0.6.9"
2574
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2575
+ checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
2576
+ dependencies = [
2577
+ "serde",
2578
+ ]
2579
+
2473
2580
  [[package]]
2474
2581
  name = "shlex"
2475
2582
  version = "2.0.1"
@@ -2603,6 +2710,12 @@ dependencies = [
2603
2710
  "syn 2.0.119",
2604
2711
  ]
2605
2712
 
2713
+ [[package]]
2714
+ name = "subtle"
2715
+ version = "2.6.1"
2716
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2717
+ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
2718
+
2606
2719
  [[package]]
2607
2720
  name = "syn"
2608
2721
  version = "2.0.119"
@@ -2758,6 +2871,47 @@ dependencies = [
2758
2871
  "tokio",
2759
2872
  ]
2760
2873
 
2874
+ [[package]]
2875
+ name = "toml"
2876
+ version = "0.8.23"
2877
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2878
+ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
2879
+ dependencies = [
2880
+ "serde",
2881
+ "serde_spanned",
2882
+ "toml_datetime",
2883
+ "toml_edit",
2884
+ ]
2885
+
2886
+ [[package]]
2887
+ name = "toml_datetime"
2888
+ version = "0.6.11"
2889
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2890
+ checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
2891
+ dependencies = [
2892
+ "serde",
2893
+ ]
2894
+
2895
+ [[package]]
2896
+ name = "toml_edit"
2897
+ version = "0.22.27"
2898
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2899
+ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
2900
+ dependencies = [
2901
+ "indexmap",
2902
+ "serde",
2903
+ "serde_spanned",
2904
+ "toml_datetime",
2905
+ "toml_write",
2906
+ "winnow",
2907
+ ]
2908
+
2909
+ [[package]]
2910
+ name = "toml_write"
2911
+ version = "0.1.2"
2912
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2913
+ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
2914
+
2761
2915
  [[package]]
2762
2916
  name = "tower"
2763
2917
  version = "0.4.13"
@@ -2896,6 +3050,30 @@ version = "0.2.4"
2896
3050
  source = "registry+https://github.com/rust-lang/crates.io-index"
2897
3051
  checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
2898
3052
 
3053
+ [[package]]
3054
+ name = "untrusted"
3055
+ version = "0.9.0"
3056
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3057
+ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
3058
+
3059
+ [[package]]
3060
+ name = "ureq"
3061
+ version = "2.12.1"
3062
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3063
+ checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
3064
+ dependencies = [
3065
+ "base64",
3066
+ "flate2",
3067
+ "log",
3068
+ "once_cell",
3069
+ "rustls",
3070
+ "rustls-pki-types",
3071
+ "serde",
3072
+ "serde_json",
3073
+ "url",
3074
+ "webpki-roots 0.26.11",
3075
+ ]
3076
+
2899
3077
  [[package]]
2900
3078
  name = "url"
2901
3079
  version = "2.5.8"
@@ -2959,6 +3137,16 @@ dependencies = [
2959
3137
  "wasm-bindgen-shared",
2960
3138
  ]
2961
3139
 
3140
+ [[package]]
3141
+ name = "wasm-bindgen-futures"
3142
+ version = "0.4.76"
3143
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3144
+ checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d"
3145
+ dependencies = [
3146
+ "js-sys",
3147
+ "wasm-bindgen",
3148
+ ]
3149
+
2962
3150
  [[package]]
2963
3151
  name = "wasm-bindgen-macro"
2964
3152
  version = "0.2.126"
@@ -2991,6 +3179,45 @@ dependencies = [
2991
3179
  "unicode-ident",
2992
3180
  ]
2993
3181
 
3182
+ [[package]]
3183
+ name = "wasm-bindgen-test"
3184
+ version = "0.3.76"
3185
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3186
+ checksum = "2a0d555ca874445df8d314f94f5c948a4e74e5418f332c89f660a3d8310a96f4"
3187
+ dependencies = [
3188
+ "async-trait",
3189
+ "cast",
3190
+ "js-sys",
3191
+ "libm",
3192
+ "minicov",
3193
+ "nu-ansi-term",
3194
+ "num-traits",
3195
+ "oorandom",
3196
+ "serde",
3197
+ "serde_json",
3198
+ "wasm-bindgen",
3199
+ "wasm-bindgen-futures",
3200
+ "wasm-bindgen-test-macro",
3201
+ "wasm-bindgen-test-shared",
3202
+ ]
3203
+
3204
+ [[package]]
3205
+ name = "wasm-bindgen-test-macro"
3206
+ version = "0.3.76"
3207
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3208
+ checksum = "94eb68555b95bcea5e8cf4abe280b529049479fa995bfc23734af96a6aedc120"
3209
+ dependencies = [
3210
+ "proc-macro2",
3211
+ "quote",
3212
+ "syn 2.0.119",
3213
+ ]
3214
+
3215
+ [[package]]
3216
+ name = "wasm-bindgen-test-shared"
3217
+ version = "0.2.126"
3218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3219
+ checksum = "c31d56021e873866c968588ed85ccdf56db5c426e44afdb4618c39895104b920"
3220
+
2994
3221
  [[package]]
2995
3222
  name = "web-sys"
2996
3223
  version = "0.3.103"
@@ -3001,6 +3228,24 @@ dependencies = [
3001
3228
  "wasm-bindgen",
3002
3229
  ]
3003
3230
 
3231
+ [[package]]
3232
+ name = "webpki-roots"
3233
+ version = "0.26.11"
3234
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3235
+ checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
3236
+ dependencies = [
3237
+ "webpki-roots 1.0.9",
3238
+ ]
3239
+
3240
+ [[package]]
3241
+ name = "webpki-roots"
3242
+ version = "1.0.9"
3243
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3244
+ checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
3245
+ dependencies = [
3246
+ "rustls-pki-types",
3247
+ ]
3248
+
3004
3249
  [[package]]
3005
3250
  name = "weezl"
3006
3251
  version = "0.1.12"
@@ -3125,6 +3370,15 @@ dependencies = [
3125
3370
  "windows-targets 0.48.5",
3126
3371
  ]
3127
3372
 
3373
+ [[package]]
3374
+ name = "windows-sys"
3375
+ version = "0.52.0"
3376
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3377
+ checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
3378
+ dependencies = [
3379
+ "windows-targets 0.52.6",
3380
+ ]
3381
+
3128
3382
  [[package]]
3129
3383
  name = "windows-sys"
3130
3384
  version = "0.59.0"
@@ -3395,6 +3649,15 @@ version = "0.53.1"
3395
3649
  source = "registry+https://github.com/rust-lang/crates.io-index"
3396
3650
  checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
3397
3651
 
3652
+ [[package]]
3653
+ name = "winnow"
3654
+ version = "0.7.15"
3655
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3656
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
3657
+ dependencies = [
3658
+ "memchr",
3659
+ ]
3660
+
3398
3661
  [[package]]
3399
3662
  name = "winreg"
3400
3663
  version = "0.52.0"
@@ -3498,6 +3761,12 @@ dependencies = [
3498
3761
  "synstructure",
3499
3762
  ]
3500
3763
 
3764
+ [[package]]
3765
+ name = "zeroize"
3766
+ version = "1.9.0"
3767
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3768
+ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
3769
+
3501
3770
  [[package]]
3502
3771
  name = "zerotrie"
3503
3772
  version = "0.2.4"
@@ -9,7 +9,7 @@ resolver = "2"
9
9
  members = ["physure-core", "physure-script", "physure-python"]
10
10
 
11
11
  [workspace.package]
12
- version = "0.2.3"
12
+ version = "0.2.4"
13
13
  edition = "2021"
14
14
  license = "MIT"
15
15
  repository = "https://github.com/Alexisrx96/physure"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: physure
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Intended Audience :: Science/Research
@@ -87,11 +87,12 @@ Project-URL: Source, https://github.com/Alexisrx96/physure
87
87
  <img src="https://raw.githubusercontent.com/Alexisrx96/physure/main/assets/logo-horizontal-light.svg" alt="physure" width="440">
88
88
  </picture>
89
89
 
90
- <h3><b>Unit-aware, dimension-correct computing for Python — powered by a Rust core</b></h3>
91
- <p><i>Units, dimensions, and correlated uncertainty tracked through every calculation, with zero overhead under <code>torch.compile</code> / <code>jax.jit</code>.</i></p>
90
+ <h3><b>Unit-aware, dimension-correct physics computing — from a shared Rust core</b></h3>
91
+ <p><i>The same dimensional analysis and uncertainty engine, exposed as a standalone DSL (<code>phs</code>), this Python library, a Rust crate, and a JVM package — with zero overhead under <code>torch.compile</code> / <code>jax.jit</code> where it matters.</i></p>
92
92
 
93
93
  [![PyPI](https://img.shields.io/pypi/v/physure?color=F59E0B&labelColor=18181A)](https://pypi.org/project/physure/)
94
94
  [![crates.io](https://img.shields.io/crates/v/physure?color=F59E0B&labelColor=18181A)](https://crates.io/crates/physure)
95
+ [![Maven Central](https://img.shields.io/maven-central/v/io.github.alexisrx96/physure-java?color=F59E0B&labelColor=18181A)](https://central.sonatype.com/artifact/io.github.alexisrx96/physure-java)
95
96
  [![CI](https://img.shields.io/github/actions/workflow/status/Alexisrx96/physure/tests.yml?branch=main&labelColor=18181A)](https://github.com/Alexisrx96/physure/actions/workflows/tests.yml)
96
97
  [![Python 3.11–3.14](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-F59E0B?labelColor=18181A)](https://pypi.org/project/physure/)
97
98
  [![License: MIT](https://img.shields.io/badge/license-MIT-F59E0B?labelColor=18181A)](https://github.com/Alexisrx96/physure/blob/main/LICENSE)
@@ -100,6 +101,12 @@ Project-URL: Source, https://github.com/Alexisrx96/physure
100
101
 
101
102
  ---
102
103
 
104
+ This is the **Python package**. physure also ships as a standalone CLI/DSL that needs no Python
105
+ ([PHS](https://github.com/Alexisrx96/physure/blob/main/physure-cli/README.md)), a pure Rust
106
+ crate, and JVM bindings on Maven Central — see the
107
+ [project README](https://github.com/Alexisrx96/physure#readme) for all four and
108
+ [INSTALL.md](https://github.com/Alexisrx96/physure/blob/main/INSTALL.md) for every install path.
109
+
103
110
  ## Why physure?
104
111
 
105
112
  Most unit libraries make you choose between correctness and speed. **physure** *(physics + measure)* refuses the trade-off:
@@ -159,7 +166,7 @@ Choose the propagation mode globally or per-block:
159
166
  ```python
160
167
  import physure
161
168
 
162
- physure.propagation_mode("correlated") # full covariance (default: uncorrelated)
169
+ physure.propagation_mode("uncorrelated") # independent errors (default: correlated)
163
170
 
164
171
  with physure.uncertainty_mode("uncorrelated"):
165
172
  ... # scoped override
@@ -167,9 +174,11 @@ with physure.uncertainty_mode("uncorrelated"):
167
174
 
168
175
  Backends include Gaussian (first-order), Monte Carlo, and Unscented Transform. Covariance lives in a sparse Rust store, so large lineages stay fast and memory stays flat.
169
176
 
177
+ The default is correlated because the alternative is quietly wrong: with independent errors `x - x` reports `σ·√2` instead of zero, which looks plausible enough to publish. `[Settings] propagation_mode` in `physure.conf` sets it for a project, and both the core and PHS read it, so they cannot disagree.
178
+
170
179
  ### Batteries included, loaded lazily
171
180
 
172
- Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-aware `torch.nn` layers, Arrow IPC serialization, plotting helpers, and a physics-as-text DSL (`stress = 500 N / 2 m^2`) — each activates only when you use it. Cold import stays around **20 ms**.
181
+ Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-aware `torch.nn` layers, and Arrow IPC serialization each activate only when you use them. Cold import stays around **20 ms**.
173
182
 
174
183
  ## How it compares
175
184
 
@@ -180,6 +189,7 @@ Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-awar
180
189
  | Rust-accelerated core | ✅ | — | — | — |
181
190
  | `torch.compile` / `jax.jit` compatible | ✅ | — | — | — |
182
191
  | Static unit checking (mypy) | ✅ | — | — | — |
192
+ | Standalone CLI/DSL, no Python required | ✅ | — | — | — |
183
193
  | Runtime dependencies | none | none | astropy stack | numpy |
184
194
  | Ecosystem maturity | new | ✅ mature | ✅ mature | mature |
185
195
 
@@ -213,6 +223,7 @@ pip install "physure[all]" # everything
213
223
  git clone https://github.com/Alexisrx96/physure
214
224
  cd physure
215
225
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Rust, if needed
226
+ cd physure-python
216
227
  maturin develop --release
217
228
  uv sync --group dev
218
229
  ```
@@ -224,13 +235,14 @@ physure/ # Cargo workspace root
224
235
  ├── physure-core/ # 🦀 Pure Rust physics engine — no FFI deps
225
236
  │ └── src/ # units, quantity, covariance, uncertainty,
226
237
  │ # symbolic, Arrow serialization
227
- └── physure-python/ # 🐍 PyO3 bindings + Python application layer
238
+ └── physure-python/ # 🐍 PyO3 bindings + Python application layer (this package)
228
239
  └── physure/
229
240
  ├── domain/ # Quantity, units, dimensions, uncertainty
230
241
  ├── application/ # Q_ factory, unit-system context, startup
231
242
  ├── backends/ # NumPy / PyTorch / JAX adapters
232
243
  ├── _jit/ # tracing + compile-time dimension checks
233
- ├── ext/ # grammar DSL, IO, pandas, numba
244
+ ├── ext/ # IO, pandas, numba, chemistry, symbolic regression,
245
+ │ # AOT compiler, PHS plugin loader
234
246
  └── nn/ # unit-aware neural network layers
235
247
  ```
236
248
 
@@ -238,9 +250,9 @@ The rule: **physure-core is the single source of truth**. All math lives in Rust
238
250
 
239
251
  ## Documentation
240
252
 
241
- - [Unit reference](https://github.com/Alexisrx96/physure/blob/main/physure-python/docs/UNITS.md) — every unit, prefix, and constant
242
- - [Tutorials](https://github.com/Alexisrx96/physure/tree/main/physure-python/docs/tutorials/) and [examples](https://github.com/Alexisrx96/physure/tree/main/physure-python/examples/) — including a unit-checked [PINN notebook](https://github.com/Alexisrx96/physure/blob/main/physure-python/examples/pinn_harmonic_oscillator.ipynb)
243
- - [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/physure-python/docs/torch_compile_integration.md)
253
+ - [Unit reference](https://github.com/Alexisrx96/physure/blob/main/docs/UNITS.md) — every unit, prefix, and constant
254
+ - [Tutorials](https://github.com/Alexisrx96/physure/tree/main/docs/tutorials/) and [examples](https://github.com/Alexisrx96/physure/tree/main/physure-python/examples/) — including a unit-checked [PINN notebook](https://github.com/Alexisrx96/physure/blob/main/physure-python/examples/pinn_harmonic_oscillator.ipynb)
255
+ - [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/docs/torch_compile_integration.md)
244
256
 
245
257
  ## Contributing
246
258
 
@@ -5,11 +5,12 @@
5
5
  <img src="https://raw.githubusercontent.com/Alexisrx96/physure/main/assets/logo-horizontal-light.svg" alt="physure" width="440">
6
6
  </picture>
7
7
 
8
- <h3><b>Unit-aware, dimension-correct computing for Python — powered by a Rust core</b></h3>
9
- <p><i>Units, dimensions, and correlated uncertainty tracked through every calculation, with zero overhead under <code>torch.compile</code> / <code>jax.jit</code>.</i></p>
8
+ <h3><b>Unit-aware, dimension-correct physics computing — from a shared Rust core</b></h3>
9
+ <p><i>The same dimensional analysis and uncertainty engine, exposed as a standalone DSL (<code>phs</code>), this Python library, a Rust crate, and a JVM package — with zero overhead under <code>torch.compile</code> / <code>jax.jit</code> where it matters.</i></p>
10
10
 
11
11
  [![PyPI](https://img.shields.io/pypi/v/physure?color=F59E0B&labelColor=18181A)](https://pypi.org/project/physure/)
12
12
  [![crates.io](https://img.shields.io/crates/v/physure?color=F59E0B&labelColor=18181A)](https://crates.io/crates/physure)
13
+ [![Maven Central](https://img.shields.io/maven-central/v/io.github.alexisrx96/physure-java?color=F59E0B&labelColor=18181A)](https://central.sonatype.com/artifact/io.github.alexisrx96/physure-java)
13
14
  [![CI](https://img.shields.io/github/actions/workflow/status/Alexisrx96/physure/tests.yml?branch=main&labelColor=18181A)](https://github.com/Alexisrx96/physure/actions/workflows/tests.yml)
14
15
  [![Python 3.11–3.14](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-F59E0B?labelColor=18181A)](https://pypi.org/project/physure/)
15
16
  [![License: MIT](https://img.shields.io/badge/license-MIT-F59E0B?labelColor=18181A)](https://github.com/Alexisrx96/physure/blob/main/LICENSE)
@@ -18,6 +19,12 @@
18
19
 
19
20
  ---
20
21
 
22
+ This is the **Python package**. physure also ships as a standalone CLI/DSL that needs no Python
23
+ ([PHS](https://github.com/Alexisrx96/physure/blob/main/physure-cli/README.md)), a pure Rust
24
+ crate, and JVM bindings on Maven Central — see the
25
+ [project README](https://github.com/Alexisrx96/physure#readme) for all four and
26
+ [INSTALL.md](https://github.com/Alexisrx96/physure/blob/main/INSTALL.md) for every install path.
27
+
21
28
  ## Why physure?
22
29
 
23
30
  Most unit libraries make you choose between correctness and speed. **physure** *(physics + measure)* refuses the trade-off:
@@ -77,7 +84,7 @@ Choose the propagation mode globally or per-block:
77
84
  ```python
78
85
  import physure
79
86
 
80
- physure.propagation_mode("correlated") # full covariance (default: uncorrelated)
87
+ physure.propagation_mode("uncorrelated") # independent errors (default: correlated)
81
88
 
82
89
  with physure.uncertainty_mode("uncorrelated"):
83
90
  ... # scoped override
@@ -85,9 +92,11 @@ with physure.uncertainty_mode("uncorrelated"):
85
92
 
86
93
  Backends include Gaussian (first-order), Monte Carlo, and Unscented Transform. Covariance lives in a sparse Rust store, so large lineages stay fast and memory stays flat.
87
94
 
95
+ The default is correlated because the alternative is quietly wrong: with independent errors `x - x` reports `σ·√2` instead of zero, which looks plausible enough to publish. `[Settings] propagation_mode` in `physure.conf` sets it for a project, and both the core and PHS read it, so they cannot disagree.
96
+
88
97
  ### Batteries included, loaded lazily
89
98
 
90
- Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-aware `torch.nn` layers, Arrow IPC serialization, plotting helpers, and a physics-as-text DSL (`stress = 500 N / 2 m^2`) — each activates only when you use it. Cold import stays around **20 ms**.
99
+ Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-aware `torch.nn` layers, and Arrow IPC serialization each activate only when you use them. Cold import stays around **20 ms**.
91
100
 
92
101
  ## How it compares
93
102
 
@@ -98,6 +107,7 @@ Pandas ExtensionArray, pydantic validation, SymPy symbolic quantities, unit-awar
98
107
  | Rust-accelerated core | ✅ | — | — | — |
99
108
  | `torch.compile` / `jax.jit` compatible | ✅ | — | — | — |
100
109
  | Static unit checking (mypy) | ✅ | — | — | — |
110
+ | Standalone CLI/DSL, no Python required | ✅ | — | — | — |
101
111
  | Runtime dependencies | none | none | astropy stack | numpy |
102
112
  | Ecosystem maturity | new | ✅ mature | ✅ mature | mature |
103
113
 
@@ -131,6 +141,7 @@ pip install "physure[all]" # everything
131
141
  git clone https://github.com/Alexisrx96/physure
132
142
  cd physure
133
143
  curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Rust, if needed
144
+ cd physure-python
134
145
  maturin develop --release
135
146
  uv sync --group dev
136
147
  ```
@@ -142,13 +153,14 @@ physure/ # Cargo workspace root
142
153
  ├── physure-core/ # 🦀 Pure Rust physics engine — no FFI deps
143
154
  │ └── src/ # units, quantity, covariance, uncertainty,
144
155
  │ # symbolic, Arrow serialization
145
- └── physure-python/ # 🐍 PyO3 bindings + Python application layer
156
+ └── physure-python/ # 🐍 PyO3 bindings + Python application layer (this package)
146
157
  └── physure/
147
158
  ├── domain/ # Quantity, units, dimensions, uncertainty
148
159
  ├── application/ # Q_ factory, unit-system context, startup
149
160
  ├── backends/ # NumPy / PyTorch / JAX adapters
150
161
  ├── _jit/ # tracing + compile-time dimension checks
151
- ├── ext/ # grammar DSL, IO, pandas, numba
162
+ ├── ext/ # IO, pandas, numba, chemistry, symbolic regression,
163
+ │ # AOT compiler, PHS plugin loader
152
164
  └── nn/ # unit-aware neural network layers
153
165
  ```
154
166
 
@@ -156,9 +168,9 @@ The rule: **physure-core is the single source of truth**. All math lives in Rust
156
168
 
157
169
  ## Documentation
158
170
 
159
- - [Unit reference](https://github.com/Alexisrx96/physure/blob/main/physure-python/docs/UNITS.md) — every unit, prefix, and constant
160
- - [Tutorials](https://github.com/Alexisrx96/physure/tree/main/physure-python/docs/tutorials/) and [examples](https://github.com/Alexisrx96/physure/tree/main/physure-python/examples/) — including a unit-checked [PINN notebook](https://github.com/Alexisrx96/physure/blob/main/physure-python/examples/pinn_harmonic_oscillator.ipynb)
161
- - [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/physure-python/docs/torch_compile_integration.md)
171
+ - [Unit reference](https://github.com/Alexisrx96/physure/blob/main/docs/UNITS.md) — every unit, prefix, and constant
172
+ - [Tutorials](https://github.com/Alexisrx96/physure/tree/main/docs/tutorials/) and [examples](https://github.com/Alexisrx96/physure/tree/main/physure-python/examples/) — including a unit-checked [PINN notebook](https://github.com/Alexisrx96/physure/blob/main/physure-python/examples/pinn_harmonic_oscillator.ipynb)
173
+ - [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/docs/torch_compile_integration.md)
162
174
 
163
175
  ## Contributing
164
176