GeneralManager 0.43.0__tar.gz → 0.45.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.
Files changed (196) hide show
  1. {generalmanager-0.43.0/src/GeneralManager.egg-info → generalmanager-0.45.0}/PKG-INFO +1 -1
  2. {generalmanager-0.43.0 → generalmanager-0.45.0}/pyproject.toml +1 -1
  3. {generalmanager-0.43.0 → generalmanager-0.45.0/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/run_context.py +6 -0
  5. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/mutations.py +10 -1
  6. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/support.py +35 -1
  7. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/manager/general_manager.py +10 -0
  8. {generalmanager-0.43.0 → generalmanager-0.45.0}/LICENSE +0 -0
  9. {generalmanager-0.43.0 → generalmanager-0.45.0}/README.md +0 -0
  10. {generalmanager-0.43.0 → generalmanager-0.45.0}/setup.cfg +0 -0
  11. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  12. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  13. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/GeneralManager.egg-info/requires.txt +0 -0
  14. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/GeneralManager.egg-info/top_level.txt +0 -0
  15. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/__init__.py +0 -0
  16. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/__init__.py +0 -0
  17. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/api.py +0 -0
  18. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/bucket.py +0 -0
  19. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/cache.py +0 -0
  20. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/factory.py +0 -0
  21. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/general_manager.py +0 -0
  22. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/interface.py +0 -0
  23. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/manager.py +0 -0
  24. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/measurement.py +0 -0
  25. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/permission.py +0 -0
  26. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/rule.py +0 -0
  27. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/search.py +0 -0
  28. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/_types/utils.py +0 -0
  29. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/__init__.py +0 -0
  30. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql.py +0 -0
  31. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_errors.py +0 -0
  32. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_mutations.py +0 -0
  33. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_resolvers.py +0 -0
  34. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_search.py +0 -0
  35. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  36. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_subscriptions.py +0 -0
  37. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/graphql_view.py +0 -0
  38. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/mutation.py +0 -0
  39. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/property.py +0 -0
  40. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/registry.py +0 -0
  41. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/remote_api.py +0 -0
  42. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/remote_invalidation.py +0 -0
  43. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/api/remote_invalidation_client.py +0 -0
  44. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/apps.py +0 -0
  45. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bootstrap.py +0 -0
  46. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/__init__.py +0 -0
  47. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/base_bucket.py +0 -0
  48. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/calculation_bucket.py +0 -0
  49. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/database_bucket.py +0 -0
  50. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/group_bucket.py +0 -0
  51. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/bucket/request_bucket.py +0 -0
  52. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/__init__.py +0 -0
  53. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/cache_decorator.py +0 -0
  54. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/cache_tracker.py +0 -0
  55. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/dependency_index.py +0 -0
  56. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/model_dependency_collector.py +0 -0
  57. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/cache/signals.py +0 -0
  58. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/conf.py +0 -0
  59. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/factory/__init__.py +0 -0
  60. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/factory/auto_factory.py +0 -0
  61. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/factory/factories.py +0 -0
  62. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/factory/factory_methods.py +0 -0
  63. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/__init__.py +0 -0
  64. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/base_interface.py +0 -0
  65. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/bundles/__init__.py +0 -0
  66. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/bundles/calculation.py +0 -0
  67. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/bundles/database.py +0 -0
  68. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  69. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/bundles/request.py +0 -0
  70. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/__init__.py +0 -0
  71. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/base.py +0 -0
  72. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/builtin.py +0 -0
  73. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  74. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  75. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  76. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/configuration.py +0 -0
  77. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  78. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  79. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  80. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  81. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  82. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  83. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/factory.py +0 -0
  84. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  85. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  86. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  87. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  88. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  89. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  90. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  91. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  92. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  93. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  94. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  95. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  96. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/registry.py +0 -0
  97. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  98. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  99. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  100. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  101. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  102. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/__init__.py +0 -0
  103. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/calculation.py +0 -0
  104. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/database.py +0 -0
  105. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  106. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/read_only.py +0 -0
  107. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  108. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/interfaces/request.py +0 -0
  109. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/manifests/__init__.py +0 -0
  110. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  111. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  112. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/manifests/capability_models.py +0 -0
  113. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/orm_interface.py +0 -0
  114. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/requests.py +0 -0
  115. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/utils/__init__.py +0 -0
  116. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  117. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/utils/errors.py +0 -0
  118. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/interface/utils/models.py +0 -0
  119. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/logging.py +0 -0
  120. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/management/commands/search_index.py +0 -0
  121. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  122. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/management/commands/shell.py +0 -0
  123. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  124. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  125. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/manager/__init__.py +0 -0
  126. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/manager/group_manager.py +0 -0
  127. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/manager/input.py +0 -0
  128. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/manager/meta.py +0 -0
  129. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/measurement/__init__.py +0 -0
  130. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/measurement/measurement.py +0 -0
  131. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/measurement/measurement_field.py +0 -0
  132. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/metrics/__init__.py +0 -0
  133. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/metrics/graphql.py +0 -0
  134. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/migrations/0001_initial.py +0 -0
  135. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  136. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  137. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/migrations/__init__.py +0 -0
  138. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/models.py +0 -0
  139. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/__init__.py +0 -0
  140. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/audit.py +0 -0
  141. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/base_permission.py +0 -0
  142. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/graphql_capabilities.py +0 -0
  143. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/manager_based_permission.py +0 -0
  144. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/mutation_permission.py +0 -0
  145. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/permission_checks.py +0 -0
  146. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/permission_data_manager.py +0 -0
  147. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/permission/utils.py +0 -0
  148. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/public_api_registry.py +0 -0
  149. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/py.typed +0 -0
  150. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/rule/__init__.py +0 -0
  151. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/rule/handler.py +0 -0
  152. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/rule/rule.py +0 -0
  153. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/__init__.py +0 -0
  154. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/async_tasks.py +0 -0
  155. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backend.py +0 -0
  156. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backend_registry.py +0 -0
  157. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backends/__init__.py +0 -0
  158. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backends/dev.py +0 -0
  159. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backends/meilisearch.py +0 -0
  160. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backends/opensearch.py +0 -0
  161. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/backends/typesense.py +0 -0
  162. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/config.py +0 -0
  163. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/indexer.py +0 -0
  164. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/registry.py +0 -0
  165. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/search/utils.py +0 -0
  166. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/seeding/__init__.py +0 -0
  167. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/seeding/manager_landscape.py +0 -0
  168. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/__init__.py +0 -0
  169. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/args_to_kwargs.py +0 -0
  170. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/filter_parser.py +0 -0
  171. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/format_string.py +0 -0
  172. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/json_encoder.py +0 -0
  173. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/make_cache_key.py +0 -0
  174. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/none_to_zero.py +0 -0
  175. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/path_mapping.py +0 -0
  176. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/public_api.py +0 -0
  177. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/testing.py +0 -0
  178. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/utils/type_checks.py +0 -0
  179. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/__init__.py +0 -0
  180. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/actions.py +0 -0
  181. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/backend_registry.py +0 -0
  182. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/backends/__init__.py +0 -0
  183. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/backends/celery.py +0 -0
  184. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/backends/local.py +0 -0
  185. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/backends/n8n.py +0 -0
  186. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/config.py +0 -0
  187. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/engine.py +0 -0
  188. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/event_registry.py +0 -0
  189. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/events.py +0 -0
  190. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/models.py +0 -0
  191. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/signal_bridge.py +0 -0
  192. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/tasks.py +0 -0
  193. {generalmanager-0.43.0 → generalmanager-0.45.0}/src/general_manager/workflow/telemetry.py +0 -0
  194. {generalmanager-0.43.0 → generalmanager-0.45.0}/tests/test_settings.py +0 -0
  195. {generalmanager-0.43.0 → generalmanager-0.45.0}/tests/test_urls.py +0 -0
  196. {generalmanager-0.43.0 → generalmanager-0.45.0}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.43.0
3
+ Version: 0.45.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.43.0"
7
+ version = "0.45.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.43.0
3
+ Version: 0.45.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
@@ -53,6 +53,12 @@ class CalculationRunContext:
53
53
  """Store a value for the active run."""
54
54
  self._values[key] = value
55
55
 
56
+ def discard_prefix(self, prefix: tuple[Hashable, ...]) -> None:
57
+ """Discard tuple keys that start with the supplied prefix."""
58
+ for key in list(self._values):
59
+ if isinstance(key, tuple) and key[: len(prefix)] == prefix:
60
+ del self._values[key]
61
+
56
62
  def has(self, key: Hashable) -> bool:
57
63
  """Return whether key has a value in the active run."""
58
64
  return key in self._values
@@ -21,7 +21,11 @@ from general_manager.interface.utils.errors import (
21
21
  from general_manager.interface.utils.models import model_has_field
22
22
 
23
23
  from ._compat import call_update_change_reason, call_with_observability
24
- from .support import get_support_capability, is_soft_delete_enabled
24
+ from .support import (
25
+ discard_orm_instance_cache,
26
+ get_support_capability,
27
+ is_soft_delete_enabled,
28
+ )
25
29
 
26
30
  if TYPE_CHECKING: # pragma: no cover
27
31
  from general_manager.interface.orm_interface import OrmInterfaceBase
@@ -336,6 +340,7 @@ class OrmUpdateCapability(BaseCapability):
336
340
  creator_id=creator_id,
337
341
  history_comment=history_comment,
338
342
  )
343
+ discard_orm_instance_cache(interface_instance.__class__, pk)
339
344
  mutation.apply_many_to_many(
340
345
  interface_instance.__class__,
341
346
  instance,
@@ -419,6 +424,7 @@ class OrmDeleteCapability(BaseCapability):
419
424
  creator_id=creator_id,
420
425
  history_comment=history_comment_local,
421
426
  )
427
+ discard_orm_instance_cache(interface_instance.__class__, pk)
422
428
  return {"id": pk}
423
429
 
424
430
  history_comment_local = (
@@ -443,6 +449,9 @@ class OrmDeleteCapability(BaseCapability):
443
449
  instance.delete(using=database_alias)
444
450
  else:
445
451
  instance.delete()
452
+ discard_orm_instance_cache(
453
+ interface_instance.__class__, interface_instance.pk
454
+ )
446
455
  return {"id": interface_instance.pk}
447
456
 
448
457
  return call_with_observability(
@@ -12,6 +12,7 @@ from django.db import models
12
12
  from django.db.models import Subquery
13
13
  from django.utils import timezone
14
14
  from general_manager.bucket.database_bucket import DatabaseBucket
15
+ from general_manager.cache.run_context import current_calculation_run_context
15
16
  from general_manager.interface.base_interface import InterfaceBase
16
17
  from general_manager.interface.capabilities.base import CapabilityName
17
18
  from general_manager.interface.capabilities.builtin import BaseCapability
@@ -270,11 +271,21 @@ class OrmReadCapability(BaseCapability):
270
271
  raise missing_error
271
272
  raise model_cls.DoesNotExist # type: ignore[attr-defined]
272
273
 
274
+ context = current_calculation_run_context()
275
+ read_func = (
276
+ _perform
277
+ if context is None
278
+ else lambda: context.get_or_set(
279
+ _orm_instance_cache_key(interface_instance),
280
+ _perform,
281
+ )
282
+ )
283
+
273
284
  return call_with_observability(
274
285
  interface_instance,
275
286
  operation="read",
276
287
  payload={"pk": interface_instance.pk},
277
- func=_perform,
288
+ func=read_func,
278
289
  )
279
290
 
280
291
  def get_attribute_types(
@@ -843,3 +854,26 @@ def _history_capability_for(
843
854
  "history",
844
855
  expected_type=OrmHistoryCapability,
845
856
  )
857
+
858
+
859
+ def _orm_instance_cache_key(interface_instance: "OrmInterfaceBase") -> tuple[Any, ...]:
860
+ interface_cls = interface_instance.__class__
861
+ support = get_support_capability(interface_cls)
862
+ only_active = not is_soft_delete_enabled(interface_cls)
863
+ return (
864
+ "orm_instance",
865
+ interface_cls,
866
+ interface_instance.pk,
867
+ support.get_database_alias(interface_cls),
868
+ only_active,
869
+ interface_instance._search_date,
870
+ )
871
+
872
+
873
+ def discard_orm_instance_cache(
874
+ interface_cls: type["OrmInterfaceBase"],
875
+ pk: Any,
876
+ ) -> None:
877
+ context = current_calculation_run_context()
878
+ if context is not None:
879
+ context.discard_prefix(("orm_instance", interface_cls, pk))
@@ -347,6 +347,16 @@ class GeneralManager(metaclass=GeneralManagerMeta):
347
347
  )
348
348
  return cls.Interface.filter(**kwargs)
349
349
 
350
+ @classmethod
351
+ def get(cls, **kwargs: Any) -> Self:
352
+ """
353
+ Return the single manager matching the provided lookup expressions.
354
+
355
+ This is a convenience wrapper around ``filter(...).get()`` and preserves
356
+ the underlying bucket's single-item exception behavior.
357
+ """
358
+ return cls.filter(**kwargs).get()
359
+
350
360
  @classmethod
351
361
  def exclude(cls, **kwargs: Any) -> Bucket[Self]:
352
362
  """
File without changes