GeneralManager 0.80.4__tar.gz → 0.80.5__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.
- {generalmanager-0.80.4/src/GeneralManager.egg-info → generalmanager-0.80.5}/PKG-INFO +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.5}/pyproject.toml +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.5/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/manager/meta.py +27 -4
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/measurement/measurement.py +50 -7
- {generalmanager-0.80.4 → generalmanager-0.80.5}/LICENSE +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/README.md +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/setup.cfg +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/dataframes.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_as_of.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_groups.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_ordering.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_output.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_relations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_type.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/notification_batching.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/apps.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/as_of.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/_materialized_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/_ordering.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/excel_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/projection.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/_dependency_graph.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/data_change_context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/run_context_lru.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/datasets/planned_orchestration.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/budget.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/calculations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/catalog.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/events.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/evidence.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/planner.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/provider_calls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/resolver.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/routing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/scheduler.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/synthesis.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/validation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/system_prompt.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/turns.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/conf.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/dataframes/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/dataframes/measurements.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/calculation/input_resolution.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/excel/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/orm_utils/update_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/excel_store.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/excel_workbook.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/utils/history.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/logging.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0007_upload_intent.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/0012_chat_context_watermarks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/py.typed +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/m2m_invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/adapters.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/finalization.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/graphql_types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/metrics.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/public.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/s3.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/services.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/tokens.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/urls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/uploads/views.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/_args_to_kwargs.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/_cache_key_encoder.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/_make_cache_key.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/_none_to_zero.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/tests/test_settings.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/tests/test_urls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.5}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.80.
|
|
3
|
+
Version: 0.80.5
|
|
4
4
|
Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
|
|
5
5
|
Author-email: Tim Kleindick <tkleindick@yahoo.de>
|
|
6
6
|
License: MIT License
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "GeneralManager"
|
|
7
|
-
version = "0.80.
|
|
7
|
+
version = "0.80.5"
|
|
8
8
|
description = "Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Tim Kleindick", email = "tkleindick@yahoo.de" }]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.80.
|
|
3
|
+
Version: 0.80.5
|
|
4
4
|
Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
|
|
5
5
|
Author-email: Tim Kleindick <tkleindick@yahoo.de>
|
|
6
6
|
License: MIT License
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from collections.abc import Callable, Iterator
|
|
5
|
+
from collections.abc import Callable, Iterator, Mapping
|
|
6
6
|
from functools import wraps
|
|
7
7
|
import threading
|
|
8
8
|
from _thread import RLock as RLockType
|
|
@@ -781,6 +781,17 @@ class GeneralManagerMeta(type):
|
|
|
781
781
|
) -> None:
|
|
782
782
|
self._attr_name = descriptor_attr_name
|
|
783
783
|
self._class = descriptor_class
|
|
784
|
+
# Keep a live view: validation can be reset after installation.
|
|
785
|
+
# Custom metaclasses retain their observable dictionary lookups.
|
|
786
|
+
self._standard_class_dict: Mapping[str, object] | None = (
|
|
787
|
+
vars(descriptor_class)
|
|
788
|
+
if (
|
|
789
|
+
type(descriptor_class) is GeneralManagerMeta
|
|
790
|
+
and _STANDARD_MANAGER_META_DICT.get("__getattribute__")
|
|
791
|
+
is _STANDARD_MANAGER_META_GETATTRIBUTE
|
|
792
|
+
)
|
|
793
|
+
else None
|
|
794
|
+
)
|
|
784
795
|
# Excel values can change outside this manager instance.
|
|
785
796
|
self._cache_values = (
|
|
786
797
|
getattr(descriptor_class.Interface, "_interface_type", None)
|
|
@@ -826,9 +837,17 @@ class GeneralManagerMeta(type):
|
|
|
826
837
|
"""
|
|
827
838
|
if instance is None:
|
|
828
839
|
return self._class.Interface.get_field_type(self._attr_name)
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
840
|
+
class_dict = self._standard_class_dict
|
|
841
|
+
if (
|
|
842
|
+
class_dict is None
|
|
843
|
+
or type(self._class) is not GeneralManagerMeta
|
|
844
|
+
or _STANDARD_MANAGER_META_DICT.get("__getattribute__")
|
|
845
|
+
is not _STANDARD_MANAGER_META_GETATTRIBUTE
|
|
846
|
+
or class_dict.get("_gm_rule_templates_validated") is not True
|
|
847
|
+
):
|
|
848
|
+
GeneralManagerMeta.ensure_rule_templates_validated_after_readiness(
|
|
849
|
+
self._class
|
|
850
|
+
)
|
|
832
851
|
try:
|
|
833
852
|
ensure_as_of_compatible = object.__getattribute__(
|
|
834
853
|
instance, "_ensure_as_of_compatible"
|
|
@@ -940,6 +959,10 @@ class GeneralManagerMeta(type):
|
|
|
940
959
|
type.__setattr__(new_class, "_gm_attributes_initialized", True)
|
|
941
960
|
|
|
942
961
|
|
|
962
|
+
# In-place metaclass customization must retain observable dictionary lookups.
|
|
963
|
+
_STANDARD_MANAGER_META_GETATTRIBUTE = GeneralManagerMeta.__getattribute__
|
|
964
|
+
_STANDARD_MANAGER_META_DICT = vars(GeneralManagerMeta)
|
|
965
|
+
|
|
943
966
|
_CAPABILITY_BUILDER: "ManifestCapabilityBuilder | None" = None
|
|
944
967
|
|
|
945
968
|
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/measurement/measurement.py
RENAMED
|
@@ -6,7 +6,7 @@ from collections.abc import Callable
|
|
|
6
6
|
from functools import lru_cache
|
|
7
7
|
from typing import TypeAlias, TypeGuard, cast
|
|
8
8
|
import pint
|
|
9
|
-
from decimal import Decimal, InvalidOperation, ROUND_HALF_EVEN, localcontext
|
|
9
|
+
from decimal import Decimal, InvalidOperation, ROUND_HALF_EVEN, getcontext, localcontext
|
|
10
10
|
from operator import lt, le, gt, ge
|
|
11
11
|
from pint.facets.plain import PlainQuantity
|
|
12
12
|
from pint.util import UnitsContainer
|
|
@@ -58,6 +58,15 @@ def _canonical_unit_string(unit: str) -> str:
|
|
|
58
58
|
return str(parsed_unit)
|
|
59
59
|
|
|
60
60
|
|
|
61
|
+
@lru_cache(maxsize=512)
|
|
62
|
+
def _default_quantity_unit(unit: str) -> pint.Unit:
|
|
63
|
+
"""Cache the legacy unit round trip for the default Pint formatter only."""
|
|
64
|
+
|
|
65
|
+
# Pint's display can round fractional exponents. Retain that round trip
|
|
66
|
+
# without relying on a public label cached under a previous formatter.
|
|
67
|
+
return _parse_unit(str(_parse_unit(unit)))
|
|
68
|
+
|
|
69
|
+
|
|
61
70
|
def _format_decimal(value: Decimal) -> Decimal:
|
|
62
71
|
"""
|
|
63
72
|
Normalise decimals so integers have no fractional component.
|
|
@@ -82,6 +91,13 @@ def _format_decimal(value: Decimal) -> Decimal:
|
|
|
82
91
|
def _decimal_precision(*values: Decimal, extra_digits: int = 0) -> int:
|
|
83
92
|
"""Return enough local precision to retain all supplied Decimal coefficients."""
|
|
84
93
|
|
|
94
|
+
if len(values) == 1:
|
|
95
|
+
value = values[0]
|
|
96
|
+
if not value.is_finite():
|
|
97
|
+
return max(28, extra_digits)
|
|
98
|
+
# For one coefficient, adjusted - exponent + 1 is its digit count.
|
|
99
|
+
return max(28, len(value.as_tuple().digits)) + extra_digits
|
|
100
|
+
|
|
85
101
|
finite_values = [value for value in values if value.is_finite()]
|
|
86
102
|
coefficient_digits = sum(len(value.as_tuple().digits) for value in finite_values)
|
|
87
103
|
if not finite_values:
|
|
@@ -734,7 +750,7 @@ class Measurement:
|
|
|
734
750
|
version and are not a stable GeneralManager API contract.
|
|
735
751
|
"""
|
|
736
752
|
|
|
737
|
-
__quantity: MeasurementQuantity | None
|
|
753
|
+
__quantity: MeasurementQuantity | pint.Unit | None
|
|
738
754
|
__magnitude: Decimal
|
|
739
755
|
__unit: str
|
|
740
756
|
__quantity_exposed: bool
|
|
@@ -744,8 +760,9 @@ class Measurement:
|
|
|
744
760
|
Create a Measurement from a numeric value and a unit label.
|
|
745
761
|
|
|
746
762
|
Converts the provided numeric-like value to a Decimal through
|
|
747
|
-
``Decimal(str(value))`` and
|
|
748
|
-
|
|
763
|
+
``Decimal(str(value))`` and validates the given Pint unit expression.
|
|
764
|
+
Ordinary values defer the internal Pint quantity until it is needed.
|
|
765
|
+
``unit`` may be ``"dimensionless"`` or an
|
|
749
766
|
empty string for dimensionless measurements. Discrete item quantities
|
|
750
767
|
should use ``"count"``, which belongs to its own unit family rather than
|
|
751
768
|
Pint's plain dimensionless family. Invalid units are reported by Pint and
|
|
@@ -784,6 +801,29 @@ class Measurement:
|
|
|
784
801
|
value = Decimal(str(value))
|
|
785
802
|
except (InvalidOperation, TypeError, ValueError) as error:
|
|
786
803
|
raise InvalidMeasurementInitializationError() from error
|
|
804
|
+
self.__set_value(value, unit)
|
|
805
|
+
|
|
806
|
+
def __set_value(self, value: Decimal, unit: str) -> None:
|
|
807
|
+
"""Validate scalar parts eagerly and defer ordinary Pint allocations."""
|
|
808
|
+
|
|
809
|
+
# Normalization is idempotent for normal values and zeros without clamp.
|
|
810
|
+
# Subnormals can change again as their coefficient (and local precision)
|
|
811
|
+
# shrinks; preserve the original Pint/Decimal pipeline for those cases.
|
|
812
|
+
if (
|
|
813
|
+
not getcontext().clamp
|
|
814
|
+
and (value.is_normal() or value.is_zero())
|
|
815
|
+
and not ureg.formatter.default_format
|
|
816
|
+
):
|
|
817
|
+
magnitude = _decimal_from_magnitude(value)
|
|
818
|
+
canonical_unit = _canonical_unit_string(unit)
|
|
819
|
+
# Keep immutable internal units separate from the public label,
|
|
820
|
+
# which may have been cached under a different Pint formatter.
|
|
821
|
+
self.__quantity = _default_quantity_unit(unit)
|
|
822
|
+
self.__magnitude = magnitude
|
|
823
|
+
self.__unit = canonical_unit
|
|
824
|
+
self.__quantity_exposed = False
|
|
825
|
+
return
|
|
826
|
+
# Custom formatters must retain the eager unit reparse and its errors.
|
|
787
827
|
self.__set_quantity(_build_quantity(value, unit), _canonical_unit_string(unit))
|
|
788
828
|
|
|
789
829
|
@classmethod
|
|
@@ -828,10 +868,13 @@ class Measurement:
|
|
|
828
868
|
|
|
829
869
|
def __current_quantity(self) -> MeasurementQuantity:
|
|
830
870
|
quantity = self.__quantity
|
|
831
|
-
if quantity
|
|
871
|
+
if not isinstance(quantity, PlainQuantity):
|
|
832
872
|
quantity = cast(
|
|
833
873
|
MeasurementQuantity,
|
|
834
|
-
ureg.Quantity(
|
|
874
|
+
ureg.Quantity(
|
|
875
|
+
self.__magnitude,
|
|
876
|
+
quantity if quantity is not None else _parse_unit(self.__unit),
|
|
877
|
+
),
|
|
835
878
|
)
|
|
836
879
|
self.__quantity = quantity
|
|
837
880
|
return quantity
|
|
@@ -867,7 +910,7 @@ class Measurement:
|
|
|
867
910
|
"""
|
|
868
911
|
value = Decimal(state["magnitude"])
|
|
869
912
|
unit = state["unit"]
|
|
870
|
-
self.
|
|
913
|
+
self.__set_value(value, unit)
|
|
871
914
|
|
|
872
915
|
def deconstruct(self) -> tuple[str, list[object], dict[str, object]]:
|
|
873
916
|
"""Describe this value for Django migration serialization.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/GeneralManager.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/_types/general_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_relations.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_warmup_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/graphql_warmup_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/notification_batching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/api/remote_invalidation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/_materialized_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/_dependency_graph.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/data_change_context.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_matching.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/dependency_shards.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/cache/run_context_lru.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/diagnostics.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/fingerprints.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/evals/judges/contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/calculations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/evidence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/provider_calls.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/scheduler.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/synthesis.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/planned/validation.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/_shared.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/anthropic.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/google.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/ollama.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/chat/providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/dataframes/measurements.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/excel.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.5}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|