GeneralManager 0.80.4__tar.gz → 0.80.6__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.6}/PKG-INFO +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.6}/pyproject.toml +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.6/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/manager/meta.py +27 -4
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/measurement/measurement.py +50 -7
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_cache_key_encoder.py +63 -5
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_make_cache_key.py +2 -2
- {generalmanager-0.80.4 → generalmanager-0.80.6}/LICENSE +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/README.md +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/setup.cfg +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/dataframes.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_as_of.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_groups.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_ordering.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_output.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_relations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_type.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/notification_batching.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/apps.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/as_of.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/_materialized_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/_ordering.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/excel_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/projection.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/_dependency_graph.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/data_change_context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/run_context_lru.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/context.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/datasets/planned_orchestration.yaml +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/budget.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/calculations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/catalog.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/events.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/evidence.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/planner.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/provider_calls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/resolver.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/routing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/scheduler.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/synthesis.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/validation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/system_prompt.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/turns.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/conf.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/dataframes/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/dataframes/measurements.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/calculation/input_resolution.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/excel/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/orm_utils/update_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/excel_store.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/excel_workbook.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/excel.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/utils/history.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/logging.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0007_upload_intent.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/0012_chat_context_watermarks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/py.typed +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/m2m_invalidation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/adapters.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/errors.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/finalization.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/graphql.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/graphql_types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/metrics.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/public.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/s3.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/services.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/tokens.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/types.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/urls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/uploads/views.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_args_to_kwargs.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_none_to_zero.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/tests/test_settings.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/tests/test_urls.py +0 -0
- {generalmanager-0.80.4 → generalmanager-0.80.6}/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.6
|
|
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.6"
|
|
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.6
|
|
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.6}/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.
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_cache_key_encoder.py
RENAMED
|
@@ -88,7 +88,9 @@ def _encode_time(value: time) -> list[object]:
|
|
|
88
88
|
]
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
def _encode_manager(
|
|
91
|
+
def _encode_manager(
|
|
92
|
+
value: object, active_ids: set[int], *, frozen: bool = False
|
|
93
|
+
) -> object:
|
|
92
94
|
manager = cast("GeneralManager", value)
|
|
93
95
|
manager_type = type(manager)
|
|
94
96
|
missing = object()
|
|
@@ -99,20 +101,76 @@ def _encode_manager(value: object, active_ids: set[int]) -> list[object]:
|
|
|
99
101
|
)
|
|
100
102
|
|
|
101
103
|
search_date = _legacy_effective_search_date(manager)
|
|
102
|
-
snapshot: object = (
|
|
104
|
+
snapshot: list[object] = (
|
|
103
105
|
["none"]
|
|
104
106
|
if not isinstance(search_date, datetime)
|
|
105
107
|
else ["as_of", search_date_cache_fingerprint(search_date)]
|
|
106
108
|
)
|
|
109
|
+
module = type.__getattribute__(manager_type, "__module__")
|
|
110
|
+
qualname = type.__getattribute__(manager_type, "__qualname__")
|
|
111
|
+
identification = manager.identification
|
|
112
|
+
if frozen:
|
|
113
|
+
if type(module) is not str or type(qualname) is not str:
|
|
114
|
+
# Unusual mutable class metadata must be frozen only after identity
|
|
115
|
+
# conversion, matching the generic path's side effects and errors.
|
|
116
|
+
return freeze_encoded_cache_key_value(
|
|
117
|
+
[
|
|
118
|
+
"manager",
|
|
119
|
+
module,
|
|
120
|
+
qualname,
|
|
121
|
+
encode_cache_key_value(identification, active_ids),
|
|
122
|
+
snapshot,
|
|
123
|
+
]
|
|
124
|
+
)
|
|
125
|
+
return (
|
|
126
|
+
"manager",
|
|
127
|
+
module,
|
|
128
|
+
qualname,
|
|
129
|
+
_freeze_manager_identification(identification, active_ids),
|
|
130
|
+
tuple(snapshot),
|
|
131
|
+
)
|
|
107
132
|
return [
|
|
108
133
|
"manager",
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
encode_cache_key_value(
|
|
134
|
+
module,
|
|
135
|
+
qualname,
|
|
136
|
+
encode_cache_key_value(identification, active_ids),
|
|
112
137
|
snapshot,
|
|
113
138
|
]
|
|
114
139
|
|
|
115
140
|
|
|
141
|
+
def _freeze_manager_identification(value: object, active_ids: set[int]) -> object:
|
|
142
|
+
# Only exact builtins bypass the generic encoder: subclasses can customize
|
|
143
|
+
# iteration or conversion. Read the current identity on every call.
|
|
144
|
+
if type(value) is dict and len(value) == 1:
|
|
145
|
+
key, item = next(iter(value.items()))
|
|
146
|
+
if type(key) is str:
|
|
147
|
+
item_type = type(item)
|
|
148
|
+
encoded: tuple[object, ...] | None = None
|
|
149
|
+
if item_type is int:
|
|
150
|
+
encoded = ("int", str(item))
|
|
151
|
+
elif item_type is str:
|
|
152
|
+
encoded = ("str", item)
|
|
153
|
+
elif item_type is bool:
|
|
154
|
+
encoded = ("bool", item)
|
|
155
|
+
elif item is None:
|
|
156
|
+
encoded = ("none",)
|
|
157
|
+
if encoded is not None:
|
|
158
|
+
return ("mapping", ((("str", key), encoded),))
|
|
159
|
+
return freeze_encoded_cache_key_value(encode_cache_key_value(value, active_ids))
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def encode_frozen_manager_cache_key_value(value: object) -> object:
|
|
163
|
+
"""Encode a known manager directly into the existing immutable key format."""
|
|
164
|
+
# Multiple inheritance can give a manager a scalar identity. Preserve the
|
|
165
|
+
# generic encoder's scalar-before-manager dispatch, including its errors.
|
|
166
|
+
if isinstance(
|
|
167
|
+
value,
|
|
168
|
+
(int, float, Decimal, str, bytes, UUID, date, time, timedelta, Measurement),
|
|
169
|
+
):
|
|
170
|
+
return freeze_encoded_cache_key_value(encode_cache_key_value(value))
|
|
171
|
+
return _encode_manager(value, {id(value)}, frozen=True)
|
|
172
|
+
|
|
173
|
+
|
|
116
174
|
@lru_cache(maxsize=1)
|
|
117
175
|
def _general_manager_class() -> type[object]:
|
|
118
176
|
from general_manager.manager.general_manager import GeneralManager
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/utils/_make_cache_key.py
RENAMED
|
@@ -9,7 +9,7 @@ from general_manager.as_of import as_of_cache_fingerprint
|
|
|
9
9
|
from general_manager.utils._cache_key_encoder import (
|
|
10
10
|
canonical_cache_key_json,
|
|
11
11
|
encode_cache_key_value,
|
|
12
|
-
|
|
12
|
+
encode_frozen_manager_cache_key_value,
|
|
13
13
|
is_general_manager,
|
|
14
14
|
)
|
|
15
15
|
|
|
@@ -118,7 +118,7 @@ def _single_manager_arg_fast_key(
|
|
|
118
118
|
) -> str | None:
|
|
119
119
|
if not is_general_manager(value):
|
|
120
120
|
return None
|
|
121
|
-
encoded_manager =
|
|
121
|
+
encoded_manager = encode_frozen_manager_cache_key_value(value)
|
|
122
122
|
return _single_manager_arg_cache_key(
|
|
123
123
|
parameter_name,
|
|
124
124
|
func.__module__,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/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.6}/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.6}/src/general_manager/api/graphql_relations.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/src/general_manager/api/graphql_warmup_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/api/graphql_warmup_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/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.6}/src/general_manager/bucket/_materialized_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/_dependency_graph.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/data_change_context.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_matching.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/cache/dependency_shards.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/src/general_manager/chat/evals/diagnostics.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/fingerprints.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/evals/judges/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/src/general_manager/chat/planned/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/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.6}/src/general_manager/chat/planned/evidence.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/provider_calls.py
RENAMED
|
File without changes
|
{generalmanager-0.80.4 → generalmanager-0.80.6}/src/general_manager/chat/planned/resolver.py
RENAMED
|
File without changes
|
|
File without changes
|