GeneralManager 0.41.3__tar.gz → 0.41.5__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.3/src/GeneralManager.egg-info → generalmanager-0.41.5}/PKG-INFO +1 -1
- {generalmanager-0.41.3 → generalmanager-0.41.5}/pyproject.toml +1 -1
- {generalmanager-0.41.3 → generalmanager-0.41.5/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bootstrap.py +39 -13
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/database_bucket.py +73 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/general_manager.py +2 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/LICENSE +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/README.md +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/setup.cfg +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/apps.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/conf.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/logging.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/models.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/py.typed +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/tests/test_settings.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/tests/test_urls.py +0 -0
- {generalmanager-0.41.3 → generalmanager-0.41.5}/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.5
|
|
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.5"
|
|
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.5
|
|
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
|
|
@@ -28,7 +28,7 @@ from general_manager.api.graphql import GraphQL
|
|
|
28
28
|
from general_manager.api.remote_api import add_remote_api_urls
|
|
29
29
|
from general_manager.api.remote_invalidation import ensure_remote_invalidation_route
|
|
30
30
|
from general_manager.conf import get_setting
|
|
31
|
-
from general_manager.api.property import
|
|
31
|
+
from general_manager.api.property import GraphQLProperty
|
|
32
32
|
from general_manager.logging import get_logger
|
|
33
33
|
from general_manager.interface.infrastructure.startup_hooks import (
|
|
34
34
|
registered_startup_hook_entries,
|
|
@@ -272,6 +272,32 @@ def initialize_general_manager_classes(
|
|
|
272
272
|
resolver.__annotations__ = {"return": manager_cls}
|
|
273
273
|
return resolver
|
|
274
274
|
|
|
275
|
+
def _iter_manager_relation_fields(
|
|
276
|
+
general_manager_class: Type[_GM],
|
|
277
|
+
) -> Iterable[tuple[str, Type[_GM]]]:
|
|
278
|
+
seen: set[str] = set()
|
|
279
|
+
input_fields = getattr(general_manager_class.Interface, "input_fields", {})
|
|
280
|
+
for attribute_name, attribute in input_fields.items():
|
|
281
|
+
if isinstance(attribute, Input) and issubclass(attribute.type, _GM):
|
|
282
|
+
seen.add(attribute_name)
|
|
283
|
+
yield attribute_name, attribute.type
|
|
284
|
+
|
|
285
|
+
get_attribute_types = getattr(
|
|
286
|
+
general_manager_class.Interface, "get_attribute_types", None
|
|
287
|
+
)
|
|
288
|
+
if not callable(get_attribute_types):
|
|
289
|
+
return
|
|
290
|
+
try:
|
|
291
|
+
attribute_types = get_attribute_types()
|
|
292
|
+
except NotImplementedError:
|
|
293
|
+
return
|
|
294
|
+
for attribute_name, metadata in attribute_types.items():
|
|
295
|
+
if attribute_name in seen or metadata.get("relation_kind") != "direct":
|
|
296
|
+
continue
|
|
297
|
+
field_type = metadata.get("type")
|
|
298
|
+
if isinstance(field_type, type) and issubclass(field_type, _GM):
|
|
299
|
+
yield attribute_name, field_type
|
|
300
|
+
|
|
275
301
|
logger.debug(
|
|
276
302
|
"creating manager attributes",
|
|
277
303
|
context={"pending_attributes": len(pending_attribute_initialization)},
|
|
@@ -294,18 +320,18 @@ def initialize_general_manager_classes(
|
|
|
294
320
|
context={"total_classes": len(all_classes)},
|
|
295
321
|
)
|
|
296
322
|
for general_manager_class in all_classes:
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
323
|
+
for attribute_name, connected_manager in _iter_manager_relation_fields(
|
|
324
|
+
general_manager_class
|
|
325
|
+
):
|
|
326
|
+
resolver = _build_connection_resolver(attribute_name, general_manager_class)
|
|
327
|
+
relation_property = GraphQLProperty(resolver)
|
|
328
|
+
marked_relation_property: Any = relation_property
|
|
329
|
+
marked_relation_property._general_manager_generated_relation = True
|
|
330
|
+
setattr(
|
|
331
|
+
connected_manager,
|
|
332
|
+
f"{general_manager_class.__name__.lower()}_list",
|
|
333
|
+
relation_property,
|
|
334
|
+
)
|
|
309
335
|
for general_manager_class in all_classes:
|
|
310
336
|
check_permission_class(general_manager_class)
|
|
311
337
|
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/database_bucket.py
RENAMED
|
@@ -140,6 +140,57 @@ class NonSortablePropertyError(ValueError):
|
|
|
140
140
|
)
|
|
141
141
|
|
|
142
142
|
|
|
143
|
+
class DuplicateDatabaseBucketSnapshotError(ValueError):
|
|
144
|
+
"""Raised when a database bucket snapshot contains duplicate primary keys."""
|
|
145
|
+
|
|
146
|
+
def __init__(self) -> None:
|
|
147
|
+
super().__init__(
|
|
148
|
+
"DatabaseBucket snapshots cannot contain duplicate primary keys."
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def _ensure_unique_primary_keys(primary_keys: tuple[Any, ...]) -> None:
|
|
153
|
+
if len(primary_keys) != len(set(primary_keys)):
|
|
154
|
+
raise DuplicateDatabaseBucketSnapshotError()
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
def _restore_database_bucket_from_primary_keys(
|
|
158
|
+
model: type[models.Model],
|
|
159
|
+
manager_class: Type[GeneralManagerType],
|
|
160
|
+
primary_keys: tuple[Any, ...],
|
|
161
|
+
filter_definitions: dict[str, list[Any]],
|
|
162
|
+
exclude_definitions: dict[str, list[Any]],
|
|
163
|
+
database_alias: str | None,
|
|
164
|
+
search_date: datetime | date | None,
|
|
165
|
+
sort_keys: tuple[str, ...] | None,
|
|
166
|
+
sort_reverse: bool,
|
|
167
|
+
) -> DatabaseBucket[GeneralManagerType]:
|
|
168
|
+
_ensure_unique_primary_keys(primary_keys)
|
|
169
|
+
manager = model._default_manager
|
|
170
|
+
if database_alias is not None:
|
|
171
|
+
manager = manager.db_manager(database_alias)
|
|
172
|
+
if not primary_keys:
|
|
173
|
+
queryset = manager.none()
|
|
174
|
+
else:
|
|
175
|
+
preserved_order = models.Case(
|
|
176
|
+
*(
|
|
177
|
+
models.When(pk=primary_key, then=position)
|
|
178
|
+
for position, primary_key in enumerate(primary_keys)
|
|
179
|
+
),
|
|
180
|
+
output_field=models.IntegerField(),
|
|
181
|
+
)
|
|
182
|
+
queryset = manager.filter(pk__in=primary_keys).order_by(preserved_order)
|
|
183
|
+
return DatabaseBucket(
|
|
184
|
+
queryset,
|
|
185
|
+
manager_class,
|
|
186
|
+
filter_definitions,
|
|
187
|
+
exclude_definitions,
|
|
188
|
+
search_date=search_date,
|
|
189
|
+
sort_keys=sort_keys,
|
|
190
|
+
sort_reverse=sort_reverse,
|
|
191
|
+
)
|
|
192
|
+
|
|
193
|
+
|
|
143
194
|
class DatabaseBucket(Bucket[GeneralManagerType]):
|
|
144
195
|
"""Bucket implementation backed by Django ORM querysets."""
|
|
145
196
|
|
|
@@ -175,6 +226,28 @@ class DatabaseBucket(Bucket[GeneralManagerType]):
|
|
|
175
226
|
self._sort_keys = sort_keys
|
|
176
227
|
self._sort_reverse = sort_reverse
|
|
177
228
|
|
|
229
|
+
def __reduce__(self) -> str | tuple[Any, ...]:
|
|
230
|
+
"""
|
|
231
|
+
Preserve a result snapshot without serializing the queryset object.
|
|
232
|
+
"""
|
|
233
|
+
self._track_effective_dependencies()
|
|
234
|
+
primary_keys = tuple(self._data.values_list("pk", flat=True))
|
|
235
|
+
_ensure_unique_primary_keys(primary_keys)
|
|
236
|
+
return (
|
|
237
|
+
_restore_database_bucket_from_primary_keys,
|
|
238
|
+
(
|
|
239
|
+
self._data.model,
|
|
240
|
+
self._manager_class,
|
|
241
|
+
primary_keys,
|
|
242
|
+
self.filters,
|
|
243
|
+
self.excludes,
|
|
244
|
+
self._data.db,
|
|
245
|
+
self._search_date,
|
|
246
|
+
self._sort_keys,
|
|
247
|
+
self._sort_reverse,
|
|
248
|
+
),
|
|
249
|
+
)
|
|
250
|
+
|
|
178
251
|
def _build_manager(self, pk: Any) -> GeneralManagerType:
|
|
179
252
|
if self._search_date is None:
|
|
180
253
|
return self._manager_class(pk)
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/general_manager.py
RENAMED
|
@@ -196,6 +196,8 @@ class GeneralManager(metaclass=GeneralManagerMeta):
|
|
|
196
196
|
for name, value in self.__class__.__dict__.items():
|
|
197
197
|
if name == "history":
|
|
198
198
|
continue
|
|
199
|
+
if getattr(value, "_general_manager_generated_relation", False):
|
|
200
|
+
continue
|
|
199
201
|
if isinstance(value, (GraphQLProperty, property)):
|
|
200
202
|
yield name, getattr(self, name)
|
|
201
203
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/api/remote_invalidation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/interfaces/request.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/manifests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/orm_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/errors.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/interface/utils/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/management/commands/shell.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/manager/group_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/measurement/measurement.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/measurement/measurement_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/permission/base_permission.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/search/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/meilisearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/search/backends/opensearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/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.3 → generalmanager-0.41.5}/src/general_manager/workflow/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/celery.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/local.py
RENAMED
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/backends/n8n.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/src/general_manager/workflow/event_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.3 → generalmanager-0.41.5}/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
|