GeneralManager 0.40.4__tar.gz → 0.40.6__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 (194) hide show
  1. {generalmanager-0.40.4/src/GeneralManager.egg-info → generalmanager-0.40.6}/PKG-INFO +1 -1
  2. {generalmanager-0.40.4 → generalmanager-0.40.6}/pyproject.toml +1 -1
  3. {generalmanager-0.40.4 → generalmanager-0.40.6/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bootstrap.py +6 -0
  5. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/dependency_index.py +12 -4
  6. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +28 -0
  7. {generalmanager-0.40.4 → generalmanager-0.40.6}/LICENSE +0 -0
  8. {generalmanager-0.40.4 → generalmanager-0.40.6}/README.md +0 -0
  9. {generalmanager-0.40.4 → generalmanager-0.40.6}/setup.cfg +0 -0
  10. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  11. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  12. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/GeneralManager.egg-info/requires.txt +0 -0
  13. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/GeneralManager.egg-info/top_level.txt +0 -0
  14. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/__init__.py +0 -0
  15. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/__init__.py +0 -0
  16. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/api.py +0 -0
  17. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/bucket.py +0 -0
  18. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/cache.py +0 -0
  19. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/factory.py +0 -0
  20. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/general_manager.py +0 -0
  21. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/interface.py +0 -0
  22. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/manager.py +0 -0
  23. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/measurement.py +0 -0
  24. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/permission.py +0 -0
  25. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/rule.py +0 -0
  26. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/search.py +0 -0
  27. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/_types/utils.py +0 -0
  28. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/__init__.py +0 -0
  29. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql.py +0 -0
  30. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_errors.py +0 -0
  31. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_mutations.py +0 -0
  32. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_resolvers.py +0 -0
  33. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_search.py +0 -0
  34. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  35. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_subscriptions.py +0 -0
  36. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/graphql_view.py +0 -0
  37. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/mutation.py +0 -0
  38. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/property.py +0 -0
  39. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/registry.py +0 -0
  40. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/remote_api.py +0 -0
  41. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/remote_invalidation.py +0 -0
  42. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/api/remote_invalidation_client.py +0 -0
  43. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/apps.py +0 -0
  44. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/__init__.py +0 -0
  45. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/base_bucket.py +0 -0
  46. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/calculation_bucket.py +0 -0
  47. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/database_bucket.py +0 -0
  48. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/group_bucket.py +0 -0
  49. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/bucket/request_bucket.py +0 -0
  50. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/__init__.py +0 -0
  51. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/cache_decorator.py +0 -0
  52. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/cache_tracker.py +0 -0
  53. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/model_dependency_collector.py +0 -0
  54. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/cache/signals.py +0 -0
  55. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/conf.py +0 -0
  56. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/factory/__init__.py +0 -0
  57. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/factory/auto_factory.py +0 -0
  58. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/factory/factories.py +0 -0
  59. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/factory/factory_methods.py +0 -0
  60. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/__init__.py +0 -0
  61. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/base_interface.py +0 -0
  62. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/bundles/__init__.py +0 -0
  63. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/bundles/calculation.py +0 -0
  64. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/bundles/database.py +0 -0
  65. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  66. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/bundles/request.py +0 -0
  67. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/__init__.py +0 -0
  68. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/base.py +0 -0
  69. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/builtin.py +0 -0
  70. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  71. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  72. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  73. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/configuration.py +0 -0
  74. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  75. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  76. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  77. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  78. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  79. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  80. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/factory.py +0 -0
  81. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  82. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  83. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  84. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  85. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  86. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  87. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  88. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  89. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  90. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  91. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  92. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  93. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  94. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/registry.py +0 -0
  95. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  96. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  97. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  98. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  99. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/__init__.py +0 -0
  100. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/calculation.py +0 -0
  101. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/database.py +0 -0
  102. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  103. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/read_only.py +0 -0
  104. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  105. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/interfaces/request.py +0 -0
  106. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/manifests/__init__.py +0 -0
  107. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  108. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  109. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/manifests/capability_models.py +0 -0
  110. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/orm_interface.py +0 -0
  111. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/requests.py +0 -0
  112. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/utils/__init__.py +0 -0
  113. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  114. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/utils/errors.py +0 -0
  115. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/interface/utils/models.py +0 -0
  116. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/logging.py +0 -0
  117. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/management/commands/search_index.py +0 -0
  118. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  119. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/management/commands/shell.py +0 -0
  120. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  121. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  122. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/manager/__init__.py +0 -0
  123. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/manager/general_manager.py +0 -0
  124. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/manager/group_manager.py +0 -0
  125. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/manager/input.py +0 -0
  126. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/manager/meta.py +0 -0
  127. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/measurement/__init__.py +0 -0
  128. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/measurement/measurement.py +0 -0
  129. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/measurement/measurement_field.py +0 -0
  130. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/metrics/__init__.py +0 -0
  131. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/metrics/graphql.py +0 -0
  132. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/migrations/0001_initial.py +0 -0
  133. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  134. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  135. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/migrations/__init__.py +0 -0
  136. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/models.py +0 -0
  137. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/__init__.py +0 -0
  138. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/audit.py +0 -0
  139. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/base_permission.py +0 -0
  140. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/graphql_capabilities.py +0 -0
  141. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/manager_based_permission.py +0 -0
  142. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/mutation_permission.py +0 -0
  143. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/permission_checks.py +0 -0
  144. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/permission_data_manager.py +0 -0
  145. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/permission/utils.py +0 -0
  146. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/public_api_registry.py +0 -0
  147. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/py.typed +0 -0
  148. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/rule/__init__.py +0 -0
  149. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/rule/handler.py +0 -0
  150. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/rule/rule.py +0 -0
  151. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/__init__.py +0 -0
  152. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/async_tasks.py +0 -0
  153. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backend.py +0 -0
  154. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backend_registry.py +0 -0
  155. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backends/__init__.py +0 -0
  156. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backends/dev.py +0 -0
  157. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backends/meilisearch.py +0 -0
  158. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backends/opensearch.py +0 -0
  159. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/backends/typesense.py +0 -0
  160. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/config.py +0 -0
  161. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/indexer.py +0 -0
  162. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/registry.py +0 -0
  163. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/search/utils.py +0 -0
  164. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/seeding/__init__.py +0 -0
  165. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/seeding/manager_landscape.py +0 -0
  166. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/__init__.py +0 -0
  167. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/args_to_kwargs.py +0 -0
  168. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/filter_parser.py +0 -0
  169. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/format_string.py +0 -0
  170. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/json_encoder.py +0 -0
  171. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/make_cache_key.py +0 -0
  172. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/none_to_zero.py +0 -0
  173. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/path_mapping.py +0 -0
  174. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/public_api.py +0 -0
  175. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/testing.py +0 -0
  176. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/utils/type_checks.py +0 -0
  177. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/__init__.py +0 -0
  178. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/actions.py +0 -0
  179. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/backend_registry.py +0 -0
  180. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/backends/__init__.py +0 -0
  181. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/backends/celery.py +0 -0
  182. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/backends/local.py +0 -0
  183. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/backends/n8n.py +0 -0
  184. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/config.py +0 -0
  185. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/engine.py +0 -0
  186. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/event_registry.py +0 -0
  187. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/events.py +0 -0
  188. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/models.py +0 -0
  189. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/signal_bridge.py +0 -0
  190. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/tasks.py +0 -0
  191. {generalmanager-0.40.4 → generalmanager-0.40.6}/src/general_manager/workflow/telemetry.py +0 -0
  192. {generalmanager-0.40.4 → generalmanager-0.40.6}/tests/test_settings.py +0 -0
  193. {generalmanager-0.40.4 → generalmanager-0.40.6}/tests/test_urls.py +0 -0
  194. {generalmanager-0.40.4 → generalmanager-0.40.6}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.40.4
3
+ Version: 0.40.6
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.40.4"
7
+ version = "0.40.6"
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.40.4
3
+ Version: 0.40.6
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
@@ -276,6 +276,12 @@ def initialize_general_manager_classes(
276
276
  "creating manager attributes",
277
277
  context={"pending_attributes": len(pending_attribute_initialization)},
278
278
  )
279
+ for general_manager_class in dict.fromkeys(all_classes):
280
+ interface = getattr(general_manager_class, "Interface", None)
281
+ if hasattr(interface, "_field_descriptors"):
282
+ interface_with_cache: Any = interface
283
+ interface_with_cache._field_descriptors = None
284
+
279
285
  for general_manager_class in pending_attribute_initialization:
280
286
  attributes = general_manager_class.Interface.get_attributes()
281
287
  general_manager_class._attributes = attributes
@@ -661,7 +661,8 @@ def generic_cache_invalidation(
661
661
  - "regex": treats `val_key` as a regular expression pattern and tests it against the string form of `value`.
662
662
 
663
663
  Behavior notes:
664
- - If `value` is None the function returns `False`.
664
+ - If `value` is None the function only matches explicit null equality
665
+ or membership checks.
665
666
  - ``val_key`` is a JSON-serialised string produced by
666
667
  :func:`json.dumps`. Parsing is done with :func:`json.loads`; if
667
668
  JSON parsing or type coercion fails, the function falls back to
@@ -676,12 +677,11 @@ def generic_cache_invalidation(
676
677
  Returns:
677
678
  bool: `True` if the comparison defined by `op` and `val_key` matches `value`, `False` otherwise.
678
679
  """
679
- if value is None:
680
- return False
681
-
682
680
  # eq
683
681
  if op == "eq":
684
682
  literal_val = _json_loads_val_key(val_key)
683
+ if literal_val is None:
684
+ return value is None
685
685
  repr_marker = _repr_marker(literal_val)
686
686
  if repr_marker is not None:
687
687
  return repr(value) == repr_marker
@@ -697,6 +697,10 @@ def generic_cache_invalidation(
697
697
  except (json.JSONDecodeError, ValueError):
698
698
  return False
699
699
  for item in seq:
700
+ if item is None:
701
+ if value is None:
702
+ return True
703
+ continue
700
704
  repr_marker = _repr_marker(item)
701
705
  if repr_marker is not None:
702
706
  if repr(value) == repr_marker:
@@ -712,6 +716,8 @@ def generic_cache_invalidation(
712
716
 
713
717
  # range comparisons
714
718
  if op in ("gt", "gte", "lt", "lte"):
719
+ if value is None:
720
+ return False
715
721
  literal_val = _json_loads_val_key(val_key)
716
722
  thr = _coerce_to_type(value, literal_val)
717
723
  if thr is None:
@@ -727,6 +733,8 @@ def generic_cache_invalidation(
727
733
 
728
734
  # wildcard / regex comparisons
729
735
  if op in ("contains", "startswith", "endswith", "regex"):
736
+ if value is None:
737
+ return False
730
738
  try:
731
739
  literal = json.loads(val_key)
732
740
  except (json.JSONDecodeError, ValueError):
@@ -9,6 +9,7 @@ import re
9
9
  from typing import TYPE_CHECKING, Any, Callable, Iterable, Optional, cast
10
10
  from uuid import UUID
11
11
 
12
+ from django.apps import apps
12
13
  from django.contrib.contenttypes.fields import GenericForeignKey
13
14
  from django.db import models
14
15
 
@@ -395,12 +396,39 @@ class _FieldDescriptorBuilder:
395
396
  """
396
397
  if related_model == "self":
397
398
  return cast(type[models.Model], self.model)
399
+ if isinstance(related_model, str):
400
+ resolved_model = self._resolve_string_related_model(related_model)
401
+ if resolved_model is not None:
402
+ return resolved_model
398
403
  if isinstance(related_model, type) and issubclass(related_model, models.Model):
399
404
  return cast(type[models.Model], related_model)
400
405
  if related_model is not None:
401
406
  return None
402
407
  return cast(Optional[type[models.Model]], related_model)
403
408
 
409
+ def _resolve_string_related_model(
410
+ self,
411
+ related_model: str,
412
+ ) -> Optional[type[models.Model]]:
413
+ app_label: str | None
414
+ if "." in related_model:
415
+ app_label, model_name = related_model.split(".", 1)
416
+ else:
417
+ meta = getattr(self.model, "_meta", None)
418
+ app_label = getattr(meta, "app_label", None)
419
+ model_name = related_model
420
+ if not app_label:
421
+ return None
422
+ try:
423
+ resolved_model = apps.get_model(app_label, model_name)
424
+ except (LookupError, ValueError):
425
+ return None
426
+ if isinstance(resolved_model, type) and issubclass(
427
+ resolved_model, models.Model
428
+ ):
429
+ return cast(type[models.Model], resolved_model)
430
+ return None
431
+
404
432
 
405
433
  def _collect_custom_fields(
406
434
  model: type[models.Model] | models.Model,
File without changes