[package]
edition = "2021"
name = "lemma-engine"
version = "0.8.19"
authors = ["Ben Rogmans <ben@amrai.nl>"]
build = false
include = [
"/src/**",
"/tests/**",
"/README.md",
"/LICENSE",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A language that means business."
homepage = "https://github.com/lemma/lemma"
documentation = "https://docs.rs/lemma-engine"
readme = "README.md"
keywords = [
"logic",
"rules",
"declarative",
"dsl",
"rust",
]
categories = [
"parser-implementations",
"development-tools",
]
license = "Apache-2.0"
repository = "https://github.com/lemma/lemma"
resolver = "3"
[features]
default = ["registry"]
registry = ["reqwest"]
[lib]
name = "lemma"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
[[test]]
name = "arithmetic_exactness"
path = "tests/arithmetic_exactness.rs"
[[test]]
name = "arithmetic_type_combinations"
path = "tests/arithmetic_type_combinations.rs"
[[test]]
name = "branch_aware_missing_data"
path = "tests/branch_aware_missing_data.rs"
[[test]]
name = "calendar_duration_split"
path = "tests/calendar_duration_split.rs"
[[test]]
name = "calendar_range"
path = "tests/calendar_range.rs"
[[test]]
name = "case_insensitive_identifiers"
path = "tests/case_insensitive_identifiers.rs"
[[test]]
name = "coffee_order"
path = "tests/coffee_order.rs"
[[test]]
name = "contractor_invoice_explanation"
path = "tests/contractor_invoice_explanation.rs"
[[test]]
name = "cross_spec_references"
path = "tests/cross_spec_references.rs"
[[test]]
name = "cross_spec_unit_index"
path = "tests/cross_spec_unit_index.rs"
[[test]]
name = "data_binding_type_validation"
path = "tests/data_binding_type_validation.rs"
[[test]]
name = "data_bindings_type_mismatch"
path = "tests/data_bindings_type_mismatch.rs"
[[test]]
name = "data_literals_coverage"
path = "tests/data_literals_coverage.rs"
[[test]]
name = "data_nested_bindings_coverage"
path = "tests/data_nested_bindings_coverage.rs"
[[test]]
name = "data_references"
path = "tests/data_references.rs"
[[test]]
name = "data_type_declarations_coverage"
path = "tests/data_type_declarations_coverage.rs"
[[test]]
name = "data_with_values_contract"
path = "tests/data_with_values_contract.rs"
[[test]]
name = "date_range"
path = "tests/date_range.rs"
[[test]]
name = "datetime_edge_cases"
path = "tests/datetime_edge_cases.rs"
[[test]]
name = "datetime_edge_hunting"
path = "tests/datetime_edge_hunting.rs"
[[test]]
name = "datetime_sugar"
path = "tests/datetime_sugar.rs"
[[test]]
name = "decimal_storage_pipeline"
path = "tests/decimal_storage_pipeline.rs"
[[test]]
name = "decimal_value_limit"
path = "tests/decimal_value_limit.rs"
[[test]]
name = "decomposition_binding_alias_collision"
path = "tests/decomposition_binding_alias_collision.rs"
[[test]]
name = "decomposition_promotion_collision"
path = "tests/decomposition_promotion_collision.rs"
[[test]]
name = "delivery_decimals_materialization"
path = "tests/delivery_decimals_materialization.rs"
[[test]]
name = "differential_optimize"
path = "tests/differential_optimize.rs"
[[test]]
name = "documentation_examples"
path = "tests/documentation_examples.rs"
[[test]]
name = "duration_conversion"
path = "tests/duration_conversion.rs"
[[test]]
name = "duration_trait_anonymous"
path = "tests/duration_trait_anonymous.rs"
[[test]]
name = "duration_trait_arithmetic"
path = "tests/duration_trait_arithmetic.rs"
[[test]]
name = "duration_trait_planning"
path = "tests/duration_trait_planning.rs"
[[test]]
name = "duration_trait_precision"
path = "tests/duration_trait_precision.rs"
[[test]]
name = "duration_trait_temporal"
path = "tests/duration_trait_temporal.rs"
[[test]]
name = "embedded_stdlib_visibility"
path = "tests/embedded_stdlib_visibility.rs"
[[test]]
name = "equal_operator"
path = "tests/equal_operator.rs"
[[test]]
name = "error_messages"
path = "tests/error_messages.rs"
[[test]]
name = "explanation_e2e"
path = "tests/explanation_e2e.rs"
[[test]]
name = "explanation_format"
path = "tests/explanation_format.rs"
[[test]]
name = "explanation_parity"
path = "tests/explanation_parity.rs"
[[test]]
name = "expression_syntax"
path = "tests/expression_syntax.rs"
[[test]]
name = "food_production_sales"
path = "tests/food_production_sales.rs"
[[test]]
name = "format_weather_clothing_integration"
path = "tests/format_weather_clothing_integration.rs"
[[test]]
name = "formatter"
path = "tests/formatter.rs"
[[test]]
name = "fuzz_api_surface"
path = "tests/fuzz_api_surface.rs"
[[test]]
name = "inline_type_imports"
path = "tests/inline_type_imports.rs"
[[test]]
name = "integration_comprehensive"
path = "tests/integration_comprehensive.rs"
[[test]]
name = "integration_examples"
path = "tests/integration_examples.rs"
[[test]]
name = "large_unless_chain"
path = "tests/large_unless_chain.rs"
[[test]]
name = "load_batch_wasm_planning_parity"
path = "tests/load_batch_wasm_planning_parity.rs"
[[test]]
name = "math_ops"
path = "tests/math_ops.rs"
[[test]]
name = "meta_fields"
path = "tests/meta_fields.rs"
[[test]]
name = "missing_data_propagation"
path = "tests/missing_data_propagation.rs"
[[test]]
name = "modulo_power"
path = "tests/modulo_power.rs"
[[test]]
name = "multidim_unit_system"
path = "tests/multidim_unit_system.rs"
[[test]]
name = "nested_spec_references"
path = "tests/nested_spec_references.rs"
[[test]]
name = "normalization_strict_semantics"
path = "tests/normalization_strict_semantics.rs"
[[test]]
name = "quantity_duration_arithmetic_types"
path = "tests/quantity_duration_arithmetic_types.rs"
[[test]]
name = "quantity_math_ops"
path = "tests/quantity_math_ops.rs"
[[test]]
name = "quantity_number_refactoring"
path = "tests/quantity_number_refactoring.rs"
[[test]]
name = "quantity_unit_conversion"
path = "tests/quantity_unit_conversion.rs"
[[test]]
name = "range_generic"
path = "tests/range_generic.rs"
[[test]]
name = "range_semantics_table"
path = "tests/range_semantics_table.rs"
[[test]]
name = "range_span_unit_conversion"
path = "tests/range_span_unit_conversion.rs"
[[test]]
name = "ratio_quantity_units"
path = "tests/ratio_quantity_units.rs"
[[test]]
name = "ratio_runtime_input"
path = "tests/ratio_runtime_input.rs"
[[test]]
name = "ratio_type_constraints"
path = "tests/ratio_type_constraints.rs"
[[test]]
name = "rational_bigint"
path = "tests/rational_bigint.rs"
[[test]]
name = "realworld_bug_hunt"
path = "tests/realworld_bug_hunt.rs"
[[test]]
name = "realworld_edge_cases"
path = "tests/realworld_edge_cases.rs"
[[test]]
name = "realworld_scenarios"
path = "tests/realworld_scenarios.rs"
[[test]]
name = "repo_keyword"
path = "tests/repo_keyword.rs"
[[test]]
name = "repro_finance_dual_slice_registry_uses"
path = "tests/repro_finance_dual_slice_registry_uses.rs"
[[test]]
name = "repro_named_types_panic"
path = "tests/repro_named_types_panic.rs"
[[test]]
name = "required_data_names_nested_spec"
path = "tests/required_data_names_nested_spec.rs"
[[test]]
name = "resource_limits_test"
path = "tests/resource_limits_test.rs"
[[test]]
name = "response_data"
path = "tests/response_data.rs"
[[test]]
name = "runtime_bad_input_veto"
path = "tests/runtime_bad_input_veto.rs"
[[test]]
name = "schema_defaults_distinction"
path = "tests/schema_defaults_distinction.rs"
[[test]]
name = "schema_uncommittable_bounds"
path = "tests/schema_uncommittable_bounds.rs"
[[test]]
name = "schema_unit_constraints"
path = "tests/schema_unit_constraints.rs"
[[test]]
name = "schema_with_bindings"
path = "tests/schema_with_bindings.rs"
[[test]]
name = "semantic_validation"
path = "tests/semantic_validation.rs"
[[test]]
name = "spec_name_repository_plan_collision"
path = "tests/spec_name_repository_plan_collision.rs"
[[test]]
name = "spec_reference_scenarios"
path = "tests/spec_reference_scenarios.rs"
[[test]]
name = "stdlib_lemma_units"
path = "tests/stdlib_lemma_units.rs"
[[test]]
name = "symbolic_unit_arithmetic"
path = "tests/symbolic_unit_arithmetic.rs"
[[test]]
name = "targeted_rule_evaluation"
path = "tests/targeted_rule_evaluation.rs"
[[test]]
name = "temporal_boundary_explosion"
path = "tests/temporal_boundary_explosion.rs"
[[test]]
name = "temporal_cycle_panic"
path = "tests/temporal_cycle_panic.rs"
[[test]]
name = "temporal_interface_deep_slice"
path = "tests/temporal_interface_deep_slice.rs"
[[test]]
name = "temporal_range_references"
path = "tests/temporal_range_references.rs"
[[test]]
name = "temporal_self_uses"
path = "tests/temporal_self_uses.rs"
[[test]]
name = "temporal_slicing"
path = "tests/temporal_slicing.rs"
[[test]]
name = "temporal_timezone_ordering"
path = "tests/temporal_timezone_ordering.rs"
[[test]]
name = "temporal_type_resolver_instant"
path = "tests/temporal_type_resolver_instant.rs"
[[test]]
name = "time_range"
path = "tests/time_range.rs"
[[test]]
name = "timezone"
path = "tests/timezone.rs"
[[test]]
name = "transitive_normalization"
path = "tests/transitive_normalization.rs"
[[test]]
name = "type_aware_arithmetic"
path = "tests/type_aware_arithmetic.rs"
[[test]]
name = "type_definitions"
path = "tests/type_definitions.rs"
[[test]]
name = "type_import_temporal"
path = "tests/type_import_temporal.rs"
[[test]]
name = "typed_values"
path = "tests/typed_values.rs"
[[test]]
name = "unified_ratio_units"
path = "tests/unified_ratio_units.rs"
[[test]]
name = "unit_percentage_operations"
path = "tests/unit_percentage_operations.rs"
[[test]]
name = "uses_lemma_compound_unit_planning"
path = "tests/uses_lemma_compound_unit_planning.rs"
[[test]]
name = "validator_type_checking"
path = "tests/validator_type_checking.rs"
[[test]]
name = "veto"
path = "tests/veto.rs"
[[test]]
name = "veto_status_comparison"
path = "tests/veto_status_comparison.rs"
[[test]]
name = "vm_instructions"
path = "tests/vm_instructions.rs"
[[test]]
name = "wasm_effective"
path = "tests/wasm_effective.rs"
[dependencies.async-trait]
version = "0.1"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.indexmap]
version = "2.0"
features = ["serde"]
[dependencies.reqwest]
version = "0.13"
features = ["rustls"]
optional = true
default-features = false
[dependencies.rust_decimal]
version = "1.33"
features = [
"serde",
"maths",
]
[dependencies.serde]
version = "1.0"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.stats_alloc]
version = "0.1"
[dev-dependencies.tokio]
version = "1.39.2"
features = ["full"]
[target.'cfg(target_arch = "wasm32")'.dependencies.console_error_panic_hook]
version = "0.1"
[target.'cfg(target_arch = "wasm32")'.dependencies.gloo-net]
version = "0.6"
[target.'cfg(target_arch = "wasm32")'.dependencies.js-sys]
version = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies.serde-wasm-bindgen]
version = "0.6"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen]
version = "=0.2.121"
[target.'cfg(target_arch = "wasm32")'.dependencies.wasm-bindgen-futures]
version = "0.4"
[lints.rust]
dead_code = "deny"