GeneralManager 0.87.3__tar.gz → 0.87.5__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 (373) hide show
  1. {generalmanager-0.87.3/src/GeneralManager.egg-info → generalmanager-0.87.5}/PKG-INFO +1 -1
  2. {generalmanager-0.87.3 → generalmanager-0.87.5}/pyproject.toml +1 -1
  3. {generalmanager-0.87.3 → generalmanager-0.87.5/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql.py +23 -5
  5. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_resolvers.py +12 -7
  6. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/rule/rule.py +68 -14
  7. {generalmanager-0.87.3 → generalmanager-0.87.5}/LICENSE +0 -0
  8. {generalmanager-0.87.3 → generalmanager-0.87.5}/README.md +0 -0
  9. {generalmanager-0.87.3 → generalmanager-0.87.5}/setup.cfg +0 -0
  10. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  11. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  12. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/GeneralManager.egg-info/requires.txt +0 -0
  13. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/GeneralManager.egg-info/top_level.txt +0 -0
  14. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/__init__.py +0 -0
  15. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/__init__.py +0 -0
  16. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/api.py +0 -0
  17. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/bucket.py +0 -0
  18. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/cache.py +0 -0
  19. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/dataframes.py +0 -0
  20. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/factory.py +0 -0
  21. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/general_manager.py +0 -0
  22. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/interface.py +0 -0
  23. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/manager.py +0 -0
  24. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/measurement.py +0 -0
  25. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/permission.py +0 -0
  26. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/rule.py +0 -0
  27. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/search.py +0 -0
  28. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/_types/utils.py +0 -0
  29. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/__init__.py +0 -0
  30. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_as_of.py +0 -0
  31. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_errors.py +0 -0
  32. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_filter_contract.py +0 -0
  33. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_groups.py +0 -0
  34. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_identifiers.py +0 -0
  35. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_mutations.py +0 -0
  36. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_ordering.py +0 -0
  37. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_output.py +0 -0
  38. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_prefetch.py +0 -0
  39. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_query_permissions.py +0 -0
  40. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_relations.py +0 -0
  41. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_search.py +0 -0
  42. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  43. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_subscriptions.py +0 -0
  44. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_type.py +0 -0
  45. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_units.py +0 -0
  46. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_value_contract.py +0 -0
  47. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_view.py +0 -0
  48. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_warmup.py +0 -0
  49. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  50. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  51. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/mutation.py +0 -0
  52. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/mutation_controls.py +0 -0
  53. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/notification_batching.py +0 -0
  54. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/property.py +0 -0
  55. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/registry.py +0 -0
  56. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/remote_api.py +0 -0
  57. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/remote_invalidation.py +0 -0
  58. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/api/remote_invalidation_client.py +0 -0
  59. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/apps.py +0 -0
  60. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/as_of.py +0 -0
  61. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bootstrap.py +0 -0
  62. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/__init__.py +0 -0
  63. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/_materialized_bucket.py +0 -0
  64. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/_ordering.py +0 -0
  65. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/base_bucket.py +0 -0
  66. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/calculation_bucket.py +0 -0
  67. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/database_bucket.py +0 -0
  68. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/excel_bucket.py +0 -0
  69. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/group_bucket.py +0 -0
  70. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/indexing.py +0 -0
  71. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/projection.py +0 -0
  72. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/bucket/request_bucket.py +0 -0
  73. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/__init__.py +0 -0
  74. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/_dependency_graph.py +0 -0
  75. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/batch_refresh.py +0 -0
  76. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/cache_decorator.py +0 -0
  77. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/cache_tracker.py +0 -0
  78. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/data_change_context.py +0 -0
  79. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/dependency_cache.py +0 -0
  80. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/dependency_index.py +0 -0
  81. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/dependency_matching.py +0 -0
  82. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/dependency_publish.py +0 -0
  83. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/dependency_shards.py +0 -0
  84. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/model_dependency_collector.py +0 -0
  85. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/run_context.py +0 -0
  86. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/run_context_lru.py +0 -0
  87. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/signals.py +0 -0
  88. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/cache/transaction_barrier.py +0 -0
  89. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/__init__.py +0 -0
  90. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/audit.py +0 -0
  91. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/audit_identity.py +0 -0
  92. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/bootstrap.py +0 -0
  93. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/checks.py +0 -0
  94. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/consumer.py +0 -0
  95. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/context.py +0 -0
  96. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/errors.py +0 -0
  97. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/__init__.py +0 -0
  98. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/__main__.py +0 -0
  99. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/baseline.py +0 -0
  100. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/basic_queries.yaml +0 -0
  101. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/demo_readiness.yaml +0 -0
  102. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/edge_cases.yaml +0 -0
  103. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/follow_ups.yaml +0 -0
  104. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/large_schema.yaml +0 -0
  105. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/multi_hop.yaml +0 -0
  106. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/datasets/planned_orchestration.yaml +0 -0
  107. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/diagnostics.py +0 -0
  108. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/execution.py +0 -0
  109. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/fingerprints.py +0 -0
  110. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/fixtures.py +0 -0
  111. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  112. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  113. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/contract.py +0 -0
  114. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  115. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/result_set.py +0 -0
  116. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  117. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/outcomes.py +0 -0
  118. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/readiness.py +0 -0
  119. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/runner.py +0 -0
  120. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/evals/traces.py +0 -0
  121. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/graphql_contract.py +0 -0
  122. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/grounding.py +0 -0
  123. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/models.py +0 -0
  124. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/mutation_inputs.py +0 -0
  125. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/__init__.py +0 -0
  126. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/action_contract.py +0 -0
  127. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/binding_diagnostics.py +0 -0
  128. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/budget.py +0 -0
  129. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/calculation_scope.py +0 -0
  130. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/calculations.py +0 -0
  131. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/catalog.py +0 -0
  132. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/category_binding.py +0 -0
  133. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/choice_context.py +0 -0
  134. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/clarification.py +0 -0
  135. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/config.py +0 -0
  136. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/contract.py +0 -0
  137. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/conversion.py +0 -0
  138. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/cross_query.py +0 -0
  139. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/deferred_calculations.py +0 -0
  140. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/deferred_schema.py +0 -0
  141. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/events.py +0 -0
  142. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/evidence.py +0 -0
  143. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/evidence_selection.py +0 -0
  144. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/group_actions.py +0 -0
  145. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/models.py +0 -0
  146. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/planner.py +0 -0
  147. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/planner_context.py +0 -0
  148. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/provider_calls.py +0 -0
  149. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/resolver.py +0 -0
  150. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/scheduler.py +0 -0
  151. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/schema_projection.py +0 -0
  152. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/selector_clarification.py +0 -0
  153. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/selector_question.py +0 -0
  154. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/synthesis.py +0 -0
  155. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/planned/validation.py +0 -0
  156. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/__init__.py +0 -0
  157. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/_shared.py +0 -0
  158. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/anthropic.py +0 -0
  159. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/base.py +0 -0
  160. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/google.py +0 -0
  161. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/ollama.py +0 -0
  162. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/providers/openai.py +0 -0
  163. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/rate_limits.py +0 -0
  164. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/routing.py +0 -0
  165. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/schema_index.py +0 -0
  166. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/schema_inspection.py +0 -0
  167. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/settings.py +0 -0
  168. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/signals.py +0 -0
  169. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/system_prompt.py +0 -0
  170. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/tool_metadata.py +0 -0
  171. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/tools.py +0 -0
  172. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/turns.py +0 -0
  173. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/chat/views.py +0 -0
  174. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/conf.py +0 -0
  175. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/dataframes/__init__.py +0 -0
  176. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/dataframes/measurements.py +0 -0
  177. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/factory/__init__.py +0 -0
  178. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/factory/auto_factory.py +0 -0
  179. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/factory/factories.py +0 -0
  180. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/factory/factory_methods.py +0 -0
  181. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/__init__.py +0 -0
  182. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/base_interface.py +0 -0
  183. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/__init__.py +0 -0
  184. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/calculation.py +0 -0
  185. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/database.py +0 -0
  186. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/excel.py +0 -0
  187. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  188. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/bundles/request.py +0 -0
  189. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/__init__.py +0 -0
  190. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/base.py +0 -0
  191. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/builtin.py +0 -0
  192. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  193. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  194. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/calculation/input_resolution.py +0 -0
  195. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  196. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/configuration.py +0 -0
  197. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  198. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  199. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/excel/__init__.py +0 -0
  200. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  201. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  202. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  203. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  204. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/factory.py +0 -0
  205. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  206. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  207. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/bulk.py +0 -0
  208. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/create_many.py +0 -0
  209. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  210. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/history_query.py +0 -0
  211. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  212. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  213. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  214. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  215. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  216. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  217. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  218. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/orm_utils/update_state.py +0 -0
  219. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  220. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  221. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  222. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  223. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  224. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/registry.py +0 -0
  225. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  226. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  227. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/excel.py +0 -0
  228. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/excel_store.py +0 -0
  229. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/excel_workbook.py +0 -0
  230. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  231. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  232. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  233. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/__init__.py +0 -0
  234. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/calculation.py +0 -0
  235. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/database.py +0 -0
  236. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/excel.py +0 -0
  237. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  238. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/read_only.py +0 -0
  239. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  240. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/interfaces/request.py +0 -0
  241. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/manifests/__init__.py +0 -0
  242. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  243. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  244. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/manifests/capability_models.py +0 -0
  245. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/orm_interface.py +0 -0
  246. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/requests.py +0 -0
  247. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/unit_contract.py +0 -0
  248. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/utils/__init__.py +0 -0
  249. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  250. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/utils/errors.py +0 -0
  251. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/utils/history.py +0 -0
  252. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/interface/utils/models.py +0 -0
  253. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/logging.py +0 -0
  254. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  255. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/cleanup_upload_intents.py +0 -0
  256. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  257. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  258. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/search_index.py +0 -0
  259. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/search_reconcile.py +0 -0
  260. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  261. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/shell.py +0 -0
  262. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/sync_read_only.py +0 -0
  263. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  264. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  265. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/__init__.py +0 -0
  266. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/bulk_create.py +0 -0
  267. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/general_manager.py +0 -0
  268. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/group_manager.py +0 -0
  269. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/input.py +0 -0
  270. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/manager/meta.py +0 -0
  271. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/measurement/__init__.py +0 -0
  272. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/measurement/measurement.py +0 -0
  273. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/measurement/measurement_field.py +0 -0
  274. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/metrics/__init__.py +0 -0
  275. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/metrics/graphql.py +0 -0
  276. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0001_initial.py +0 -0
  277. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  278. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  279. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  280. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  281. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  282. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  283. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0007_upload_intent.py +0 -0
  284. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0008_upload_finalization_versions.py +0 -0
  285. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0009_upload_cleanup_state.py +0 -0
  286. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0010_chat_pending_confirmation_portable_uniqueness.py +0 -0
  287. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0011_search_index_state_dirty_generation.py +0 -0
  288. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/0012_chat_context_watermarks.py +0 -0
  289. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/migrations/__init__.py +0 -0
  290. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/models.py +0 -0
  291. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/__init__.py +0 -0
  292. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/audit.py +0 -0
  293. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/base_permission.py +0 -0
  294. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/graphql_capabilities.py +0 -0
  295. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/manager_based_permission.py +0 -0
  296. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/mutation_permission.py +0 -0
  297. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/permission_checks.py +0 -0
  298. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/permission_data_manager.py +0 -0
  299. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/permission/utils.py +0 -0
  300. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/public_api_registry.py +0 -0
  301. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/py.typed +0 -0
  302. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/rule/__init__.py +0 -0
  303. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/rule/handler.py +0 -0
  304. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/__init__.py +0 -0
  305. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/async_tasks.py +0 -0
  306. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backend.py +0 -0
  307. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backend_registry.py +0 -0
  308. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backends/__init__.py +0 -0
  309. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backends/dev.py +0 -0
  310. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backends/meilisearch.py +0 -0
  311. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backends/opensearch.py +0 -0
  312. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/backends/typesense.py +0 -0
  313. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/checks.py +0 -0
  314. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/config.py +0 -0
  315. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/identity.py +0 -0
  316. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/indexer.py +0 -0
  317. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/invalidation.py +0 -0
  318. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/m2m_invalidation.py +0 -0
  319. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/models.py +0 -0
  320. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/reconciliation.py +0 -0
  321. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/registry.py +0 -0
  322. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/tasks.py +0 -0
  323. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/search/utils.py +0 -0
  324. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/seeding/__init__.py +0 -0
  325. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/seeding/manager_landscape.py +0 -0
  326. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/__init__.py +0 -0
  327. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/adapters.py +0 -0
  328. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/checks.py +0 -0
  329. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/config.py +0 -0
  330. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/errors.py +0 -0
  331. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/finalization.py +0 -0
  332. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/graphql.py +0 -0
  333. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/graphql_types.py +0 -0
  334. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/metrics.py +0 -0
  335. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/models.py +0 -0
  336. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/public.py +0 -0
  337. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/s3.py +0 -0
  338. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/services.py +0 -0
  339. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/tokens.py +0 -0
  340. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/types.py +0 -0
  341. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/urls.py +0 -0
  342. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/uploads/views.py +0 -0
  343. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/__init__.py +0 -0
  344. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/_args_to_kwargs.py +0 -0
  345. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/_cache_key_encoder.py +0 -0
  346. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/_make_cache_key.py +0 -0
  347. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/_none_to_zero.py +0 -0
  348. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/executable_contract.py +0 -0
  349. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/filter_parser.py +0 -0
  350. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/format_string.py +0 -0
  351. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/json_encoder.py +0 -0
  352. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/path_mapping.py +0 -0
  353. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/public_api.py +0 -0
  354. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/testing.py +0 -0
  355. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/utils/type_checks.py +0 -0
  356. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/__init__.py +0 -0
  357. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/actions.py +0 -0
  358. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/backend_registry.py +0 -0
  359. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/backends/__init__.py +0 -0
  360. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/backends/celery.py +0 -0
  361. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/backends/local.py +0 -0
  362. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/backends/n8n.py +0 -0
  363. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/config.py +0 -0
  364. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/engine.py +0 -0
  365. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/event_registry.py +0 -0
  366. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/events.py +0 -0
  367. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/models.py +0 -0
  368. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/signal_bridge.py +0 -0
  369. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/tasks.py +0 -0
  370. {generalmanager-0.87.3 → generalmanager-0.87.5}/src/general_manager/workflow/telemetry.py +0 -0
  371. {generalmanager-0.87.3 → generalmanager-0.87.5}/tests/test_settings.py +0 -0
  372. {generalmanager-0.87.3 → generalmanager-0.87.5}/tests/test_urls.py +0 -0
  373. {generalmanager-0.87.3 → generalmanager-0.87.5}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.87.3
3
+ Version: 0.87.5
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.87.3"
7
+ version = "0.87.5"
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.87.3
3
+ Version: 0.87.5
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
@@ -952,6 +952,10 @@ class GraphQL:
952
952
  raw_hint,
953
953
  cls.manager_registry,
954
954
  )
