GeneralManager 0.89.0__tar.gz → 0.89.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 (376) hide show
  1. {generalmanager-0.89.0/src/GeneralManager.egg-info → generalmanager-0.89.2}/PKG-INFO +1 -1
  2. {generalmanager-0.89.0 → generalmanager-0.89.2}/pyproject.toml +1 -1
  3. {generalmanager-0.89.0 → generalmanager-0.89.2/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_query_permissions.py +5 -14
  5. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_resolvers.py +24 -0
  6. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/authorization.py +30 -4
  7. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backends/meilisearch.py +46 -1
  8. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/config.py +9 -1
  9. {generalmanager-0.89.0 → generalmanager-0.89.2}/LICENSE +0 -0
  10. {generalmanager-0.89.0 → generalmanager-0.89.2}/README.md +0 -0
  11. {generalmanager-0.89.0 → generalmanager-0.89.2}/setup.cfg +0 -0
  12. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  13. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  14. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/GeneralManager.egg-info/requires.txt +0 -0
  15. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/GeneralManager.egg-info/top_level.txt +0 -0
  16. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/__init__.py +0 -0
  17. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/__init__.py +0 -0
  18. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/api.py +0 -0
  19. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/bucket.py +0 -0
  20. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/cache.py +0 -0
  21. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/dataframes.py +0 -0
  22. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/factory.py +0 -0
  23. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/general_manager.py +0 -0
  24. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/interface.py +0 -0
  25. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/manager.py +0 -0
  26. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/measurement.py +0 -0
  27. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/permission.py +0 -0
  28. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/rule.py +0 -0
  29. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/search.py +0 -0
  30. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/_types/utils.py +0 -0
  31. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/__init__.py +0 -0
  32. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql.py +0 -0
  33. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_as_of.py +0 -0
  34. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_errors.py +0 -0
  35. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_filter_contract.py +0 -0
  36. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_groups.py +0 -0
  37. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_identifiers.py +0 -0
  38. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_mutations.py +0 -0
  39. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_ordering.py +0 -0
  40. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_output.py +0 -0
  41. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_prefetch.py +0 -0
  42. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_relations.py +0 -0
  43. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_search.py +0 -0
  44. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  45. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_subscriptions.py +0 -0
  46. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_type.py +0 -0
  47. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_units.py +0 -0
  48. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_value_contract.py +0 -0
  49. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_view.py +0 -0
  50. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_warmup.py +0 -0
  51. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  52. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  53. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/mutation.py +0 -0
  54. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/mutation_controls.py +0 -0
  55. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/notification_batching.py +0 -0
  56. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/property.py +0 -0
  57. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/registry.py +0 -0
  58. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/remote_api.py +0 -0
  59. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/remote_invalidation.py +0 -0
  60. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/api/remote_invalidation_client.py +0 -0
  61. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/apps.py +0 -0
  62. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/as_of.py +0 -0
  63. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bootstrap.py +0 -0
  64. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/__init__.py +0 -0
  65. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/_materialized_bucket.py +0 -0
  66. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/_ordering.py +0 -0
  67. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/base_bucket.py +0 -0
  68. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/calculation_bucket.py +0 -0
  69. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/database_bucket.py +0 -0
  70. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/excel_bucket.py +0 -0
  71. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/group_bucket.py +0 -0
  72. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/indexing.py +0 -0
  73. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/projection.py +0 -0
  74. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/bucket/request_bucket.py +0 -0
  75. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/__init__.py +0 -0
  76. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/_dependency_graph.py +0 -0
  77. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/batch_refresh.py +0 -0
  78. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/cache_decorator.py +0 -0
  79. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/cache_tracker.py +0 -0
  80. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/data_change_context.py +0 -0
  81. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/dependency_cache.py +0 -0
  82. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/dependency_index.py +0 -0
  83. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/dependency_matching.py +0 -0
  84. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/dependency_publish.py +0 -0
  85. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/dependency_shards.py +0 -0
  86. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/model_dependency_collector.py +0 -0
  87. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/run_context.py +0 -0
  88. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/run_context_lru.py +0 -0
  89. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/signals.py +0 -0
  90. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/cache/transaction_barrier.py +0 -0
  91. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/__init__.py +0 -0
  92. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/audit.py +0 -0
  93. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/audit_identity.py +0 -0
  94. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/bootstrap.py +0 -0
  95. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/checks.py +0 -0
  96. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/consumer.py +0 -0
  97. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/context.py +0 -0
  98. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/errors.py +0 -0
  99. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/__init__.py +0 -0
  100. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/__main__.py +0 -0
  101. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/baseline.py +0 -0
  102. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
  103. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
  104. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
  105. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
  106. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
  107. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
  108. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/datasets/planned_orchestration.yaml +0 -0
  109. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/diagnostics.py +0 -0
  110. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/execution.py +0 -0
  111. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/fingerprints.py +0 -0
  112. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/fixtures.py +0 -0
  113. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  114. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  115. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/contract.py +0 -0
  116. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  117. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/result_set.py +0 -0
  118. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  119. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/outcomes.py +0 -0
  120. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/readiness.py +0 -0
  121. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/runner.py +0 -0
  122. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/evals/traces.py +0 -0
  123. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/graphql_contract.py +0 -0
  124. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/grounding.py +0 -0
  125. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/models.py +0 -0
  126. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/mutation_inputs.py +0 -0
  127. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/__init__.py +0 -0
  128. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/action_contract.py +0 -0
  129. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/binding_diagnostics.py +0 -0
  130. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/budget.py +0 -0
  131. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/calculation_scope.py +0 -0
  132. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/calculations.py +0 -0
  133. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/catalog.py +0 -0
  134. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/category_binding.py +0 -0
  135. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/choice_context.py +0 -0
  136. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/clarification.py +0 -0
  137. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/config.py +0 -0
  138. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/contract.py +0 -0
  139. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/conversion.py +0 -0
  140. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/cross_query.py +0 -0
  141. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/deferred_calculations.py +0 -0
  142. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/deferred_schema.py +0 -0
  143. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/events.py +0 -0
  144. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/evidence.py +0 -0
  145. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/evidence_selection.py +0 -0
  146. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/group_actions.py +0 -0
  147. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/models.py +0 -0
  148. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/planner.py +0 -0
  149. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/planner_context.py +0 -0
  150. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/provider_calls.py +0 -0
  151. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/resolver.py +0 -0
  152. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/scheduler.py +0 -0
  153. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/schema_projection.py +0 -0
  154. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/selector_clarification.py +0 -0
  155. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/selector_question.py +0 -0
  156. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/synthesis.py +0 -0
  157. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/planned/validation.py +0 -0
  158. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/__init__.py +0 -0
  159. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/_shared.py +0 -0
  160. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/anthropic.py +0 -0
  161. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/base.py +0 -0
  162. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/google.py +0 -0
  163. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/ollama.py +0 -0
  164. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/providers/openai.py +0 -0
  165. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/rate_limits.py +0 -0
  166. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/routing.py +0 -0
  167. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/schema_index.py +0 -0
  168. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/schema_inspection.py +0 -0
  169. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/settings.py +0 -0
  170. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/signals.py +0 -0
  171. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/system_prompt.py +0 -0
  172. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/tool_metadata.py +0 -0
  173. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/tools.py +0 -0
  174. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/turns.py +0 -0
  175. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/chat/views.py +0 -0
  176. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/conf.py +0 -0
  177. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/dataframes/__init__.py +0 -0
  178. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/dataframes/measurements.py +0 -0
  179. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/factory/__init__.py +0 -0
  180. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/factory/auto_factory.py +0 -0
  181. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/factory/factories.py +0 -0
  182. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/factory/factory_methods.py +0 -0
  183. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/__init__.py +0 -0
  184. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/base_interface.py +0 -0
  185. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/__init__.py +0 -0
  186. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/calculation.py +0 -0
  187. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/database.py +0 -0
  188. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/excel.py +0 -0
  189. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  190. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/bundles/request.py +0 -0
  191. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/__init__.py +0 -0
  192. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/base.py +0 -0
  193. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/builtin.py +0 -0
  194. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  195. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  196. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/calculation/input_resolution.py +0 -0
  197. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  198. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/configuration.py +0 -0
  199. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  200. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  201. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/excel/__init__.py +0 -0
  202. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  203. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  204. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  205. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  206. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/factory.py +0 -0
  207. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  208. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  209. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/bulk.py +0 -0
  210. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/create_many.py +0 -0
  211. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  212. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/history_query.py +0 -0
  213. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  214. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  215. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  216. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  217. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/collection_probes.py +0 -0
  218. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  219. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  220. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  221. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/orm_utils/update_state.py +0 -0
  222. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  223. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  224. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  225. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  226. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  227. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/registry.py +0 -0
  228. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  229. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  230. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/excel.py +0 -0
  231. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/excel_store.py +0 -0
  232. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/excel_workbook.py +0 -0
  233. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  234. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  235. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  236. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/__init__.py +0 -0
  237. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/calculation.py +0 -0
  238. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/database.py +0 -0
  239. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/excel.py +0 -0
  240. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  241. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/read_only.py +0 -0
  242. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  243. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/interfaces/request.py +0 -0
  244. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/manifests/__init__.py +0 -0
  245. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  246. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  247. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/manifests/capability_models.py +0 -0
  248. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/orm_interface.py +0 -0
  249. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/requests.py +0 -0
  250. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/unit_contract.py +0 -0
  251. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/utils/__init__.py +0 -0
  252. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  253. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/utils/errors.py +0 -0
  254. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/utils/history.py +0 -0
  255. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/interface/utils/models.py +0 -0
  256. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/logging.py +0 -0
  257. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  258. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
  259. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  260. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  261. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/search_index.py +0 -0
  262. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/search_reconcile.py +0 -0
  263. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  264. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/shell.py +0 -0
  265. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/sync_read_only.py +0 -0
  266. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  267. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  268. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/__init__.py +0 -0
  269. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/bulk_create.py +0 -0
  270. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/general_manager.py +0 -0
  271. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/group_manager.py +0 -0
  272. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/input.py +0 -0
  273. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/manager/meta.py +0 -0
  274. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/measurement/__init__.py +0 -0
  275. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/measurement/measurement.py +0 -0
  276. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/measurement/measurement_field.py +0 -0
  277. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/metrics/__init__.py +0 -0
  278. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/metrics/graphql.py +0 -0
  279. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0001_initial.py +0 -0
  280. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  281. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  282. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  283. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  284. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  285. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  286. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0007_upload_intent.py +0 -0
  287. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
  288. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
  289. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
  290. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
  291. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/0012_chat_context_watermarks.py +0 -0
  292. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/migrations/__init__.py +0 -0
  293. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/models.py +0 -0
  294. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/__init__.py +0 -0
  295. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/audit.py +0 -0
  296. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/base_permission.py +0 -0
  297. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/graphql_capabilities.py +0 -0
  298. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/manager_based_permission.py +0 -0
  299. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/mutation_permission.py +0 -0
  300. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/permission_checks.py +0 -0
  301. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/permission_data_manager.py +0 -0
  302. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/permission/utils.py +0 -0
  303. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/public_api_registry.py +0 -0
  304. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/py.typed +0 -0
  305. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/rule/__init__.py +0 -0
  306. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/rule/handler.py +0 -0
  307. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/rule/rule.py +0 -0
  308. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/__init__.py +0 -0
  309. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/async_tasks.py +0 -0
  310. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backend.py +0 -0
  311. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backend_registry.py +0 -0
  312. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backends/__init__.py +0 -0
  313. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backends/dev.py +0 -0
  314. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backends/opensearch.py +0 -0
  315. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/backends/typesense.py +0 -0
  316. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/checks.py +0 -0
  317. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/identity.py +0 -0
  318. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/indexer.py +0 -0
  319. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/invalidation.py +0 -0
  320. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/m2m_invalidation.py +0 -0
  321. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/models.py +0 -0
  322. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/projection.py +0 -0
  323. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/reconciliation.py +0 -0
  324. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/registry.py +0 -0
  325. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/tasks.py +0 -0
  326. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/search/utils.py +0 -0
  327. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/seeding/__init__.py +0 -0
  328. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/seeding/manager_landscape.py +0 -0
  329. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/__init__.py +0 -0
  330. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/adapters.py +0 -0
  331. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/checks.py +0 -0
  332. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/config.py +0 -0
  333. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/errors.py +0 -0
  334. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/finalization.py +0 -0
  335. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/graphql.py +0 -0
  336. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/graphql_types.py +0 -0
  337. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/metrics.py +0 -0
  338. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/models.py +0 -0
  339. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/public.py +0 -0
  340. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/s3.py +0 -0
  341. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/services.py +0 -0
  342. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/tokens.py +0 -0
  343. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/types.py +0 -0
  344. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/urls.py +0 -0
  345. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/uploads/views.py +0 -0
  346. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/__init__.py +0 -0
  347. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/_args_to_kwargs.py +0 -0
  348. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/_cache_key_encoder.py +0 -0
  349. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/_make_cache_key.py +0 -0
  350. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/_none_to_zero.py +0 -0
  351. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/executable_contract.py +0 -0
  352. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/filter_parser.py +0 -0
  353. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/format_string.py +0 -0
  354. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/json_encoder.py +0 -0
  355. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/path_mapping.py +0 -0
  356. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/public_api.py +0 -0
  357. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/testing.py +0 -0
  358. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/utils/type_checks.py +0 -0
  359. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/__init__.py +0 -0
  360. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/actions.py +0 -0
  361. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/backend_registry.py +0 -0
  362. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/backends/__init__.py +0 -0
  363. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/backends/celery.py +0 -0
  364. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/backends/local.py +0 -0
  365. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/backends/n8n.py +0 -0
  366. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/config.py +0 -0
  367. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/engine.py +0 -0
  368. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/event_registry.py +0 -0
  369. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/events.py +0 -0
  370. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/models.py +0 -0
  371. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/signal_bridge.py +0 -0
  372. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/tasks.py +0 -0
  373. {generalmanager-0.89.0 → generalmanager-0.89.2}/src/general_manager/workflow/telemetry.py +0 -0
  374. {generalmanager-0.89.0 → generalmanager-0.89.2}/tests/test_settings.py +0 -0
  375. {generalmanager-0.89.0 → generalmanager-0.89.2}/tests/test_urls.py +0 -0
  376. {generalmanager-0.89.0 → generalmanager-0.89.2}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.89.0
3
+ Version: 0.89.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.89.0"
7
+ version = "0.89.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.89.0
3
+ Version: 0.89.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
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
  from collections.abc import Iterable
6
6
  from dataclasses import dataclass, field
7
7
  from inspect import getattr_static
8
- from typing import TYPE_CHECKING, cast
8
+ from typing import TYPE_CHECKING
9
9
 
10
10
  from graphql import GraphQLError
11
11
 
@@ -412,6 +412,7 @@ def authorize_query_fields(
412
412
  from general_manager.api.graphql_resolvers import (
413
413
  can_read_instance,
414
414
  check_read_permission,
415
+ relation_id_alias_target_fields,
415
416
  )
416
417
 
417
418
  normalized = set()
@@ -518,20 +519,10 @@ def authorize_query_fields(
518
519
  raise GraphQLError(_RELATION_ERROR)
519
520
  if not can_read_instance(value, info):
520
521
  raise QueryRelationPermissionError()
521
- from django.db import models
522
- from general_manager.interface.orm_interface import OrmInterfaceBase
523
-
524
- orm_interface = cast(
525
- type[OrmInterfaceBase[models.Model]], instance.Interface
526
- )
527
- foreign_key = orm_interface._model._meta.get_field(relation)
528
- target_field = getattr(foreign_key, "target_field", None)
529
- if not isinstance(target_field, models.Field):
522
+ target_names = relation_id_alias_target_fields(instance.Interface, relation)
523
+ if not target_names:
530
524
  raise GraphQLError(_RELATION_ERROR)
531
- target_names = {target_field.name}
532
- if target_field.primary_key:
533
- target_names.add("id")
534
- for target_name in sorted(target_names):
525
+ for target_name in target_names:
535
526
  check(value, (target_name,))
536
527
  if not rest and not (native_node and native_node.children):
537
528
  return
@@ -86,6 +86,7 @@ from general_manager.utils.executable_contract import (
86
86
 
87
87
  if TYPE_CHECKING:
88
88
  from graphene import ResolveInfo as GraphQLResolveInfo
89
+ from general_manager.interface.base_interface import InterfaceBase
89
90
  from general_manager.api.graphql_errors import (
90
91
  GraphQLResolveInfo as ReadPermissionInfo,
91
92
  )
@@ -1355,6 +1356,29 @@ def relation_id_alias_field(
1355
1356
  return relation_field
1356
1357
 
1357
1358
 
1359
+ def relation_id_alias_target_fields(
1360
+ interface: type[InterfaceBase], relation_field: str
1361
+ ) -> tuple[str, ...]:
1362
+ """Return the target field names protected by a native ORM alias."""
1363
+ from django.core.exceptions import FieldDoesNotExist
1364
+ from django.db import models
1365
+ from general_manager.interface.orm_interface import OrmInterfaceBase
1366
+
1367
+ if not safe_issubclass(interface, OrmInterfaceBase):
1368
+ return ()
1369
+ orm_interface = cast(type[OrmInterfaceBase[models.Model]], interface)
1370
+ try:
1371
+ foreign_key = orm_interface._model._meta.get_field(relation_field)
1372
+ except FieldDoesNotExist:
1373
+ return ()
1374
+ target_field = getattr(foreign_key, "target_field", None)
1375
+ if not isinstance(target_field, models.Field):
1376
+ return ()
1377
+ if target_field.primary_key and target_field.name != "id":
1378
+ return tuple(sorted((target_field.name, "id")))
1379
+ return (target_field.name,)
1380
+
1381
+
1358
1382
  def _unwrap_optional_annotation(annotation: object) -> object:
1359
1383
  origin = get_origin(annotation)
1360
1384
  if origin is Annotated:
@@ -35,7 +35,11 @@ def analyze_search_projection(
35
35
  ) -> SearchProjectionAuthorization:
36
36
  """Inspect definitions once, without evaluating a permission or property."""
37
37
  from general_manager.api.graphql_relations import resolve_general_manager_type
38
- from general_manager.api.graphql_resolvers import relation_id_alias_field
38
+ from general_manager.api.graphql_resolvers import (
39
+ relation_id_alias_field,
40
+ relation_id_alias_target_fields,
41
+ )
42
+ from general_manager.api.graphql_value_contract import _manager_source
39
43
  from general_manager.permission.manager_based_permission import (
40
44
  additional_local_read_permission,
41
45
  )
@@ -87,9 +91,31 @@ def analyze_search_projection(
87
91
  if alias is not None:
88
92
  inspect_permission(owner, alias, frozenset())
89
93
  has_relations = True
90
- # The alias target leaf is checked at runtime; retain the
91
- # thorough path until its complete field policy is known.
92
- reasons.add("relation identity alias")
94
+ target = resolve_general_manager_type(
95
+ owner.Interface.get_attribute_types()[alias].get("type"), registry
96
+ )
97
+ target_fields = relation_id_alias_target_fields(owner.Interface, alias)
98
+ if (
99
+ target is None
100
+ or not target_fields
101
+ or not _manager_source(owner, alias)
102
+ ):
103
+ reasons.add("unknown relation identity target")
104
+ continue
105
+ for target_field in target_fields:
106
+ known, _ = source_field_annotation(target, target_field)
107
+ if (
108
+ not known
109
+ or relation_id_alias_field(
110
+ target, target_field, native_source=True
111
+ )
112
+ is not None
113
+ ):
114
+ reasons.add("unknown relation identity target")
115
+ else:
116
+ inspect_permission(target, target_field, frozenset())
117
+ # Retain the exact alias path for the runtime target-row check.
118
+ continue
93
119
  _, annotation = source_field_annotation(owner, field)
94
120
  target = resolve_general_manager_type(annotation, registry)
95
121
  if target is not None:
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import hashlib
6
+ import re
6
7
  import time
7
8
  from collections.abc import Callable, Iterable
8
9
  from dataclasses import dataclass
@@ -241,6 +242,16 @@ class MeilisearchBackend:
241
242
  """
242
243
  index = self._get_or_create_index(index_name)
243
244
  searchable_fields = self._string_sequence_setting(settings, "searchable_fields")
245
+ if searchable_fields is not None and "*" not in searchable_fields:
246
+ # Keep original field priority and expose only each searchable
247
+ # field's own aliases, never filter-/sort-only numeric values.
248
+ searchable_fields = [
249
+ *searchable_fields,
250
+ *(
251
+ "gm_numeric_tokens." + _numeric_field_key(name)
252
+ for name in searchable_fields
253
+ ),
254
+ ]
244
255
  filterable_fields = self._string_sequence_setting(settings, "filterable_fields")
245
256
  contracts = settings.get("identity_fields", {})
246
257
  if not isinstance(contracts, Mapping):
@@ -807,10 +818,13 @@ class MeilisearchBackend:
807
818
  - `data`: the original data mapping,
808
819
  - additional top-level keys copied from `document.data` except
809
820
  reserved keys (`id`, `gm_document_id`, `type`,
810
- `identification`, `data`, `gm_identity`).
821
+ `identification`, `data`, `gm_identity`, `gm_numeric_tokens`).
811
822
  - `gm_identity`: bounded equality tokens for declared present
812
823
  identity fields. UUID/set JSON conversion affects only the
813
824
  payload copy, never the source document.
825
+ - `gm_numeric_tokens`: complete ASCII digit runs from each
826
+ serialized string field, plus their zero-stripped forms.
827
+ Source values, filtering, and sorting remain unchanged.
814
828
  """
815
829
  reserved_keys = {
816
830
  "id",
@@ -819,6 +833,7 @@ class MeilisearchBackend:
819
833
  "identification",
820
834
  "data",
821
835
  "gm_identity",
836
+ "gm_numeric_tokens",
822
837
  }
823
838
  extra_data = {
824
839
  key: value
@@ -846,6 +861,12 @@ class MeilisearchBackend:
846
861
  "data": document.data,
847
862
  **extra_data,
848
863
  "gm_identity": identities,
864
+ "gm_numeric_tokens": {
865
+ _numeric_field_key(name): list(
866
+ dict.fromkeys(_numeric_tokens(value))
867
+ )
868
+ for name, value in extra_data.items()
869
+ },
849
870
  }
850
871
  ),
851
872
  )
@@ -1207,6 +1228,30 @@ def _is_meilisearch_already_exists(error: Exception) -> bool:
1207
1228
  return status == 409 or "already_exists" in code
1208
1229
 
1209
1230
 
1231
+ def _numeric_field_key(name: str) -> str:
1232
+ """Keep literal source names distinct without provider path punctuation."""
1233
+ return "f" + name.encode("utf-8").hex()
1234
+
1235
+
1236
+ def _numeric_tokens(value: object) -> Iterable[str]:
1237
+ """Yield at most two aliases per digit run, never arbitrary substrings.
1238
+
1239
+ Inspect only existing string values, including collection/mapping values.
1240
+ Do not read managers, mapping keys, or object representations. String
1241
+ stripping handles arbitrarily long numbers without integer conversion.
1242
+ """
1243
+ if isinstance(value, str):
1244
+ for digits in re.findall(r"[0-9]+", value):
1245
+ yield digits
1246
+ yield digits.lstrip("0") or "0"
1247
+ elif isinstance(value, Mapping):
1248
+ for item in value.values():
1249
+ yield from _numeric_tokens(item)
1250
+ elif isinstance(value, (list, tuple, set)):
1251
+ for item in value:
1252
+ yield from _numeric_tokens(item)
1253
+
1254
+
1210
1255
  def _json_search_value(value: object) -> object:
1211
1256
  """Copy native document values into JSON-compatible provider payloads."""
1212
1257
  if isinstance(value, UUID):
@@ -11,7 +11,15 @@ from general_manager.manager.general_manager import GeneralManager
11
11
 
12
12
 
13
13
  _RESERVED_DOCUMENT_FIELD_NAMES = frozenset(
14
- {"id", "gm_document_id", "type", "identification", "data", "gm_identity"}
14
+ {
15
+ "id",
16
+ "gm_document_id",
17
+ "type",
18
+ "identification",
19
+ "data",
20
+ "gm_identity",
21
+ "gm_numeric_tokens",
22
+ }
15
23
  )
16
24
 
17
25
 
File without changes