GeneralManager 0.71.0__tar.gz → 0.72.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {generalmanager-0.71.0/src/GeneralManager.egg-info → generalmanager-0.72.0}/PKG-INFO +1 -1
- {generalmanager-0.71.0 → generalmanager-0.72.0}/pyproject.toml +1 -1
- {generalmanager-0.71.0 → generalmanager-0.72.0/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_resolvers.py +165 -37
- {generalmanager-0.71.0 → generalmanager-0.72.0}/LICENSE +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/README.md +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/setup.cfg +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/dataframes.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_as_of.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_relations.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/notification_batching.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/apps.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/as_of.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/data_change_context.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/run_context_lru.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/system_prompt.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/conf.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/dataframes/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/dataframes/measurements.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/utils/history.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/logging.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0007_upload_intent.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/py.typed +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/invalidation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/m2m_invalidation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/adapters.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/config.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/errors.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/finalization.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/graphql.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/graphql_types.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/metrics.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/public.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/s3.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/services.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/tokens.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/types.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/urls.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/uploads/views.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/tests/test_settings.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/tests/test_urls.py +0 -0
- {generalmanager-0.71.0 → generalmanager-0.72.0}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.72.0
|
|
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.
|
|
7
|
+
version = "0.72.0"
|
|
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.
|
|
3
|
+
Version: 0.72.0
|
|
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
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
@@ -37,6 +37,7 @@ from general_manager.permission.graphql_capabilities import (
|
|
|
37
37
|
get_capability_context,
|
|
38
38
|
get_graphql_capabilities,
|
|
39
39
|
)
|
|
40
|
+
from general_manager.utils.filter_parser import UnknownInputFieldError
|
|
40
41
|
from general_manager.utils.type_checks import safe_issubclass
|
|
41
42
|
|
|
42
43
|
if TYPE_CHECKING:
|
|
@@ -88,6 +89,15 @@ class UnsupportedExcludeNoneRelationFilterError(ValueError):
|
|
|
88
89
|
)
|
|
89
90
|
|
|
90
91
|
|
|
92
|
+
@dataclass(frozen=True, slots=True)
|
|
93
|
+
class QueryParameterPlan:
|
|
94
|
+
"""Normalized filter and exclusion operations for a list query."""
|
|
95
|
+
|
|
96
|
+
filters: GraphQLFilterMapping
|
|
97
|
+
excludes: GraphQLFilterMapping
|
|
98
|
+
normalized_excludes: GraphQLFilterMapping
|
|
99
|
+
|
|
100
|
+
|
|
91
101
|
@dataclass(slots=True)
|
|
92
102
|
class ReadAuthorizationResult(Generic[GeneralManagerT]):
|
|
93
103
|
"""Aggregate outcome from GraphQL read prefiltering and row authorization.
|
|
@@ -148,6 +158,99 @@ def contains_none_relation_filter(input_val: object) -> bool:
|
|
|
148
158
|
# ---------------------------------------------------------------------------
|
|
149
159
|
|
|
150
160
|
|
|
161
|
+
def build_query_parameter_plan(
|
|
162
|
+
filter_input: GraphQLFilterInput,
|
|
163
|
+
exclude_input: GraphQLFilterInput,
|
|
164
|
+
filter_normalizer: FilterNormalizer | None = None,
|
|
165
|
+
) -> QueryParameterPlan:
|
|
166
|
+
"""Parse and normalize filter and exclusion inputs once."""
|
|
167
|
+
filters = parse_input(filter_input)
|
|
168
|
+
excludes = parse_input(exclude_input)
|
|
169
|
+
normalized_excludes: GraphQLFilterMapping = {}
|
|
170
|
+
|
|
171
|
+
if filters and filter_normalizer is not None:
|
|
172
|
+
normalized = filter_normalizer(filters)
|
|
173
|
+
filters = normalized["filter"]
|
|
174
|
+
normalized_excludes = normalized["exclude"]
|
|
175
|
+
|
|
176
|
+
if excludes and filter_normalizer is not None:
|
|
177
|
+
if contains_none_relation_filter(excludes):
|
|
178
|
+
raise UnsupportedExcludeNoneRelationFilterError
|
|
179
|
+
normalized = filter_normalizer(excludes)
|
|
180
|
+
excludes = normalized["filter"]
|
|
181
|
+
normalized_excludes = {**normalized_excludes, **normalized["exclude"]}
|
|
182
|
+
|
|
183
|
+
return QueryParameterPlan(
|
|
184
|
+
filters=filters,
|
|
185
|
+
excludes=excludes,
|
|
186
|
+
normalized_excludes=normalized_excludes,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
def partition_calculation_query_plan(
|
|
191
|
+
manager_class: type[GeneralManager],
|
|
192
|
+
plan: QueryParameterPlan,
|
|
193
|
+
) -> tuple[QueryParameterPlan, QueryParameterPlan]:
|
|
194
|
+
"""Partition calculation predicates into input and computed-property plans.
|
|
195
|
+
|
|
196
|
+
Calculation inputs can constrain the combinations generated by a
|
|
197
|
+
calculation bucket. Predicates rooted at GraphQL properties must be
|
|
198
|
+
deferred until those combinations have been materialized. This helper only
|
|
199
|
+
inspects interface metadata and the already-normalized plan; it does not
|
|
200
|
+
instantiate managers or access descriptors. Manager-input ``_id`` aliases
|
|
201
|
+
are classified with their declared input while preserving the original
|
|
202
|
+
lookup for the bucket parser.
|
|
203
|
+
"""
|
|
204
|
+
interface = manager_class.Interface
|
|
205
|
+
input_fields = interface.input_fields
|
|
206
|
+
input_names = set(input_fields)
|
|
207
|
+
computed_names = set(interface.get_graph_ql_properties())
|
|
208
|
+
known_names = input_names | computed_names
|
|
209
|
+
|
|
210
|
+
def partition_mapping(
|
|
211
|
+
mapping: GraphQLFilterMapping,
|
|
212
|
+
) -> tuple[GraphQLFilterMapping, GraphQLFilterMapping]:
|
|
213
|
+
input_mapping: GraphQLFilterMapping = {}
|
|
214
|
+
deferred_mapping: GraphQLFilterMapping = {}
|
|
215
|
+
for lookup, value in mapping.items():
|
|
216
|
+
root = lookup.partition("__")[0]
|
|
217
|
+
classified_root = root
|
|
218
|
+
if root not in known_names and root.endswith("_id"):
|
|
219
|
+
alias_root = root.removesuffix("_id")
|
|
220
|
+
alias_input = input_fields.get(alias_root)
|
|
221
|
+
if (
|
|
222
|
+
alias_input is not None
|
|
223
|
+
and isinstance(alias_input.type, type)
|
|
224
|
+
and issubclass(alias_input.type, GeneralManager)
|
|
225
|
+
):
|
|
226
|
+
classified_root = alias_root
|
|
227
|
+
if classified_root not in known_names:
|
|
228
|
+
raise UnknownInputFieldError(root)
|
|
229
|
+
if classified_root in input_names:
|
|
230
|
+
input_mapping[lookup] = value
|
|
231
|
+
else:
|
|
232
|
+
deferred_mapping[lookup] = value
|
|
233
|
+
return input_mapping, deferred_mapping
|
|
234
|
+
|
|
235
|
+
input_filters, deferred_filters = partition_mapping(plan.filters)
|
|
236
|
+
input_excludes, deferred_excludes = partition_mapping(plan.excludes)
|
|
237
|
+
input_normalized_excludes, deferred_normalized_excludes = partition_mapping(
|
|
238
|
+
plan.normalized_excludes
|
|
239
|
+
)
|
|
240
|
+
return (
|
|
241
|
+
QueryParameterPlan(
|
|
242
|
+
filters=input_filters,
|
|
243
|
+
excludes=input_excludes,
|
|
244
|
+
normalized_excludes=input_normalized_excludes,
|
|
245
|
+
),
|
|
246
|
+
QueryParameterPlan(
|
|
247
|
+
filters=deferred_filters,
|
|
248
|
+
excludes=deferred_excludes,
|
|
249
|
+
normalized_excludes=deferred_normalized_excludes,
|
|
250
|
+
),
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
|
|
151
254
|
def apply_sorting(
|
|
152
255
|
queryset: Bucket[GeneralManager] | GroupBucket[GeneralManager],
|
|
153
256
|
sort_by: graphene.Enum | None,
|
|
@@ -160,6 +263,26 @@ def apply_sorting(
|
|
|
160
263
|
return queryset.sort(sort_by_str, reverse=reverse)
|
|
161
264
|
|
|
162
265
|
|
|
266
|
+
def apply_query_parameter_plan(
|
|
267
|
+
queryset: Bucket[GeneralManager],
|
|
268
|
+
plan: QueryParameterPlan,
|
|
269
|
+
sort_by: graphene.Enum | None,
|
|
270
|
+
reverse: bool,
|
|
271
|
+
) -> Bucket[GeneralManager]:
|
|
272
|
+
"""Apply a normalized query-parameter plan to *queryset*."""
|
|
273
|
+
if plan.filters:
|
|
274
|
+
queryset = queryset.filter(**plan.filters)
|
|
275
|
+
if plan.excludes:
|
|
276
|
+
queryset = queryset.exclude(**plan.excludes)
|
|
277
|
+
if plan.normalized_excludes:
|
|
278
|
+
queryset = queryset.exclude(**plan.normalized_excludes)
|
|
279
|
+
|
|
280
|
+
return cast(
|
|
281
|
+
Bucket[GeneralManager],
|
|
282
|
+
apply_sorting(queryset, sort_by, reverse),
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
|
|
163
286
|
def apply_query_parameters(
|
|
164
287
|
queryset: Bucket[GeneralManager],
|
|
165
288
|
filter_input: GraphQLFilterInput,
|
|
@@ -199,32 +322,12 @@ def apply_query_parameters(
|
|
|
199
322
|
Raises:
|
|
200
323
|
UnsupportedExcludeNoneRelationFilterError: If an exclude input contains a nested relation ``none`` filter.
|
|
201
324
|
"""
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
normalized = filter_normalizer(filters)
|
|
207
|
-
filters = normalized["filter"]
|
|
208
|
-
normalized_excludes = normalized["exclude"]
|
|
209
|
-
if filters:
|
|
210
|
-
queryset = queryset.filter(**filters)
|
|
211
|
-
|
|
212
|
-
excludes = parse_input(exclude_input)
|
|
213
|
-
if excludes and filter_normalizer is not None:
|
|
214
|
-
if contains_none_relation_filter(excludes):
|
|
215
|
-
raise UnsupportedExcludeNoneRelationFilterError
|
|
216
|
-
normalized = filter_normalizer(excludes)
|
|
217
|
-
excludes = normalized["filter"]
|
|
218
|
-
normalized_excludes = {**normalized_excludes, **normalized["exclude"]}
|
|
219
|
-
if excludes:
|
|
220
|
-
queryset = queryset.exclude(**excludes)
|
|
221
|
-
if normalized_excludes:
|
|
222
|
-
queryset = queryset.exclude(**normalized_excludes)
|
|
223
|
-
|
|
224
|
-
return cast(
|
|
225
|
-
Bucket[GeneralManager],
|
|
226
|
-
apply_sorting(queryset, sort_by, reverse),
|
|
325
|
+
plan = build_query_parameter_plan(
|
|
326
|
+
filter_input,
|
|
327
|
+
exclude_input,
|
|
328
|
+
filter_normalizer,
|
|
227
329
|
)
|
|
330
|
+
return apply_query_parameter_plan(queryset, plan, sort_by, reverse)
|
|
228
331
|
|
|
229
332
|
|
|
230
333
|
def apply_permission_filters(
|
|
@@ -688,13 +791,17 @@ def create_list_resolver(
|
|
|
688
791
|
``base_queryset._manager_class`` when that is a GeneralManager subclass,
|
|
689
792
|
otherwise using ``fallback_manager_class``. That manager class drives
|
|
690
793
|
permission checks, filter normalization, dependency prefetching, and
|
|
691
|
-
capability warmups.
|
|
692
|
-
permission row gate before user-supplied
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
794
|
+
capability warmups. For non-calculation managers, the resolver applies
|
|
795
|
+
permission prefilters and the permission row gate before all user-supplied
|
|
796
|
+
query predicates. For calculation managers, it applies input predicates
|
|
797
|
+
before authorization to limit generated candidates, fences that exact
|
|
798
|
+
candidate subset before permission prefilters, then applies deferred
|
|
799
|
+
computed-property predicates afterward. Permission constraints can only
|
|
800
|
+
narrow the user-selected input domain. Grouping, sorting, and pagination
|
|
801
|
+
remain after those predicate phases. Sorting therefore applies to records
|
|
802
|
+
when grouping is omitted and to grouped manager objects when grouping is
|
|
803
|
+
active. It computes ``total_count`` after grouping and sorting and before
|
|
804
|
+
pagination. Non-grouped page items are
|
|
698
805
|
materialized to a list; grouped results remain a
|
|
699
806
|
``GroupBucket`` and are returned as the Python-side ``items`` value. When
|
|
700
807
|
grouping is active, pagination slices the group bucket before it is returned.
|
|
@@ -750,7 +857,6 @@ def create_list_resolver(
|
|
|
750
857
|
and issubclass(manager_class, GeneralManager)
|
|
751
858
|
):
|
|
752
859
|
manager_class = fallback_manager_class
|
|
753
|
-
qs = apply_permission_filters(base_queryset, manager_class, info)
|
|
754
860
|
bound_filter_normalizer = None
|
|
755
861
|
if filter_normalizer is not None:
|
|
756
862
|
|
|
@@ -759,14 +865,36 @@ def create_list_resolver(
|
|
|
759
865
|
) -> NormalizedFilterPlan:
|
|
760
866
|
return filter_normalizer(manager_class, filters)
|
|
761
867
|
|
|
762
|
-
|
|
763
|
-
qs,
|
|
868
|
+
plan = build_query_parameter_plan(
|
|
764
869
|
filter,
|
|
765
870
|
exclude,
|
|
766
|
-
None,
|
|
767
|
-
reverse,
|
|
768
871
|
filter_normalizer=bound_filter_normalizer,
|
|
769
872
|
)
|
|
873
|
+
from general_manager.interface import CalculationInterface
|
|
874
|
+
|
|
875
|
+
interface = getattr(manager_class, "Interface", None)
|
|
876
|
+
if isinstance(interface, type) and issubclass(interface, CalculationInterface):
|
|
877
|
+
input_plan, deferred_plan = partition_calculation_query_plan(
|
|
878
|
+
manager_class,
|
|
879
|
+
plan,
|
|
880
|
+
)
|
|
881
|
+
input_queryset = apply_query_parameter_plan(
|
|
882
|
+
base_queryset,
|
|
883
|
+
input_plan,
|
|
884
|
+
None,
|
|
885
|
+
reverse,
|
|
886
|
+
)
|
|
887
|
+
if (
|
|
888
|
+
input_plan.filters
|
|
889
|
+
or input_plan.excludes
|
|
890
|
+
or input_plan.normalized_excludes
|
|
891
|
+
):
|
|
892
|
+
input_queryset = input_queryset.with_instances(input_queryset)
|
|
893
|
+
qs = apply_permission_filters(input_queryset, manager_class, info)
|
|
894
|
+
qs = apply_query_parameter_plan(qs, deferred_plan, None, reverse)
|
|
895
|
+
else:
|
|
896
|
+
qs = apply_permission_filters(base_queryset, manager_class, info)
|
|
897
|
+
qs = apply_query_parameter_plan(qs, plan, None, reverse)
|
|
770
898
|
qs_grouped = apply_grouping(qs, group_by)
|
|
771
899
|
qs_sorted = apply_sorting(qs_grouped, sort_by, reverse)
|
|
772
900
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/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.71.0 → generalmanager-0.72.0}/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
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_relations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_warmup_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/graphql_warmup_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/api/notification_batching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/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
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/data_change_context.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_matching.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/cache/dependency_shards.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/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
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/diagnostics.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/fingerprints.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/evals/judges/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/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.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/_shared.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/anthropic.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/google.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/ollama.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/chat/providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/dataframes/measurements.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.71.0 → generalmanager-0.72.0}/src/general_manager/interface/capabilities/base.py
RENAMED
|
File without changes
|
|
File without changes
|