GeneralManager 0.60.4__tar.gz → 0.60.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.60.4/src/GeneralManager.egg-info → generalmanager-0.60.6}/PKG-INFO +1 -1
- {generalmanager-0.60.4 → generalmanager-0.60.6}/pyproject.toml +1 -1
- {generalmanager-0.60.4 → generalmanager-0.60.6/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_errors.py +3 -3
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_resolvers.py +1 -1
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/system_prompt.py +15 -10
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement.py +35 -14
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement_field.py +4 -4
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/path_mapping.py +225 -73
- {generalmanager-0.60.4 → generalmanager-0.60.6}/LICENSE +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/README.md +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/setup.cfg +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/dataframes.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/apps.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/conf.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/dataframes/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/dataframes/measurements.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/logging.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/py.typed +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/test_settings.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/test_urls.py +0 -0
- {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.60.
|
|
3
|
+
Version: 0.60.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.60.
|
|
7
|
+
version = "0.60.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.60.
|
|
3
|
+
Version: 0.60.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
|
|
@@ -239,10 +239,10 @@ HANDLED_MANAGER_ERRORS: tuple[type[Exception], ...] = (
|
|
|
239
239
|
|
|
240
240
|
|
|
241
241
|
class MeasurementType(ObjectType):
|
|
242
|
-
"""GraphQL object wrapper exposing measurement magnitude and
|
|
242
|
+
"""GraphQL object wrapper exposing measurement magnitude and unit text.
|
|
243
243
|
|
|
244
244
|
``value`` is emitted through Graphene ``Float`` and may lose Decimal
|
|
245
|
-
precision. ``unit`` is the measurement's
|
|
245
|
+
precision. ``unit`` is the measurement's GeneralManager public unit string.
|
|
246
246
|
"""
|
|
247
247
|
|
|
248
248
|
value = Float()
|
|
@@ -259,7 +259,7 @@ class MeasurementScalar(Scalar):
|
|
|
259
259
|
are outside the documented user API.
|
|
260
260
|
|
|
261
261
|
``serialize()`` accepts only ``Measurement`` instances and returns their
|
|
262
|
-
|
|
262
|
+
public string representation; it raises ``InvalidMeasurementValueError``
|
|
263
263
|
for every other value. ``parse_value()`` is the public variable-input parser,
|
|
264
264
|
accepts a string, and returns a ``Measurement``. Type checkers should reject
|
|
265
265
|
non-string direct calls. Runtime non-string calls are unsupported; their
|
|
@@ -255,16 +255,21 @@ def _relationship_lines(
|
|
|
255
255
|
index: dict[str, dict[str, object]], manager_names: list[str]
|
|
256
256
|
) -> list[str]:
|
|
257
257
|
relationship_lines: list[str] = []
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
)
|
|
258
|
+
exposed_names = [name for name in manager_names if name in index]
|
|
259
|
+
if len(exposed_names) > PROMPT_MANAGER_DETAIL_LIMIT:
|
|
260
|
+
# Bound lazy path resolution to avoid reintroducing CPU-bound O(n^2) work.
|
|
261
|
+
return relationship_lines
|
|
262
|
+
for from_manager in exposed_names:
|
|
263
|
+
path_map = PathMap(from_manager)
|
|
264
|
+
for to_manager in exposed_names:
|
|
265
|
+
if from_manager == to_manager:
|
|
266
|
+
continue
|
|
267
|
+
tracer = path_map.to(to_manager)
|
|
268
|
+
path = getattr(tracer, "path", None) if tracer is not None else None
|
|
269
|
+
if path:
|
|
270
|
+
relationship_lines.append(
|
|
271
|
+
f"{from_manager} -> {to_manager}: {' -> '.join(path)}"
|
|
272
|
+
)
|
|
268
273
|
return relationship_lines
|
|
269
274
|
|
|
270
275
|
|
{generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement.py
RENAMED
|
@@ -19,12 +19,19 @@ ComparisonOperation: TypeAlias = Callable[[QuantityMagnitude, QuantityMagnitude]
|
|
|
19
19
|
# Set precision for Decimal
|
|
20
20
|
getcontext().prec = 28
|
|
21
21
|
_PERCENT_SCALE = Decimal("100")
|
|
22
|
+
_COUNT_PUBLIC_UNIT = "count"
|
|
23
|
+
_PIECE_COUNT_CANONICAL_UNIT = "piece"
|
|
22
24
|
|
|
23
25
|
# Create a new UnitRegistry
|
|
24
26
|
ureg: pint.UnitRegistry[QuantityMagnitude] = pint.UnitRegistry(
|
|
25
27
|
auto_reduce_dimensions=True
|
|
26
28
|
)
|
|
27
29
|
|
|
30
|
+
# Pint defines "count" as dimensionless. GeneralManager treats discrete item
|
|
31
|
+
# counts as their own unit family so scalar arithmetic cannot silently erase it.
|
|
32
|
+
ureg.define(f"{_PIECE_COUNT_CANONICAL_UNIT} = [piece_count] = {_COUNT_PUBLIC_UNIT}")
|
|
33
|
+
_PIECE_COUNT_UNIT = ureg.parse_units(_COUNT_PUBLIC_UNIT)
|
|
34
|
+
|
|
28
35
|
# Define currency units
|
|
29
36
|
currency_units = ["EUR", "USD", "GBP", "JPY", "CHF", "AUD", "CAD"]
|
|
30
37
|
for currency in currency_units:
|
|
@@ -43,7 +50,10 @@ def _parse_unit(unit: str) -> pint.Unit:
|
|
|
43
50
|
def _canonical_unit_string(unit: str) -> str:
|
|
44
51
|
"""Return Pint's canonical unit string for one unit expression."""
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
parsed_unit = _parse_unit(unit)
|
|
54
|
+
if parsed_unit == _PIECE_COUNT_UNIT:
|
|
55
|
+
return _COUNT_PUBLIC_UNIT
|
|
56
|
+
return str(parsed_unit)
|
|
47
57
|
|
|
48
58
|
|
|
49
59
|
def _format_decimal(value: Decimal) -> Decimal:
|
|
@@ -496,8 +506,11 @@ class Measurement:
|
|
|
496
506
|
comparison, string parsing, pickling, and explicit currency conversion.
|
|
497
507
|
Currency conversions never use implicit rates; callers must pass an
|
|
498
508
|
``exchange_rate`` when converting between different configured currencies.
|
|
499
|
-
Pint canonicalizes unit names, so ``unit`` and string/repr output may
|
|
500
|
-
canonical names such as ``"kilogram"`` rather than the caller's
|
|
509
|
+
Pint canonicalizes most unit names, so ``unit`` and string/repr output may
|
|
510
|
+
use canonical names such as ``"kilogram"`` rather than the caller's
|
|
511
|
+
spelling. GeneralManager keeps the public ``"count"`` spelling for discrete
|
|
512
|
+
piece-count measurements even though Pint represents that base unit
|
|
513
|
+
internally as ``"piece"``.
|
|
501
514
|
Exact Pint exception subclasses/messages, canonical compound-unit ordering,
|
|
502
515
|
aliases, and offset-unit internals are delegated to the installed Pint
|
|
503
516
|
version and are not a stable GeneralManager API contract.
|
|
@@ -515,8 +528,10 @@ class Measurement:
|
|
|
515
528
|
Converts the provided numeric-like value to a Decimal through
|
|
516
529
|
``Decimal(str(value))`` and constructs the internal quantity using the
|
|
517
530
|
given Pint unit expression. ``unit`` may be ``"dimensionless"`` or an
|
|
518
|
-
empty string for dimensionless measurements.
|
|
519
|
-
|
|
531
|
+
empty string for dimensionless measurements. Discrete item quantities
|
|
532
|
+
should use ``"count"``, which belongs to its own unit family rather than
|
|
533
|
+
Pint's plain dimensionless family. Invalid units are reported by Pint and
|
|
534
|
+
are not wrapped by this constructor. String values are
|
|
520
535
|
numeric magnitudes only; use ``from_string()`` for combined
|
|
521
536
|
``"<value> <unit>"`` text. ``bool`` is rejected even though it is an
|
|
522
537
|
``int`` subclass in Python.
|
|
@@ -531,7 +546,8 @@ class Measurement:
|
|
|
531
546
|
value (Decimal | float | int | str): Numeric value to use as the measurement magnitude; strings and numeric types are coerced to Decimal.
|
|
532
547
|
unit (str): Unit label registered in the module's unit registry,
|
|
533
548
|
including configured currency codes, physical unit names,
|
|
534
|
-
|
|
549
|
+
``"count"`` for discrete item quantities, compound Pint
|
|
550
|
+
expressions such as ``"kg / m^2"``, or
|
|
535
551
|
dimensionless units.
|
|
536
552
|
|
|
537
553
|
Raises:
|
|
@@ -585,7 +601,9 @@ class Measurement:
|
|
|
585
601
|
|
|
586
602
|
self.__quantity = quantity
|
|
587
603
|
self.__magnitude = _decimal_from_magnitude(quantity.magnitude)
|
|
588
|
-
self.__unit =
|
|
604
|
+
self.__unit = (
|
|
605
|
+
unit if unit is not None else _canonical_unit_string(str(quantity.units))
|
|
606
|
+
)
|
|
589
607
|
self.__quantity_exposed = False
|
|
590
608
|
|
|
591
609
|
def __current_quantity(self) -> MeasurementQuantity:
|
|
@@ -605,7 +623,7 @@ class Measurement:
|
|
|
605
623
|
|
|
606
624
|
def __current_unit(self) -> str:
|
|
607
625
|
if self.__quantity_exposed:
|
|
608
|
-
return str(self.__current_quantity().units)
|
|
626
|
+
return _canonical_unit_string(str(self.__current_quantity().units))
|
|
609
627
|
return self.__unit
|
|
610
628
|
|
|
611
629
|
def __getstate__(self) -> dict[str, str]:
|
|
@@ -671,12 +689,15 @@ class Measurement:
|
|
|
671
689
|
"""
|
|
672
690
|
Retrieve the unit label associated with the measurement.
|
|
673
691
|
|
|
674
|
-
The returned value is
|
|
675
|
-
|
|
676
|
-
|
|
692
|
+
The returned value is GeneralManager's public unit string, usually
|
|
693
|
+
Pint's canonical unit string and not necessarily the spelling passed to
|
|
694
|
+
the constructor. Empty-string and ``"dimensionless"`` inputs both expose
|
|
695
|
+
``"dimensionless"``. Discrete piece-count inputs such as ``"count"``
|
|
696
|
+
and ``"piece"`` expose ``"count"`` while Pint's internal quantity uses
|
|
697
|
+
``"piece"``. The Pint ``"pc"`` alias remains parsec, not piece count.
|
|
677
698
|
|
|
678
699
|
Returns:
|
|
679
|
-
str:
|
|
700
|
+
str: Public unit string used by GeneralManager.
|
|
680
701
|
"""
|
|
681
702
|
return self.__current_unit()
|
|
682
703
|
|
|
@@ -1118,8 +1139,8 @@ class Measurement:
|
|
|
1118
1139
|
Return a detailed representation suitable for debugging.
|
|
1119
1140
|
|
|
1120
1141
|
The magnitude is read through the ``magnitude`` property, and the unit
|
|
1121
|
-
is
|
|
1122
|
-
``Measurement(<magnitude>, '<
|
|
1142
|
+
is GeneralManager's public unit string. The GeneralManager-owned shape is
|
|
1143
|
+
``Measurement(<magnitude>, '<unit>')``; exact magnitude and
|
|
1123
1144
|
compound-unit spelling follow the documented Decimal/Pint boundaries.
|
|
1124
1145
|
|
|
1125
1146
|
Returns:
|
{generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement_field.py
RENAMED
|
@@ -73,10 +73,10 @@ class MeasurementField(MeasurementFieldBase):
|
|
|
73
73
|
"""
|
|
74
74
|
Create a MeasurementField configured with a canonical base unit and paired backing columns.
|
|
75
75
|
|
|
76
|
-
Initializes the field's canonical base unit and derived dimensionality, records the editable flag, constructs a Decimal-backed value column (`<name>_value`) and Char-backed unit column (`<name>_unit`), and forwards remaining arguments to the base Field constructor. Stored magnitudes are converted to `base_unit` and rounded to the backing `DecimalField(max_digits=30, decimal_places=10)` precision; the unit column stores
|
|
76
|
+
Initializes the field's canonical base unit and derived dimensionality, records the editable flag, constructs a Decimal-backed value column (`<name>_value`) and Char-backed unit column (`<name>_unit`), and forwards remaining arguments to the base Field constructor. Stored magnitudes are converted to `base_unit` and rounded to the backing `DecimalField(max_digits=30, decimal_places=10)` precision; the unit column stores the Measurement's public unit spelling, such as `gram` for `g` and `count` for discrete item counts.
|
|
77
77
|
|
|
78
78
|
Parameters:
|
|
79
|
-
base_unit (str): Multiplicative Pint unit used to normalize and store measurements. Currency units must be one of `currency_units`; each configured currency is treated as its own Pint dimension.
|
|
79
|
+
base_unit (str): Multiplicative Pint unit used to normalize and store measurements. Currency units must be one of `currency_units`; each configured currency is treated as its own Pint dimension. Use `count` for discrete item quantities.
|
|
80
80
|
*args (object): Positional arguments forwarded to the base Field implementation.
|
|
81
81
|
null (bool): If True, the backing columns may be NULL in the database.
|
|
82
82
|
blank (bool): If True, forms may accept an empty value for this field.
|
|
@@ -536,7 +536,7 @@ class MeasurementField(MeasurementFieldBase):
|
|
|
536
536
|
Resolve the field value on an instance, reconstructing the measurement when possible.
|
|
537
537
|
|
|
538
538
|
The descriptor reads `<name>_value` as a base-unit magnitude and
|
|
539
|
-
`<name>_unit` as
|
|
539
|
+
`<name>_unit` as the Measurement public spelling for the unit originally assigned. It converts the
|
|
540
540
|
base magnitude back to that stored unit for display. If stored data has
|
|
541
541
|
drifted and the unit is no longer parseable or dimensionally compatible with the base
|
|
542
542
|
unit, reconstruction falls back to a Measurement in `base_unit` rather
|
|
@@ -655,7 +655,7 @@ class MeasurementField(MeasurementFieldBase):
|
|
|
655
655
|
) from e
|
|
656
656
|
|
|
657
657
|
setattr(instance, self.value_attr, self._normalize_base_magnitude(base_mag))
|
|
658
|
-
setattr(instance, self.unit_attr, str(value.
|
|
658
|
+
setattr(instance, self.unit_attr, str(value.unit))
|
|
659
659
|
|
|
660
660
|
def validate(
|
|
661
661
|
self,
|