GeneralManager 0.41.7__tar.gz → 0.41.8__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.41.7/src/GeneralManager.egg-info → generalmanager-0.41.8}/PKG-INFO +1 -1
- {generalmanager-0.41.7 → generalmanager-0.41.8}/pyproject.toml +1 -1
- {generalmanager-0.41.7 → generalmanager-0.41.8/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/group_bucket.py +76 -6
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/group_manager.py +33 -3
- {generalmanager-0.41.7 → generalmanager-0.41.8}/LICENSE +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/README.md +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/setup.cfg +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/apps.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/conf.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/logging.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/models.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/py.typed +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/tests/test_settings.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/tests/test_urls.py +0 -0
- {generalmanager-0.41.7 → generalmanager-0.41.8}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.41.
|
|
3
|
+
Version: 0.41.8
|
|
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.41.
|
|
7
|
+
version = "0.41.8"
|
|
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.41.
|
|
3
|
+
Version: 0.41.8
|
|
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
|
|
@@ -1,11 +1,71 @@
|
|
|
1
1
|
"""Grouping bucket implementation for aggregating GeneralManager instances."""
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
|
-
from typing import Any, Generator, Generic, Type
|
|
4
|
+
from typing import Any, Generator, Generic, Type, cast
|
|
5
5
|
from general_manager.manager.group_manager import GroupManager
|
|
6
|
+
from general_manager.manager.general_manager import GeneralManager
|
|
6
7
|
from general_manager.bucket.base_bucket import Bucket, GeneralManagerType
|
|
7
8
|
|
|
8
9
|
|
|
10
|
+
def _freeze_group_value(value: Any) -> Any:
|
|
11
|
+
"""Return a hashable identity for values used to distinguish groups."""
|
|
12
|
+
if isinstance(value, GeneralManager):
|
|
13
|
+
return (
|
|
14
|
+
value.__class__,
|
|
15
|
+
tuple(
|
|
16
|
+
sorted(
|
|
17
|
+
(
|
|
18
|
+
key,
|
|
19
|
+
_freeze_group_value(identifier),
|
|
20
|
+
)
|
|
21
|
+
for key, identifier in value.identification.items()
|
|
22
|
+
)
|
|
23
|
+
),
|
|
24
|
+
)
|
|
25
|
+
if isinstance(value, dict):
|
|
26
|
+
return tuple(
|
|
27
|
+
sorted(
|
|
28
|
+
(
|
|
29
|
+
_freeze_group_value(key),
|
|
30
|
+
_freeze_group_value(item),
|
|
31
|
+
)
|
|
32
|
+
for key, item in value.items()
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
if isinstance(value, (list, tuple)):
|
|
36
|
+
return tuple(_freeze_group_value(item) for item in value)
|
|
37
|
+
if isinstance(value, set):
|
|
38
|
+
return frozenset(_freeze_group_value(item) for item in value)
|
|
39
|
+
return value
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def _group_filter_kwargs(
|
|
43
|
+
manager_class: Type[GeneralManagerType],
|
|
44
|
+
group_by_value: tuple[tuple[str, Any], ...],
|
|
45
|
+
) -> dict[str, Any]:
|
|
46
|
+
"""Translate grouped manager values into backend-neutral relation lookups."""
|
|
47
|
+
filters: dict[str, Any] = {}
|
|
48
|
+
get_attribute_types = getattr(
|
|
49
|
+
manager_class.Interface,
|
|
50
|
+
"get_attribute_types",
|
|
51
|
+
None,
|
|
52
|
+
)
|
|
53
|
+
attributes = get_attribute_types() if callable(get_attribute_types) else {}
|
|
54
|
+
for key, value in group_by_value:
|
|
55
|
+
attribute_info = cast(dict[str, Any], attributes.get(key, {}))
|
|
56
|
+
filter_key = attribute_info.get("filter_lookup", key)
|
|
57
|
+
if isinstance(value, GeneralManager):
|
|
58
|
+
filters.update(
|
|
59
|
+
{
|
|
60
|
+
f"{filter_key}__{identifier_key}": identifier_value
|
|
61
|
+
for identifier_key, identifier_value in value.identification.items()
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
continue
|
|
65
|
+
filters[filter_key] = value
|
|
66
|
+
return filters
|
|
67
|
+
|
|
68
|
+
|
|
9
69
|
class InvalidGroupByKeyTypeError(TypeError):
|
|
10
70
|
"""Raised when a non-string value is provided as a group-by key."""
|
|
11
71
|
|
|
@@ -191,15 +251,25 @@ class GroupBucket(Generic[GeneralManagerType]):
|
|
|
191
251
|
Returns:
|
|
192
252
|
list[GroupManager[GeneralManagerType]]: A list of GroupManager objects, one per unique tuple of group-by key values; groups are produced in order sorted by the string representation of their key tuples.
|
|
193
253
|
"""
|
|
194
|
-
group_by_values:
|
|
254
|
+
group_by_values: dict[
|
|
255
|
+
tuple[tuple[str, Any], ...],
|
|
256
|
+
tuple[tuple[str, Any], ...],
|
|
257
|
+
] = {}
|
|
195
258
|
for entry in data:
|
|
196
|
-
|
|
197
|
-
|
|
259
|
+
group_by_value = tuple(
|
|
260
|
+
(arg, getattr(entry, arg)) for arg in self._group_by_keys
|
|
261
|
+
)
|
|
262
|
+
group_identity = tuple(
|
|
263
|
+
(arg, _freeze_group_value(value)) for arg, value in group_by_value
|
|
264
|
+
)
|
|
265
|
+
group_by_values.setdefault(group_identity, group_by_value)
|
|
198
266
|
|
|
199
267
|
groups: list[GroupManager[GeneralManagerType]] = []
|
|
200
|
-
for group_by_value in sorted(group_by_values, key=str):
|
|
268
|
+
for group_by_value in sorted(group_by_values.values(), key=str):
|
|
201
269
|
group_by_dict = {key: value for key, value in group_by_value}
|
|
202
|
-
grouped_manager_objects = data.filter(
|
|
270
|
+
grouped_manager_objects = data.filter(
|
|
271
|
+
**_group_filter_kwargs(self._manager_class, group_by_value)
|
|
272
|
+
)
|
|
203
273
|
groups.append(
|
|
204
274
|
GroupManager(
|
|
205
275
|
self._manager_class, group_by_dict, grouped_manager_objects
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/group_manager.py
RENAMED
|
@@ -12,6 +12,35 @@ from general_manager.bucket.base_bucket import (
|
|
|
12
12
|
)
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
def _freeze_manager_value(value: Any) -> Any:
|
|
16
|
+
"""Return a hashable representation for manager-backed group state."""
|
|
17
|
+
if isinstance(value, GeneralManager):
|
|
18
|
+
return tuple(
|
|
19
|
+
sorted(
|
|
20
|
+
(
|
|
21
|
+
key,
|
|
22
|
+
_freeze_manager_value(identifier),
|
|
23
|
+
)
|
|
24
|
+
for key, identifier in value.identification.items()
|
|
25
|
+
)
|
|
26
|
+
)
|
|
27
|
+
if isinstance(value, dict):
|
|
28
|
+
return tuple(
|
|
29
|
+
sorted(
|
|
30
|
+
(
|
|
31
|
+
_freeze_manager_value(key),
|
|
32
|
+
_freeze_manager_value(item),
|
|
33
|
+
)
|
|
34
|
+
for key, item in value.items()
|
|
35
|
+
)
|
|
36
|
+
)
|
|
37
|
+
if isinstance(value, (list, tuple)):
|
|
38
|
+
return tuple(_freeze_manager_value(item) for item in value)
|
|
39
|
+
if isinstance(value, set):
|
|
40
|
+
return frozenset(_freeze_manager_value(item) for item in value)
|
|
41
|
+
return value
|
|
42
|
+
|
|
43
|
+
|
|
15
44
|
class MissingGroupAttributeError(AttributeError):
|
|
16
45
|
"""Raised when a GroupManager access attempts to use an undefined attribute."""
|
|
17
46
|
|
|
@@ -61,8 +90,8 @@ class GroupManager(Generic[GeneralManagerType]):
|
|
|
61
90
|
return hash(
|
|
62
91
|
(
|
|
63
92
|
self._manager_class,
|
|
64
|
-
|
|
65
|
-
frozenset(self._data),
|
|
93
|
+
_freeze_manager_value(self._group_by_value),
|
|
94
|
+
frozenset(_freeze_manager_value(entry) for entry in self._data),
|
|
66
95
|
)
|
|
67
96
|
)
|
|
68
97
|
|
|
@@ -80,7 +109,8 @@ class GroupManager(Generic[GeneralManagerType]):
|
|
|
80
109
|
isinstance(other, self.__class__)
|
|
81
110
|
and self._manager_class == other._manager_class
|
|
82
111
|
and self._group_by_value == other._group_by_value
|
|
83
|
-
and frozenset(
|
|
112
|
+
and frozenset(_freeze_manager_value(entry) for entry in self._data)
|
|
113
|
+
== frozenset(_freeze_manager_value(entry) for entry in other._data)
|
|
84
114
|
)
|
|
85
115
|
|
|
86
116
|
def __repr__(self) -> str:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/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.41.7 → generalmanager-0.41.8}/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.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/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.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/capabilities/base.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
|
|
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.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/interfaces/request.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/manifests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/orm_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/errors.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/interface/utils/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/management/commands/shell.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/manager/general_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/measurement/measurement.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/measurement/measurement_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/migrations/0001_initial.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/base_permission.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/permission/permission_checks.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.41.7 → generalmanager-0.41.8}/src/general_manager/search/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/meilisearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/opensearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/search/backends/typesense.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/seeding/manager_landscape.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
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/celery.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/local.py
RENAMED
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/backends/n8n.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/event_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.7 → generalmanager-0.41.8}/src/general_manager/workflow/signal_bridge.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|