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.
- {physure-0.2.3 → physure-0.3.0}/Cargo.lock +276 -14
- {physure-0.2.3 → physure-0.3.0}/Cargo.toml +7 -5
- {physure-0.2.3 → physure-0.3.0}/PKG-INFO +22 -10
- {physure-0.2.3 → physure-0.3.0}/README.md +21 -9
- {physure-0.2.3 → physure-0.3.0}/physure/__init__.py +44 -9
- {physure-0.2.3 → physure-0.3.0}/physure/_core.pyi +43 -35
- physure-0.3.0/physure/_generated_types.py +6 -0
- physure-0.3.0/physure/_jit/__init__.py +4 -0
- {physure-0.2.3 → physure-0.3.0}/physure/_jit/tracer.py +1 -50
- physure-0.3.0/physure/application/context.py +342 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/factories.py +2 -42
- {physure-0.2.3 → physure-0.3.0}/physure/application/functions/functions.py +9 -3
- physure-0.3.0/physure/application/jit.py +59 -0
- physure-0.3.0/physure/application/parsing.py +46 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/startup.py +30 -195
- {physure-0.2.3 → physure-0.3.0}/physure/application/tracing/context.py +4 -23
- physure-0.3.0/physure/backends/affine.py +86 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/jax_backend.py +6 -61
- {physure-0.2.3 → physure-0.3.0}/physure/backends/torch/autograd_store.py +2 -7
- {physure-0.2.3 → physure-0.3.0}/physure/backends/torch_backend.py +7 -7
- {physure-0.2.3 → physure-0.3.0}/physure/core/dispatcher.py +23 -0
- physure-0.3.0/physure/core/functional.py +285 -0
- {physure-0.2.3 → physure-0.3.0}/physure/core/registry.py +48 -33
- physure-0.3.0/physure/core/registry.pyi +13257 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/_arithmetic_mixin.py +127 -128
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/base_entity.py +26 -3
- physure-0.3.0/physure/domain/measurement/conversion_plan.py +93 -0
- physure-0.3.0/physure/domain/measurement/definitions_text.py +169 -0
- physure-0.3.0/physure/domain/measurement/dimensions.py +302 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/quantity.py +195 -139
- physure-0.3.0/physure/domain/measurement/quantity_text.py +50 -0
- physure-0.3.0/physure/domain/measurement/system.py +241 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/uncertainty.py +355 -6
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/units.py +127 -254
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/vectorized_uncertainty.py +1 -78
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/export.py +10 -3
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/expression.py +10 -4
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/native.py +63 -19
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/quantity.py +14 -5
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/tracer.py +25 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/equivalency.py +6 -2
- {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/reaction.py +4 -5
- {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/species.py +8 -1
- {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/thermo_kinetics.py +14 -2
- {physure-0.2.3 → physure-0.3.0}/physure/ext/currency.py +3 -4
- {physure-0.2.3 → physure-0.3.0}/physure/ext/pandas_support.py +28 -2
- physure-0.3.0/physure/infrastructure/config/systems/international.conf +9 -0
- physure-0.3.0/physure/module.py +247 -0
- {physure-0.2.3 → physure-0.3.0}/physure/plotting.py +801 -0
- {physure-0.2.3 → physure-0.3.0}/physure/repl.py +19 -25
- {physure-0.2.3 → physure-0.3.0}/physure/scripts/generate_types.py +20 -14
- physure-0.3.0/physure/symbolic.py +450 -0
- physure-0.3.0/physure/units/__init__.py +30 -0
- physure-0.3.0/physure/units/__init__.pyi +13240 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/Cargo.toml +9 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/README.md +4 -1
- {physure-0.2.3 → physure-0.3.0}/physure-core/benches/core_benchmarks.rs +18 -15
- physure-0.3.0/physure-core/src/equation.rs +45 -0
- physure-0.3.0/physure-core/src/error.rs +107 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/lib.rs +11 -2
- physure-0.3.0/physure-core/src/linalg.rs +218 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/dual.rs +3 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/interval.rs +5 -0
- physure-0.3.0/physure-core/src/plotting.rs +931 -0
- physure-0.3.0/physure-core/src/quantity.rs +1164 -0
- physure-0.3.0/physure-core/src/settings.rs +230 -0
- physure-0.3.0/physure-core/src/uncertainty/gaussian.rs +118 -0
- physure-0.3.0/physure-core/src/uncertainty/lineage.rs +352 -0
- physure-0.3.0/physure-core/src/uncertainty/mod.rs +20 -0
- physure-0.3.0/physure-core/src/uncertainty/mode.rs +155 -0
- physure-0.3.0/physure-core/src/uncertainty/moments.rs +981 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/uncertainty/monte_carlo.rs +21 -0
- physure-0.3.0/physure-core/src/uncertainty/shapes.rs +400 -0
- physure-0.3.0/physure-core/src/uncertainty/tests.rs +728 -0
- physure-0.3.0/physure-core/src/uncertainty/trait_def.rs +394 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/uncertainty/unscented.rs +58 -8
- physure-0.3.0/physure-core/src/units/conf.rs +598 -0
- physure-0.3.0/physure-core/src/units/exact.rs +423 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/mod.rs +4 -6
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/parser.rs +138 -40
- physure-0.3.0/physure-core/src/units/physure.conf +715 -0
- physure-0.3.0/physure-core/src/units/rational.rs +545 -0
- physure-0.3.0/physure-core/src/units/registry.rs +794 -0
- physure-0.3.0/physure-core/src/units/tests.rs +1025 -0
- physure-0.3.0/physure-core/src/vendor/OrbitControls.min.js +1045 -0
- physure-0.3.0/physure-core/src/vendor/three.min.js +6 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/tests/edge_cases_and_concurrency.rs +4 -4
- physure-0.3.0/physure-core/tests/unit_facts_golden.rs +31 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/Cargo.toml +5 -14
- physure-0.3.0/physure-python/Makefile +14 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/README.md +21 -9
- physure-0.3.0/physure-python/benchmarks/bench_unit_ops.py +56 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/examples/pandas_integration.py +9 -9
- {physure-0.2.3 → physure-0.3.0}/physure-python/mkdocs.yml +9 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/generate_constants_config.py +12 -2
- {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/generate_units_readme.py +23 -9
- {physure-0.2.3 → physure-0.3.0}/physure-python/src/lib.rs +733 -135
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/conftest.py +11 -10
- physure-0.3.0/physure-python/tests/core/golden/unit_semantics.json +311 -0
- physure-0.3.0/physure-python/tests/core/import_layers.toml +132 -0
- physure-0.3.0/physure-python/tests/core/test_backend_hooks.py +101 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_backends_and_quantity.py +1 -2
- physure-0.3.0/physure-python/tests/core/test_catalog_namespace.py +76 -0
- physure-0.3.0/physure-python/tests/core/test_conf_single_source.py +42 -0
- physure-0.3.0/physure-python/tests/core/test_dimensions_are_rational.py +68 -0
- physure-0.3.0/physure-python/tests/core/test_ensure_rational.py +20 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional_core.py +7 -8
- physure-0.3.0/physure-python/tests/core/test_import_layers.py +274 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_invariants.py +12 -14
- physure-0.3.0/physure-python/tests/core/test_module_bridge.py +124 -0
- physure-0.3.0/physure-python/tests/core/test_no_debug_output.py +23 -0
- physure-0.3.0/physure-python/tests/core/test_points_and_levels_are_the_cores.py +167 -0
- physure-0.3.0/physure-python/tests/core/test_quantity_text.py +41 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_registry.py +46 -0
- physure-0.3.0/physure-python/tests/core/test_registry_conversion.py +79 -0
- physure-0.3.0/physure-python/tests/core/test_registry_extend.py +66 -0
- physure-0.3.0/physure-python/tests/core/test_registry_facts.py +124 -0
- physure-0.3.0/physure-python/tests/core/test_relocated_modules.py +18 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_rust_parity.py +5 -2
- physure-0.3.0/physure-python/tests/core/test_system_registry.py +116 -0
- physure-0.3.0/physure-python/tests/core/test_system_registry_parity.py +164 -0
- physure-0.3.0/physure-python/tests/core/test_temperature_algebra_parity.py +81 -0
- physure-0.3.0/physure-python/tests/core/test_unit_algebra_parity.py +384 -0
- physure-0.3.0/physure-python/tests/core/test_unit_parser_is_the_cores.py +61 -0
- physure-0.3.0/physure-python/tests/core/test_units_are_rational.py +112 -0
- physure-0.3.0/physure-python/tests/core/test_units_are_the_cores.py +78 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/test_fit_service.py +2 -3
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/test_solver.py +3 -4
- physure-0.3.0/physure-python/tests/ext/test_autograd.py +116 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_pandas_support.py +24 -17
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_phs_native.py +2 -2
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_workflow.py +6 -7
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_advanced.py +1 -1
- physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_constants.py +44 -0
- physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_exact.py +96 -0
- physure-0.3.0/physure-python/tests/measurement_tests/test_catalog_variants.py +89 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_constants_codata.py +25 -25
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_conversions.py +36 -42
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_conversions_realworld.py +6 -6
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_correctness_fixes.py +34 -51
- physure-0.3.0/physure-python/tests/measurement_tests/test_definitions_text.py +152 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_lazy_prefixes.py +7 -8
- physure-0.3.0/physure-python/tests/measurement_tests/test_logarithmic_conversion.py +33 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_nonlinear_and_calculus.py +2 -2
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_quantity.py +46 -10
- physure-0.3.0/physure-python/tests/measurement_tests/test_temperature_exact.py +97 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_uncertainty_models.py +7 -3
- physure-0.3.0/physure-python/tests/measurement_tests/test_unit_sugar.py +32 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_units.py +13 -15
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/performance/benchmarks.py +1 -2
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/strategies.py +27 -57
- physure-0.3.0/physure-python/tests/symbolic/test_active_system_default.py +55 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_native_expr.py +7 -1
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_tracing.py +1 -1
- physure-0.3.0/physure-python/tests/test_asymmetric_moments.py +83 -0
- physure-0.3.0/physure-python/tests/test_foreign_bridge.py +290 -0
- physure-0.3.0/physure-python/tests/test_java_uncertainty.py +79 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_performance_and_interop.py +2 -3
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_plotting.py +74 -0
- physure-0.3.0/physure-python/tests/test_transpiler_parity.py +123 -0
- physure-0.3.0/physure-python/tests/test_uncertainty_gum.py +318 -0
- physure-0.3.0/physure-python/tests/tools/test_stub_gen.py +55 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/uv.lock +43 -43
- {physure-0.2.3 → physure-0.3.0}/physure-script/Cargo.toml +6 -0
- physure-0.3.0/physure-script/sonar-project.properties +9 -0
- physure-0.3.0/physure-script/src/ast.rs +313 -0
- physure-0.3.0/physure-script/src/builtins/array.rs +290 -0
- physure-0.3.0/physure-script/src/builtins/calc.rs +733 -0
- physure-0.3.0/physure-script/src/builtins/core.rs +495 -0
- physure-0.3.0/physure-script/src/builtins/mod.rs +109 -0
- physure-0.3.0/physure-script/src/builtins/plot.rs +680 -0
- physure-0.3.0/physure-script/src/builtins/tests.rs +312 -0
- physure-0.3.0/physure-script/src/codegen/java.rs +524 -0
- physure-0.3.0/physure-script/src/codegen/js.rs +501 -0
- physure-0.3.0/physure-script/src/codegen/md.rs +174 -0
- physure-0.3.0/physure-script/src/codegen/mod.rs +809 -0
- physure-0.3.0/physure-script/src/codegen/proto.rs +103 -0
- physure-0.3.0/physure-script/src/codegen/python.rs +523 -0
- physure-0.3.0/physure-script/src/codegen/rust.rs +808 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/codegen/tests.rs +16 -0
- physure-0.3.0/physure-script/src/debug.rs +159 -0
- physure-0.3.0/physure-script/src/decorators.rs +420 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/exporter.rs +9 -0
- physure-0.3.0/physure-script/src/inspect.rs +171 -0
- physure-0.3.0/physure-script/src/interpreter/binary_ops.rs +237 -0
- physure-0.3.0/physure-script/src/interpreter/expressions.rs +650 -0
- physure-0.3.0/physure-script/src/interpreter/helpers.rs +84 -0
- physure-0.3.0/physure-script/src/interpreter/mod.rs +153 -0
- physure-0.3.0/physure-script/src/interpreter/statements.rs +357 -0
- physure-0.3.0/physure-script/src/interpreter/tests.rs +1274 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/lexer.rs +39 -9
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/lib.rs +8 -0
- physure-0.3.0/physure-script/src/module.rs +816 -0
- physure-0.3.0/physure-script/src/parser/expressions.rs +494 -0
- physure-0.3.0/physure-script/src/parser/mod.rs +61 -0
- physure-0.3.0/physure-script/src/parser/quantities.rs +264 -0
- physure-0.3.0/physure-script/src/parser/shadowing.rs +216 -0
- physure-0.3.0/physure-script/src/parser/statements.rs +295 -0
- physure-0.3.0/physure-script/src/parser/tests.rs +503 -0
- physure-0.3.0/physure-script/src/phs.pest +212 -0
- physure-0.3.0/physure-script/src/pipeline.rs +467 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/plugin.rs +97 -29
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/resolver.rs +1 -0
- physure-0.3.0/physure-script/src/symbolic/ast.rs +500 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/compiler.rs +1 -0
- physure-0.3.0/physure-script/src/symbolic/diff.rs +266 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/display.rs +41 -1
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/expr.rs +113 -3
- physure-0.3.0/physure-script/src/symbolic/integrate.rs +568 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/mod.rs +7 -0
- physure-0.3.0/physure-script/src/symbolic/ode.rs +395 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/parser.rs +139 -6
- physure-0.3.0/physure-script/src/symbolic/series.rs +131 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/symbolic/solve.rs +80 -2
- physure-0.3.0/physure-script/src/symbolic/sym_matrix.rs +232 -0
- physure-0.3.0/physure-script/src/symbolic/tests.rs +579 -0
- physure-0.3.0/physure-script/src/symbolic/transforms.rs +247 -0
- {physure-0.2.3 → physure-0.3.0}/physure-script/src/value.rs +36 -0
- physure-0.3.0/physure-script/tests/lsp_never_panics.rs +143 -0
- physure-0.3.0/physure-script/tests/mathematical_correctness.rs +210 -0
- physure-0.3.0/physure-script/tests/transpile_parity_tests.rs +607 -0
- physure-0.3.0/physure-script/tests/unit_literal_regression.rs +1176 -0
- physure-0.3.0/physure-script/tests/unit_shadowing.rs +206 -0
- {physure-0.2.3 → physure-0.3.0}/pyproject.toml +4 -23
- physure-0.2.3/physure/_generated_types.py +0 -6
- physure-0.2.3/physure/_jit/__init__.py +0 -3
- physure-0.2.3/physure/application/context.py +0 -192
- physure-0.2.3/physure/application/parsing.py +0 -85
- physure-0.2.3/physure/core/functional.py +0 -394
- physure-0.2.3/physure/core/parsing/sanitizer.py +0 -89
- physure-0.2.3/physure/core/parsing/sympy_parser.py +0 -70
- physure-0.2.3/physure/core/parsing/transformer.py +0 -88
- physure-0.2.3/physure/core/registry.pyi +0 -5504
- physure-0.2.3/physure/domain/measurement/conversions.py +0 -117
- physure-0.2.3/physure/domain/measurement/converters.py +0 -159
- physure-0.2.3/physure/domain/measurement/dimensions.py +0 -347
- physure-0.2.3/physure/domain/measurement/ports/__init__.py +0 -8
- physure-0.2.3/physure/domain/measurement/ports/unit_repository.py +0 -20
- physure-0.2.3/physure/domain/measurement/system.py +0 -576
- physure-0.2.3/physure/ext/grammar.py +0 -1655
- physure-0.2.3/physure/infrastructure/config/physure.conf +0 -655
- physure-0.2.3/physure/infrastructure/config/systems/international.conf +0 -15
- physure-0.2.3/physure/symbolic.py +0 -198
- physure-0.2.3/physure/units/__init__.py +0 -28
- physure-0.2.3/physure/units/__init__.pyi +0 -5491
- physure-0.2.3/physure/units/_index.py +0 -5486
- physure-0.2.3/physure/units/core.py +0 -5489
- physure-0.2.3/physure/units/electromagnetism.py +0 -7
- 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/conf.rs +0 -287
- physure-0.2.3/physure-core/src/units/converters.rs +0 -96
- physure-0.2.3/physure-core/src/units/definition.rs +0 -112
- physure-0.2.3/physure-core/src/units/physure.conf +0 -655
- physure-0.2.3/physure-core/src/units/rational.rs +0 -246
- physure-0.2.3/physure-core/src/units/registry.rs +0 -236
- 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/superpowers/plans/2026-07-11-mkml-math-functions.md +0 -581
- physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-11-mkml-notation-layer.md +0 -683
- physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-12-mkml-user-functions.md +0 -1554
- physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-kill-rust-fallback-illusion.md +0 -302
- physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-rust-transcendental-delegation.md +0 -738
- physure-0.2.3/physure-python/docs/superpowers/plans/2026-07-16-unit-parser-zero-exponent-guard.md +0 -205
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-11-mkml-math-functions-design.md +0 -121
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-11-notation-layer-design.md +0 -121
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-12-mkml-user-functions-design.md +0 -192
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-kill-rust-fallback-illusion-design.md +0 -68
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-rust-transcendental-delegation-design.md +0 -162
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-16-unit-parser-zero-exponent-guard-design.md +0 -101
- physure-0.2.3/physure-python/docs/superpowers/specs/2026-07-20-phs-rust-engine-milestone.md +0 -33
- 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/scripts/compile_units.py +0 -186
- 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-python/tests/tools/test_stub_gen.py +0 -64
- 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.3.0}/LICENSE +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/__main__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/fit_service.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/functions/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/io.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/application/solver_service.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/core_backend.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/kernels/covariance.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/numpy_backend.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/backends/python_backend.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/cli.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/constants.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/core/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/core/autograd.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/core/formatting.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/core/protocols.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/exceptions.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/_backend_mixin.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/measurement/equivalencies.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/domain/symbolic/graph.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/chemistry/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/compiler.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/helpers.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/io.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/numba_support.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/phs_loader.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/ext/symbolic_regression.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/functional.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/config/systems/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/infrastructure/config/systems/imperial.conf +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/nn/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/nn/layers.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/nn/loss.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/nn/networks.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/nn/utils.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/pandas_ext.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure/py.typed +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/.cargo/config.toml +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/.github/workflows/CI.yml +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/.gitignore +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/Cargo.lock +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/LICENSE +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/examples/quickstart.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/scripts/filter_lcov.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/sonar-project.properties +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/arrow.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/mod.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/pruning.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/store.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/covariance/tests.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/dimension_vector.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/hessian_propagation.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/mod.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/sparse_kernels.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/math/tests.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/serialization.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-core/src/units/dimension.rs +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/LICENSE +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/MANIFEST.in +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_comparison.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_lineage.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_propagation.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/benchmark_vectorized.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/comprehensive_plot.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/profile_vectorized.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/benchmarks/run_compile_bench.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/examples/advanced_physics.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/examples/pinn_harmonic_oscillator.ipynb +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/scripts/benchmark_import.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/sonar-project.properties +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_backends.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_concurrency.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_consistency.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_covariance_store.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_functional_jax.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_gradients.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_jit.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_pydantic.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_serialization.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_sparse_backends.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/core/test_vectorized_unc.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/domain/test_bare_number_add_sub.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/dynamics/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_chemistry_integration.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_compiler.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_currency.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_io.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_molar_equivalency.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_phs_loader.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_reaction.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_species.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_symbolic_regression.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_thermo_kinetics.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/ext/test_torch_compile.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/functions/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/functions/test_functions.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_measurement_system.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/integration_tests/test_physics_realworld.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_affine_arithmetic.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_api.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_autograd_propagation.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_backend_mixin.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_constants_module.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/measurement_tests/test_dimensions.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_base_entity.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_lexer.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/notation_tests/test_parsers.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/test_integration.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/pinn/test_nn_utils.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/__init__.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_calculus.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_native_coverage.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_solve_all.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/symbolic/test_solver.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_ecosystem.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_equivalencies.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_jit_core.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_jit_uncertainty.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_new_features.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_repl.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_rust_transcendental_delegation.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_uncertainty.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/test_uncertainty_api.py +0 -0
- {physure-0.2.3 → physure-0.3.0}/physure-python/tests/tools/__init__.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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):
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
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.
|
|
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
|
|
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
|
|