GeneralManager 0.64.3__tar.gz → 0.64.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 (290) hide show
  1. {generalmanager-0.64.3/src/GeneralManager.egg-info → generalmanager-0.64.4}/PKG-INFO +5 -2
  2. {generalmanager-0.64.3 → generalmanager-0.64.4}/README.md +4 -1
  3. {generalmanager-0.64.3 → generalmanager-0.64.4}/pyproject.toml +1 -1
  4. {generalmanager-0.64.3 → generalmanager-0.64.4/src/GeneralManager.egg-info}/PKG-INFO +5 -2
  5. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/GeneralManager.egg-info/SOURCES.txt +1 -0
  6. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/models.py +70 -5
  7. generalmanager-0.64.4/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +64 -0
  8. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/testing.py +219 -179
  9. generalmanager-0.64.4/tests/test_settings.py +79 -0
  10. generalmanager-0.64.3/tests/test_settings.py +0 -34
  11. {generalmanager-0.64.3 → generalmanager-0.64.4}/LICENSE +0 -0
  12. {generalmanager-0.64.3 → generalmanager-0.64.4}/setup.cfg +0 -0
  13. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  14. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/GeneralManager.egg-info/requires.txt +0 -0
  15. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/GeneralManager.egg-info/top_level.txt +0 -0
  16. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/__init__.py +0 -0
  17. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/__init__.py +0 -0
  18. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/api.py +0 -0
  19. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/bucket.py +0 -0
  20. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/cache.py +0 -0
  21. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/dataframes.py +0 -0
  22. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/factory.py +0 -0
  23. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/general_manager.py +0 -0
  24. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/interface.py +0 -0
  25. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/manager.py +0 -0
  26. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/measurement.py +0 -0
  27. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/permission.py +0 -0
  28. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/rule.py +0 -0
  29. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/search.py +0 -0
  30. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/_types/utils.py +0 -0
  31. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/__init__.py +0 -0
  32. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql.py +0 -0
  33. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_errors.py +0 -0
  34. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_mutations.py +0 -0
  35. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_prefetch.py +0 -0
  36. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_relations.py +0 -0
  37. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_resolvers.py +0 -0
  38. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_search.py +0 -0
  39. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  40. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_subscriptions.py +0 -0
  41. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_view.py +0 -0
  42. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_warmup.py +0 -0
  43. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  44. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  45. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/mutation.py +0 -0
  46. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/notification_batching.py +0 -0
  47. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/property.py +0 -0
  48. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/registry.py +0 -0
  49. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/remote_api.py +0 -0
  50. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/remote_invalidation.py +0 -0
  51. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/api/remote_invalidation_client.py +0 -0
  52. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/apps.py +0 -0
  53. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bootstrap.py +0 -0
  54. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/__init__.py +0 -0
  55. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/base_bucket.py +0 -0
  56. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/calculation_bucket.py +0 -0
  57. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/database_bucket.py +0 -0
  58. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/group_bucket.py +0 -0
  59. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/indexing.py +0 -0
  60. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/bucket/request_bucket.py +0 -0
  61. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/__init__.py +0 -0
  62. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/cache_decorator.py +0 -0
  63. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/cache_tracker.py +0 -0
  64. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/dependency_cache.py +0 -0
  65. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/dependency_index.py +0 -0
  66. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/dependency_matching.py +0 -0
  67. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/dependency_publish.py +0 -0
  68. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/dependency_shards.py +0 -0
  69. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/model_dependency_collector.py +0 -0
  70. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/run_context.py +0 -0
  71. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/cache/signals.py +0 -0
  72. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/__init__.py +0 -0
  73. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/audit.py +0 -0
  74. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/bootstrap.py +0 -0
  75. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/checks.py +0 -0
  76. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/consumer.py +0 -0
  77. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/errors.py +0 -0
  78. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/__init__.py +0 -0
  79. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/__main__.py +0 -0
  80. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/baseline.py +0 -0
  81. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
  82. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
  83. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
  84. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
  85. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
  86. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
  87. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/diagnostics.py +0 -0
  88. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/fingerprints.py +0 -0
  89. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/fixtures.py +0 -0
  90. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  91. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  92. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/judges/contract.py +0 -0
  93. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  94. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  95. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/readiness.py +0 -0
  96. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/runner.py +0 -0
  97. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/evals/traces.py +0 -0
  98. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/grounding.py +0 -0
  99. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/__init__.py +0 -0
  100. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/_shared.py +0 -0
  101. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/anthropic.py +0 -0
  102. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/base.py +0 -0
  103. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/google.py +0 -0
  104. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/ollama.py +0 -0
  105. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/providers/openai.py +0 -0
  106. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/rate_limits.py +0 -0
  107. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/routing.py +0 -0
  108. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/schema_index.py +0 -0
  109. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/settings.py +0 -0
  110. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/signals.py +0 -0
  111. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/system_prompt.py +0 -0
  112. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/tool_metadata.py +0 -0
  113. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/tools.py +0 -0
  114. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/chat/views.py +0 -0
  115. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/conf.py +0 -0
  116. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/dataframes/__init__.py +0 -0
  117. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/dataframes/measurements.py +0 -0
  118. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/factory/__init__.py +0 -0
  119. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/factory/auto_factory.py +0 -0
  120. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/factory/factories.py +0 -0
  121. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/factory/factory_methods.py +0 -0
  122. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/__init__.py +0 -0
  123. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/base_interface.py +0 -0
  124. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/bundles/__init__.py +0 -0
  125. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/bundles/calculation.py +0 -0
  126. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/bundles/database.py +0 -0
  127. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  128. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/bundles/request.py +0 -0
  129. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/__init__.py +0 -0
  130. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/base.py +0 -0
  131. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/builtin.py +0 -0
  132. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  133. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  134. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  135. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/configuration.py +0 -0
  136. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  137. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  138. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  139. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  140. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  141. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  142. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/factory.py +0 -0
  143. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  144. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  145. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  146. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  147. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  148. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  149. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  150. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  151. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  152. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  153. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  154. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  155. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  156. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  157. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  158. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/registry.py +0 -0
  159. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  160. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  161. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  162. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  163. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  164. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/__init__.py +0 -0
  165. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/calculation.py +0 -0
  166. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/database.py +0 -0
  167. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  168. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/read_only.py +0 -0
  169. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  170. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/interfaces/request.py +0 -0
  171. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/manifests/__init__.py +0 -0
  172. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  173. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  174. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/manifests/capability_models.py +0 -0
  175. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/orm_interface.py +0 -0
  176. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/requests.py +0 -0
  177. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/utils/__init__.py +0 -0
  178. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  179. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/utils/errors.py +0 -0
  180. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/utils/history.py +0 -0
  181. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/interface/utils/models.py +0 -0
  182. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/logging.py +0 -0
  183. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  184. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
  185. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  186. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  187. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/search_index.py +0 -0
  188. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/search_reconcile.py +0 -0
  189. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  190. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/shell.py +0 -0
  191. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  192. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  193. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/manager/__init__.py +0 -0
  194. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/manager/general_manager.py +0 -0
  195. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/manager/group_manager.py +0 -0
  196. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/manager/input.py +0 -0
  197. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/manager/meta.py +0 -0
  198. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/measurement/__init__.py +0 -0
  199. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/measurement/measurement.py +0 -0
  200. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/measurement/measurement_field.py +0 -0
  201. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/metrics/__init__.py +0 -0
  202. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/metrics/graphql.py +0 -0
  203. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0001_initial.py +0 -0
  204. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  205. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  206. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  207. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  208. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  209. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  210. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0007_upload_intent.py +0 -0
  211. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
  212. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
  213. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/migrations/__init__.py +0 -0
  214. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/models.py +0 -0
  215. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/__init__.py +0 -0
  216. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/audit.py +0 -0
  217. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/base_permission.py +0 -0
  218. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/graphql_capabilities.py +0 -0
  219. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/manager_based_permission.py +0 -0
  220. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/mutation_permission.py +0 -0
  221. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/permission_checks.py +0 -0
  222. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/permission_data_manager.py +0 -0
  223. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/permission/utils.py +0 -0
  224. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/public_api_registry.py +0 -0
  225. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/py.typed +0 -0
  226. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/rule/__init__.py +0 -0
  227. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/rule/handler.py +0 -0
  228. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/rule/rule.py +0 -0
  229. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/__init__.py +0 -0
  230. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/async_tasks.py +0 -0
  231. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backend.py +0 -0
  232. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backend_registry.py +0 -0
  233. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backends/__init__.py +0 -0
  234. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backends/dev.py +0 -0
  235. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backends/meilisearch.py +0 -0
  236. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backends/opensearch.py +0 -0
  237. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/backends/typesense.py +0 -0
  238. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/config.py +0 -0
  239. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/indexer.py +0 -0
  240. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/models.py +0 -0
  241. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/reconciliation.py +0 -0
  242. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/registry.py +0 -0
  243. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/tasks.py +0 -0
  244. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/search/utils.py +0 -0
  245. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/seeding/__init__.py +0 -0
  246. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/seeding/manager_landscape.py +0 -0
  247. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/__init__.py +0 -0
  248. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/adapters.py +0 -0
  249. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/checks.py +0 -0
  250. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/config.py +0 -0
  251. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/errors.py +0 -0
  252. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/finalization.py +0 -0
  253. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/graphql.py +0 -0
  254. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/graphql_types.py +0 -0
  255. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/metrics.py +0 -0
  256. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/models.py +0 -0
  257. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/public.py +0 -0
  258. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/s3.py +0 -0
  259. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/services.py +0 -0
  260. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/tokens.py +0 -0
  261. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/types.py +0 -0
  262. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/urls.py +0 -0
  263. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/uploads/views.py +0 -0
  264. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/__init__.py +0 -0
  265. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/args_to_kwargs.py +0 -0
  266. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/filter_parser.py +0 -0
  267. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/format_string.py +0 -0
  268. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/json_encoder.py +0 -0
  269. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/make_cache_key.py +0 -0
  270. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/none_to_zero.py +0 -0
  271. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/path_mapping.py +0 -0
  272. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/public_api.py +0 -0
  273. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/utils/type_checks.py +0 -0
  274. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/__init__.py +0 -0
  275. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/actions.py +0 -0
  276. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/backend_registry.py +0 -0
  277. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/backends/__init__.py +0 -0
  278. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/backends/celery.py +0 -0
  279. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/backends/local.py +0 -0
  280. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/backends/n8n.py +0 -0
  281. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/config.py +0 -0
  282. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/engine.py +0 -0
  283. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/event_registry.py +0 -0
  284. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/events.py +0 -0
  285. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/models.py +0 -0
  286. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/signal_bridge.py +0 -0
  287. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/tasks.py +0 -0
  288. {generalmanager-0.64.3 → generalmanager-0.64.4}/src/general_manager/workflow/telemetry.py +0 -0
  289. {generalmanager-0.64.3 → generalmanager-0.64.4}/tests/test_urls.py +0 -0
  290. {generalmanager-0.64.3 → generalmanager-0.64.4}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.64.3
