GeneralManager 0.68.0__tar.gz → 0.68.2__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 (297) hide show
  1. {generalmanager-0.68.0/src/GeneralManager.egg-info → generalmanager-0.68.2}/PKG-INFO +1 -1
  2. {generalmanager-0.68.0 → generalmanager-0.68.2}/pyproject.toml +1 -1
  3. {generalmanager-0.68.0 → generalmanager-0.68.2/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql.py +33 -10
  5. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_resolvers.py +38 -16
  6. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/group_bucket.py +5 -1
  7. {generalmanager-0.68.0 → generalmanager-0.68.2}/LICENSE +0 -0
  8. {generalmanager-0.68.0 → generalmanager-0.68.2}/README.md +0 -0
  9. {generalmanager-0.68.0 → generalmanager-0.68.2}/setup.cfg +0 -0
  10. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  11. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  12. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/GeneralManager.egg-info/requires.txt +0 -0
  13. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/GeneralManager.egg-info/top_level.txt +0 -0
  14. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/__init__.py +0 -0
  15. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/__init__.py +0 -0
  16. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/api.py +0 -0
  17. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/bucket.py +0 -0
  18. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/cache.py +0 -0
  19. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/dataframes.py +0 -0
  20. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/factory.py +0 -0
  21. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/general_manager.py +0 -0
  22. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/interface.py +0 -0
  23. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/manager.py +0 -0
  24. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/measurement.py +0 -0
  25. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/permission.py +0 -0
  26. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/rule.py +0 -0
  27. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/search.py +0 -0
  28. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/_types/utils.py +0 -0
  29. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/__init__.py +0 -0
  30. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_as_of.py +0 -0
  31. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_errors.py +0 -0
  32. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_mutations.py +0 -0
  33. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_prefetch.py +0 -0
  34. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_relations.py +0 -0
  35. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_search.py +0 -0
  36. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  37. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_subscriptions.py +0 -0
  38. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_view.py +0 -0
  39. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_warmup.py +0 -0
  40. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  41. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  42. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/mutation.py +0 -0
  43. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/notification_batching.py +0 -0
  44. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/property.py +0 -0
  45. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/registry.py +0 -0
  46. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/remote_api.py +0 -0
  47. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/remote_invalidation.py +0 -0
  48. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/api/remote_invalidation_client.py +0 -0
  49. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/apps.py +0 -0
  50. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/as_of.py +0 -0
  51. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bootstrap.py +0 -0
  52. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/__init__.py +0 -0
  53. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/base_bucket.py +0 -0
  54. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/calculation_bucket.py +0 -0
  55. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/database_bucket.py +0 -0
  56. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/indexing.py +0 -0
  57. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/bucket/request_bucket.py +0 -0
  58. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/__init__.py +0 -0
  59. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/cache_decorator.py +0 -0
  60. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/cache_tracker.py +0 -0
  61. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/data_change_context.py +0 -0
  62. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/dependency_cache.py +0 -0
  63. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/dependency_index.py +0 -0
  64. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/dependency_matching.py +0 -0
  65. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/dependency_publish.py +0 -0
  66. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/dependency_shards.py +0 -0
  67. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/model_dependency_collector.py +0 -0
  68. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/run_context.py +0 -0
  69. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/run_context_lru.py +0 -0
  70. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/cache/signals.py +0 -0
  71. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/__init__.py +0 -0
  72. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/audit.py +0 -0
  73. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/bootstrap.py +0 -0
  74. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/checks.py +0 -0
  75. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/consumer.py +0 -0
  76. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/errors.py +0 -0
  77. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/__init__.py +0 -0
  78. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/__main__.py +0 -0
  79. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/baseline.py +0 -0
  80. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
  81. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
  82. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
  83. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
  84. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
  85. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
  86. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/diagnostics.py +0 -0
  87. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/fingerprints.py +0 -0
  88. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/fixtures.py +0 -0
  89. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  90. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  91. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/judges/contract.py +0 -0
  92. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  93. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  94. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/readiness.py +0 -0
  95. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/runner.py +0 -0
  96. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/evals/traces.py +0 -0
  97. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/grounding.py +0 -0
  98. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/models.py +0 -0
  99. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/__init__.py +0 -0
  100. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/_shared.py +0 -0
  101. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/anthropic.py +0 -0
  102. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/base.py +0 -0
  103. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/google.py +0 -0
  104. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/ollama.py +0 -0
  105. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/providers/openai.py +0 -0
  106. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/rate_limits.py +0 -0
  107. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/routing.py +0 -0
  108. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/schema_index.py +0 -0
  109. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/settings.py +0 -0
  110. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/signals.py +0 -0
  111. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/system_prompt.py +0 -0
  112. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/tool_metadata.py +0 -0
  113. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/tools.py +0 -0
  114. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/chat/views.py +0 -0
  115. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/conf.py +0 -0
  116. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/dataframes/__init__.py +0 -0
  117. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/dataframes/measurements.py +0 -0
  118. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/factory/__init__.py +0 -0
  119. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/factory/auto_factory.py +0 -0
  120. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/factory/factories.py +0 -0
  121. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/factory/factory_methods.py +0 -0
  122. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/__init__.py +0 -0
  123. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/base_interface.py +0 -0
  124. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/bundles/__init__.py +0 -0
  125. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/bundles/calculation.py +0 -0
  126. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/bundles/database.py +0 -0
  127. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  128. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/bundles/request.py +0 -0
  129. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/__init__.py +0 -0
  130. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/base.py +0 -0
  131. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/builtin.py +0 -0
  132. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  133. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  134. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  135. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/configuration.py +0 -0
  136. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  137. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  138. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  139. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  140. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  141. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  142. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/factory.py +0 -0
  143. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  144. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  145. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  146. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  147. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  148. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  149. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  150. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  151. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  152. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  153. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  154. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  155. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  156. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  157. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  158. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/registry.py +0 -0
  159. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  160. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  161. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  162. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  163. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  164. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/__init__.py +0 -0
  165. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/calculation.py +0 -0
  166. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/database.py +0 -0
  167. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  168. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/read_only.py +0 -0
  169. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  170. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/interfaces/request.py +0 -0
  171. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/manifests/__init__.py +0 -0
  172. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  173. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  174. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/manifests/capability_models.py +0 -0
  175. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/orm_interface.py +0 -0
  176. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/requests.py +0 -0
  177. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/utils/__init__.py +0 -0
  178. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  179. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/utils/errors.py +0 -0
  180. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/utils/history.py +0 -0
  181. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/interface/utils/models.py +0 -0
  182. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/logging.py +0 -0
  183. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  184. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
  185. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  186. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  187. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/search_index.py +0 -0
  188. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/search_reconcile.py +0 -0
  189. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  190. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/shell.py +0 -0
  191. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  192. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  193. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/manager/__init__.py +0 -0
  194. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/manager/general_manager.py +0 -0
  195. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/manager/group_manager.py +0 -0
  196. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/manager/input.py +0 -0
  197. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/manager/meta.py +0 -0
  198. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/measurement/__init__.py +0 -0
  199. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/measurement/measurement.py +0 -0
  200. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/measurement/measurement_field.py +0 -0
  201. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/metrics/__init__.py +0 -0
  202. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/metrics/graphql.py +0 -0
  203. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0001_initial.py +0 -0
  204. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  205. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  206. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  207. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  208. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  209. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  210. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0007_upload_intent.py +0 -0
  211. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
  212. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
  213. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
  214. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
  215. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/migrations/__init__.py +0 -0
  216. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/models.py +0 -0
  217. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/__init__.py +0 -0
  218. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/audit.py +0 -0
  219. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/base_permission.py +0 -0
  220. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/graphql_capabilities.py +0 -0
  221. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/manager_based_permission.py +0 -0
  222. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/mutation_permission.py +0 -0
  223. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/permission_checks.py +0 -0
  224. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/permission_data_manager.py +0 -0
  225. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/permission/utils.py +0 -0
  226. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/public_api_registry.py +0 -0
  227. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/py.typed +0 -0
  228. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/rule/__init__.py +0 -0
  229. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/rule/handler.py +0 -0
  230. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/rule/rule.py +0 -0
  231. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/__init__.py +0 -0
  232. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/async_tasks.py +0 -0
  233. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backend.py +0 -0
  234. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backend_registry.py +0 -0
  235. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backends/__init__.py +0 -0
  236. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backends/dev.py +0 -0
  237. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backends/meilisearch.py +0 -0
  238. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backends/opensearch.py +0 -0
  239. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/backends/typesense.py +0 -0
  240. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/checks.py +0 -0
  241. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/config.py +0 -0
  242. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/indexer.py +0 -0
  243. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/invalidation.py +0 -0
  244. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/m2m_invalidation.py +0 -0
  245. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/models.py +0 -0
  246. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/reconciliation.py +0 -0
  247. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/registry.py +0 -0
  248. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/tasks.py +0 -0
  249. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/search/utils.py +0 -0
  250. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/seeding/__init__.py +0 -0
  251. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/seeding/manager_landscape.py +0 -0
  252. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/__init__.py +0 -0
  253. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/adapters.py +0 -0
  254. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/checks.py +0 -0
  255. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/config.py +0 -0
  256. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/errors.py +0 -0
  257. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/finalization.py +0 -0
  258. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/graphql.py +0 -0
  259. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/graphql_types.py +0 -0
  260. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/metrics.py +0 -0
  261. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/models.py +0 -0
  262. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/public.py +0 -0
  263. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/s3.py +0 -0
  264. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/services.py +0 -0
  265. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/tokens.py +0 -0
  266. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/types.py +0 -0
  267. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/urls.py +0 -0
  268. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/uploads/views.py +0 -0
  269. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/__init__.py +0 -0
  270. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/args_to_kwargs.py +0 -0
  271. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/filter_parser.py +0 -0
  272. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/format_string.py +0 -0
  273. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/json_encoder.py +0 -0
  274. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/make_cache_key.py +0 -0
  275. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/none_to_zero.py +0 -0
  276. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/path_mapping.py +0 -0
  277. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/public_api.py +0 -0
  278. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/testing.py +0 -0
  279. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/utils/type_checks.py +0 -0
  280. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/__init__.py +0 -0
  281. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/actions.py +0 -0
  282. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/backend_registry.py +0 -0
  283. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/backends/__init__.py +0 -0
  284. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/backends/celery.py +0 -0
  285. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/backends/local.py +0 -0
  286. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/backends/n8n.py +0 -0
  287. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/config.py +0 -0
  288. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/engine.py +0 -0
  289. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/event_registry.py +0 -0
  290. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/events.py +0 -0
  291. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/models.py +0 -0
  292. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/signal_bridge.py +0 -0
  293. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/tasks.py +0 -0
  294. {generalmanager-0.68.0 → generalmanager-0.68.2}/src/general_manager/workflow/telemetry.py +0 -0
  295. {generalmanager-0.68.0 → generalmanager-0.68.2}/tests/test_settings.py +0 -0
  296. {generalmanager-0.68.0 → generalmanager-0.68.2}/tests/test_urls.py +0 -0
  297. {generalmanager-0.68.0 → generalmanager-0.68.2}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.68.0
3
+ Version: 0.68.2
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.68.0"
7
+ version = "0.68.2"
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.68.0
3
+ Version: 0.68.2
4
4
  Summary: Modular Django-based data management framework with ORM, GraphQL, fine-grained permissions, rule validation, calculations and caching.
5
5
  Author-email: Tim Kleindick <tkleindick@yahoo.de>
6
6
  License: MIT License
@@ -95,7 +95,7 @@ from general_manager.api.graphql_resolvers import (
95
95
  apply_pagination as _apply_pagination_fn,
96
96
  apply_grouping as _apply_grouping_fn,
97
97
  check_read_permission as _check_read_permission_fn,
98
- can_read_instance as _can_read_instance_fn,
98
+ can_read_instance_for_user as _can_read_instance_for_user_fn,
99
99
  create_measurement_resolver as _create_measurement_resolver_fn,
100
100
  create_normal_resolver as _create_normal_resolver_fn,
101
101
  create_list_resolver as _create_list_resolver_fn,
@@ -1432,6 +1432,29 @@ class GraphQL:
1432
1432
  property_names=property_names,
1433
1433
  )
1434
1434
 
1435
+ @classmethod
1436
+ def _instantiate_readable_manager(
1437
+ cls,
1438
+ manager_class: type[GeneralManager],
1439
+ identification: GraphQLIdentification,
1440
+ user: object,
1441
+ action: str,
1442
+ ) -> GeneralManager | None:
1443
+ try:
1444
+ item, _ = cls._instantiate_manager(manager_class, identification)
1445
+ except SUBSCRIPTION_HYDRATION_ERRORS:
1446
+ return None
1447
+ try:
1448
+ readable = _can_read_instance_for_user_fn(item, user)
1449
+ except Exception as exc: # noqa: BLE001, RUF100
1450
+ logger.error( # noqa: TRY400
1451
+ "class subscription permission check failed",
1452
+ context={"manager": manager_class.__name__, "action": action},
1453
+ exc_info=exc,
1454
+ )
1455
+ raise
1456
+ return item if readable else None
1457
+
1435
1458
  @classmethod
1436
1459
  def _add_subscription_field(
1437
1460
  cls,
@@ -1623,6 +1646,7 @@ class GraphQL:
1623
1646
  cls._class_group_name(generalManagerClass),
1624
1647
  cls._refresh_group_name(generalManagerClass),
1625
1648
  }
1649
+ subscription_user = info.context.user
1626
1650
 
1627
1651
  async def event_stream() -> AsyncIterator[SubscriptionEvent]:
1628
1652
  channel_name = cast(str, await channel_layer.new_channel())
@@ -1656,15 +1680,14 @@ class GraphQL:
1656
1680
  if not isinstance(identification, dict):
1657
1681
  continue
1658
1682
  identification_copy = deepcopy(identification)
1659
- try:
1660
- item, _ = await asyncio.to_thread(
1661
- cls._instantiate_manager,
1662
- generalManagerClass,
1663
- identification_copy,
1664
- )
1665
- except SUBSCRIPTION_HYDRATION_ERRORS:
1666
- continue
1667
- if not _can_read_instance_fn(item, info):
1683
+ item = await asyncio.to_thread(
1684
+ cls._instantiate_readable_manager,
1685
+ generalManagerClass,
1686
+ identification_copy,
1687
+ subscription_user,
1688
+ action,
1689
+ )
1690
+ if item is None:
1668
1691
  continue
1669
1692
  clear_capability_context(info)
1670
1693
  yield SubscriptionEvent(item=item, action=action)
@@ -2,7 +2,7 @@
2
2
  Resolver-construction helpers extracted from ``api/graphql.py``.
3
3
 
4
4
  These standalone functions build Graphene resolver callables and apply
5
- query modifiers (filtering, pagination, grouping). They hold no reference to the
5
+ query modifiers (filtering, grouping, sorting, pagination). They hold no reference to the
6
6
  ``GraphQL`` class and can therefore be imported freely inside the package's
7
7
  internal GraphQL implementation without circular imports. This module is not a
8
8
  stable public import path.
@@ -143,6 +143,18 @@ def contains_none_relation_filter(input_val: object) -> bool:
143
143
  # ---------------------------------------------------------------------------
144
144
 
145
145
 
146
+ def apply_sorting(
147
+ queryset: Bucket[GeneralManager] | GroupBucket[GeneralManager],
148
+ sort_by: graphene.Enum | None,
149
+ reverse: bool,
150
+ ) -> Bucket[GeneralManager] | GroupBucket[GeneralManager]:
151
+ """Sort a record or group bucket when a GraphQL sort key is present."""
152
+ if not sort_by:
153
+ return queryset
154
+ sort_by_str = cast(str, getattr(sort_by, "value", sort_by))
155
+ return queryset.sort(sort_by_str, reverse=reverse)
156
+
157
+
146
158
  def apply_query_parameters(
147
159
  queryset: Bucket[GeneralManager],
148
160
  filter_input: GraphQLFilterInput,
@@ -204,11 +216,10 @@ def apply_query_parameters(
204
216
  if normalized_excludes:
205
217
  queryset = queryset.exclude(**normalized_excludes)
206
218
 
207
- if sort_by:
208
- sort_by_str = cast(str, getattr(sort_by, "value", sort_by))
209
- queryset = queryset.sort(sort_by_str, reverse=reverse)
210
-
211
- return queryset
219
+ return cast(
220
+ Bucket[GeneralManager],
221
+ apply_sorting(queryset, sort_by, reverse),
222
+ )
212
223
 
213
224
 
214
225
  def apply_permission_filters(
@@ -553,12 +564,12 @@ def check_read_permission(
553
564
  return True
554
565
 
555
566
 
556
- def can_read_instance(
567
+ def can_read_instance_for_user(
557
568
  instance: GeneralManager,
558
- info: GraphQLResolveInfo,
569
+ user: object,
559
570
  ) -> bool:
560
571
  """
561
- Return whether the request user may see that *instance* exists.
572
+ Return whether *user* may see that *instance* exists.
562
573
 
563
574
  When the manager defines a Permission class, this calls
564
575
  ``Permission(instance, user).can_read_instance()``. Managers without a
@@ -566,10 +577,18 @@ def can_read_instance(
566
577
  """
567
578
  PermissionClass: type[BasePermission] | None = getattr(instance, "Permission", None)
568
579
  if PermissionClass:
569
- return PermissionClass(instance, info.context.user).can_read_instance()
580
+ return PermissionClass(instance, user).can_read_instance()
570
581
  return True
571
582
 
572
583
 
584
+ def can_read_instance(
585
+ instance: GeneralManager,
586
+ info: GraphQLResolveInfo,
587
+ ) -> bool:
588
+ """Return whether the request user may see that *instance* exists."""
589
+ return can_read_instance_for_user(instance, info.context.user)
590
+
591
+
573
592
  # ---------------------------------------------------------------------------
574
593
  # Resolver factories
575
594
  # ---------------------------------------------------------------------------
@@ -649,9 +668,11 @@ def create_list_resolver(
649
668
  capability warmups. The resolver applies permission prefilters and the
650
669
  permission row gate before user-supplied query arguments,
651
670
  then explicit filters, normalized filter-side excludes, explicit excludes,
652
- normalized exclude-side excludes, sorting, optional grouping, and pagination.
653
- It computes ``total_count`` after grouping and before pagination. Non-grouped
654
- page items are materialized to a list; grouped results remain a
671
+ normalized exclude-side excludes, optional grouping, sorting, and pagination.
672
+ Sorting therefore applies to records when grouping is omitted and to grouped
673
+ manager objects when grouping is active. It computes ``total_count`` after
674
+ grouping and sorting and before pagination. Non-grouped page items are
675
+ materialized to a list; grouped results remain a
655
676
  ``GroupBucket`` and are returned as the Python-side ``items`` value. When
656
677
  grouping is active, pagination slices the group bucket before it is returned.
657
678
  Dependency-cache prefetch runs only for materialized item lists when the
@@ -719,15 +740,16 @@ def create_list_resolver(
719
740
  qs,
720
741
  filter,
721
742
  exclude,
722
- sort_by,
743
+ None,
723
744
  reverse,
724
745
  filter_normalizer=bound_filter_normalizer,
725
746
  )
726
747
  qs_grouped = apply_grouping(qs, group_by)
748
+ qs_sorted = apply_sorting(qs_grouped, sort_by, reverse)
727
749
 
728
- total_count = len(qs_grouped)
750
+ total_count = len(qs_sorted)
729
751
 
730
- qs_paginated = apply_pagination(qs_grouped, page, page_size)
752
+ qs_paginated = apply_pagination(qs_sorted, page, page_size)
731
753
  items: object
732
754
  if hasattr(qs_paginated, "groups"):
733
755
  items = qs_paginated
@@ -502,7 +502,11 @@ class GroupBucket(Generic[GeneralManagerType]):
502
502
  new_base_data = new_base_data | manager._data
503
503
  if new_base_data is None:
504
504
  raise EmptyGroupBucketSliceError()
505
- return GroupBucket(self._manager_class, self._group_by_keys, new_base_data)
505
+ new_bucket = GroupBucket(
506
+ self._manager_class, self._group_by_keys, new_base_data
507
+ )
508
+ new_bucket._data = new_data
509
+ return new_bucket
506
510
  raise InvalidGroupBucketIndexError(type(item))
507
511
 
508
512
  def __len__(self) -> int:
File without changes