GeneralManager 0.57.2__tar.gz → 0.57.4__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 (255) hide show
  1. {generalmanager-0.57.2/src/GeneralManager.egg-info → generalmanager-0.57.4}/PKG-INFO +1 -1
  2. {generalmanager-0.57.2 → generalmanager-0.57.4}/pyproject.toml +1 -1
  3. {generalmanager-0.57.2 → generalmanager-0.57.4/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/calculation_bucket.py +152 -21
  5. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/auto_factory.py +20 -17
  6. {generalmanager-0.57.2 → generalmanager-0.57.4}/LICENSE +0 -0
  7. {generalmanager-0.57.2 → generalmanager-0.57.4}/README.md +0 -0
  8. {generalmanager-0.57.2 → generalmanager-0.57.4}/setup.cfg +0 -0
  9. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  10. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  11. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/requires.txt +0 -0
  12. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/GeneralManager.egg-info/top_level.txt +0 -0
  13. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/__init__.py +0 -0
  14. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/__init__.py +0 -0
  15. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/api.py +0 -0
  16. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/bucket.py +0 -0
  17. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/cache.py +0 -0
  18. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/factory.py +0 -0
  19. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/general_manager.py +0 -0
  20. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/interface.py +0 -0
  21. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/manager.py +0 -0
  22. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/measurement.py +0 -0
  23. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/permission.py +0 -0
  24. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/rule.py +0 -0
  25. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/search.py +0 -0
  26. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/_types/utils.py +0 -0
  27. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/__init__.py +0 -0
  28. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql.py +0 -0
  29. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_errors.py +0 -0
  30. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_mutations.py +0 -0
  31. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_prefetch.py +0 -0
  32. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_resolvers.py +0 -0
  33. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_search.py +0 -0
  34. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  35. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_subscriptions.py +0 -0
  36. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_view.py +0 -0
  37. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup.py +0 -0
  38. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  39. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  40. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/mutation.py +0 -0
  41. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/property.py +0 -0
  42. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/registry.py +0 -0
  43. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_api.py +0 -0
  44. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_invalidation.py +0 -0
  45. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/api/remote_invalidation_client.py +0 -0
  46. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/apps.py +0 -0
  47. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bootstrap.py +0 -0
  48. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/__init__.py +0 -0
  49. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/base_bucket.py +0 -0
  50. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/database_bucket.py +0 -0
  51. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/group_bucket.py +0 -0
  52. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/indexing.py +0 -0
  53. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/bucket/request_bucket.py +0 -0
  54. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/__init__.py +0 -0
  55. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/cache_decorator.py +0 -0
  56. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/cache_tracker.py +0 -0
  57. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_cache.py +0 -0
  58. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_index.py +0 -0
  59. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_matching.py +0 -0
  60. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_publish.py +0 -0
  61. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/dependency_shards.py +0 -0
  62. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/model_dependency_collector.py +0 -0
  63. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/run_context.py +0 -0
  64. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/cache/signals.py +0 -0
  65. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/__init__.py +0 -0
  66. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/audit.py +0 -0
  67. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/bootstrap.py +0 -0
  68. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/checks.py +0 -0
  69. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/consumer.py +0 -0
  70. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/errors.py +0 -0
  71. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/__init__.py +0 -0
  72. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/__main__.py +0 -0
  73. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/baseline.py +0 -0
  74. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/diagnostics.py +0 -0
  75. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/fingerprints.py +0 -0
  76. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/fixtures.py +0 -0
  77. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  78. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  79. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/contract.py +0 -0
  80. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  81. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  82. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/readiness.py +0 -0
  83. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/runner.py +0 -0
  84. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/evals/traces.py +0 -0
  85. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/grounding.py +0 -0
  86. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/models.py +0 -0
  87. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/__init__.py +0 -0
  88. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/_shared.py +0 -0
  89. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/anthropic.py +0 -0
  90. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/base.py +0 -0
  91. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/google.py +0 -0
  92. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/ollama.py +0 -0
  93. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/providers/openai.py +0 -0
  94. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/rate_limits.py +0 -0
  95. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/routing.py +0 -0
  96. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/schema_index.py +0 -0
  97. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/settings.py +0 -0
  98. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/signals.py +0 -0
  99. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/system_prompt.py +0 -0
  100. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/tool_metadata.py +0 -0
  101. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/tools.py +0 -0
  102. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/chat/views.py +0 -0
  103. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/conf.py +0 -0
  104. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/__init__.py +0 -0
  105. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/factories.py +0 -0
  106. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/factory/factory_methods.py +0 -0
  107. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/__init__.py +0 -0
  108. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/base_interface.py +0 -0
  109. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/__init__.py +0 -0
  110. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/calculation.py +0 -0
  111. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/database.py +0 -0
  112. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  113. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/bundles/request.py +0 -0
  114. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/__init__.py +0 -0
  115. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/base.py +0 -0
  116. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/builtin.py +0 -0
  117. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  118. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  119. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  120. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/configuration.py +0 -0
  121. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  122. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  123. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  124. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  125. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  126. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  127. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/factory.py +0 -0
  128. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  129. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  130. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  131. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  132. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  133. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  134. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  135. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  136. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  137. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  138. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  139. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  140. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  141. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  142. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  143. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/registry.py +0 -0
  144. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  145. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  146. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  147. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  148. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  149. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/__init__.py +0 -0
  150. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/calculation.py +0 -0
  151. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/database.py +0 -0
  152. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  153. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/read_only.py +0 -0
  154. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  155. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/interfaces/request.py +0 -0
  156. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/__init__.py +0 -0
  157. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  158. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  159. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/manifests/capability_models.py +0 -0
  160. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/orm_interface.py +0 -0
  161. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/requests.py +0 -0
  162. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/__init__.py +0 -0
  163. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  164. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/errors.py +0 -0
  165. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/interface/utils/models.py +0 -0
  166. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/logging.py +0 -0
  167. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  168. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  169. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  170. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/search_index.py +0 -0
  171. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/search_reconcile.py +0 -0
  172. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  173. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/shell.py +0 -0
  174. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  175. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  176. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/__init__.py +0 -0
  177. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/general_manager.py +0 -0
  178. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/group_manager.py +0 -0
  179. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/input.py +0 -0
  180. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/manager/meta.py +0 -0
  181. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/__init__.py +0 -0
  182. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/measurement.py +0 -0
  183. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/measurement/measurement_field.py +0 -0
  184. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/metrics/__init__.py +0 -0
  185. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/metrics/graphql.py +0 -0
  186. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0001_initial.py +0 -0
  187. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  188. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  189. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  190. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  191. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  192. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  193. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/migrations/__init__.py +0 -0
  194. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/models.py +0 -0
  195. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/__init__.py +0 -0
  196. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/audit.py +0 -0
  197. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/base_permission.py +0 -0
  198. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/graphql_capabilities.py +0 -0
  199. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/manager_based_permission.py +0 -0
  200. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/mutation_permission.py +0 -0
  201. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/permission_checks.py +0 -0
  202. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/permission_data_manager.py +0 -0
  203. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/permission/utils.py +0 -0
  204. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/public_api_registry.py +0 -0
  205. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/py.typed +0 -0
  206. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/__init__.py +0 -0
  207. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/handler.py +0 -0
  208. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/rule/rule.py +0 -0
  209. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/__init__.py +0 -0
  210. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/async_tasks.py +0 -0
  211. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backend.py +0 -0
  212. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backend_registry.py +0 -0
  213. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/__init__.py +0 -0
  214. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/dev.py +0 -0
  215. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/meilisearch.py +0 -0
  216. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/opensearch.py +0 -0
  217. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/backends/typesense.py +0 -0
  218. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/config.py +0 -0
  219. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/indexer.py +0 -0
  220. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/models.py +0 -0
  221. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/reconciliation.py +0 -0
  222. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/registry.py +0 -0
  223. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/tasks.py +0 -0
  224. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/search/utils.py +0 -0
  225. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/seeding/__init__.py +0 -0
  226. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/seeding/manager_landscape.py +0 -0
  227. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/__init__.py +0 -0
  228. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/args_to_kwargs.py +0 -0
  229. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/filter_parser.py +0 -0
  230. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/format_string.py +0 -0
  231. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/json_encoder.py +0 -0
  232. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/make_cache_key.py +0 -0
  233. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/none_to_zero.py +0 -0
  234. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/path_mapping.py +0 -0
  235. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/public_api.py +0 -0
  236. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/testing.py +0 -0
  237. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/utils/type_checks.py +0 -0
  238. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/__init__.py +0 -0
  239. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/actions.py +0 -0
  240. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backend_registry.py +0 -0
  241. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/__init__.py +0 -0
  242. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/celery.py +0 -0
  243. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/local.py +0 -0
  244. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/backends/n8n.py +0 -0
  245. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/config.py +0 -0
  246. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/engine.py +0 -0
  247. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/event_registry.py +0 -0
  248. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/events.py +0 -0
  249. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/models.py +0 -0
  250. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/signal_bridge.py +0 -0
  251. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/tasks.py +0 -0
  252. {generalmanager-0.57.2 → generalmanager-0.57.4}/src/general_manager/workflow/telemetry.py +0 -0
  253. {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/test_settings.py +0 -0
  254. {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/test_urls.py +0 -0
  255. {generalmanager-0.57.2 → generalmanager-0.57.4}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.57.2
3
+ Version: 0.57.4
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.57.2"
7
+ version = "0.57.4"
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.57.2
3
+ Version: 0.57.4
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
@@ -1,8 +1,9 @@
1
1
  """Bucket implementation that enumerates calculation interface combinations."""
2
2
 
3
3
  from __future__ import annotations
4
- from collections.abc import Hashable, Iterable
4
+ from collections.abc import Hashable, Iterable, Iterator
5
5
  from types import UnionType
6
+ from itertools import islice
6
7
  from typing import (
7
8
  Type,
8
9
  TYPE_CHECKING,
@@ -25,6 +26,7 @@ from general_manager.bucket.base_bucket import Bucket
25
26
  from general_manager.bucket.indexing import freeze_bucket_index_value
26
27
  from general_manager.manager.input import Input, InputDomain
27
28
  from general_manager.utils.filter_parser import (
29
+ FilterFunction,
28
30
  ParsedFilters,
29
31
  parse_filters,
30
32
  )
@@ -47,6 +49,15 @@ class SortedFilters(TypedDict):
47
49
  input_excludes: ParsedFilters
48
50
 
49
51
 
52
+ def _build_exclude_filter(exclude_func: FilterFunction) -> FilterFunction:
53
+ """Create a lazy predicate that keeps values an exclude does not reject."""
54
+
55
+ def includes_value(value: object) -> bool:
56
+ return not exclude_func(value)
57
+
58
+ return includes_value
59
+
60
+
50
61
  class InvalidCalculationInterfaceError(TypeError):
51
62
  """Raised when a CalculationBucket is initialized with a non-CalculationInterface manager."""
52
63
 
@@ -308,25 +319,95 @@ class CalculationBucket(Bucket[GeneralManagerType]):
308
319
 
309
320
  def __str__(self) -> str:
310
321
  """
311
- Return a compact preview of the generated combinations.
322
+ Return a compact preview of generated combinations.
323
+
324
+ Cached buckets include the exact combination count. Uncached buckets avoid
325
+ materializing all combinations for string formatting; when more than the
326
+ preview limit exists, the count is reported as a lower-bound label.
312
327
 
313
328
  Returns:
314
329
  str: Human-readable summary of up to five combinations.
315
330
  """
316
331
  PRINT_MAX = 5
317
- combinations = self.generate_combinations()
318
- prefix = f"CalculationBucket ({len(combinations)})["
332
+ combinations, count_label, has_more = self._str_combinations_preview(PRINT_MAX)
333
+ prefix = f"CalculationBucket ({count_label})["
319
334
  main = ",".join(
320
- [
321
- f"{self._manager_class.__name__}(**{comb})"
322
- for comb in combinations[:PRINT_MAX]
323
- ]
335
+ [f"{self._manager_class.__name__}(**{comb})" for comb in combinations]
336
+ )
337
+ suffix = "]"
338
+ if has_more:
339
+ suffix = ", ...]"
340
+
341
+ return f"{prefix}{main}{suffix}"
342
+
343
+ def _str_combinations_preview(
344
+ self, limit: int
345
+ ) -> tuple[list[Combination], str, bool]:
346
+ """
347
+ Return combinations, count label, and overflow flag for ``__str__``.
348
+
349
+ Sorted or reversed buckets use normal materialization so the preview
350
+ reflects the final global ordering. Unsorted uncached buckets read at
351
+ most ``limit + 1`` matching combinations and leave ``_data`` untouched.
352
+ """
353
+ if self._data is not None:
354
+ return self._data[:limit], str(len(self._data)), len(self._data) > limit
355
+
356
+ if self._normalized_sort_key() is not None or self.reverse:
357
+ combinations = self.generate_combinations()
358
+ return (
359
+ combinations[:limit],
360
+ str(len(combinations)),
361
+ len(combinations) > limit,
362
+ )
363
+
364
+ from general_manager.cache.run_context import ensure_calculation_run_context
365
+
366
+ with ensure_calculation_run_context():
367
+ sorted_inputs = self.topological_sort_inputs()
368
+ sorted_filters = self._sort_filters(sorted_inputs)
369
+ if self._uses_static_iterator_possible_values(sorted_inputs):
370
+ combinations = self.generate_combinations()
371
+ return (
372
+ combinations[:limit],
373
+ str(len(combinations)),
374
+ len(combinations) > limit,
375
+ )
376
+ snapshot_iterables = self._uses_dependent_possible_values(sorted_inputs)
377
+ preview_iterator = self._iter_input_combinations(
378
+ sorted_inputs,
379
+ sorted_filters["input_filters"],
380
+ sorted_filters["input_excludes"],
381
+ snapshot_iterables=snapshot_iterables,
382
+ )
383
+ if sorted_filters["prop_filters"] or sorted_filters["prop_excludes"]:
384
+ preview_iterator = self._iter_prop_filtered_identifications(
385
+ preview_iterator,
386
+ sorted_filters["prop_filters"],
387
+ sorted_filters["prop_excludes"],
388
+ )
389
+ preview = list(islice(preview_iterator, limit + 1))
390
+
391
+ has_more = len(preview) > limit
392
+ if has_more:
393
+ preview = preview[:limit]
394
+ count_label = f"{limit}+" if has_more else str(len(preview))
395
+ return preview, count_label, has_more
396
+
397
+ def _uses_static_iterator_possible_values(self, sorted_inputs: list[str]) -> bool:
398
+ """Return whether previewing would consume a one-shot static iterator."""
399
+ return any(
400
+ isinstance(self.input_fields[input_name].possible_values, Iterator)
401
+ for input_name in sorted_inputs
324
402
  )
325
- sufix = "]"
326
- if len(combinations) > PRINT_MAX:
327
- sufix = ", ...]"
328
403
 
329
- return f"{prefix}{main}{sufix}"
404
+ def _uses_dependent_possible_values(self, sorted_inputs: list[str]) -> bool:
405
+ """Return whether previewing should snapshot values before dependencies."""
406
+ return any(
407
+ bool(self.input_fields[input_name].depends_on)
408
+ and self.input_fields[input_name].possible_values is not None
409
+ for input_name in sorted_inputs
410
+ )
330
411
 
331
412
  def __repr__(self) -> str:
332
413
  """
@@ -549,12 +630,14 @@ class CalculationBucket(Bucket[GeneralManagerType]):
549
630
  self,
550
631
  combinations: list[Combination],
551
632
  ) -> list[GeneralManagerType]:
633
+ """Instantiate managers for each raw input-combination dictionary."""
552
634
  return [self._manager_class(**combo) for combo in combinations]
553
635
 
554
636
  @staticmethod
555
637
  def _manager_identifications(
556
638
  managers: list[GeneralManagerType],
557
639
  ) -> list[Combination]:
640
+ """Return the identification dictionaries from manager instances."""
558
641
  return [manager.identification for manager in managers]
559
642
 
560
643
  def generate_combinations(self) -> List[Combination]:
@@ -730,22 +813,25 @@ class CalculationBucket(Bucket[GeneralManagerType]):
730
813
  raise InvalidPossibleValuesError(key_name)
731
814
  return possible_values
732
815
 
733
- def _generate_input_combinations(
816
+ def _iter_input_combinations(
734
817
  self,
735
818
  sorted_inputs: List[str],
736
819
  filters: ParsedFilters,
737
820
  excludes: ParsedFilters,
738
- ) -> List[Combination]:
821
+ *,
822
+ snapshot_iterables: bool,
823
+ ) -> Generator[Combination, None, None]:
739
824
  """
740
- Generate all valid assignments of input fields that satisfy the provided per-field filters and exclusions.
825
+ Yield valid assignments of input fields satisfying filters and excludes.
741
826
 
742
827
  Parameters:
743
828
  sorted_inputs (list[str]): Input names in dependency-respecting order.
744
829
  filters (dict[str, dict]): Per-input filter definitions (may include `filter_funcs` or `filter_kwargs`).
745
830
  excludes (dict[str, dict]): Per-input exclusion definitions (may include `filter_funcs` or `filter_kwargs`).
746
831
 
747
- Returns:
748
- list[Combination]: Completed input-to-value mappings that meet the filters and excludes.
832
+ Yields:
833
+ Combination: Completed input-to-value mappings that meet the
834
+ filters and excludes.
749
835
  """
750
836
 
751
837
  def input_passes_filters(
@@ -812,10 +898,10 @@ class CalculationBucket(Bucket[GeneralManagerType]):
812
898
  exclude_funcs = field_excludes.get("filter_funcs", [])
813
899
  for exclude_func in exclude_funcs:
814
900
  possible_values = filter(
815
- lambda x: not exclude_func(x), possible_values
901
+ _build_exclude_filter(exclude_func), possible_values
816
902
  )
817
-
818
- possible_values = list(possible_values)
903
+ if snapshot_iterables:
904
+ possible_values = list(possible_values)
819
905
 
820
906
  for value in possible_values:
821
907
  if not isinstance(value, input_field.type):
@@ -824,7 +910,52 @@ class CalculationBucket(Bucket[GeneralManagerType]):
824
910
  yield from helper(index + 1, current_combo)
825
911
  del current_combo[input_name]
826
912
 
827
- return list(helper(0, {}))
913
+ yield from helper(0, {})
914
+
915
+ def _generate_input_combinations(
916
+ self,
917
+ sorted_inputs: List[str],
918
+ filters: ParsedFilters,
919
+ excludes: ParsedFilters,
920
+ ) -> List[Combination]:
921
+ """
922
+ Generate all valid assignments of input fields that satisfy filters.
923
+
924
+ Parameters:
925
+ sorted_inputs (list[str]): Input names in dependency-respecting order.
926
+ filters (dict[str, dict]): Per-input filter definitions.
927
+ excludes (dict[str, dict]): Per-input exclusion definitions.
928
+
929
+ Returns:
930
+ list[Combination]: Completed input-to-value mappings that meet the
931
+ filters and excludes.
932
+ """
933
+ return list(
934
+ self._iter_input_combinations(
935
+ sorted_inputs,
936
+ filters,
937
+ excludes,
938
+ snapshot_iterables=True,
939
+ )
940
+ )
941
+
942
+ def _iter_prop_filtered_identifications(
943
+ self,
944
+ combinations: Iterable[Combination],
945
+ prop_filters: ParsedFilters,
946
+ prop_excludes: ParsedFilters,
947
+ ) -> Generator[Combination, None, None]:
948
+ """
949
+ Lazily apply property filters and yield manager identifications.
950
+
951
+ This mirrors the property-filter materialization path used by
952
+ :meth:`generate_combinations`, but lets ``__str__`` stop after enough
953
+ matching combinations have been found.
954
+ """
955
+ for combo in combinations:
956
+ manager = self._manager_class(**combo)
957
+ if self._filter_prop_combinations([manager], prop_filters, prop_excludes):
958
+ yield manager.identification
828
959
 
829
960
  def _filter_prop_combinations(
830
961
  self,
@@ -105,12 +105,12 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
105
105
 
106
106
  The factory inspects the bound ORM interface, fills missing model fields with
107
107
  generated values or declared defaults, applies many-to-many relations after
108
- model construction, and wraps created objects back into GeneralManager
109
- instances. Build strategy returns Django model instances; create strategy
110
- returns manager wrappers. Subclasses are generated with an ORM interface that
111
- provides ``handle_custom_fields()``, ``input_fields``,
112
- ``format_identification()``, and ``_parent_class`` for created-object
113
- wrapping.
108
+ saved creation, and wraps created objects back into GeneralManager instances.
109
+ Build strategy returns unsaved Django model instances and skips
110
+ many-to-many assignment; create strategy returns manager wrappers.
111
+ Subclasses are generated with an ORM interface that provides
112
+ ``handle_custom_fields()``, ``input_fields``, ``format_identification()``,
113
+ and ``_parent_class`` for created-object wrapping.
114
114
  """
115
115
 
116
116
  interface: type[OrmInterfaceBase[models.Model]]
@@ -127,14 +127,11 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
127
127
  caller-supplied values already present in `params` win. factory_boy then
128
128
  dispatches to `_build()` or `_create()`, where many-to-many values are
129
129
  stripped from constructor kwargs and foreign-key/one-to-one values are
130
- coerced before `_adjustmentMethod` is called. After model construction,
131
- this hook applies many-to-many assignments from the original `params`
132
- and wraps created models into manager instances for create strategy.
133
-
134
- Many-to-many assignment is attempted for both build and create strategy.
135
- Django requires saved instances for many-to-many `.set(...)`; therefore
136
- build calls with explicit or generated many-to-many values are
137
- unsupported and may raise Django's unsaved-instance relation error.
130
+ coerced before `_adjustmentMethod` is called. Create strategy then
131
+ applies many-to-many assignments from the original `params` to saved
132
+ models and wraps them into manager instances. Build strategy returns the
133
+ unsaved model instance(s) without attempting many-to-many assignment,
134
+ even when explicit or declared many-to-many values were supplied.
138
135
 
139
136
  Parameters:
140
137
  strategy (Literal["build", "create"]): "build" returns unsaved model instance(s); "create" saves model instance(s) and returns GeneralManager wrapper(s).
@@ -202,8 +199,10 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
202
199
  for item in obj:
203
200
  if not isinstance(item, models.Model):
204
201
  raise InvalidGeneratedObjectError()
205
- cls._handle_many_to_many_fields_after_creation(item, params)
206
- else:
202
+ if strategy == "create":
203
+ for item in obj:
204
+ cls._handle_many_to_many_fields_after_creation(item, params)
205
+ elif strategy == "create":
207
206
  cls._handle_many_to_many_fields_after_creation(obj, params)
208
207
  if strategy == "create":
209
208
  return cls._wrap_generated_objects(obj)
@@ -214,7 +213,11 @@ class AutoFactory(DjangoModelFactory[modelsModel]):
214
213
  cls, obj: models.Model, attrs: FactoryParams
215
214
  ) -> None:
216
215
  """
217
- Assign related objects to many-to-many fields after creation/building.
216
+ Assign related objects to many-to-many fields after saved creation.
217
+
218
+ Build strategy returns unsaved models and must skip this method because
219
+ Django many-to-many managers require the source instance to have a
220
+ primary key before `.set(...)` can be used.
218
221
 
219
222
  Parameters:
220
223
  obj (models.Model): Instance whose many-to-many relations should be populated.
File without changes