physure 0.2.3__tar.gz → 0.3.0__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 (445) hide show
  1. {physure-0.2.3 → physure-0.3.0}/Cargo.lock +276 -14
  2. {physure-0.2.3 → physure-0.3.0}/Cargo.toml +7 -5
  3. {physure-0.2.3 → physure-0.3.0}/PKG-INFO +22 -10
  4. {physure-0.2.3 → physure-0.3.0}/README.md +21 -9
  5. {physure-0.2.3 → physure-0.3.0}/physure/__init__.py +44 -9
  6. {physure-0.2.3 → physure-0.3.0}/physure/_core.pyi +43 -35
  7. physure-0.3.0/physure/_generated_types.py +6 -0
  8. physure-0.3.0/physure/_jit/__init__.py +4 -0
  9. {physure-0.2.3 → physure-0.3.0}/physure/_jit/tracer.py +1 -50
  10. physure-0.3.0/physure/application/context.py +342 -0
  11. {physure-0.2.3 → physure-0.3.0}/physure/application/factories.py +2 -42
  12. {physure-0.2.3 → physure-0.3.0}/physure/application/functions/functions.py +9 -3
  13. physure-0.3.0/physure/application/jit.py +59 -0
  14. physure-0.3.0/physure/application/parsing.py +46 -0
  15. {physure-0.2.3 → physure-0.3.0}/physure/application/startup.py +30 -195
  16. {physure-0.2.3 → physure-0.3.0}/physure/application/tracing/context.py +4 -23
  17. physure-0.3.0/physure/backends/affine.py +86 -0
  18. {physure-0.2.3 → physure-0.3.0}/physure/backends/jax_backend.py +6 -61
  19. {physure-0.2.3 → physure-0.3.0}/physure/backends/torch/autograd_store.py +2 -7
  20. {physure-0.2.3 → physure-0.3.0}/physure/backends/torch_backend.py +7 -7
  21. {physure-0.2.3 → physure-0.3.0}/physure/core/dispatcher.py +23 -0
  22. physure-0.3.0/physure/core/functional.py +285 -0
  23. {physure-0.2.3 → physure-0.3.0}/physure/core/registry.py +48 -33
  24. physure-0.3.0/physure/core/registry.pyi +13257 -0
  25. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/_arithmetic_mixin.py +127 -128
  26. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/base_entity.py +26 -3
  27. physure-0.3.0/physure/domain/measurement/conversion_plan.py +93 -0
  28. physure-0.3.0/physure/domain/measurement/definitions_text.py +169 -0
  29. physure-0.3.0/physure/domain/measurement/dimensions.py +302 -0
  30. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/quantity.py +195 -139
  31. physure-0.3.0/physure/domain/measurement/quantity_text.py +50 -0
  32. physure-0.3.0/physure/domain/measurement/system.py +241 -0
  33. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/uncertainty.py +355 -6
  34. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/units.py +127 -254
  35. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/vectorized_uncertainty.py +1 -78
  36. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/export.py +10 -3
  37. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/expression.py +10 -4
  38. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/native.py +63 -19
  39. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/quantity.py +14 -5
  40. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/tracer.py +25 -0
  41. {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/equivalency.py +6 -2
  42. {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/reaction.py +4 -5
  43. {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/species.py +8 -1
  44. {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/thermo_kinetics.py +14 -2
  45. {physure-0.2.3 → physure-0.3.0}/physure/ext/currency.py +3 -4
  46. {physure-0.2.3 → physure-0.3.0}/physure/ext/pandas_support.py +28 -2
  47. physure-0.3.0/physure/infrastructure/config/systems/international.conf +9 -0
  48. physure-0.3.0/physure/module.py +247 -0
  49. {physure-0.2.3 → physure-0.3.0}/physure/plotting.py +801 -0
  50. {physure-0.2.3 → physure-0.3.0}/physure/repl.py +19 -25
  51. {physure-0.2.3 → physure-0.3.0}/physure/scripts/generate_types.py +20 -14
  52. physure-0.3.0/physure/symbolic.py +450 -0
  53. physure-0.3.0/physure/units/__init__.py +30 -0
  54. physure-0.3.0/physure/units/__init__.pyi +13240 -0
  55. {physure-0.2.3 → physure-0.3.0}/physure-core/Cargo.toml +9 -0
  56. {physure-0.2.3 → physure-0.3.0}/physure-core/README.md +4 -1
  57. {physure-0.2.3 → physure-0.3.0}/physure-core/benches/core_benchmarks.rs +18 -15
  58. physure-0.3.0/physure-core/src/equation.rs +45 -0
  59. physure-0.3.0/physure-core/src/error.rs +107 -0
  60. {physure-0.2.3 → physure-0.3.0}/physure-core/src/lib.rs +11 -2
  61. physure-0.3.0/physure-core/src/linalg.rs +218 -0
  62. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/dual.rs +3 -0
  63. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/interval.rs +5 -0
  64. physure-0.3.0/physure-core/src/plotting.rs +931 -0
  65. physure-0.3.0/physure-core/src/quantity.rs +1164 -0
  66. physure-0.3.0/physure-core/src/settings.rs +230 -0
  67. physure-0.3.0/physure-core/src/uncertainty/gaussian.rs +118 -0
  68. physure-0.3.0/physure-core/src/uncertainty/lineage.rs +352 -0
  69. physure-0.3.0/physure-core/src/uncertainty/mod.rs +20 -0
  70. physure-0.3.0/physure-core/src/uncertainty/mode.rs +155 -0
  71. physure-0.3.0/physure-core/src/uncertainty/moments.rs +981 -0
  72. {physure-0.2.3 → physure-0.3.0}/physure-core/src/uncertainty/monte_carlo.rs +21 -0
  73. physure-0.3.0/physure-core/src/uncertainty/shapes.rs +400 -0
  74. physure-0.3.0/physure-core/src/uncertainty/tests.rs +728 -0
  75. physure-0.3.0/physure-core/src/uncertainty/trait_def.rs +394 -0
  76. {physure-0.2.3 → physure-0.3.0}/physure-core/src/uncertainty/unscented.rs +58 -8
  77. physure-0.3.0/physure-core/src/units/conf.rs +598 -0
  78. physure-0.3.0/physure-core/src/units/exact.rs +423 -0
  79. {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/mod.rs +4 -6
  80. {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/parser.rs +138 -40
  81. physure-0.3.0/physure-core/src/units/physure.conf +715 -0
  82. physure-0.3.0/physure-core/src/units/rational.rs +545 -0
  83. physure-0.3.0/physure-core/src/units/registry.rs +794 -0
  84. physure-0.3.0/physure-core/src/units/tests.rs +1025 -0
  85. physure-0.3.0/physure-core/src/vendor/OrbitControls.min.js +1045 -0
  86. physure-0.3.0/physure-core/src/vendor/three.min.js +6 -0
  87. {physure-0.2.3 → physure-0.3.0}/physure-core/tests/edge_cases_and_concurrency.rs +4 -4
  88. physure-0.3.0/physure-core/tests/unit_facts_golden.rs +31 -0
  89. {physure-0.2.3 → physure-0.3.0}/physure-python/Cargo.toml +5 -14
  90. physure-0.3.0/physure-python/Makefile +14 -0
  91. {physure-0.2.3 → physure-0.3.0}/physure-python/README.md +21 -9
  92. physure-0.3.0/physure-python/benchmarks/bench_unit_ops.py +56 -0
  93. {physure-0.2.3 → physure-0.3.0}/physure-python/examples/pandas_integration.py +9 -9
  94. {physure-0.2.3 → physure-0.3.0}/physure-python/mkdocs.yml +9 -0
  95. {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/generate_constants_config.py +12 -2
  96. {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/generate_units_readme.py +23 -9
  97. {physure-0.2.3 → physure-0.3.0}/physure-python/src/lib.rs +733 -135
  98. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/conftest.py +11 -10
  99. physure-0.3.0/physure-python/tests/core/golden/unit_semantics.json +311 -0
  100. physure-0.3.0/physure-python/tests/core/import_layers.toml +132 -0
  101. physure-0.3.0/physure-python/tests/core/test_backend_hooks.py +101 -0
  102. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_backends_and_quantity.py +1 -2
  103. physure-0.3.0/physure-python/tests/core/test_catalog_namespace.py +76 -0
  104. physure-0.3.0/physure-python/tests/core/test_conf_single_source.py +42 -0
  105. physure-0.3.0/physure-python/tests/core/test_dimensions_are_rational.py +68 -0
  106. physure-0.3.0/physure-python/tests/core/test_ensure_rational.py +20 -0
  107. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional_core.py +7 -8
  108. physure-0.3.0/physure-python/tests/core/test_import_layers.py +274 -0
  109. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_invariants.py +12 -14
  110. physure-0.3.0/physure-python/tests/core/test_module_bridge.py +124 -0
  111. physure-0.3.0/physure-python/tests/core/test_no_debug_output.py +23 -0
  112. physure-0.3.0/physure-python/tests/core/test_points_and_levels_are_the_cores.py +167 -0
  113. physure-0.3.0/physure-python/tests/core/test_quantity_text.py +41 -0
  114. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_registry.py +46 -0
  115. physure-0.3.0/physure-python/tests/core/test_registry_conversion.py +79 -0
  116. physure-0.3.0/physure-python/tests/core/test_registry_extend.py +66 -0
  117. physure-0.3.0/physure-python/tests/core/test_registry_facts.py +124 -0
  118. physure-0.3.0/physure-python/tests/core/test_relocated_modules.py +18 -0
  119. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_rust_parity.py +5 -2
  120. physure-0.3.0/physure-python/tests/core/test_system_registry.py +116 -0
  121. physure-0.3.0/physure-python/tests/core/test_system_registry_parity.py +164 -0
  122. physure-0.3.0/physure-python/tests/core/test_temperature_algebra_parity.py +81 -0
  123. physure-0.3.0/physure-python/tests/core/test_unit_algebra_parity.py +384 -0
  124. physure-0.3.0/physure-python/tests/core/test_unit_parser_is_the_cores.py +61 -0
  125. physure-0.3.0/physure-python/tests/core/test_units_are_rational.py +112 -0
  126. physure-0.3.0/physure-python/tests/core/test_units_are_the_cores.py +78 -0
  127. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/test_fit_service.py +2 -3
  128. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/test_solver.py +3 -4
  129. physure-0.3.0/physure-python/tests/ext/test_autograd.py +116 -0
  130. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_pandas_support.py +24 -17
  131. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_phs_native.py +2 -2
  132. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_workflow.py +6 -7
  133. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_advanced.py +1 -1
  134. physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_constants.py +44 -0
  135. physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_exact.py +96 -0
  136. physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_variants.py +89 -0
  137. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_constants_codata.py +25 -25
  138. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_conversions.py +36 -42
  139. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_conversions_realworld.py +6 -6
  140. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_correctness_fixes.py +34 -51
  141. physure-0.3.0/physure-python/tests/measurement_tests/test_definitions_text.py +152 -0
  142. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_lazy_prefixes.py +7 -8
  143. physure-0.3.0/physure-python/tests/measurement_tests/test_logarithmic_conversion.py +33 -0
  144. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_nonlinear_and_calculus.py +2 -2
  145. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_quantity.py +46 -10
  146. physure-0.3.0/physure-python/tests/measurement_tests/test_temperature_exact.py +97 -0
  147. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_uncertainty_models.py +7 -3
  148. physure-0.3.0/physure-python/tests/measurement_tests/test_unit_sugar.py +32 -0
  149. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_units.py +13 -15
  150. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/performance/benchmarks.py +1 -2
  151. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/strategies.py +27 -57
  152. physure-0.3.0/physure-python/tests/symbolic/test_active_system_default.py +55 -0
  153. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_native_expr.py +7 -1
  154. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_tracing.py +1 -1
  155. physure-0.3.0/physure-python/tests/test_asymmetric_moments.py +83 -0
  156. physure-0.3.0/physure-python/tests/test_foreign_bridge.py +290 -0
  157. physure-0.3.0/physure-python/tests/test_java_uncertainty.py +79 -0
  158. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_performance_and_interop.py +2 -3
  159. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_plotting.py +74 -0
  160. physure-0.3.0/physure-python/tests/test_transpiler_parity.py +123 -0
  161. physure-0.3.0/physure-python/tests/test_uncertainty_gum.py +318 -0
  162. physure-0.3.0/physure-python/tests/tools/test_stub_gen.py +55 -0
  163. {physure-0.2.3 → physure-0.3.0}/physure-python/uv.lock +43 -43
  164. {physure-0.2.3 → physure-0.3.0}/physure-script/Cargo.toml +6 -0
  165. physure-0.3.0/physure-script/sonar-project.properties +9 -0
  166. physure-0.3.0/physure-script/src/ast.rs +313 -0
  167. physure-0.3.0/physure-script/src/builtins/array.rs +290 -0
  168. physure-0.3.0/physure-script/src/builtins/calc.rs +733 -0
  169. physure-0.3.0/physure-script/src/builtins/core.rs +495 -0
  170. physure-0.3.0/physure-script/src/builtins/mod.rs +109 -0
  171. physure-0.3.0/physure-script/src/builtins/plot.rs +680 -0
  172. physure-0.3.0/physure-script/src/builtins/tests.rs +312 -0
  173. physure-0.3.0/physure-script/src/codegen/java.rs +524 -0
  174. physure-0.3.0/physure-script/src/codegen/js.rs +501 -0
  175. physure-0.3.0/physure-script/src/codegen/md.rs +174 -0
  176. physure-0.3.0/physure-script/src/codegen/mod.rs +809 -0
  177. physure-0.3.0/physure-script/src/codegen/proto.rs +103 -0
  178. physure-0.3.0/physure-script/src/codegen/python.rs +523 -0
  179. physure-0.3.0/physure-script/src/codegen/rust.rs +808 -0
  180. {physure-0.2.3 → physure-0.3.0}/physure-script/src/codegen/tests.rs +16 -0
  181. physure-0.3.0/physure-script/src/debug.rs +159 -0
  182. physure-0.3.0/physure-script/src/decorators.rs +420 -0
  183. {physure-0.2.3 → physure-0.3.0}/physure-script/src/exporter.rs +9 -0
  184. physure-0.3.0/physure-script/src/inspect.rs +171 -0
  185. physure-0.3.0/physure-script/src/interpreter/binary_ops.rs +237 -0
  186. physure-0.3.0/physure-script/src/interpreter/expressions.rs +650 -0
  187. physure-0.3.0/physure-script/src/interpreter/helpers.rs +84 -0
  188. physure-0.3.0/physure-script/src/interpreter/mod.rs +153 -0
  189. physure-0.3.0/physure-script/src/interpreter/statements.rs +357 -0
  190. physure-0.3.0/physure-script/src/interpreter/tests.rs +1274 -0
  191. {physure-0.2.3 → physure-0.3.0}/physure-script/src/lexer.rs +39 -9
  192. {physure-0.2.3 → physure-0.3.0}/physure-script/src/lib.rs +8 -0
  193. physure-0.3.0/physure-script/src/module.rs +816 -0
  194. physure-0.3.0/physure-script/src/parser/expressions.rs +494 -0
  195. physure-0.3.0/physure-script/src/parser/mod.rs +61 -0
  196. physure-0.3.0/physure-script/src/parser/quantities.rs +264 -0
  197. physure-0.3.0/physure-script/src/parser/shadowing.rs +216 -0
  198. physure-0.3.0/physure-script/src/parser/statements.rs +295 -0
  199. physure-0.3.0/physure-script/src/parser/tests.rs +503 -0
  200. physure-0.3.0/physure-script/src/phs.pest +212 -0
  201. physure-0.3.0/physure-script/src/pipeline.rs +467 -0
  202. {physure-0.2.3 → physure-0.3.0}/physure-script/src/plugin.rs +97 -29
  203. {physure-0.2.3 → physure-0.3.0}/physure-script/src/resolver.rs +1 -0
  204. physure-0.3.0/physure-script/src/symbolic/ast.rs +500 -0
  205. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/compiler.rs +1 -0
  206. physure-0.3.0/physure-script/src/symbolic/diff.rs +266 -0
  207. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/display.rs +41 -1
  208. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/expr.rs +113 -3
  209. physure-0.3.0/physure-script/src/symbolic/integrate.rs +568 -0
  210. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/mod.rs +7 -0
  211. physure-0.3.0/physure-script/src/symbolic/ode.rs +395 -0
  212. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/parser.rs +139 -6
  213. physure-0.3.0/physure-script/src/symbolic/series.rs +131 -0
  214. {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/solve.rs +80 -2
  215. physure-0.3.0/physure-script/src/symbolic/sym_matrix.rs +232 -0
  216. physure-0.3.0/physure-script/src/symbolic/tests.rs +579 -0
  217. physure-0.3.0/physure-script/src/symbolic/transforms.rs +247 -0
  218. {physure-0.2.3 → physure-0.3.0}/physure-script/src/value.rs +36 -0
  219. physure-0.3.0/physure-script/tests/lsp_never_panics.rs +143 -0
  220. physure-0.3.0/physure-script/tests/mathematical_correctness.rs +210 -0
  221. physure-0.3.0/physure-script/tests/transpile_parity_tests.rs +607 -0
  222. physure-0.3.0/physure-script/tests/unit_literal_regression.rs +1176 -0
  223. physure-0.3.0/physure-script/tests/unit_shadowing.rs +206 -0
  224. {physure-0.2.3 → physure-0.3.0}/pyproject.toml +4 -23
  225. physure-0.2.3/physure/_generated_types.py +0 -6
  226. physure-0.2.3/physure/_jit/__init__.py +0 -3
  227. physure-0.2.3/physure/application/context.py +0 -192
  228. physure-0.2.3/physure/application/parsing.py +0 -85
  229. physure-0.2.3/physure/core/functional.py +0 -394
  230. physure-0.2.3/physure/core/parsing/sanitizer.py +0 -89
  231. physure-0.2.3/physure/core/parsing/sympy_parser.py +0 -70
  232. physure-0.2.3/physure/core/parsing/transformer.py +0 -88
  233. physure-0.2.3/physure/core/registry.pyi +0 -5504
  234. physure-0.2.3/physure/domain/measurement/conversions.py +0 -117
  235. physure-0.2.3/physure/domain/measurement/converters.py +0 -159
  236. physure-0.2.3/physure/domain/measurement/dimensions.py +0 -347
  237. physure-0.2.3/physure/domain/measurement/ports/__init__.py +0 -8
  238. physure-0.2.3/physure/domain/measurement/ports/unit_repository.py +0 -20
  239. physure-0.2.3/physure/domain/measurement/system.py +0 -576
  240. physure-0.2.3/physure/ext/grammar.py +0 -1655
  241. physure-0.2.3/physure/infrastructure/config/physure.conf +0 -655
  242. physure-0.2.3/physure/infrastructure/config/systems/international.conf +0 -15
  243. physure-0.2.3/physure/symbolic.py +0 -198
  244. physure-0.2.3/physure/units/__init__.py +0 -28
  245. physure-0.2.3/physure/units/__init__.pyi +0 -5491
  246. physure-0.2.3/physure/units/_index.py +0 -5486
  247. physure-0.2.3/physure/units/core.py +0 -5489
  248. physure-0.2.3/physure/units/electromagnetism.py +0 -7
  249. physure-0.2.3/physure-core/src/error.rs +0 -56
  250. physure-0.2.3/physure-core/src/quantity.rs +0 -188
  251. physure-0.2.3/physure-core/src/uncertainty/gaussian.rs +0 -71
  252. physure-0.2.3/physure-core/src/uncertainty/mod.rs +0 -12
  253. physure-0.2.3/physure-core/src/uncertainty/tests.rs +0 -153
  254. physure-0.2.3/physure-core/src/uncertainty/trait_def.rs +0 -247
  255. physure-0.2.3/physure-core/src/units/conf.rs +0 -287
  256. physure-0.2.3/physure-core/src/units/converters.rs +0 -96
  257. physure-0.2.3/physure-core/src/units/definition.rs +0 -112
  258. physure-0.2.3/physure-core/src/units/physure.conf +0 -655
  259. physure-0.2.3/physure-core/src/units/rational.rs +0 -246
  260. physure-0.2.3/physure-core/src/units/registry.rs +0 -236
  261. physure-0.2.3/physure-core/src/units/tests.rs +0 -198
  262. physure-0.2.3/physure-python/Makefile +0 -28
  263. physure-0.2.3/physure-python/docs/UNITS.md +0 -786
  264. physure-0.2.3/physure-python/docs/benchmarks.md +0 -89
  265. physure-0.2.3/physure-python/docs/chemistry_roadmap.md +0 -215
  266. physure-0.2.3/physure-python/docs/diagrams_roadmap.md +0 -192
  267. physure-0.2.3/physure-python/docs/index.md +0 -40
  268. physure-0.2.3/physure-python/docs/reference/quantity.md +0 -3
  269. physure-0.2.3/physure-python/docs/scientific_roadmap.md +0 -316
  270. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-11-mkml-math-functions.md +0 -581
  271. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-11-mkml-notation-layer.md +0 -683
  272. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-12-mkml-user-functions.md +0 -1554
  273. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-kill-rust-fallback-illusion.md +0 -302
  274. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-rust-transcendental-delegation.md +0 -738
  275. physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-unit-parser-zero-exponent-guard.md +0 -205
  276. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-11-mkml-math-functions-design.md +0 -121
  277. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-11-notation-layer-design.md +0 -121
  278. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-12-mkml-user-functions-design.md +0 -192
  279. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-kill-rust-fallback-illusion-design.md +0 -68
  280. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-rust-transcendental-delegation-design.md +0 -162
  281. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-unit-parser-zero-exponent-guard-design.md +0 -101
  282. physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-20-phs-rust-engine-milestone.md +0 -33
  283. physure-0.2.3/physure-python/docs/symbolic_math_roadmap.md +0 -382
  284. physure-0.2.3/physure-python/docs/torch_compile_integration.md +0 -51
  285. physure-0.2.3/physure-python/docs/tutorials/01_best_practices.ipynb +0 -186
  286. physure-0.2.3/physure-python/docs/tutorials/jax_tutorial.ipynb +0 -109
  287. physure-0.2.3/physure-python/scripts/compile_units.py +0 -186
  288. physure-0.2.3/physure-python/tests/ext/test_autograd.py +0 -108
  289. physure-0.2.3/physure-python/tests/ext/test_grammar.py +0 -842
  290. physure-0.2.3/physure-python/tests/test_uncertainty_gum.py +0 -150
  291. physure-0.2.3/physure-python/tests/tools/test_stub_gen.py +0 -64
  292. physure-0.2.3/physure-script/src/ast.rs +0 -185
  293. physure-0.2.3/physure-script/src/builtins.rs +0 -892
  294. physure-0.2.3/physure-script/src/codegen/java.rs +0 -200
  295. physure-0.2.3/physure-script/src/codegen/mod.rs +0 -41
  296. physure-0.2.3/physure-script/src/codegen/python.rs +0 -220
  297. physure-0.2.3/physure-script/src/codegen/rust.rs +0 -192
  298. physure-0.2.3/physure-script/src/function.rs +0 -350
  299. physure-0.2.3/physure-script/src/interpreter.rs +0 -833
  300. physure-0.2.3/physure-script/src/mod.rs +0 -163
  301. physure-0.2.3/physure-script/src/parser.rs +0 -735
  302. physure-0.2.3/physure-script/src/phs.pest +0 -70
  303. physure-0.2.3/physure-script/src/symbolic/ast.rs +0 -281
  304. physure-0.2.3/physure-script/src/symbolic/diff.rs +0 -130
  305. physure-0.2.3/physure-script/src/symbolic/integrate.rs +0 -277
  306. physure-0.2.3/physure-script/src/symbolic/tests.rs +0 -260
  307. {physure-0.2.3 → physure-0.3.0}/LICENSE +0 -0
  308. {physure-0.2.3 → physure-0.3.0}/physure/__main__.py +0 -0
  309. {physure-0.2.3 → physure-0.3.0}/physure/application/__init__.py +0 -0
  310. {physure-0.2.3 → physure-0.3.0}/physure/application/fit_service.py +0 -0
  311. {physure-0.2.3 → physure-0.3.0}/physure/application/functions/__init__.py +0 -0
  312. {physure-0.2.3 → physure-0.3.0}/physure/application/io.py +0 -0
  313. {physure-0.2.3 → physure-0.3.0}/physure/application/solver_service.py +0 -0
  314. {physure-0.2.3 → physure-0.3.0}/physure/backends/__init__.py +0 -0
  315. {physure-0.2.3 → physure-0.3.0}/physure/backends/core_backend.py +0 -0
  316. {physure-0.2.3 → physure-0.3.0}/physure/backends/kernels/covariance.py +0 -0
  317. {physure-0.2.3 → physure-0.3.0}/physure/backends/numpy_backend.py +0 -0
  318. {physure-0.2.3 → physure-0.3.0}/physure/backends/python_backend.py +0 -0
  319. {physure-0.2.3 → physure-0.3.0}/physure/cli.py +0 -0
  320. {physure-0.2.3 → physure-0.3.0}/physure/constants.py +0 -0
  321. {physure-0.2.3 → physure-0.3.0}/physure/core/__init__.py +0 -0
  322. {physure-0.2.3 → physure-0.3.0}/physure/core/autograd.py +0 -0
  323. {physure-0.2.3 → physure-0.3.0}/physure/core/formatting.py +0 -0
  324. {physure-0.2.3 → physure-0.3.0}/physure/core/protocols.py +0 -0
  325. {physure-0.2.3 → physure-0.3.0}/physure/domain/__init__.py +0 -0
  326. {physure-0.2.3 → physure-0.3.0}/physure/domain/exceptions.py +0 -0
  327. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/__init__.py +0 -0
  328. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/_backend_mixin.py +0 -0
  329. {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/equivalencies.py +0 -0
  330. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/__init__.py +0 -0
  331. {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/graph.py +0 -0
  332. {physure-0.2.3 → physure-0.3.0}/physure/ext/__init__.py +0 -0
  333. {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/__init__.py +0 -0
  334. {physure-0.2.3 → physure-0.3.0}/physure/ext/compiler.py +0 -0
  335. {physure-0.2.3 → physure-0.3.0}/physure/ext/helpers.py +0 -0
  336. {physure-0.2.3 → physure-0.3.0}/physure/ext/io.py +0 -0
  337. {physure-0.2.3 → physure-0.3.0}/physure/ext/numba_support.py +0 -0
  338. {physure-0.2.3 → physure-0.3.0}/physure/ext/phs_loader.py +0 -0
  339. {physure-0.2.3 → physure-0.3.0}/physure/ext/symbolic_regression.py +0 -0
  340. {physure-0.2.3 → physure-0.3.0}/physure/functional.py +0 -0
  341. {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/__init__.py +0 -0
  342. {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/config/systems/__init__.py +0 -0
  343. {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/config/systems/imperial.conf +0 -0
  344. {physure-0.2.3 → physure-0.3.0}/physure/nn/__init__.py +0 -0
  345. {physure-0.2.3 → physure-0.3.0}/physure/nn/layers.py +0 -0
  346. {physure-0.2.3 → physure-0.3.0}/physure/nn/loss.py +0 -0
  347. {physure-0.2.3 → physure-0.3.0}/physure/nn/networks.py +0 -0
  348. {physure-0.2.3 → physure-0.3.0}/physure/nn/utils.py +0 -0
  349. {physure-0.2.3 → physure-0.3.0}/physure/pandas_ext.py +0 -0
  350. {physure-0.2.3 → physure-0.3.0}/physure/py.typed +0 -0
  351. {physure-0.2.3 → physure-0.3.0}/physure-core/.cargo/config.toml +0 -0
  352. {physure-0.2.3 → physure-0.3.0}/physure-core/.github/workflows/CI.yml +0 -0
  353. {physure-0.2.3 → physure-0.3.0}/physure-core/.gitignore +0 -0
  354. {physure-0.2.3 → physure-0.3.0}/physure-core/Cargo.lock +0 -0
  355. {physure-0.2.3 → physure-0.3.0}/physure-core/LICENSE +0 -0
  356. {physure-0.2.3 → physure-0.3.0}/physure-core/examples/quickstart.rs +0 -0
  357. {physure-0.2.3 → physure-0.3.0}/physure-core/scripts/filter_lcov.py +0 -0
  358. {physure-0.2.3 → physure-0.3.0}/physure-core/sonar-project.properties +0 -0
  359. {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/arrow.rs +0 -0
  360. {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/mod.rs +0 -0
  361. {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/pruning.rs +0 -0
  362. {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/store.rs +0 -0
  363. {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/tests.rs +0 -0
  364. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/dimension_vector.rs +0 -0
  365. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/hessian_propagation.rs +0 -0
  366. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/mod.rs +0 -0
  367. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/sparse_kernels.rs +0 -0
  368. {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/tests.rs +0 -0
  369. {physure-0.2.3 → physure-0.3.0}/physure-core/src/serialization.rs +0 -0
  370. {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/dimension.rs +0 -0
  371. {physure-0.2.3 → physure-0.3.0}/physure-python/LICENSE +0 -0
  372. {physure-0.2.3 → physure-0.3.0}/physure-python/MANIFEST.in +0 -0
  373. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_comparison.py +0 -0
  374. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_lineage.py +0 -0
  375. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_propagation.py +0 -0
  376. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_vectorized.py +0 -0
  377. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/comprehensive_plot.py +0 -0
  378. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/profile_vectorized.py +0 -0
  379. {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/run_compile_bench.py +0 -0
  380. {physure-0.2.3 → physure-0.3.0}/physure-python/examples/advanced_physics.py +0 -0
  381. {physure-0.2.3 → physure-0.3.0}/physure-python/examples/pinn_harmonic_oscillator.ipynb +0 -0
  382. {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/benchmark_import.py +0 -0
  383. {physure-0.2.3 → physure-0.3.0}/physure-python/sonar-project.properties +0 -0
  384. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/__init__.py +0 -0
  385. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/__init__.py +0 -0
  386. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_backends.py +0 -0
  387. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_concurrency.py +0 -0
  388. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_consistency.py +0 -0
  389. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_covariance_store.py +0 -0
  390. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional.py +0 -0
  391. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional_jax.py +0 -0
  392. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_gradients.py +0 -0
  393. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_jit.py +0 -0
  394. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_pydantic.py +0 -0
  395. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_serialization.py +0 -0
  396. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_sparse_backends.py +0 -0
  397. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_vectorized_unc.py +0 -0
  398. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/domain/test_bare_number_add_sub.py +0 -0
  399. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/__init__.py +0 -0
  400. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_chemistry_integration.py +0 -0
  401. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_compiler.py +0 -0
  402. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_currency.py +0 -0
  403. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_io.py +0 -0
  404. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_molar_equivalency.py +0 -0
  405. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_phs_loader.py +0 -0
  406. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_reaction.py +0 -0
  407. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_species.py +0 -0
  408. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_symbolic_regression.py +0 -0
  409. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_thermo_kinetics.py +0 -0
  410. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_torch_compile.py +0 -0
  411. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/functions/__init__.py +0 -0
  412. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/functions/test_functions.py +0 -0
  413. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/__init__.py +0 -0
  414. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_measurement_system.py +0 -0
  415. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_physics_realworld.py +0 -0
  416. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/__init__.py +0 -0
  417. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_affine_arithmetic.py +0 -0
  418. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_api.py +0 -0
  419. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_autograd_propagation.py +0 -0
  420. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_backend_mixin.py +0 -0
  421. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_constants_module.py +0 -0
  422. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_dimensions.py +0 -0
  423. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/__init__.py +0 -0
  424. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_base_entity.py +0 -0
  425. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_lexer.py +0 -0
  426. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_parsers.py +0 -0
  427. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/__init__.py +0 -0
  428. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/test_integration.py +0 -0
  429. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/test_nn_utils.py +0 -0
  430. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/__init__.py +0 -0
  431. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_calculus.py +0 -0
  432. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_native_coverage.py +0 -0
  433. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_solve_all.py +0 -0
  434. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_solver.py +0 -0
  435. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_ecosystem.py +0 -0
  436. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_equivalencies.py +0 -0
  437. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_jit_core.py +0 -0
  438. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_jit_uncertainty.py +0 -0
  439. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_new_features.py +0 -0
  440. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_repl.py +0 -0
  441. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_rust_transcendental_delegation.py +0 -0
  442. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_uncertainty.py +0 -0
  443. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_uncertainty_api.py +0 -0
  444. {physure-0.2.3 → physure-0.3.0}/physure-python/tests/tools/__init__.py +0 -0
  445. {physure-0.2.3 → physure-0.3.0}/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,15 +1939,17 @@ 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",
1952
+ "num-bigint",
1920
1953
  "num-rational",
1921
1954
  "num-traits",
1922
1955
  "rand",
@@ -1929,25 +1962,29 @@ dependencies = [
1929
1962
 
1930
1963
  [[package]]
1931
1964
  name = "physure-cli"
1932
- version = "0.2.3"
1965
+ version = "0.2.4"
1933
1966
  dependencies = [
1934
1967
  "arboard",
1935
1968
  "chrono",
1936
1969
  "crossterm",
1937
1970
  "dirs",
1971
+ "libloading",
1938
1972
  "open",
1939
1973
  "physure",
1940
1974
  "physure-script",
1941
1975
  "ratatui",
1976
+ "semver",
1942
1977
  "serde",
1943
1978
  "serde_json",
1944
1979
  "tiny_http",
1980
+ "toml",
1981
+ "ureq",
1945
1982
  "winreg",
1946
1983
  ]
1947
1984
 
1948
1985
  [[package]]
1949
1986
  name = "physure-java"
1950
- version = "0.2.3"
1987
+ version = "0.2.4"
1951
1988
  dependencies = [
1952
1989
  "jni",
1953
1990
  "num-rational",
@@ -1957,7 +1994,7 @@ dependencies = [
1957
1994
 
1958
1995
  [[package]]
1959
1996
  name = "physure-lsp"
1960
- version = "0.2.3"
1997
+ version = "0.2.4"
1961
1998
  dependencies = [
1962
1999
  "physure",
1963
2000
  "physure-script",
@@ -1967,27 +2004,19 @@ dependencies = [
1967
2004
 
1968
2005
  [[package]]
1969
2006
  name = "physure-python"
1970
- version = "0.2.3"
2007
+ version = "0.2.4"
1971
2008
  dependencies = [
1972
- "arrow",
1973
- "chrono",
1974
- "dyn-clone",
1975
- "nalgebra",
1976
- "ndarray 0.15.6",
1977
2009
  "num-rational",
1978
2010
  "num-traits",
1979
2011
  "numpy",
1980
2012
  "physure",
1981
2013
  "physure-script",
1982
2014
  "pyo3",
1983
- "rand",
1984
- "rand_distr",
1985
- "sprs",
1986
2015
  ]
1987
2016
 
1988
2017
  [[package]]
1989
2018
  name = "physure-script"
1990
- version = "0.2.3"
2019
+ version = "0.2.4"
1991
2020
  dependencies = [
1992
2021
  "libloading",
1993
2022
  "num-rational",
@@ -1995,10 +2024,23 @@ dependencies = [
1995
2024
  "pest",
1996
2025
  "pest_derive",
1997
2026
  "physure",
2027
+ "rayon",
1998
2028
  "serde",
1999
2029
  "serde_json",
2000
2030
  ]
2001
2031
 
2032
+ [[package]]
2033
+ name = "physure-wasm"
2034
+ version = "0.2.4"
2035
+ dependencies = [
2036
+ "console_error_panic_hook",
2037
+ "js-sys",
2038
+ "physure",
2039
+ "physure-script",
2040
+ "wasm-bindgen",
2041
+ "wasm-bindgen-test",
2042
+ ]
2043
+
2002
2044
  [[package]]
2003
2045
  name = "pin-project"
2004
2046
  version = "1.1.13"
@@ -2333,6 +2375,20 @@ version = "0.8.11"
2333
2375
  source = "registry+https://github.com/rust-lang/crates.io-index"
2334
2376
  checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
2335
2377
 
2378
+ [[package]]
2379
+ name = "ring"
2380
+ version = "0.17.14"
2381
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2382
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
2383
+ dependencies = [
2384
+ "cc",
2385
+ "cfg-if",
2386
+ "getrandom 0.2.17",
2387
+ "libc",
2388
+ "untrusted",
2389
+ "windows-sys 0.52.0",
2390
+ ]
2391
+
2336
2392
  [[package]]
2337
2393
  name = "rustc-hash"
2338
2394
  version = "2.1.3"
@@ -2374,6 +2430,41 @@ dependencies = [
2374
2430
  "windows-sys 0.61.2",
2375
2431
  ]
2376
2432
 
2433
+ [[package]]
2434
+ name = "rustls"
2435
+ version = "0.23.43"
2436
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2437
+ checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
2438
+ dependencies = [
2439
+ "log",
2440
+ "once_cell",
2441
+ "ring",
2442
+ "rustls-pki-types",
2443
+ "rustls-webpki",
2444
+ "subtle",
2445
+ "zeroize",
2446
+ ]
2447
+
2448
+ [[package]]
2449
+ name = "rustls-pki-types"
2450
+ version = "1.15.1"
2451
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2452
+ checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
2453
+ dependencies = [
2454
+ "zeroize",
2455
+ ]
2456
+
2457
+ [[package]]
2458
+ name = "rustls-webpki"
2459
+ version = "0.103.15"
2460
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2461
+ checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
2462
+ dependencies = [
2463
+ "ring",
2464
+ "rustls-pki-types",
2465
+ "untrusted",
2466
+ ]
2467
+
2377
2468
  [[package]]
2378
2469
  name = "rustversion"
2379
2470
  version = "1.0.23"
@@ -2470,6 +2561,15 @@ dependencies = [
2470
2561
  "syn 3.0.2",
2471
2562
  ]
2472
2563
 
2564
+ [[package]]
2565
+ name = "serde_spanned"
2566
+ version = "0.6.9"
2567
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2568
+ checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
2569
+ dependencies = [
2570
+ "serde",
2571
+ ]
2572
+
2473
2573
  [[package]]
2474
2574
  name = "shlex"
2475
2575
  version = "2.0.1"
@@ -2603,6 +2703,12 @@ dependencies = [
2603
2703
  "syn 2.0.119",
2604
2704
  ]
2605
2705
 
2706
+ [[package]]
2707
+ name = "subtle"
2708
+ version = "2.6.1"
2709
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2710
+ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
2711
+
2606
2712
  [[package]]
2607
2713
  name = "syn"
2608
2714
  version = "2.0.119"
@@ -2758,6 +2864,47 @@ dependencies = [
2758
2864
  "tokio",
2759
2865
  ]
2760
2866
 
2867
+ [[package]]
2868
+ name = "toml"
2869
+ version = "0.8.23"
2870
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2871
+ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
2872
+ dependencies = [
2873
+ "serde",
2874
+ "serde_spanned",
2875
+ "toml_datetime",
2876
+ "toml_edit",
2877
+ ]
2878
+
2879
+ [[package]]
2880
+ name = "toml_datetime"
2881
+ version = "0.6.11"
2882
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2883
+ checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
2884
+ dependencies = [
2885
+ "serde",
2886
+ ]
2887
+
2888
+ [[package]]
2889
+ name = "toml_edit"
2890
+ version = "0.22.27"
2891
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2892
+ checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
2893
+ dependencies = [
2894
+ "indexmap",
2895
+ "serde",
2896
+ "serde_spanned",
2897
+ "toml_datetime",
2898
+ "toml_write",
2899
+ "winnow",
2900
+ ]
2901
+
2902
+ [[package]]
2903
+ name = "toml_write"
2904
+ version = "0.1.2"
2905
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2906
+ checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
2907
+
2761
2908
  [[package]]
2762
2909
  name = "tower"
2763
2910
  version = "0.4.13"
@@ -2896,6 +3043,30 @@ version = "0.2.4"
2896
3043
  source = "registry+https://github.com/rust-lang/crates.io-index"
2897
3044
  checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
2898
3045
 
3046
+ [[package]]
3047
+ name = "untrusted"
3048
+ version = "0.9.0"
3049
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3050
+ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
3051
+
3052
+ [[package]]
3053
+ name = "ureq"
3054
+ version = "2.12.1"
3055
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3056
+ checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
3057
+ dependencies = [
3058
+ "base64",
3059
+ "flate2",
3060
+ "log",
3061
+ "once_cell",
3062
+ "rustls",
3063
+ "rustls-pki-types",
3064
+ "serde",
3065
+ "serde_json",
3066
+ "url",
3067
+ "webpki-roots 0.26.11",
3068
+ ]
3069
+
2899
3070
  [[package]]
2900
3071
  name = "url"
2901
3072
  version = "2.5.8"
@@ -2959,6 +3130,16 @@ dependencies = [
2959
3130
  "wasm-bindgen-shared",
2960
3131
  ]
2961
3132
 
3133
+ [[package]]
3134
+ name = "wasm-bindgen-futures"
3135
+ version = "0.4.76"
3136
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3137
+ checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d"
3138
+ dependencies = [
3139
+ "js-sys",
3140
+ "wasm-bindgen",
3141
+ ]
3142
+
2962
3143
  [[package]]
2963
3144
  name = "wasm-bindgen-macro"
2964
3145
  version = "0.2.126"
@@ -2991,6 +3172,45 @@ dependencies = [
2991
3172
  "unicode-ident",
2992
3173
  ]
2993
3174
 
3175
+ [[package]]
3176
+ name = "wasm-bindgen-test"
3177
+ version = "0.3.76"
3178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3179
+ checksum = "2a0d555ca874445df8d314f94f5c948a4e74e5418f332c89f660a3d8310a96f4"
3180
+ dependencies = [
3181
+ "async-trait",
3182
+ "cast",
3183
+ "js-sys",
3184
+ "libm",
3185
+ "minicov",
3186
+ "nu-ansi-term",
3187
+ "num-traits",
3188
+ "oorandom",
3189
+ "serde",
3190
+ "serde_json",
3191
+ "wasm-bindgen",
3192
+ "wasm-bindgen-futures",
3193
+ "wasm-bindgen-test-macro",
3194
+ "wasm-bindgen-test-shared",
3195
+ ]
3196
+
3197
+ [[package]]
3198
+ name = "wasm-bindgen-test-macro"
3199
+ version = "0.3.76"
3200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3201
+ checksum = "94eb68555b95bcea5e8cf4abe280b529049479fa995bfc23734af96a6aedc120"
3202
+ dependencies = [
3203
+ "proc-macro2",
3204
+ "quote",
3205
+ "syn 2.0.119",
3206
+ ]
3207
+
3208
+ [[package]]
3209
+ name = "wasm-bindgen-test-shared"
3210
+ version = "0.2.126"
3211
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3212
+ checksum = "c31d56021e873866c968588ed85ccdf56db5c426e44afdb4618c39895104b920"
3213
+
2994
3214
  [[package]]
2995
3215
  name = "web-sys"
2996
3216
  version = "0.3.103"
@@ -3001,6 +3221,24 @@ dependencies = [
3001
3221
  "wasm-bindgen",
3002
3222
  ]
3003
3223
 
3224
+ [[package]]
3225
+ name = "webpki-roots"
3226
+ version = "0.26.11"
3227
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3228
+ checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
3229
+ dependencies = [
3230
+ "webpki-roots 1.0.9",
3231
+ ]
3232
+
3233
+ [[package]]
3234
+ name = "webpki-roots"
3235
+ version = "1.0.9"
3236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3237
+ checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
3238
+ dependencies = [
3239
+ "rustls-pki-types",
3240
+ ]
3241
+
3004
3242
  [[package]]
3005
3243
  name = "weezl"
3006
3244
  version = "0.1.12"
@@ -3125,6 +3363,15 @@ dependencies = [
3125
3363
  "windows-targets 0.48.5",
3126
3364
  ]
3127
3365
 
3366
+ [[package]]
3367
+ name = "windows-sys"
3368
+ version = "0.52.0"
3369
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3370
+ checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
3371
+ dependencies = [
3372
+ "windows-targets 0.52.6",
3373
+ ]
3374
+
3128
3375
  [[package]]
3129
3376
  name = "windows-sys"
3130
3377
  version = "0.59.0"
@@ -3395,6 +3642,15 @@ version = "0.53.1"
3395
3642
  source = "registry+https://github.com/rust-lang/crates.io-index"
3396
3643
  checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
3397
3644
 
3645
+ [[package]]
3646
+ name = "winnow"
3647
+ version = "0.7.15"
3648
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3649
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
3650
+ dependencies = [
3651
+ "memchr",
3652
+ ]
3653
+
3398
3654
  [[package]]
3399
3655
  name = "winreg"
3400
3656
  version = "0.52.0"
@@ -3498,6 +3754,12 @@ dependencies = [
3498
3754
  "synstructure",
3499
3755
  ]
3500
3756
 
3757
+ [[package]]
3758
+ name = "zeroize"
3759
+ version = "1.9.0"
3760
+ source = "registry+https://github.com/rust-lang/crates.io-index"
3761
+ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
3762
+
3501
3763
  [[package]]
3502
3764
  name = "zerotrie"
3503
3765
  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"
@@ -23,6 +23,7 @@ physure-core = { path = "physure-core", package = "physure" }
23
23
  physure-script = { path = "physure-script" }
24
24
  tower-lsp = "0.20"
25
25
  tokio = { version = "1", features = ["full"] }
26
+ num-bigint = "0.4"
26
27
  num-rational = "0.4"
27
28
  num-traits = "0.2"
28
29
  ndarray = "0.15"
@@ -41,10 +42,11 @@ pyo3 = { version = "0.25", features = ["extension-module", "abi3-py311"
41
42
  numpy = "0.25"
42
43
 
43
44
  # ── Shared release profile ──────────────────────────────────────────────────
44
- # panic must stay "unwind" (the default): both crates build as PyO3 extension
45
- # modules (rlib/cdylib, no standalone binaries), and PyO3's panic -> PanicException
46
- # conversion requires catch_unwind. "abort" would turn any Rust panic into a
47
- # process-killing SIGABRT instead of a catchable Python exception.
45
+ # panic must stay "unwind" (the default): physure-python builds as a PyO3 extension
46
+ # module, and PyO3's panic -> PanicException conversion requires catch_unwind.
47
+ # "abort" would turn any Rust panic into a process-killing SIGABRT instead of a
48
+ # catchable Python exception. The profile is workspace-wide, so the phs and
49
+ # language-server binaries are built with unwind too.
48
50
  [profile.release]
49
51
  lto = true
50
52
  codegen-units = 1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: physure
3
- Version: 0.2.3
3
+ Version: 0.3.0
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