3
+ Version: 0.64.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
@@ -149,7 +149,10 @@ and [interface concepts](https://timkleindick.github.io/general_manager/concepts
149
149
  - CI exercises Python 3.12, 3.13, and 3.14 on SQLite
150
150
 
151
151
  GeneralManager builds on Django's database layer, but this project only claims
152
- backend support covered by its tests or maintained examples.
152
+ backend support covered by its tests or maintained examples. SQLite,
153
+ PostgreSQL, and MariaDB are exercised by CI and are fully supported. Other
154
+ Django-supported backends may work, but are not currently claimed as supported
155
+ by GeneralManager.
153
156
 
154
157
  ## Five-minute setup
155
158
 
@@ -60,7 +60,10 @@ and [interface concepts](https://timkleindick.github.io/general_manager/concepts
60
60
  - CI exercises Python 3.12, 3.13, and 3.14 on SQLite
61
61
 
62
62
  GeneralManager builds on Django's database layer, but this project only claims
63
- backend support covered by its tests or maintained examples.
63
+ backend support covered by its tests or maintained examples. SQLite,
64
+ PostgreSQL, and MariaDB are exercised by CI and are fully supported. Other
65
+ Django-supported backends may work, but are not currently claimed as supported
66
+ by GeneralManager.
64
67
 
65
68
  ## Five-minute setup
66
69
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "GeneralManager"
7
- version = "0.64.3"
7
+ version = "0.64.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.64.3
3
+ Version: 0.64.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
@@ -149,7 +149,10 @@ and [interface concepts](https://timkleindick.github.io/general_manager/concepts
149
149
  - CI exercises Python 3.12, 3.13, and 3.14 on SQLite
150
150
 
151
151
  GeneralManager builds on Django's database layer, but this project only claims
152
- backend support covered by its tests or maintained examples.
152
+ backend support covered by its tests or maintained examples. SQLite,
153
+ PostgreSQL, and MariaDB are exercised by CI and are fully supported. Other
154
+ Django-supported backends may work, but are not currently claimed as supported
155
+ by GeneralManager.
153
156
 
154
157
  ## Five-minute setup
155
158
 
@@ -207,6 +207,7 @@ src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py
207
207
  src/general_manager/migrations/0007_upload_intent.py
208
208
  src/general_manager/migrations/0008_upload_finalization_versions.py
209
209
  src/general_manager/migrations/0009_upload_cleanup_state.py
210
+ src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py
210
211
  src/general_manager/migrations/__init__.py
211
212
  src/general_manager/permission/__init__.py
212
213
  src/general_manager/permission/audit.py
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from collections.abc import Iterable
5
6
  from datetime import timedelta
6
7
  from typing import Any, ClassVar, cast
7
8
 
@@ -103,6 +104,11 @@ class ChatPendingConfirmation(models.Model):
103
104
  payload: Any = models.JSONField(default=dict)
104
105
  expires_at: Any = models.DateTimeField()
105
106
  resolved_at: Any = models.DateTimeField(null=True, blank=True)
107
+ unresolved_marker: Any = models.BooleanField(
108
+ null=True,
109
+ default=True,
110
+ editable=False,
111
+ )
106
112
  created_at: Any = models.DateTimeField(auto_now_add=True)
107
113
 
108
114
  class Meta:
@@ -113,12 +119,70 @@ class ChatPendingConfirmation(models.Model):
113
119
  ]
114
120
  constraints: ClassVar[list[models.BaseConstraint]] = [
115
121
  models.UniqueConstraint(
116
- fields=["conversation", "confirmation_id"],
117
- condition=models.Q(resolved_at__isnull=True),
122
+ fields=["conversation", "confirmation_id", "unresolved_marker"],
118
123
  name="gm_chat_pending_conv_conf_uniq",
119
- )
124
+ ),
125
+ models.CheckConstraint(
126
+ condition=(
127
+ models.Q(
128
+ resolved_at__isnull=True,
129
+ unresolved_marker=True,
130
+ unresolved_marker__isnull=False,
131
+ )
132
+ | models.Q(
133
+ resolved_at__isnull=False,
134
+ unresolved_marker__isnull=True,
135
+ )
136
+ ),
137
+ name="gm_chat_pending_resolution_state",
138
+ ),
120
139
  ]
121
140
 
141
+ def save(
142
+ self,
143
+ *args: Any,
144
+ force_insert: bool = False,
145
+ force_update: bool = False,
146
+ using: str | None = None,
147
+ update_fields: Iterable[str] | None = None,
148
+ ) -> None:
149
+ """Keep the internal uniqueness marker aligned with resolution state."""
150
+ if args:
151
+ parse_save_params = getattr(
152
+ cast(Any, self),
153
+ "_parse_save_params",
154
+ None,
155
+ )
156
+ if parse_save_params is None:
157
+ cast(Any, super().save)(
158
+ *args,
159
+ force_insert=force_insert,
160
+ force_update=force_update,
161
+ using=using,
162
+ update_fields=update_fields,
163
+ )
164
+ return
165
+ force_insert, force_update, using, update_fields = parse_save_params(
166
+ *args,
167
+ method_name="save",
168
+ force_insert=force_insert,
169
+ force_update=force_update,
170
+ using=using,
171
+ update_fields=update_fields,
172
+ )
173
+ if update_fields is not None:
174
+ update_fields = set(update_fields)
175
+ if update_fields is None or "resolved_at" in update_fields:
176
+ self.unresolved_marker = True if self.resolved_at is None else None
177
+ if update_fields is not None:
178
+ update_fields.add("unresolved_marker")
179
+ super().save(
180
+ force_insert=force_insert,
181
+ force_update=force_update,
182
+ using=using,
183
+ update_fields=update_fields,
184
+ )
185
+
122
186
  @classmethod
123
187
  def active_for_conversation(
124
188
  cls,
@@ -161,7 +225,8 @@ class ChatPendingConfirmation(models.Model):
161
225
  if pending is None:
162
226
  return None
163
227
  pending.resolved_at = current_time
164
- pending.save(update_fields=["resolved_at"])
228
+ pending.unresolved_marker = None
229
+ pending.save(update_fields=["resolved_at", "unresolved_marker"])
165
230
  return pending
166
231
 
167
232
 
@@ -283,7 +348,7 @@ def create_pending_confirmation(
283
348
  confirmation_id=confirmation_id,
284
349
  resolved_at__isnull=True,
285
350
  expires_at__lte=current_time,
286
- ).update(resolved_at=current_time)
351
+ ).update(resolved_at=current_time, unresolved_marker=None)
287
352
  unresolved_duplicate_exists = ChatPendingConfirmation.objects.filter(
288
353
  conversation=conversation,
289
354
  confirmation_id=confirmation_id,
@@ -0,0 +1,64 @@
1
+ # Generated by Django 5.2.10 on 2026-07-17
2
+
3
+ from typing import Any
4
+
5
+ from django.db import migrations, models
6
+
7
+
8
+ def mark_unresolved_confirmations(apps: Any, schema_editor: Any) -> None:
9
+ pending_confirmation = apps.get_model(
10
+ "general_manager",
11
+ "ChatPendingConfirmation",
12
+ )
13
+ pending_confirmation.objects.using(schema_editor.connection.alias).filter(
14
+ resolved_at__isnull=True,
15
+ ).update(unresolved_marker=True)
16
+
17
+
18
+ class Migration(migrations.Migration):
19
+ dependencies = [
20
+ ("general_manager", "0009_upload_cleanup_state"),
21
+ ]
22
+
23
+ operations = [
24
+ migrations.AddField(
25
+ model_name="chatpendingconfirmation",
26
+ name="unresolved_marker",
27
+ field=models.BooleanField(default=None, editable=False, null=True),
28
+ ),
29
+ migrations.RunPython(
30
+ mark_unresolved_confirmations,
31
+ reverse_code=migrations.RunPython.noop,
32
+ ),
33
+ migrations.AlterField(
34
+ model_name="chatpendingconfirmation",
35
+ name="unresolved_marker",
36
+ field=models.BooleanField(default=True, editable=False, null=True),
37
+ ),
38
+ migrations.RemoveConstraint(
39
+ model_name="chatpendingconfirmation",
40
+ name="gm_chat_pending_conv_conf_uniq",
41
+ ),
42
+ migrations.AddConstraint(
43
+ model_name="chatpendingconfirmation",
44
+ constraint=models.UniqueConstraint(
45
+ fields=("conversation", "confirmation_id", "unresolved_marker"),
46
+ name="gm_chat_pending_conv_conf_uniq",
47
+ ),
48
+ ),
49
+ migrations.AddConstraint(
50
+ model_name="chatpendingconfirmation",
51
+ constraint=models.CheckConstraint(
52
+ condition=models.Q(
53
+ resolved_at__isnull=True,
54
+ unresolved_marker=True,
55
+ unresolved_marker__isnull=False,
56
+ )
57
+ | models.Q(
58
+ resolved_at__isnull=False,
59
+ unresolved_marker__isnull=True,
60
+ ),
61
+ name="gm_chat_pending_resolution_state",
62
+ ),
63
+ ),
64
+ ]