GeneralManager 0.41.1__tar.gz → 0.41.3__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.1/src/GeneralManager.egg-info → generalmanager-0.41.3}/PKG-INFO +1 -1
- {generalmanager-0.41.1 → generalmanager-0.41.3}/pyproject.toml +1 -1
- {generalmanager-0.41.1 → generalmanager-0.41.3/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +84 -2
- {generalmanager-0.41.1 → generalmanager-0.41.3}/LICENSE +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/README.md +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/setup.cfg +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/property.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/apps.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/cache_decorator.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/conf.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/logging.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/models.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/py.typed +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/tests/test_settings.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/tests/test_urls.py +0 -0
- {generalmanager-0.41.1 → generalmanager-0.41.3}/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.3
|
|
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.3"
|
|
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.3
|
|
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
|
|
@@ -11,6 +11,7 @@ from uuid import UUID
|
|
|
11
11
|
|
|
12
12
|
from django.apps import apps
|
|
13
13
|
from django.contrib.contenttypes.fields import GenericForeignKey
|
|
14
|
+
from django.core.exceptions import ObjectDoesNotExist
|
|
14
15
|
from django.db import models
|
|
15
16
|
|
|
16
17
|
from general_manager.interface.base_interface import AttributeTypedDict
|
|
@@ -35,6 +36,23 @@ class FieldDescriptor:
|
|
|
35
36
|
accessor: DescriptorAccessor
|
|
36
37
|
|
|
37
38
|
|
|
39
|
+
class MissingRelatedFieldsError(RuntimeError):
|
|
40
|
+
"""Raised when a GeneralManager collection relation cannot be scoped."""
|
|
41
|
+
|
|
42
|
+
def __init__(
|
|
43
|
+
self,
|
|
44
|
+
*,
|
|
45
|
+
accessor_name: str,
|
|
46
|
+
related_model: type[models.Model],
|
|
47
|
+
source_model: type[models.Model],
|
|
48
|
+
) -> None:
|
|
49
|
+
super().__init__(
|
|
50
|
+
"Unable to resolve related fields for collection relation "
|
|
51
|
+
f"'{accessor_name}' from {source_model.__name__} to "
|
|
52
|
+
f"{related_model.__name__}."
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
|
|
38
56
|
TRANSLATION: dict[type[models.Field], type] = {
|
|
39
57
|
models.fields.BigAutoField: int,
|
|
40
58
|
models.AutoField: int,
|
|
@@ -135,6 +153,7 @@ class _FieldDescriptorBuilder:
|
|
|
135
153
|
self._add_custom_fields()
|
|
136
154
|
self._add_model_fields()
|
|
137
155
|
self._add_foreign_key_fields()
|
|
156
|
+
self._add_reverse_one_to_one_relations()
|
|
138
157
|
self._add_collection_relations()
|
|
139
158
|
return self._descriptors
|
|
140
159
|
|
|
@@ -209,6 +228,41 @@ class _FieldDescriptorBuilder:
|
|
|
209
228
|
filter_lookup=field.name,
|
|
210
229
|
)
|
|
211
230
|
|
|
231
|
+
def _add_reverse_one_to_one_relations(self) -> None:
|
|
232
|
+
"""Register snake_case aliases for reverse one-to-one relation accessors."""
|
|
233
|
+
for relation in _iter_reverse_one_to_one_relations(self.model):
|
|
234
|
+
related_model = self._resolve_related_model(
|
|
235
|
+
getattr(relation, "related_model", None)
|
|
236
|
+
)
|
|
237
|
+
if related_model is None:
|
|
238
|
+
continue
|
|
239
|
+
accessor_name = relation.get_accessor_name() or relation.name
|
|
240
|
+
attribute_name = _to_snake_case(related_model.__name__)
|
|
241
|
+
if attribute_name in self._descriptors:
|
|
242
|
+
continue
|
|
243
|
+
general_manager_class = getattr(
|
|
244
|
+
related_model, "_general_manager_class", None
|
|
245
|
+
)
|
|
246
|
+
if general_manager_class:
|
|
247
|
+
accessor = _general_manager_accessor(
|
|
248
|
+
accessor_name, general_manager_class
|
|
249
|
+
)
|
|
250
|
+
relation_type = cast(type, general_manager_class)
|
|
251
|
+
else:
|
|
252
|
+
accessor = _instance_attribute_accessor(accessor_name)
|
|
253
|
+
relation_type = cast(type, related_model)
|
|
254
|
+
self._register(
|
|
255
|
+
attribute_name=attribute_name,
|
|
256
|
+
raw_type=relation_type,
|
|
257
|
+
is_required=False,
|
|
258
|
+
is_editable=False,
|
|
259
|
+
default=None,
|
|
260
|
+
is_derived=True,
|
|
261
|
+
accessor=accessor,
|
|
262
|
+
relation_kind="direct",
|
|
263
|
+
filter_lookup=relation.name,
|
|
264
|
+
)
|
|
265
|
+
|
|
212
266
|
def _add_collection_relations(self) -> None:
|
|
213
267
|
"""
|
|
214
268
|
Register collection relation field descriptors for the builder's model.
|
|
@@ -521,6 +575,22 @@ def _iter_many_to_many_fields(
|
|
|
521
575
|
yield cast(models.Field, field)
|
|
522
576
|
|
|
523
577
|
|
|
578
|
+
def _iter_reverse_one_to_one_relations(
|
|
579
|
+
model: type[models.Model],
|
|
580
|
+
) -> Iterable[models.OneToOneRel]:
|
|
581
|
+
"""Yield reverse one-to-one relations declared on a Django model."""
|
|
582
|
+
meta = getattr(model, "_meta", None)
|
|
583
|
+
get_fields = getattr(meta, "get_fields", None)
|
|
584
|
+
if not callable(get_fields):
|
|
585
|
+
return
|
|
586
|
+
for field in get_fields():
|
|
587
|
+
if getattr(field, "is_relation", False) and getattr(field, "one_to_one", False):
|
|
588
|
+
if getattr(field, "auto_created", False) and not getattr(
|
|
589
|
+
field, "concrete", False
|
|
590
|
+
):
|
|
591
|
+
yield cast(models.OneToOneRel, field)
|
|
592
|
+
|
|
593
|
+
|
|
524
594
|
def _iter_reverse_relations(
|
|
525
595
|
model: type[models.Model],
|
|
526
596
|
) -> Iterable[models.ManyToOneRel]:
|
|
@@ -558,7 +628,10 @@ def _instance_attribute_accessor(field_name: str) -> DescriptorAccessor:
|
|
|
558
628
|
Returns:
|
|
559
629
|
The attribute value retrieved from the underlying model instance.
|
|
560
630
|
"""
|
|
561
|
-
|
|
631
|
+
try:
|
|
632
|
+
return getattr(self._instance, field_name)
|
|
633
|
+
except ObjectDoesNotExist:
|
|
634
|
+
return None
|
|
562
635
|
|
|
563
636
|
return getter
|
|
564
637
|
|
|
@@ -584,7 +657,10 @@ def _general_manager_accessor(
|
|
|
584
657
|
Returns:
|
|
585
658
|
The value produced by calling `manager_class` with the related object's primary key, or `None` if the related object is `None`.
|
|
586
659
|
"""
|
|
587
|
-
|
|
660
|
+
try:
|
|
661
|
+
related = getattr(self._instance, field_name)
|
|
662
|
+
except ObjectDoesNotExist:
|
|
663
|
+
return None
|
|
588
664
|
if related is None:
|
|
589
665
|
return None
|
|
590
666
|
return manager_class(related.pk)
|
|
@@ -632,6 +708,12 @@ def _general_manager_many_accessor(
|
|
|
632
708
|
"""
|
|
633
709
|
filter_kwargs = {field.name: self.pk for field in related_fields}
|
|
634
710
|
manager_cls = cast(Any, general_manager_class)
|
|
711
|
+
if not filter_kwargs:
|
|
712
|
+
raise MissingRelatedFieldsError(
|
|
713
|
+
accessor_name=accessor_name,
|
|
714
|
+
related_model=related_model,
|
|
715
|
+
source_model=source_model,
|
|
716
|
+
)
|
|
635
717
|
return manager_cls.filter(**filter_kwargs)
|
|
636
718
|
|
|
637
719
|
return getter
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/cache/cache_decorator.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/interfaces/request.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/manifests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/orm_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/errors.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/interface/utils/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/management/commands/shell.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/general_manager.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/manager/group_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/measurement/measurement.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/measurement/measurement_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/permission/base_permission.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/search/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/meilisearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/search/backends/opensearch.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/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.1 → generalmanager-0.41.3}/src/general_manager/workflow/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/celery.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/local.py
RENAMED
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/backends/n8n.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/src/general_manager/workflow/event_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.41.1 → generalmanager-0.41.3}/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
|