GeneralManager 0.49.0__tar.gz → 0.50.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {generalmanager-0.49.0/src/GeneralManager.egg-info → generalmanager-0.50.0}/PKG-INFO +1 -1
- {generalmanager-0.49.0 → generalmanager-0.50.0}/pyproject.toml +1 -1
- {generalmanager-0.49.0 → generalmanager-0.50.0/src/GeneralManager.egg-info}/PKG-INFO +1 -1
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/property.py +1 -1
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/cache_decorator.py +66 -43
- {generalmanager-0.49.0 → generalmanager-0.50.0}/LICENSE +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/README.md +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/setup.cfg +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/GeneralManager.egg-info/requires.txt +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/GeneralManager.egg-info/top_level.txt +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/api.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/cache.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/factory.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/general_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/interface.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/measurement.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/permission.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/rule.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/search.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/utils.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_errors.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_mutations.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_prefetch.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_resolvers.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_search.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_subscriptions.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_view.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/mutation.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/remote_api.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/remote_invalidation.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/remote_invalidation_client.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/apps.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bootstrap.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/base_bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/calculation_bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/database_bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/group_bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/request_bucket.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/cache_tracker.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_cache.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_index.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_publish.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/model_dependency_collector.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/run_context.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/signals.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/conf.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/factory/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/factory/auto_factory.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/factory/factories.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/factory/factory_methods.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/base_interface.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/calculation.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/database.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/remote_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/request.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/base.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/builtin.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/configuration.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/core/observability.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/core/utils.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/exceptions.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/factory.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/history.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm/support.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/infrastructure/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/calculation.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/database.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/existing_model.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/read_only.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/request.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/manifests/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/manifests/capability_builder.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/manifests/capability_models.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/orm_interface.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/requests.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/errors.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/models.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/logging.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/search_index.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/shell.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/general_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/group_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/input.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/meta.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/measurement/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/measurement/measurement.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/measurement/measurement_field.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/metrics/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/metrics/graphql.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/migrations/0001_initial.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/migrations/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/models.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/audit.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/base_permission.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/graphql_capabilities.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/manager_based_permission.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/mutation_permission.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/permission_checks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/permission_data_manager.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/permission/utils.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/public_api_registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/py.typed +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/rule/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/rule/handler.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/rule/rule.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/async_tasks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backend.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backend_registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/dev.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/meilisearch.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/opensearch.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/typesense.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/config.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/indexer.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/utils.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/seeding/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/seeding/manager_landscape.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/args_to_kwargs.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/filter_parser.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/format_string.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/json_encoder.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/make_cache_key.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/none_to_zero.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/path_mapping.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/public_api.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/testing.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/utils/type_checks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/actions.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backend_registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/__init__.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/celery.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/local.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/n8n.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/config.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/engine.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/event_registry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/events.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/models.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/signal_bridge.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/tasks.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/telemetry.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/tests/test_settings.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/tests/test_urls.py +0 -0
- {generalmanager-0.49.0 → generalmanager-0.50.0}/tests/testing_asgi.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.50.0
|
|
4
4
|
Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
|
|
5
5
|
Author-email: Tim Kleindick <tkleindick@yahoo.de>
|
|
6
6
|
License: MIT License
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "GeneralManager"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.50.0"
|
|
8
8
|
description = "Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Tim Kleindick", email = "tkleindick@yahoo.de" }]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: GeneralManager
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.50.0
|
|
4
4
|
Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
|
|
5
5
|
Author-email: Tim Kleindick <tkleindick@yahoo.de>
|
|
6
6
|
License: MIT License
|
|
@@ -95,7 +95,7 @@ class GraphQLProperty(property):
|
|
|
95
95
|
selected_cache = self.cache
|
|
96
96
|
if selected_cache == "none":
|
|
97
97
|
return self._raw_fget
|
|
98
|
-
return cached(
|
|
98
|
+
return cached(cache=cast(Literal["dependency", "run"], selected_cache))(
|
|
99
99
|
self._raw_fget
|
|
100
100
|
)
|
|
101
101
|
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/cache_decorator.py
RENAMED
|
@@ -11,6 +11,7 @@ from typing import (
|
|
|
11
11
|
Set,
|
|
12
12
|
TypeVar,
|
|
13
13
|
cast,
|
|
14
|
+
overload,
|
|
14
15
|
)
|
|
15
16
|
|
|
16
17
|
from django.core.cache import cache as django_cache
|
|
@@ -88,102 +89,122 @@ class UnsupportedCacheScopeError(ValueError):
|
|
|
88
89
|
|
|
89
90
|
|
|
90
91
|
class CacheTimeoutConfigurationError(ValueError):
|
|
91
|
-
"""Raised when timeout is used with an incompatible cache
|
|
92
|
+
"""Raised when timeout is used with an incompatible cache setting."""
|
|
92
93
|
|
|
93
94
|
@classmethod
|
|
94
95
|
def missing_timeout(cls) -> "CacheTimeoutConfigurationError":
|
|
95
|
-
return cls('
|
|
96
|
+
return cls('cache="timeout" requires timeout')
|
|
96
97
|
|
|
97
98
|
@classmethod
|
|
98
99
|
def unexpected_timeout(cls) -> "CacheTimeoutConfigurationError":
|
|
99
|
-
return cls('timeout is only supported with
|
|
100
|
+
return cls('timeout is only supported with cache="timeout"')
|
|
100
101
|
|
|
101
102
|
|
|
103
|
+
@overload
|
|
104
|
+
def cached(func: FuncT) -> FuncT: ...
|
|
105
|
+
@overload
|
|
102
106
|
def cached(
|
|
107
|
+
func: None = None,
|
|
103
108
|
timeout: Optional[int] = None,
|
|
104
109
|
cache_backend: CacheBackend = django_cache,
|
|
105
110
|
record_fn: RecordFn = record_dependencies,
|
|
106
111
|
*,
|
|
107
|
-
|
|
108
|
-
) -> Callable[[FuncT], FuncT]:
|
|
112
|
+
cache: CacheScope = "run",
|
|
113
|
+
) -> Callable[[FuncT], FuncT]: ...
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def cached(
|
|
117
|
+
func: FuncT | None = None,
|
|
118
|
+
timeout: Optional[int] = None,
|
|
119
|
+
cache_backend: CacheBackend = django_cache,
|
|
120
|
+
record_fn: RecordFn = record_dependencies,
|
|
121
|
+
*,
|
|
122
|
+
cache: CacheScope = "run",
|
|
123
|
+
) -> FuncT | Callable[[FuncT], FuncT]:
|
|
109
124
|
"""
|
|
110
|
-
Decorator
|
|
125
|
+
Decorator for caching a function call.
|
|
111
126
|
|
|
112
127
|
By default, cached values are scoped to the active
|
|
113
128
|
:class:`~general_manager.cache.run_context.CalculationRunContext` and are
|
|
114
|
-
discarded when that run ends. Use ``
|
|
129
|
+
discarded when that run ends. Use ``cache="dependency"`` to persist values
|
|
115
130
|
in ``cache_backend`` and use ``record_fn`` to persist dependency metadata
|
|
116
|
-
for invalidation. Use ``
|
|
131
|
+
for invalidation. Use ``cache="timeout"`` with ``timeout`` set for
|
|
117
132
|
cache-backend storage with time-based expiry; dependency recording is
|
|
118
|
-
ignored for timeout-
|
|
133
|
+
ignored for timeout-cached values.
|
|
119
134
|
|
|
120
135
|
Parameters:
|
|
121
|
-
|
|
122
|
-
|
|
136
|
+
func (Callable[..., object] | None): Function being decorated when used
|
|
137
|
+
as ``@cached``. Leave unset when using ``@cached(...)``.
|
|
138
|
+
timeout (int | None): Expiration in seconds for timeout-cached values.
|
|
139
|
+
Required when ``cache`` is ``"timeout"`` and invalid with any other
|
|
123
140
|
``CacheScope``.
|
|
124
141
|
cache_backend (CacheBackend): Backend used to read and write cached results.
|
|
125
142
|
record_fn (RecordFn): Callback invoked to persist dependency metadata when
|
|
126
|
-
``
|
|
143
|
+
``cache`` is ``"dependency"``. Defaults to
|
|
127
144
|
:func:`~general_manager.cache.dependency_index.record_dependencies`.
|
|
128
|
-
|
|
145
|
+
cache (CacheScope): Cache storage strategy. ``"run"`` memoizes for the active run,
|
|
129
146
|
``"dependency"`` stores in ``cache_backend`` with dependency tracking,
|
|
130
147
|
``"timeout"`` stores in ``cache_backend`` with time-based expiry, and
|
|
131
148
|
``"none"`` disables caching.
|
|
132
149
|
|
|
133
150
|
Returns:
|
|
134
|
-
Callable:
|
|
151
|
+
Callable: Decorated function or decorator that wraps the target function
|
|
152
|
+
with caching behaviour.
|
|
135
153
|
|
|
136
154
|
Raises:
|
|
137
|
-
ValueError: Raised for invalid ``
|
|
155
|
+
ValueError: Raised for invalid ``cache``/``timeout`` combinations, including
|
|
138
156
|
unsupported ``CacheScope`` values, missing ``timeout`` for
|
|
139
|
-
``
|
|
157
|
+
``cache="timeout"``, and ``timeout`` supplied for non-timeout cache modes.
|
|
140
158
|
DependencyLockTimeoutError: Propagated from ``record_fn`` (i.e.
|
|
141
159
|
:func:`~general_manager.cache.dependency_index.record_dependencies`) when the
|
|
142
|
-
dependency-index lock cannot be acquired within the configured timeout.
|
|
160
|
+
dependency-index lock cannot be acquired within the configured timeout. The cached
|
|
143
161
|
value has already been stored at that point; only the dependency metadata is lost.
|
|
144
162
|
"""
|
|
145
|
-
if
|
|
146
|
-
raise UnsupportedCacheScopeError(
|
|
147
|
-
if
|
|
163
|
+
if cache not in {"dependency", "run", "timeout", "none"}:
|
|
164
|
+
raise UnsupportedCacheScopeError(cache)
|
|
165
|
+
if cache == "timeout" and timeout is None:
|
|
148
166
|
raise CacheTimeoutConfigurationError.missing_timeout()
|
|
149
|
-
if timeout is not None and
|
|
167
|
+
if timeout is not None and cache != "timeout":
|
|
150
168
|
raise CacheTimeoutConfigurationError.unexpected_timeout()
|
|
151
169
|
|
|
152
|
-
def decorator(
|
|
153
|
-
@wraps(
|
|
170
|
+
def decorator(decorated_func: FuncT) -> FuncT:
|
|
171
|
+
@wraps(decorated_func)
|
|
154
172
|
def wrapper(*args: object, **kwargs: object) -> object:
|
|
155
|
-
if
|
|
156
|
-
return
|
|
173
|
+
if cache == "none":
|
|
174
|
+
return decorated_func(*args, **kwargs)
|
|
157
175
|
|
|
158
|
-
if
|
|
159
|
-
key = make_cache_key(
|
|
176
|
+
if cache == "run":
|
|
177
|
+
key = make_cache_key(decorated_func, args, kwargs)
|
|
160
178
|
with ensure_calculation_run_context() as context:
|
|
161
|
-
return context.get_or_set(
|
|
179
|
+
return context.get_or_set(
|
|
180
|
+
key,
|
|
181
|
+
lambda: decorated_func(*args, **kwargs),
|
|
182
|
+
)
|
|
162
183
|
|
|
163
|
-
key = make_cache_key(
|
|
184
|
+
key = make_cache_key(decorated_func, args, kwargs)
|
|
164
185
|
|
|
165
|
-
if
|
|
186
|
+
if cache == "timeout":
|
|
166
187
|
cached_result = cache_backend.get(key, _SENTINEL)
|
|
167
188
|
if cached_result is not _SENTINEL:
|
|
168
189
|
logger.debug(
|
|
169
190
|
"cache hit",
|
|
170
191
|
context={
|
|
171
|
-
"function":
|
|
192
|
+
"function": decorated_func.__qualname__,
|
|
172
193
|
"key": key,
|
|
173
|
-
"
|
|
194
|
+
"cache": cache,
|
|
174
195
|
},
|
|
175
196
|
)
|
|
176
197
|
return cached_result
|
|
177
198
|
|
|
178
|
-
result =
|
|
199
|
+
result = decorated_func(*args, **kwargs)
|
|
179
200
|
cache_backend.set(key, result, timeout)
|
|
180
201
|
logger.debug(
|
|
181
202
|
"cache miss stored",
|
|
182
203
|
context={
|
|
183
|
-
"function":
|
|
204
|
+
"function": decorated_func.__qualname__,
|
|
184
205
|
"key": key,
|
|
185
206
|
"timeout": timeout,
|
|
186
|
-
"
|
|
207
|
+
"cache": cache,
|
|
187
208
|
},
|
|
188
209
|
)
|
|
189
210
|
return result
|
|
@@ -193,9 +214,9 @@ def cached(
|
|
|
193
214
|
logger.debug(
|
|
194
215
|
message,
|
|
195
216
|
context={
|
|
196
|
-
"function":
|
|
217
|
+
"function": decorated_func.__qualname__,
|
|
197
218
|
"key": key,
|
|
198
|
-
"
|
|
219
|
+
"cache": cache,
|
|
199
220
|
},
|
|
200
221
|
)
|
|
201
222
|
return hit.value
|
|
@@ -245,7 +266,7 @@ def cached(
|
|
|
245
266
|
|
|
246
267
|
started_generation = get_dependency_generation()
|
|
247
268
|
with DependencyTracker() as dependencies:
|
|
248
|
-
result =
|
|
269
|
+
result = decorated_func(*args, **kwargs)
|
|
249
270
|
ModelDependencyCollector.add_args(dependencies, args, kwargs)
|
|
250
271
|
|
|
251
272
|
def record_many(
|
|
@@ -287,9 +308,9 @@ def cached(
|
|
|
287
308
|
logger.debug(
|
|
288
309
|
"dependency cache publish aborted",
|
|
289
310
|
context={
|
|
290
|
-
"function":
|
|
311
|
+
"function": decorated_func.__qualname__,
|
|
291
312
|
"key": key,
|
|
292
|
-
"
|
|
313
|
+
"cache": cache,
|
|
293
314
|
},
|
|
294
315
|
)
|
|
295
316
|
finally:
|
|
@@ -299,7 +320,7 @@ def cached(
|
|
|
299
320
|
logger.debug(
|
|
300
321
|
"cache miss recorded",
|
|
301
322
|
context={
|
|
302
|
-
"function":
|
|
323
|
+
"function": decorated_func.__qualname__,
|
|
303
324
|
"key": key,
|
|
304
325
|
"dependency_count": len(dependencies),
|
|
305
326
|
"timeout": timeout,
|
|
@@ -308,8 +329,10 @@ def cached(
|
|
|
308
329
|
return result
|
|
309
330
|
|
|
310
331
|
# fix for python 3.14:
|
|
311
|
-
wrapper.__annotations__ =
|
|
332
|
+
wrapper.__annotations__ = decorated_func.__annotations__
|
|
312
333
|
|
|
313
334
|
return cast(FuncT, wrapper)
|
|
314
335
|
|
|
315
|
-
|
|
336
|
+
if func is None:
|
|
337
|
+
return decorator
|
|
338
|
+
return decorator(func)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/GeneralManager.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/_types/general_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_mutations.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_resolvers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/graphql_subscriptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/api/remote_invalidation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/calculation_bucket.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/database_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/bucket/request_bucket.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_cache.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_index.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/cache/dependency_publish.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/factory/factory_methods.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/base_interface.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/calculation.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/bundles/request.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/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
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/database.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/interfaces/request.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/manifests/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/orm_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/errors.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/interface/utils/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/management/commands/shell.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/general_manager.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/manager/group_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/measurement/measurement.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/measurement/measurement_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/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.49.0 → generalmanager-0.50.0}/src/general_manager/permission/base_permission.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/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.49.0 → generalmanager-0.50.0}/src/general_manager/search/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/meilisearch.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/search/backends/opensearch.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/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.49.0 → generalmanager-0.50.0}/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.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backend_registry.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/__init__.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/celery.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/local.py
RENAMED
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/backends/n8n.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/src/general_manager/workflow/event_registry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{generalmanager-0.49.0 → generalmanager-0.50.0}/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
|