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.
- {physure-0.2.3 → physure-0.2.4}/Cargo.lock +275 -6
- {physure-0.2.3 → physure-0.2.4}/Cargo.toml +1 -1
- {physure-0.2.3 → physure-0.2.4}/PKG-INFO +22 -10
- {physure-0.2.3 → physure-0.2.4}/README.md +21 -9
- {physure-0.2.3 → physure-0.2.4}/physure/__init__.py +42 -3
- {physure-0.2.3 → physure-0.2.4}/physure/_core.pyi +11 -0
- physure-0.2.4/physure/application/context.py +342 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/functions/functions.py +7 -1
- {physure-0.2.3 → physure-0.2.4}/physure/application/startup.py +15 -2
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/quantity.py +142 -20
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/uncertainty.py +300 -6
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/export.py +10 -3
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/expression.py +7 -1
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/native.py +63 -19
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/quantity.py +10 -3
- {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/reaction.py +4 -5
- {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/species.py +6 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/thermo_kinetics.py +8 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/pandas_support.py +28 -2
- {physure-0.2.3/physure-core/src/units → physure-0.2.4/physure/infrastructure/config}/physure.conf +2 -0
- physure-0.2.4/physure/module.py +247 -0
- {physure-0.2.3 → physure-0.2.4}/physure/plotting.py +801 -0
- {physure-0.2.3 → physure-0.2.4}/physure/repl.py +19 -25
- physure-0.2.4/physure/symbolic.py +450 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/Cargo.toml +8 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/README.md +4 -1
- physure-0.2.4/physure-core/src/equation.rs +45 -0
- physure-0.2.4/physure-core/src/error.rs +107 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/lib.rs +10 -1
- physure-0.2.4/physure-core/src/linalg.rs +218 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/dual.rs +3 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/interval.rs +5 -0
- physure-0.2.4/physure-core/src/plotting.rs +931 -0
- physure-0.2.4/physure-core/src/quantity.rs +984 -0
- physure-0.2.4/physure-core/src/settings.rs +230 -0
- physure-0.2.4/physure-core/src/uncertainty/gaussian.rs +113 -0
- physure-0.2.4/physure-core/src/uncertainty/lineage.rs +352 -0
- physure-0.2.4/physure-core/src/uncertainty/mod.rs +20 -0
- physure-0.2.4/physure-core/src/uncertainty/mode.rs +155 -0
- physure-0.2.4/physure-core/src/uncertainty/moments.rs +976 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/uncertainty/monte_carlo.rs +19 -0
- physure-0.2.4/physure-core/src/uncertainty/shapes.rs +400 -0
- physure-0.2.4/physure-core/src/uncertainty/tests.rs +728 -0
- physure-0.2.4/physure-core/src/uncertainty/trait_def.rs +390 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/uncertainty/unscented.rs +56 -8
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/conf.rs +156 -17
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/parser.rs +77 -8
- {physure-0.2.3/physure/infrastructure/config → physure-0.2.4/physure-core/src/units}/physure.conf +36 -7
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/rational.rs +93 -8
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/registry.rs +131 -21
- physure-0.2.4/physure-core/src/units/tests.rs +348 -0
- physure-0.2.4/physure-core/src/vendor/OrbitControls.min.js +1045 -0
- physure-0.2.4/physure-core/src/vendor/three.min.js +6 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/tests/edge_cases_and_concurrency.rs +4 -4
- physure-0.2.4/physure-python/.cache/mkdocs-jupyter/02523ce70219dd05bed0cd384568f6698000105cf7c422878d5517c238a6dad0.json +1 -0
- physure-0.2.4/physure-python/.cache/mkdocs-jupyter/be0f3edde7644f4389cc447095383f9e9c470d6c676d0b37cf4797eb3d9a1275.json +1 -0
- physure-0.2.4/physure-python/Makefile +14 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/README.md +21 -9
- {physure-0.2.3 → physure-0.2.4}/physure-python/examples/pandas_integration.py +9 -9
- {physure-0.2.3 → physure-0.2.4}/physure-python/mkdocs.yml +7 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/generate_units_readme.py +6 -4
- {physure-0.2.3 → physure-0.2.4}/physure-python/src/lib.rs +505 -13
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/conftest.py +4 -0
- physure-0.2.4/physure-python/tests/core/test_module_bridge.py +124 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_rust_parity.py +5 -2
- physure-0.2.4/physure-python/tests/ext/test_autograd.py +116 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_pandas_support.py +24 -17
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_phs_native.py +2 -2
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_quantity.py +37 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_uncertainty_models.py +7 -3
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_native_expr.py +7 -1
- physure-0.2.4/physure-python/tests/test_asymmetric_moments.py +83 -0
- physure-0.2.4/physure-python/tests/test_foreign_bridge.py +290 -0
- physure-0.2.4/physure-python/tests/test_java_uncertainty.py +79 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_performance_and_interop.py +2 -3
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_plotting.py +74 -0
- physure-0.2.4/physure-python/tests/test_transpiler_parity.py +123 -0
- physure-0.2.4/physure-python/tests/test_uncertainty_gum.py +318 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/uv.lock +43 -43
- {physure-0.2.3 → physure-0.2.4}/physure-script/Cargo.toml +6 -0
- physure-0.2.4/physure-script/sonar-project.properties +9 -0
- physure-0.2.4/physure-script/src/ast.rs +313 -0
- physure-0.2.4/physure-script/src/builtins/array.rs +290 -0
- physure-0.2.4/physure-script/src/builtins/calc.rs +733 -0
- physure-0.2.4/physure-script/src/builtins/core.rs +495 -0
- physure-0.2.4/physure-script/src/builtins/mod.rs +109 -0
- physure-0.2.4/physure-script/src/builtins/plot.rs +680 -0
- physure-0.2.4/physure-script/src/builtins/tests.rs +312 -0
- physure-0.2.4/physure-script/src/codegen/java.rs +524 -0
- physure-0.2.4/physure-script/src/codegen/js.rs +501 -0
- physure-0.2.4/physure-script/src/codegen/md.rs +174 -0
- physure-0.2.4/physure-script/src/codegen/mod.rs +809 -0
- physure-0.2.4/physure-script/src/codegen/proto.rs +103 -0
- physure-0.2.4/physure-script/src/codegen/python.rs +523 -0
- physure-0.2.4/physure-script/src/codegen/rust.rs +808 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/codegen/tests.rs +16 -0
- physure-0.2.4/physure-script/src/debug.rs +159 -0
- physure-0.2.4/physure-script/src/decorators.rs +420 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/exporter.rs +9 -0
- physure-0.2.4/physure-script/src/inspect.rs +171 -0
- physure-0.2.4/physure-script/src/interpreter/binary_ops.rs +237 -0
- physure-0.2.4/physure-script/src/interpreter/expressions.rs +650 -0
- physure-0.2.4/physure-script/src/interpreter/helpers.rs +84 -0
- physure-0.2.4/physure-script/src/interpreter/mod.rs +153 -0
- physure-0.2.4/physure-script/src/interpreter/statements.rs +357 -0
- physure-0.2.4/physure-script/src/interpreter/tests.rs +1274 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/lexer.rs +39 -9
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/lib.rs +8 -0
- physure-0.2.4/physure-script/src/module.rs +816 -0
- physure-0.2.4/physure-script/src/parser/expressions.rs +494 -0
- physure-0.2.4/physure-script/src/parser/mod.rs +61 -0
- physure-0.2.4/physure-script/src/parser/quantities.rs +264 -0
- physure-0.2.4/physure-script/src/parser/shadowing.rs +216 -0
- physure-0.2.4/physure-script/src/parser/statements.rs +295 -0
- physure-0.2.4/physure-script/src/parser/tests.rs +503 -0
- physure-0.2.4/physure-script/src/phs.pest +212 -0
- physure-0.2.4/physure-script/src/pipeline.rs +467 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/plugin.rs +97 -29
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/resolver.rs +1 -0
- physure-0.2.4/physure-script/src/symbolic/ast.rs +500 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/compiler.rs +1 -0
- physure-0.2.4/physure-script/src/symbolic/diff.rs +266 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/display.rs +41 -1
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/expr.rs +113 -3
- physure-0.2.4/physure-script/src/symbolic/integrate.rs +568 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/mod.rs +7 -0
- physure-0.2.4/physure-script/src/symbolic/ode.rs +395 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/parser.rs +139 -6
- physure-0.2.4/physure-script/src/symbolic/series.rs +131 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/symbolic/solve.rs +80 -2
- physure-0.2.4/physure-script/src/symbolic/sym_matrix.rs +232 -0
- physure-0.2.4/physure-script/src/symbolic/tests.rs +579 -0
- physure-0.2.4/physure-script/src/symbolic/transforms.rs +247 -0
- {physure-0.2.3 → physure-0.2.4}/physure-script/src/value.rs +36 -0
- physure-0.2.4/physure-script/tests/lsp_never_panics.rs +143 -0
- physure-0.2.4/physure-script/tests/mathematical_correctness.rs +210 -0
- physure-0.2.4/physure-script/tests/transpile_parity_tests.rs +607 -0
- physure-0.2.4/physure-script/tests/unit_literal_regression.rs +1078 -0
- physure-0.2.4/physure-script/tests/unit_shadowing.rs +206 -0
- {physure-0.2.3 → physure-0.2.4}/pyproject.toml +4 -4
- physure-0.2.3/physure/application/context.py +0 -192
- physure-0.2.3/physure/ext/grammar.py +0 -1655
- physure-0.2.3/physure/symbolic.py +0 -198
- physure-0.2.3/physure-core/src/error.rs +0 -56
- physure-0.2.3/physure-core/src/quantity.rs +0 -188
- physure-0.2.3/physure-core/src/uncertainty/gaussian.rs +0 -71
- physure-0.2.3/physure-core/src/uncertainty/mod.rs +0 -12
- physure-0.2.3/physure-core/src/uncertainty/tests.rs +0 -153
- physure-0.2.3/physure-core/src/uncertainty/trait_def.rs +0 -247
- physure-0.2.3/physure-core/src/units/tests.rs +0 -198
- physure-0.2.3/physure-python/Makefile +0 -28
- physure-0.2.3/physure-python/docs/UNITS.md +0 -786
- physure-0.2.3/physure-python/docs/benchmarks.md +0 -89
- physure-0.2.3/physure-python/docs/chemistry_roadmap.md +0 -215
- physure-0.2.3/physure-python/docs/diagrams_roadmap.md +0 -192
- physure-0.2.3/physure-python/docs/index.md +0 -40
- physure-0.2.3/physure-python/docs/reference/quantity.md +0 -3
- physure-0.2.3/physure-python/docs/scientific_roadmap.md +0 -316
- physure-0.2.3/physure-python/docs/symbolic_math_roadmap.md +0 -382
- physure-0.2.3/physure-python/docs/torch_compile_integration.md +0 -51
- physure-0.2.3/physure-python/docs/tutorials/01_best_practices.ipynb +0 -186
- physure-0.2.3/physure-python/docs/tutorials/jax_tutorial.ipynb +0 -109
- physure-0.2.3/physure-python/tests/ext/test_autograd.py +0 -108
- physure-0.2.3/physure-python/tests/ext/test_grammar.py +0 -842
- physure-0.2.3/physure-python/tests/test_uncertainty_gum.py +0 -150
- physure-0.2.3/physure-script/src/ast.rs +0 -185
- physure-0.2.3/physure-script/src/builtins.rs +0 -892
- physure-0.2.3/physure-script/src/codegen/java.rs +0 -200
- physure-0.2.3/physure-script/src/codegen/mod.rs +0 -41
- physure-0.2.3/physure-script/src/codegen/python.rs +0 -220
- physure-0.2.3/physure-script/src/codegen/rust.rs +0 -192
- physure-0.2.3/physure-script/src/function.rs +0 -350
- physure-0.2.3/physure-script/src/interpreter.rs +0 -833
- physure-0.2.3/physure-script/src/mod.rs +0 -163
- physure-0.2.3/physure-script/src/parser.rs +0 -735
- physure-0.2.3/physure-script/src/phs.pest +0 -70
- physure-0.2.3/physure-script/src/symbolic/ast.rs +0 -281
- physure-0.2.3/physure-script/src/symbolic/diff.rs +0 -130
- physure-0.2.3/physure-script/src/symbolic/integrate.rs +0 -277
- physure-0.2.3/physure-script/src/symbolic/tests.rs +0 -260
- {physure-0.2.3 → physure-0.2.4}/LICENSE +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/__main__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/_generated_types.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/_jit/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/_jit/tracer.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/factories.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/fit_service.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/functions/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/io.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/parsing.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/solver_service.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/application/tracing/context.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/core_backend.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/jax_backend.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/kernels/covariance.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/numpy_backend.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/python_backend.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/torch/autograd_store.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/backends/torch_backend.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/cli.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/constants.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/autograd.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/dispatcher.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/formatting.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/functional.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/sanitizer.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/sympy_parser.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/parsing/transformer.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/protocols.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/registry.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/core/registry.pyi +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/exceptions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/_arithmetic_mixin.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/_backend_mixin.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/base_entity.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/conversions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/converters.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/dimensions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/equivalencies.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/ports/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/ports/unit_repository.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/system.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/units.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/measurement/vectorized_uncertainty.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/graph.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/domain/symbolic/tracer.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/chemistry/equivalency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/compiler.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/currency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/helpers.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/io.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/numba_support.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/phs_loader.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/ext/symbolic_regression.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/functional.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/imperial.conf +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/infrastructure/config/systems/international.conf +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/nn/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/nn/layers.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/nn/loss.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/nn/networks.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/nn/utils.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/pandas_ext.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/py.typed +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/scripts/generate_types.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/units/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/units/__init__.pyi +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/units/_index.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/units/core.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure/units/electromagnetism.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/.cargo/config.toml +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/.github/workflows/CI.yml +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/.gitignore +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/Cargo.lock +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/LICENSE +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/benches/core_benchmarks.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/examples/quickstart.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/scripts/filter_lcov.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/sonar-project.properties +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/arrow.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/mod.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/pruning.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/store.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/covariance/tests.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/dimension_vector.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/hessian_propagation.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/mod.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/sparse_kernels.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/math/tests.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/serialization.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/converters.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/definition.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/dimension.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-core/src/units/mod.rs +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/Cargo.toml +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/LICENSE +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/MANIFEST.in +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_comparison.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_lineage.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_propagation.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/benchmark_vectorized.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/comprehensive_plot.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/profile_vectorized.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/benchmarks/run_compile_bench.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-11-mkml-math-functions.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-11-mkml-notation-layer.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-12-mkml-user-functions.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-kill-rust-fallback-illusion.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-rust-transcendental-delegation.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/plans/2026-07-16-unit-parser-zero-exponent-guard.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-11-mkml-math-functions-design.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-11-notation-layer-design.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-12-mkml-user-functions-design.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-16-kill-rust-fallback-illusion-design.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-16-rust-transcendental-delegation-design.md +0 -0
- {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
- {physure-0.2.3 → physure-0.2.4}/physure-python/docs/superpowers/specs/2026-07-20-phs-rust-engine-milestone.md +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/examples/advanced_physics.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/examples/pinn_harmonic_oscillator.ipynb +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/benchmark_import.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/compile_units.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/scripts/generate_constants_config.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/sonar-project.properties +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_backends.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_backends_and_quantity.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_concurrency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_consistency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_covariance_store.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional_core.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_functional_jax.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_gradients.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_invariants.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_jit.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_pydantic.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_registry.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_serialization.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_sparse_backends.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/core/test_vectorized_unc.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/domain/test_bare_number_add_sub.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/test_fit_service.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/dynamics/test_solver.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_chemistry_integration.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_compiler.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_currency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_io.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_molar_equivalency.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_phs_loader.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_reaction.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_species.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_symbolic_regression.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_thermo_kinetics.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/ext/test_torch_compile.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/functions/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/functions/test_functions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_measurement_system.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_physics_realworld.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/integration_tests/test_workflow.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_advanced.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_affine_arithmetic.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_api.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_autograd_propagation.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_backend_mixin.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_constants_codata.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_constants_module.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_conversions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_conversions_realworld.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_correctness_fixes.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_dimensions.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_lazy_prefixes.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_nonlinear_and_calculus.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/measurement_tests/test_units.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_base_entity.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_lexer.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/notation_tests/test_parsers.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/performance/benchmarks.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/test_integration.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/pinn/test_nn_utils.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/strategies.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_calculus.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_native_coverage.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_solve_all.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_solver.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/symbolic/test_tracing.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_ecosystem.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_equivalencies.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_jit_core.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_jit_uncertainty.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_new_features.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_repl.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_rust_transcendental_delegation.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_uncertainty.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/test_uncertainty_api.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/tools/__init__.py +0 -0
- {physure-0.2.3 → physure-0.2.4}/physure-python/tests/tools/test_stub_gen.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: physure
|
|
3
|
-
Version: 0.2.
|
|
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
|
|
91
|
-
<p><i>
|
|
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
|
[](https://pypi.org/project/physure/)
|
|
94
94
|
[](https://crates.io/crates/physure)
|
|
95
|
+
[](https://central.sonatype.com/artifact/io.github.alexisrx96/physure-java)
|
|
95
96
|
[](https://github.com/Alexisrx96/physure/actions/workflows/tests.yml)
|
|
96
97
|
[](https://pypi.org/project/physure/)
|
|
97
98
|
[](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("
|
|
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
|
|
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/ #
|
|
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/
|
|
242
|
-
- [Tutorials](https://github.com/Alexisrx96/physure/tree/main/
|
|
243
|
-
- [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/
|
|
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
|
|
9
|
-
<p><i>
|
|
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
|
[](https://pypi.org/project/physure/)
|
|
12
12
|
[](https://crates.io/crates/physure)
|
|
13
|
+
[](https://central.sonatype.com/artifact/io.github.alexisrx96/physure-java)
|
|
13
14
|
[](https://github.com/Alexisrx96/physure/actions/workflows/tests.yml)
|
|
14
15
|
[](https://pypi.org/project/physure/)
|
|
15
16
|
[](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("
|
|
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
|
|
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/ #
|
|
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/
|
|
160
|
-
- [Tutorials](https://github.com/Alexisrx96/physure/tree/main/
|
|
161
|
-
- [torch.compile integration](https://github.com/Alexisrx96/physure/blob/main/
|
|
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
|
|