GeneralManager 0.57.2__tar.gz → 0.57.4__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.57.2/src/GeneralManager.egg-info → generalmanager-0.57.4}/PKG-INFO +1 -1
- {generalmanager-0.57.2 → generalmanager-0.57.4}/pyproject.toml +1 -1
- {generalmanager-0.57.2 → generalmanager-0.57.4/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/calculation_bucket.py +152 -21
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/auto_factory.py +20 -17
- {generalmanager-0.57.2 → generalmanager-0.57.4}/LICENSE +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/README.md +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/setup.cfg +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/apps.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/indexing.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_matching.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_shards.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/audit.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/bootstrap.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/checks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/consumer.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/errors.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/__main__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/baseline.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/diagnostics.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/fingerprints.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/fixtures.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/contract.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/readiness.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/runner.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/traces.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/grounding.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/_shared.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/anthropic.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/base.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/google.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/ollama.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/openai.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/rate_limits.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/routing.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/schema_index.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/settings.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/signals.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/system_prompt.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/tool_metadata.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/tools.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/views.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/conf.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/logging.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/chat_cleanup.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/graphql_warmup.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/search_reconcile.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0004_search_index_state.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/py.typed +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/reconciliation.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/tasks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/test_settings.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/test_urls.py +0 -0
- {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.57.
|
|
3
|
+
Version: 0.57.4
|
|
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.57.
|
|
7
|
+
version = "0.57.4"
|
|
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.57.
|
|
3
|
+
Version: 0.57.4
|
|
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.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"""Bucket implementation that enumerates calculation interface combinations."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from collections.abc import Hashable, Iterable
|
|
4
|
+
from collections.abc import Hashable, Iterable, Iterator
|
|
5
5
|
from types import UnionType
|
|
6
|
+
from itertools import islice
|
|
6
7
|
from typing import (
|
|
7
8
|
Type,
|
|
8
9
|
TYPE_CHECKING,
|
|
@@ -25,6 +26,7 @@ from general_manager.bucket.base_bucket import Bucket
|
|
|
25
26
|
from general_manager.bucket.indexing import freeze_bucket_index_value
|
|
26
27
|
from general_manager.manager.input import Input, InputDomain
|
|
27
28
|
from general_manager.utils.filter_parser import (
|
|
29
|
+
FilterFunction,
|
|
28
30
|
ParsedFilters,
|
|
29
31
|
parse_filters,
|
|
30
32
|
)
|
|
@@ -47,6 +49,15 @@ class SortedFilters(TypedDict):
|
|
|
47
49
|
input_excludes: ParsedFilters
|
|
48
50
|
|
|
49
51
|
|
|
52
|
+
def _build_exclude_filter(exclude_func: FilterFunction) -> FilterFunction:
|
|
53
|
+
"""Create a lazy predicate that keeps values an exclude does not reject."""
|
|
54
|
+
|
|
55
|
+
def includes_value(value: object) -> bool:
|
|
56
|
+
return not exclude_func(value)
|
|
57
|
+
|
|
58
|
+
return includes_value
|
|
59
|
+
|
|
60
|
+
|
|
50
61
|
class InvalidCalculationInterfaceError(TypeError):
|
|
51
62
|
"""Raised when a CalculationBucket is initialized with a non-CalculationInterface manager."""
|
|
52
63
|
|
|
@@ -308,25 +319,95 @@ class CalculationBucket(Bucket[GeneralManagerType]):
|
|
|
308
319
|
|
|
309
320
|
def __str__(self) -> str:
|
|
310
321
|
"""
|
|
311
|
-
Return a compact preview of
|
|
322
|
+
Return a compact preview of generated combinations.
|
|
323
|
+
|
|
324
|
+
Cached buckets include the exact combination count. Uncached buckets avoid
|
|
325
|
+
materializing all combinations for string formatting; when more than the
|
|
326
|
+
preview limit exists, the count is reported as a lower-bound label.
|
|
312
327
|
|
|
313
328
|
Returns:
|
|
314
329
|
str: Human-readable summary of up to five combinations.
|
|
315
330
|
"""
|
|
316
331
|
PRINT_MAX = 5
|
|
317
|
-
combinations = self.
|
|
318
|
-
prefix = f"CalculationBucket ({
|
|
332
|
+
combinations, count_label, has_more = self._str_combinations_preview(PRINT_MAX)
|
|
333
|
+
prefix = f"CalculationBucket ({count_label})["
|
|
319
334
|
main = ",".join(
|
|
320
|
-
[
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
335
|
+
[f"{self._manager_class.__name__}(**{comb})" for comb in combinations]
|
|
336
|
+
)
|
|
337
|
+
suffix = "]"
|
|
338
|
+
if has_more:
|
|
339
|
+
suffix = ", ...]"
|
|
340
|
+
|
|
341
|
+
return f"{prefix}{main}{suffix}"
|
|
342
|
+
|
|
343
|
+
def _str_combinations_preview(
|
|
344
|
+
self, limit: int
|
|
345
|
+
) -> tuple[list[Combination], str, bool]:
|
|
346
|
+
"""
|
|
347
|
+
Return combinations, count label, and overflow flag for ``__str__``.
|
|
348
|
+
|
|
349
|
+
Sorted or reversed buckets use normal materialization so the preview
|
|
350
|
+
reflects the final global ordering. Unsorted uncached buckets read at
|
|
351
|
+
most ``limit + 1`` matching combinations and leave ``_data`` untouched.
|
|
352
|
+
"""
|
|
353
|
+
if self._data is not None:
|
|
354
|
+
return self._data[:limit], str(len(self._data)), len(self._data) > limit
|
|
355
|
+
|
|
356
|
+
if self._normalized_sort_key() is not None or self.reverse:
|
|
357
|
+
combinations = self.generate_combinations()
|
|
358
|
+
return (
|
|
359
|
+
combinations[:limit],
|
|
360
|
+
str(len(combinations)),
|
|
361
|
+
len(combinations) > limit,
|
|
362
|
+
)
|
|
363
|
+
|
|
364
|
+
from general_manager.cache.run_context import ensure_calculation_run_context
|
|
365
|
+
|
|
366
|
+
with ensure_calculation_run_context():
|
|
367
|
+
sorted_inputs = self.topological_sort_inputs()
|
|
368
|
+
sorted_filters = self._sort_filters(sorted_inputs)
|
|
369
|
+
if self._uses_static_iterator_possible_values(sorted_inputs):
|
|
370
|
+
combinations = self.generate_combinations()
|
|
371
|
+
return (
|
|
372
|
+
combinations[:limit],
|
|
373
|
+
str(len(combinations)),
|
|
374
|
+
len(combinations) > limit,
|
|
375
|
+
)
|
|
376
|
+
snapshot_iterables = self._uses_dependent_possible_values(sorted_inputs)
|
|
377
|
+
preview_iterator = self._iter_input_combinations(
|
|
378
|
+
sorted_inputs,
|
|
379
|
+
sorted_filters["input_filters"],
|
|
380
|
+
sorted_filters["input_excludes"],
|
|
381
|
+
snapshot_iterables=snapshot_iterables,
|
|
382
|
+
)
|
|
383
|
+
if sorted_filters["prop_filters"] or sorted_filters["prop_excludes"]:
|
|
384
|
+
preview_iterator = self._iter_prop_filtered_identifications(
|
|
385
|
+
preview_iterator,
|
|
386
|
+
sorted_filters["prop_filters"],
|
|
387
|
+
sorted_filters["prop_excludes"],
|
|
388
|
+
)
|
|
389
|
+
preview = list(islice(preview_iterator, limit + 1))
|
|
390
|
+
|
|
391
|
+
has_more = len(preview) > limit
|
|
392
|
+
if has_more:
|
|
393
|
+
preview = preview[:limit]
|
|
394
|
+
count_label = f"{limit}+" if has_more else str(len(preview))
|
|
395
|
+
return preview, count_label, has_more
|
|
396
|
+
|
|
397
|
+
def _uses_static_iterator_possible_values(self, sorted_inputs: list[str]) -> bool:
|
|
398
|
+
"""Return whether previewing would consume a one-shot static iterator."""
|
|
399
|
+
return any(
|
|
400
|
+
isinstance(self.input_fields[input_name].possible_values, Iterator)
|
|
401
|
+
for input_name in sorted_inputs
|
|
324
402
|
)
|
|
325
|
-
sufix = "]"
|
|
326
|
-
if len(combinations) > PRINT_MAX:
|
|
327
|
-
sufix = ", ...]"
|
|
328
403
|
|
|
329
|
-
|
|
404
|
+
def _uses_dependent_possible_values(self, sorted_inputs: list[str]) -> bool:
|
|
405
|
+
"""Return whether previewing should snapshot values before dependencies."""
|
|
406
|
+
return any(
|
|
407
|
+
bool(self.input_fields[input_name].depends_on)
|
|
408
|
+
and self.input_fields[input_name].possible_values is not None
|
|
409
|
+
for input_name in sorted_inputs
|
|
410
|
+
)
|
|
330
411
|
|
|
331
412
|
def __repr__(self) -> str:
|
|
332
413
|
"""
|
|
@@ -549,12 +630,14 @@ class CalculationBucket(Bucket[GeneralManagerType]):
|
|
|
549
630
|
self,
|
|
550
631
|
combinations: list[Combination],
|
|
551
632
|
) -> list[GeneralManagerType]:
|
|
633
|
+
"""Instantiate managers for each raw input-combination dictionary."""
|
|
552
634
|
return [self._manager_class(**combo) for combo in combinations]
|
|
553
635
|
|
|
554
636
|
@staticmethod
|
|
555
637
|
def _manager_identifications(
|
|
556
638
|
managers: list[GeneralManagerType],
|
|
557
639
|
) -> list[Combination]:
|
|
640
|
+
"""Return the identification dictionaries from manager instances."""
|
|
558
641
|
return [manager.identification for manager in managers]
|
|
559
642
|
|
|
560
643
|
def generate_combinations(self) -> List[Combination]:
|
|
@@ -730,22 +813,25 @@ class CalculationBucket(Bucket[GeneralManagerType]):
|
|
|
730
813
|
raise InvalidPossibleValuesError(key_name)
|
|
731
814
|
return possible_values
|
|
732
815
|
|
|
733
|
-
def
|
|
816
|
+
def _iter_input_combinations(
|
|
734
817
|
self,
|
|
735
818
|
sorted_inputs: List[str],
|
|
736
819
|
filters: ParsedFilters,
|
|
737
820
|
excludes: ParsedFilters,
|
|
738
|
-
|
|
821
|
+
*,
|
|
822
|
+
snapshot_iterables: bool,
|
|
823
|
+
) -> Generator[Combination, None, None]:
|
|
739
824
|
"""
|
|
740
|
-
|
|
825
|
+
Yield valid assignments of input fields satisfying filters and excludes.
|
|
741
826
|
|
|
742
827
|
Parameters:
|
|
743
828
|
sorted_inputs (list[str]): Input names in dependency-respecting order.
|
|
744
829
|
filters (dict[str, dict]): Per-input filter definitions (may include `filter_funcs` or `filter_kwargs`).
|
|
745
830
|
excludes (dict[str, dict]): Per-input exclusion definitions (may include `filter_funcs` or `filter_kwargs`).
|
|
746
831
|
|
|
747
|
-
|
|
748
|
-
|
|
832
|
+
Yields:
|
|
833
|
+
Combination: Completed input-to-value mappings that meet the
|
|
834
|
+
filters and excludes.
|
|
749
835
|
"""
|
|
750
836
|
|
|
751
837
|
def input_passes_filters(
|
|
@@ -812,10 +898,10 @@ class CalculationBucket(Bucket[GeneralManagerType]):
|
|
|
812
898
|
exclude_funcs = field_excludes.get("filter_funcs", [])
|
|
813
899
|
for exclude_func in exclude_funcs:
|
|
814
900
|
possible_values = filter(
|
|
815
|
-
|
|
901
|
+
_build_exclude_filter(exclude_func), possible_values
|
|
816
902
|
)
|
|
817
|
-
|
|
818
|
-
|
|
903
|
+
if snapshot_iterables:
|
|
904
|
+
possible_values = list(possible_values)
|
|
819
905
|
|
|
820
906
|
for value in possible_values:
|
|
821
907
|
if not isinstance(value, input_field.type):
|
|
@@ -824,7 +910,52 @@ class CalculationBucket(Bucket[GeneralManagerType]):
|
|
|
824
910
|
yield from helper(index + 1, current_combo)
|
|
825
911
|
del current_combo[input_name]
|
|
826
912
|
|
|
827
|
-
|
|
913
|
+
yield from helper(0, {})
|
|
914
|
+
|
|
915
|
+
def _generate_input_combinations(
|
|
916
|
+
self,
|
|
917
|
+
sorted_inputs: List[str],
|
|
918
|
+
filters: ParsedFilters,
|
|
919
|
+
excludes: ParsedFilters,
|
|
920
|
+
) -> List[Combination]:
|
|
921
|
+
"""
|
|
922
|
+
Generate all valid assignments of input fields that satisfy filters.
|
|
923
|
+
|
|
924
|
+
Parameters:
|
|
925
|
+
sorted_inputs (list[str]): Input names in dependency-respecting order.
|
|
926
|
+
filters (dict[str, dict]): Per-input filter definitions.
|
|
927
|
+
excludes (dict[str, dict]): Per-input exclusion definitions.
|
|
928
|
+
|
|
929
|
+
Returns:
|
|
930
|
+
list[Combination]: Completed input-to-value mappings that meet the
|
|
931
|
+
filters and excludes.
|
|
932
|
+
"""
|
|
933
|
+
return list(
|
|
934
|
+
self._iter_input_combinations(
|
|
935
|
+
sorted_inputs,
|
|
936
|
+
filters,
|
|
937
|
+
excludes,
|
|
938
|
+
snapshot_iterables=True,
|
|
939
|
+
)
|
|
940
|
+
)
|
|
941
|
+
|
|
942
|
+
def _iter_prop_filtered_identifications(
|
|
943
|
+
self,
|
|
944
|
+
combinations: Iterable[Combination],
|
|
945
|
+
prop_filters: ParsedFilters,
|
|
946
|
+
prop_excludes: ParsedFilters,
|
|
947
|
+
) -> Generator[Combination, None, None]:
|
|
948
|
+
"""
|
|
949
|
+
Lazily apply property filters and yield manager identifications.
|
|
950
|
+
|
|
951
|
+
This mirrors the property-filter materialization path used by
|
|
952
|
+
:meth:`generate_combinations`, but lets ``__str__`` stop after enough
|
|
953
|
+
matching combinations have been found.
|
|
954
|
+
"""
|
|
955
|
+
for combo in combinations:
|
|
956
|
+
manager = self._manager_class(**combo)
|
|
957
|
+
if self._filter_prop_combinations([manager], prop_filters, prop_excludes):
|
|
958
|
+
yield manager.identification
|
|
828
959
|
|
|
829
960
|
def _filter_prop_combinations(
|
|
830
961
|
self,
|
|
@@ -105,12 +105,12 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
|
|
|
105
105
|
|
|
106
106
|
The factory inspects the bound ORM interface, fills missing model fields with
|
|
107
107
|
generated values or declared defaults, applies many-to-many relations after
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
returns manager wrappers.
|
|
111
|
-
|
|
112
|
-
``
|
|
113
|
-
wrapping.
|
|
108
|
+
saved creation, and wraps created objects back into GeneralManager instances.
|
|
109
|
+
Build strategy returns unsaved Django model instances and skips
|
|
110
|
+
many-to-many assignment; create strategy returns manager wrappers.
|
|
111
|
+
Subclasses are generated with an ORM interface that provides
|
|
112
|
+
``handle_custom_fields()``, ``input_fields``, ``format_identification()``,
|
|
113
|
+
and ``_parent_class`` for created-object wrapping.
|
|
114
114
|
"""
|
|
115
115
|
|
|
116
116
|
interface: type[OrmInterfaceBase[models.Model]]
|
|
@@ -127,14 +127,11 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
|
|
|
127
127
|
caller-supplied values already present in `params` win. factory_boy then
|
|
128
128
|
dispatches to `_build()` or `_create()`, where many-to-many values are
|
|
129
129
|
stripped from constructor kwargs and foreign-key/one-to-one values are
|
|
130
|
-
coerced before `_adjustmentMethod` is called.
|
|
131
|
-
|
|
132
|
-
and wraps
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
Django requires saved instances for many-to-many `.set(...)`; therefore
|
|
136
|
-
build calls with explicit or generated many-to-many values are
|
|
137
|
-
unsupported and may raise Django's unsaved-instance relation error.
|
|
130
|
+
coerced before `_adjustmentMethod` is called. Create strategy then
|
|
131
|
+
applies many-to-many assignments from the original `params` to saved
|
|
132
|
+
models and wraps them into manager instances. Build strategy returns the
|
|
133
|
+
unsaved model instance(s) without attempting many-to-many assignment,
|
|
134
|
+
even when explicit or declared many-to-many values were supplied.
|
|
138
135
|
|
|
139
136
|
Parameters:
|
|
140
137
|
strategy (Literal["build", "create"]): "build" returns unsaved model instance(s); "create" saves model instance(s) and returns GeneralManager wrapper(s).
|
|
@@ -202,8 +199,10 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
|
|
|
202
199
|
for item in obj:
|
|
203
200
|
if not isinstance(item, models.Model):
|
|
204
201
|
raise InvalidGeneratedObjectError()
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
if strategy == "create":
|
|
203
|
+
for item in obj:
|
|
204
|
+
cls._handle_many_to_many_fields_after_creation(item, params)
|
|
205
|
+
elif strategy == "create":
|
|
207
206
|
cls._handle_many_to_many_fields_after_creation(obj, params)
|
|
208
207
|
if strategy == "create":
|
|
209
208
|
return cls._wrap_generated_objects(obj)
|
|
@@ -214,7 +213,11 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
|
|
|
214
213
|
cls, obj: models.Model, attrs: FactoryParams
|
|
215
214
|
) -> None:
|
|
216
215
|
"""
|
|
217
|
-
Assign related objects to many-to-many fields after creation
|
|
216
|
+
Assign related objects to many-to-many fields after saved creation.
|
|
217
|
+
|
|
218
|
+
Build strategy returns unsaved models and must skip this method because
|
|
219
|
+
Django many-to-many managers require the source instance to have a
|
|
220
|
+
primary key before `.set(...)` can be used.
|
|
218
221
|
|
|
219
222
|
Parameters:
|
|
220
223
|
obj (models.Model): Instance whose many-to-many relations should be populated.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/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
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/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
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/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.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_matching.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_shards.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/diagnostics.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/fingerprints.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/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.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/_shared.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/anthropic.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/google.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/ollama.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/openai.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|