GeneralManager 0.90.0__tar.gz → 0.91.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.90.0/src/GeneralManager.egg-info → generalmanager-0.91.0}/PKG-INFO +1 -1
- {generalmanager-0.90.0 → generalmanager-0.91.0}/pyproject.toml +1 -1
- {generalmanager-0.90.0 → generalmanager-0.91.0/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/GeneralManager.egg-info/SOURCES.txt +1 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_query_permissions.py +8 -2
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_search.py +22 -28
- generalmanager-0.91.0/src/general_manager/api/graphql_work_limits.py +35 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/permission_data_manager.py +16 -2
- {generalmanager-0.90.0 → generalmanager-0.91.0}/LICENSE +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/README.md +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/setup.cfg +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/dataframes.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_as_of.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_filter_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_groups.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_identifiers.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_ordering.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_output.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_relations.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_type.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_units.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_value_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/mutation_controls.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/notification_batching.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/apps.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/as_of.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/_materialized_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/_ordering.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/excel_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/projection.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/_dependency_graph.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/batch_refresh.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/data_change_context.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/run_context_lru.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/transaction_barrier.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/audit_identity.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/context.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/datasets/planned_orchestration.yaml +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/execution.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/result_set.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/outcomes.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/graphql_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/mutation_inputs.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/action_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/binding_diagnostics.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/budget.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/calculation_scope.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/calculations.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/catalog.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/category_binding.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/choice_context.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/clarification.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/config.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/conversion.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/cross_query.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/deferred_calculations.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/deferred_schema.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/events.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/evidence.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/evidence_selection.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/group_actions.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/planner.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/planner_context.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/provider_calls.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/resolver.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/scheduler.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/schema_projection.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/selector_clarification.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/selector_question.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/synthesis.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/validation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/schema_inspection.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/system_prompt.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/turns.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/conf.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/dataframes/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/dataframes/measurements.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/excel.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/calculation/input_resolution.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/excel/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/bulk.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/create_many.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/history_query.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/collection_probes.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/orm_utils/update_state.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/capabilities/request/relation_inputs.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/excel.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/excel_store.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/excel_workbook.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/excel.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/unit_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/utils/history.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/logging.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/sync_read_only.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/bulk_create.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0007_upload_intent.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/0012_chat_context_watermarks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/relation_aliases.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/py.typed +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/authorization.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/identity.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/invalidation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/m2m_invalidation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/projection.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/adapters.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/config.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/errors.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/finalization.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/graphql.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/graphql_types.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/metrics.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/public.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/s3.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/services.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/tokens.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/types.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/urls.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/uploads/views.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/_args_to_kwargs.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/_cache_key_encoder.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/_make_cache_key.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/_none_to_zero.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/executable_contract.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/tests/test_settings.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.0}/tests/test_urls.py +0 -0
- {generalmanager-0.90.0 → generalmanager-0.91.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.91.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.91.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.91.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
|
|
@@ -53,6 +53,7 @@ src/general_manager/api/graphql_view.py
|
|
|
53
53
|
src/general_manager/api/graphql_warmup.py
|
|
54
54
|
src/general_manager/api/graphql_warmup_registry.py
|
|
55
55
|
src/general_manager/api/graphql_warmup_tasks.py
|
|
56
|
+
src/general_manager/api/graphql_work_limits.py
|
|
56
57
|
src/general_manager/api/mutation.py
|
|
57
58
|
src/general_manager/api/mutation_controls.py
|
|
58
59
|
src/general_manager/api/notification_batching.py
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_query_permissions.py
RENAMED
|
@@ -9,6 +9,7 @@ from typing import TYPE_CHECKING
|
|
|
9
9
|
|
|
10
10
|
from graphql import GraphQLError
|
|
11
11
|
|
|
12
|
+
from general_manager.api.graphql_work_limits import get_graphql_work_limit
|
|
12
13
|
from general_manager.bucket.base_bucket import Bucket
|
|
13
14
|
from general_manager.bucket.request_bucket import RequestBucket
|
|
14
15
|
from general_manager.manager.general_manager import GeneralManager
|
|
@@ -47,7 +48,7 @@ CUSTOM_PROJECTION_ERROR = (
|
|
|
47
48
|
)
|
|
48
49
|
|
|
49
50
|
# Bound field/path decisions; bucket materialization and row checks precede this.
|
|
50
|
-
MAX_QUERY_PERMISSION_CANDIDATES =
|
|
51
|
+
MAX_QUERY_PERMISSION_CANDIDATES: int | None = None
|
|
51
52
|
_LOOKUPS = {
|
|
52
53
|
"exact",
|
|
53
54
|
"iexact",
|
|
@@ -79,11 +80,16 @@ class QueryFieldAuthorizationBudget:
|
|
|
79
80
|
"""Share only accounting across authorization calls in one operation."""
|
|
80
81
|
|
|
81
82
|
decisions: int = 0
|
|
83
|
+
limit: int | None = field(
|
|
84
|
+
default_factory=lambda: get_graphql_work_limit(
|
|
85
|
+
"GRAPHQL_QUERY_PERMISSION_LIMIT", MAX_QUERY_PERMISSION_CANDIDATES
|
|
86
|
+
)
|
|
87
|
+
)
|
|
82
88
|
|
|
83
89
|
def charge(self) -> None:
|
|
84
90
|
"""Reject work exceeding the operation's field/path decision limit."""
|
|
85
91
|
self.decisions += 1
|
|
86
|
-
if self.decisions >
|
|
92
|
+
if self.limit is not None and self.decisions > self.limit:
|
|
87
93
|
raise GraphQLError(_LIMIT_ERROR)
|
|
88
94
|
|
|
89
95
|
|
|
@@ -10,7 +10,6 @@ from __future__ import annotations
|
|
|
10
10
|
from dataclasses import replace
|
|
11
11
|
|
|
12
12
|
import json
|
|
13
|
-
import os
|
|
14
13
|
from collections.abc import Callable, Generator, Iterable, Mapping
|
|
15
14
|
from datetime import date, datetime
|
|
16
15
|
from decimal import Decimal
|
|
@@ -28,6 +27,7 @@ from graphql import GraphQLError, GraphQLID
|
|
|
28
27
|
from django.core.exceptions import FieldDoesNotExist
|
|
29
28
|
from django.db import models
|
|
30
29
|
|
|
30
|
+
from general_manager.api.graphql_work_limits import get_graphql_work_limit
|
|
31
31
|
from general_manager.conf import get_setting
|
|
32
32
|
from general_manager.api.graphql_identifiers import property_identifier_type
|
|
33
33
|
from general_manager.api.graphql_ordering import (
|
|
@@ -101,15 +101,11 @@ SearchTotalMode = Literal["exact", "bounded"]
|
|
|
101
101
|
_BAD_USER_INPUT_CODE = "BAD_USER_INPUT"
|
|
102
102
|
_PAGE_MUST_BE_POSITIVE = "page must be a positive integer."
|
|
103
103
|
_PAGE_SIZE_MUST_BE_POSITIVE = "pageSize must be a positive integer."
|
|
104
|
-
DEFAULT_GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT =
|
|
105
|
-
_SEARCH_TOTAL_SCAN_LIMIT_UNSET = object()
|
|
104
|
+
DEFAULT_GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT: int | None = None
|
|
106
105
|
SEARCH_SOURCE_AUTHORIZATION_LIMIT_ERROR = (
|
|
107
106
|
"Search source authorization candidate limit exceeded."
|
|
108
107
|
)
|
|
109
108
|
SEARCH_TOTAL_MODE_ERROR = "must be one of: exact, bounded."
|
|
110
|
-
SEARCH_TOTAL_SCAN_LIMIT_ERROR = (
|
|
111
|
-
"GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT must be a positive integer."
|
|
112
|
-
)
|
|
113
109
|
_MALFORMED_NATIVE_ID = object()
|
|
114
110
|
|
|
115
111
|
_SEARCH_SCAN_LIMIT_EXCEEDED = (
|
|
@@ -204,24 +200,11 @@ def normalize_search_total_mode(total_mode: str | None = None) -> SearchTotalMod
|
|
|
204
200
|
return cast(SearchTotalMode, normalized)
|
|
205
201
|
|
|
206
202
|
|
|
207
|
-
def get_graphql_search_total_scan_limit() -> int:
|
|
208
|
-
"""Resolve the shared candidate budget from
|
|
209
|
-
|
|
210
|
-
"GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT",
|
|
211
|
-
_SEARCH_TOTAL_SCAN_LIMIT_UNSET,
|
|
203
|
+
def get_graphql_search_total_scan_limit() -> int | None:
|
|
204
|
+
"""Resolve the optional shared candidate budget from settings, then env."""
|
|
205
|
+
return get_graphql_work_limit(
|
|
206
|
+
"GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT", DEFAULT_GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT
|
|
212
207
|
)
|
|
213
|
-
if raw_limit is _SEARCH_TOTAL_SCAN_LIMIT_UNSET:
|
|
214
|
-
env_limit = os.environ.get("GENERAL_MANAGER_GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT")
|
|
215
|
-
if env_limit is None:
|
|
216
|
-
raw_limit = DEFAULT_GRAPHQL_SEARCH_TOTAL_SCAN_LIMIT
|
|
217
|
-
else:
|
|
218
|
-
try:
|
|
219
|
-
raw_limit = int(env_limit)
|
|
220
|
-
except ValueError:
|
|
221
|
-
raise _bad_user_input_error(SEARCH_TOTAL_SCAN_LIMIT_ERROR) from None
|
|
222
|
-
if not isinstance(raw_limit, int) or isinstance(raw_limit, bool) or raw_limit <= 0:
|
|
223
|
-
raise _bad_user_input_error(SEARCH_TOTAL_SCAN_LIMIT_ERROR)
|
|
224
|
-
return raw_limit
|
|
225
208
|
|
|
226
209
|
|
|
227
210
|
def sort_search_hit_entries(
|
|
@@ -1569,6 +1552,9 @@ def register_search_query(
|
|
|
1569
1552
|
QueryFieldAuthorizationBudget,
|
|
1570
1553
|
)
|
|
1571
1554
|
|
|
1555
|
+
source_limit = get_graphql_work_limit(
|
|
1556
|
+
"GRAPHQL_SEARCH_SOURCE_AUTHORIZATION_LIMIT", MAX_QUERY_PERMISSION_CANDIDATES
|
|
1557
|
+
)
|
|
1572
1558
|
source_candidate_count = 0
|
|
1573
1559
|
authorization_budget = QueryFieldAuthorizationBudget()
|
|
1574
1560
|
|
|
@@ -1577,7 +1563,7 @@ def register_search_query(
|
|
|
1577
1563
|
) -> Generator[GeneralManager, None, None]:
|
|
1578
1564
|
nonlocal source_candidate_count
|
|
1579
1565
|
for candidate in source:
|
|
1580
|
-
if source_candidate_count >=
|
|
1566
|
+
if source_limit is not None and source_candidate_count >= source_limit:
|
|
1581
1567
|
raise GraphQLError(SEARCH_SOURCE_AUTHORIZATION_LIMIT_ERROR)
|
|
1582
1568
|
source_candidate_count += 1
|
|
1583
1569
|
if passes_permission_filters(candidate, info, permission_plan=plan):
|
|
@@ -1804,11 +1790,19 @@ def register_search_query(
|
|
|
1804
1790
|
fast_source is not None and common_filter_execution_valid()
|
|
1805
1791
|
)
|
|
1806
1792
|
while True:
|
|
1807
|
-
remaining_scan_budget =
|
|
1808
|
-
|
|
1793
|
+
remaining_scan_budget = (
|
|
1794
|
+
None
|
|
1795
|
+
if total_scan_limit is None
|
|
1796
|
+
else total_scan_limit - scanned_hits
|
|
1797
|
+
)
|
|
1798
|
+
if remaining_scan_budget is not None and remaining_scan_budget <= 0:
|
|
1809
1799
|
manager_total_is_exact = False
|
|
1810
1800
|
break
|
|
1811
|
-
query_limit =
|
|
1801
|
+
query_limit = (
|
|
1802
|
+
fetch_limit
|
|
1803
|
+
if remaining_scan_budget is None
|
|
1804
|
+
else min(fetch_limit, remaining_scan_budget)
|
|
1805
|
+
)
|
|
1812
1806
|
result = backend.search(
|
|
1813
1807
|
index_name,
|
|
1814
1808
|
query,
|
|
@@ -1981,7 +1975,7 @@ def register_search_query(
|
|
|
1981
1975
|
break
|
|
1982
1976
|
if len(result.hits) < query_limit and not can_continue_page:
|
|
1983
1977
|
break
|
|
1984
|
-
if scanned_hits >= total_scan_limit:
|
|
1978
|
+
if total_scan_limit is not None and scanned_hits >= total_scan_limit:
|
|
1985
1979
|
manager_total_is_exact = False
|
|
1986
1980
|
break
|
|
1987
1981
|
total += total_hits_for_manager
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""Server-owned optional GraphQL workload budgets, independent of permissions."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
|
|
7
|
+
from graphql import GraphQLError
|
|
8
|
+
|
|
9
|
+
from general_manager.conf import get_setting
|
|
10
|
+
|
|
11
|
+
_UNSET = object()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_graphql_work_limit(name: str, default: int | None = None) -> int | None:
|
|
15
|
+
"""Resolve Django settings before environment; explicit None means unlimited."""
|
|
16
|
+
value = get_setting(name, _UNSET)
|
|
17
|
+
if value is _UNSET:
|
|
18
|
+
raw = os.environ.get(f"GENERAL_MANAGER_{name}")
|
|
19
|
+
if raw is None:
|
|
20
|
+
return default
|
|
21
|
+
if raw.strip().lower() in {"none", "unlimited"}:
|
|
22
|
+
return None
|
|
23
|
+
try:
|
|
24
|
+
value = int(raw)
|
|
25
|
+
except ValueError:
|
|
26
|
+
value = raw
|
|
27
|
+
if value is None:
|
|
28
|
+
return None
|
|
29
|
+
if isinstance(value, int) and not isinstance(value, bool) and value > 0:
|
|
30
|
+
return value
|
|
31
|
+
message = f"{name} must be a positive integer or None (unlimited)."
|
|
32
|
+
raise GraphQLError(
|
|
33
|
+
message,
|
|
34
|
+
extensions={"code": "BAD_USER_INPUT"},
|
|
35
|
+
)
|
|
@@ -45,6 +45,20 @@ class PermissionRelationResolutionError(PermissionError):
|
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
def _resolved_relation_model(
|
|
49
|
+
field: models.ForeignKey[models.Model],
|
|
50
|
+
) -> type[models.Model]:
|
|
51
|
+
"""Use Django's resolved relation owner, not an early cached string reference."""
|
|
52
|
+
# RelatedField.related_model is cached; inspecting it during model assembly
|
|
53
|
+
# can retain a string even after Django resolves remote_field.model.
|
|
54
|
+
related_model = getattr(field.remote_field, "model", None)
|
|
55
|
+
if not isinstance(related_model, type) or not issubclass(
|
|
56
|
+
related_model, models.Model
|
|
57
|
+
):
|
|
58
|
+
raise PermissionRelationResolutionError(field.name)
|
|
59
|
+
return related_model
|
|
60
|
+
|
|
61
|
+
|
|
48
62
|
GeneralManagerData = TypeVar("GeneralManagerData", bound=GeneralManager)
|
|
49
63
|
|
|
50
64
|
|
|
@@ -299,7 +313,7 @@ class PermissionDataManager(Generic[GeneralManagerData]):
|
|
|
299
313
|
if identifier is None or name == field.attname:
|
|
300
314
|
return identifier
|
|
301
315
|
|
|
302
|
-
related_type = field
|
|
316
|
+
related_type = _resolved_relation_model(field)
|
|
303
317
|
manager_type = getattr(related_type, "_general_manager_class", None)
|
|
304
318
|
# A write check needs the target on the write database even if a read
|
|
305
319
|
# router would select a replica. Standalone checks retain Django hints.
|
|
@@ -342,7 +356,7 @@ class PermissionDataManager(Generic[GeneralManagerData]):
|
|
|
342
356
|
backing = getattr(getattr(manager, "_interface", None), "_instance", None)
|
|
343
357
|
if (
|
|
344
358
|
manager.identification.get("id") != related.pk
|
|
345
|
-
or not isinstance(backing, field
|
|
359
|
+
or not isinstance(backing, _resolved_relation_model(field))
|
|
346
360
|
or backing.pk != related.pk
|
|
347
361
|
or backing._state.db != related._state.db
|
|
348
362
|
or getattr(backing, field.target_field.attname)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.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.90.0 → generalmanager-0.91.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.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_filter_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_identifiers.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_relations.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_value_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_warmup_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/graphql_warmup_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/mutation_controls.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/api/notification_batching.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.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
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/_materialized_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/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.90.0 → generalmanager-0.91.0}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/_dependency_graph.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/data_change_context.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_matching.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/dependency_shards.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/run_context_lru.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/cache/transaction_barrier.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.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/diagnostics.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/fingerprints.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/contract.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/evals/judges/result_set.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/graphql_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/action_contract.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/calculations.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/category_binding.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/choice_context.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/clarification.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/contract.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/conversion.py
RENAMED
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/cross_query.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.90.0 → generalmanager-0.91.0}/src/general_manager/chat/planned/deferred_schema.py
RENAMED
|
File without changes
|
|
File without changes
|