955
+ is_generated_relation = (
956
+ getattr(attr_value, "_general_manager_generated_relation", False)
957
+ is True
958
+ )
955
959
  property_page_hint = raw_hint
956
960
  if get_origin(property_page_hint) in {Union, UnionType}:
957
961
  non_none_hints = [
@@ -1068,13 +1072,27 @@ class GraphQL:
1068
1072
  )
1069
1073
  or resolved_type
1070
1074
  )
1071
- graphene_field = cls._map_field_to_graphene_read(
1072
- resolved_type, attr_name
1073
- )
1075
+ if property_relation_manager is not None and not is_generated_relation:
1076
+ graphene_field = graphene.Field(
1077
+ lambda manager=property_relation_manager: cls.graphql_type_registry[
1078
+ manager.__name__
1079
+ ]
1080
+ )
1081
+ else:
1082
+ graphene_field = cls._map_field_to_graphene_read(
1083
+ resolved_type, attr_name
1084
+ )
1074
1085
 
1075
1086
  fields[attr_name] = graphene_field
1076
- fields[f"resolve_{attr_name}"] = cls._create_resolver(
1077
- attr_name, resolved_type
1087
+ # Native property values follow their annotations. Generated reverse
1088
+ # relations retain their paginated resolver despite a manager hint.
1089
+ fields[f"resolve_{attr_name}"] = (
1090
+ _create_normal_resolver_fn(
1091
+ attr_name,
1092
+ authorize_manager_collection=origin in (list, tuple, set),
1093
+ )
1094
+ if property_relation_manager is not None and not is_generated_relation
1095
+ else cls._create_resolver(attr_name, resolved_type)
1078
1096
  )
1079
1097
 
1080
1098
  capability_declarations = get_graphql_capabilities(generalManagerClass)
@@ -1591,14 +1591,19 @@ def create_list_resolver(
1591
1591
  ``base_queryset._manager_class`` when that is a GeneralManager subclass,
1592
1592
  otherwise using ``fallback_manager_class``. That manager class drives
1593
1593
  permission checks, filter normalization, dependency prefetching, and
1594
- capability warmups. For non-calculation managers, the resolver applies
1594
+ capability warmups. For non-calculation, non-request sources, the resolver applies
1595
1595
  permission prefilters and the permission row gate before all user-supplied
1596
- query predicates. For calculation managers, it applies input predicates
1597
- before authorization to limit generated candidates, fences that exact
1598
- candidate subset before permission prefilters, then applies deferred
1599
- computed-property predicates afterward. Permission constraints can only
1600
- narrow the user-selected input domain. Grouping, sorting, and pagination
1601
- remain after those predicate phases. Sorting therefore applies to records
1596
+ query predicates. For calculation managers, it also applies authorization
1597
+ first. When query operands are present, it fences the authorized rows as
1598
+ an exact subset, then applies declared-input predicates followed by
1599
+ computed-property predicates. User input filters cannot reintroduce rows
1600
+ outside the authorized subset. Request-backed sources are different:
1601
+ unless the permission plan denies all rows, user predicates are applied
1602
+ to ``base_queryset`` before that filtered source is authorized. The earlier
1603
+ query-field permission check uses a separate authorized subset and does
1604
+ not constrain ``base_queryset``. Supported remote ordering and pagination
1605
+ controls may be forwarded during request-source preparation. Grouping,
1606
+ local sorting, and local pagination follow source preparation. Sorting applies to records
1602
1607
  when grouping is omitted and to grouped manager objects when grouping is
1603
1608
  active. It computes ``total_count`` after grouping and sorting and before
1604
1609
  pagination. Non-grouped page items are
@@ -6,10 +6,13 @@ import inspect
6
6
  import re
7
7
  import textwrap
8
8
  from collections.abc import Container, Iterable, Mapping, Sequence, Sized
9
+ from contextvars import ContextVar
9
10
  from operator import eq, ge, gt, le, lt, ne
10
11
  from typing import Callable, Dict, Generic, List, Optional, Tuple, TypeVar, cast
11
12
  from decimal import Decimal
12
13
  from types import CodeType
14
+ from threading import RLock
15
+ from weakref import WeakKeyDictionary
13
16
 
14
17
  from django.core.exceptions import NON_FIELD_ERRORS
15
18
  from django.utils.module_loading import import_string
@@ -50,6 +53,17 @@ _REVERSED_COMPARISON_OPS: dict[type[ast.cmpop], type[ast.cmpop]] = {
50
53
  _ERROR_TEMPLATE_PLACEHOLDER = re.compile(r"{([^{}]*)}")
51
54
 
52
55
 
56
+ class _EvaluationToken:
57
+ """Identify one immutable evaluation state within an execution context."""
58
+
59
+
60
+ # Values contain no candidate or rule references, so a context cannot root a
61
+ # dynamic rule/class graph. Sharding limits copy-on-write to one rule bucket.
62
+ _rule_tokens: tuple[
63
+ ContextVar[WeakKeyDictionary[object, _EvaluationToken] | None], ...
64
+ ] = tuple(ContextVar(f"rule_tokens_{index}", default=None) for index in range(64))
65
+
66
+
53
67
  class NonexistentAttributeError(AttributeError):
54
68
  """Raised when a referenced attribute does not exist on the GeneralManager instance."""
55
69
 
@@ -135,9 +149,6 @@ class Rule(Generic[GeneralManagerType]):
135
149
  _func: Callable[[GeneralManagerType], bool]
136
150
  _custom_error_message: Optional[str]
137
151
  _ignore_if_none: bool
138
- _last_result: Optional[bool]
139
- _last_input: Optional[GeneralManagerType]
140
- _last_args: Dict[str, object]
141
152
  _param_names: Tuple[str, ...]
142
153
  _primary_param: Optional[str]
143
154
  _tree: ast.AST
@@ -162,9 +173,10 @@ class Rule(Generic[GeneralManagerType]):
162
173
  self._func = func
163
174
  self._custom_error_message = custom_error_message
164
175
  self._ignore_if_none = ignore_if_none
165
- self._last_result = None
166
- self._last_input = None
167
- self._last_args = {}
176
+ self._evaluation_states: WeakKeyDictionary[
177
+ _EvaluationToken, tuple[Optional[bool], object, Dict[str, object]]
178
+ ] = WeakKeyDictionary()
179
+ self._evaluation_lock = RLock()
168
180
 
169
181
  parameters = inspect.signature(func).parameters
170
182
  self._param_names = tuple(parameters.keys())
@@ -231,6 +243,49 @@ class Rule(Generic[GeneralManagerType]):
231
243
  },
232
244
  )
233
245
 
246
+ def _state(self) -> tuple[Optional[bool], object, Dict[str, object]]:
247
+ """Read the last state for this rule in the current context."""
248
+ token_context = _rule_tokens[hash(self) % len(_rule_tokens)]
249
+ tokens = token_context.get()
250
+ token = tokens.get(self) if tokens is not None else None
251
+ if token is None:
252
+ return (None, None, {})
253
+ with self._evaluation_lock:
254
+ return self._evaluation_states.get(token, (None, None, {}))
255
+
256
+ def _set_state(
257
+ self, state: tuple[Optional[bool], object, Dict[str, object]]
258
+ ) -> None:
259
+ """Publish a new state without modifying inherited task contexts."""
260
+ token_context = _rule_tokens[hash(self) % len(_rule_tokens)]
261
+ previous = token_context.get()
262
+ tokens = previous.copy() if previous is not None else WeakKeyDictionary()
263
+ token = _EvaluationToken()
264
+ with self._evaluation_lock:
265
+ self._evaluation_states[token] = state
266
+ tokens[self] = token
267
+ token_context.set(tokens)
268
+
269
+ @property
270
+ def _last_result(self) -> Optional[bool]:
271
+ """Return the result in the current execution context."""
272
+ return self._state()[0]
273
+
274
+ @_last_result.setter
275
+ def _last_result(self, value: Optional[bool]) -> None:
276
+ _, candidate, args = self._state()
277
+ self._set_state((value, candidate, args))
278
+
279
+ @property
280
+ def _last_input(self) -> Optional[GeneralManagerType]:
281
+ """Return the input in the current execution context."""
282
+ return cast(Optional[GeneralManagerType], self._state()[1])
283
+
284
+ @property
285
+ def _last_args(self) -> Dict[str, object]:
286
+ """Return the arguments in the current execution context."""
287
+ return self._state()[2]
288
+
234
289
  @property
235
290
  def func(self) -> Callable[[GeneralManagerType], bool]:
236
291
  return self._func
@@ -454,11 +509,9 @@ class Rule(Generic[GeneralManagerType]):
454
509
  Returns:
455
510
  `True` if the predicate evaluates to true, `False` if it evaluates to false, `None` if evaluation was skipped because a referenced value was `None` and `ignore_if_none` is enabled.
456
511
  """
457
- self._last_result = None
458
- self._last_input = x
459
- self._last_args = {}
460
- if self._primary_param is not None:
461
- self._last_args[self._primary_param] = x
512
+ self._set_state(
513
+ (None, x, {self._primary_param: x} if self._primary_param else {})
514
+ )
462
515
 
463
516
  logger.debug(
464
517
  "evaluating rule",
@@ -483,8 +536,9 @@ class Rule(Generic[GeneralManagerType]):
483
536
  )
484
537
  return None
485
538
 
486
- self._last_result = self._func(x)
487
- if self._last_result:
539
+ result = self._func(x)
540
+ self._last_result = result
541
+ if result:
488
542
  logger.debug(
489
543
  "rule evaluation passed",
490
544
  context={
@@ -501,7 +555,7 @@ class Rule(Generic[GeneralManagerType]):
501
555
  "variables": self._variables,
502
556
  },
503
557
  )
504
- return self._last_result
558
+ return result
505
559
 
506
560
  def _parse_custom_error_paths(self) -> dict[str, tuple[str, ...]]:
507
561
  """Parse and validate placeholder syntax in the custom error message."""
File without changes