GeneralManager 0.60.4__tar.gz → 0.60.6__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 (258) hide show
  1. {generalmanager-0.60.4/src/GeneralManager.egg-info → generalmanager-0.60.6}/PKG-INFO +1 -1
  2. {generalmanager-0.60.4 → generalmanager-0.60.6}/pyproject.toml +1 -1
  3. {generalmanager-0.60.4 → generalmanager-0.60.6/src/GeneralManager.egg-info}/PKG-INFO +1 -1
  4. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_errors.py +3 -3
  5. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_resolvers.py +1 -1
  6. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/system_prompt.py +15 -10
  7. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement.py +35 -14
  8. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/measurement_field.py +4 -4
  9. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/path_mapping.py +225 -73
  10. {generalmanager-0.60.4 → generalmanager-0.60.6}/LICENSE +0 -0
  11. {generalmanager-0.60.4 → generalmanager-0.60.6}/README.md +0 -0
  12. {generalmanager-0.60.4 → generalmanager-0.60.6}/setup.cfg +0 -0
  13. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/SOURCES.txt +0 -0
  14. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/dependency_links.txt +0 -0
  15. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/requires.txt +0 -0
  16. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/GeneralManager.egg-info/top_level.txt +0 -0
  17. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/__init__.py +0 -0
  18. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/__init__.py +0 -0
  19. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/api.py +0 -0
  20. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/bucket.py +0 -0
  21. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/cache.py +0 -0
  22. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/dataframes.py +0 -0
  23. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/factory.py +0 -0
  24. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/general_manager.py +0 -0
  25. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/interface.py +0 -0
  26. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/manager.py +0 -0
  27. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/measurement.py +0 -0
  28. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/permission.py +0 -0
  29. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/rule.py +0 -0
  30. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/search.py +0 -0
  31. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/_types/utils.py +0 -0
  32. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/__init__.py +0 -0
  33. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql.py +0 -0
  34. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_mutations.py +0 -0
  35. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_prefetch.py +0 -0
  36. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_search.py +0 -0
  37. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_subscription_consumer.py +0 -0
  38. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_subscriptions.py +0 -0
  39. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_view.py +0 -0
  40. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup.py +0 -0
  41. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup_registry.py +0 -0
  42. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/graphql_warmup_tasks.py +0 -0
  43. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/mutation.py +0 -0
  44. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/property.py +0 -0
  45. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/registry.py +0 -0
  46. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_api.py +0 -0
  47. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_invalidation.py +0 -0
  48. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/api/remote_invalidation_client.py +0 -0
  49. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/apps.py +0 -0
  50. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bootstrap.py +0 -0
  51. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/__init__.py +0 -0
  52. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/base_bucket.py +0 -0
  53. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/calculation_bucket.py +0 -0
  54. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/database_bucket.py +0 -0
  55. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/group_bucket.py +0 -0
  56. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/indexing.py +0 -0
  57. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/bucket/request_bucket.py +0 -0
  58. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/__init__.py +0 -0
  59. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/cache_decorator.py +0 -0
  60. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/cache_tracker.py +0 -0
  61. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_cache.py +0 -0
  62. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_index.py +0 -0
  63. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_matching.py +0 -0
  64. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_publish.py +0 -0
  65. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/dependency_shards.py +0 -0
  66. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/model_dependency_collector.py +0 -0
  67. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/run_context.py +0 -0
  68. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/cache/signals.py +0 -0
  69. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/__init__.py +0 -0
  70. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/audit.py +0 -0
  71. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/bootstrap.py +0 -0
  72. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/checks.py +0 -0
  73. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/consumer.py +0 -0
  74. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/errors.py +0 -0
  75. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/__init__.py +0 -0
  76. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/__main__.py +0 -0
  77. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/baseline.py +0 -0
  78. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/diagnostics.py +0 -0
  79. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/fingerprints.py +0 -0
  80. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/fixtures.py +0 -0
  81. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/__init__.py +0 -0
  82. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/answer_quality.py +0 -0
  83. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/contract.py +0 -0
  84. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/result_accuracy.py +0 -0
  85. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/judges/tool_sequence.py +0 -0
  86. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/readiness.py +0 -0
  87. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/runner.py +0 -0
  88. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/evals/traces.py +0 -0
  89. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/grounding.py +0 -0
  90. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/models.py +0 -0
  91. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/__init__.py +0 -0
  92. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/_shared.py +0 -0
  93. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/anthropic.py +0 -0
  94. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/base.py +0 -0
  95. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/google.py +0 -0
  96. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/ollama.py +0 -0
  97. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/providers/openai.py +0 -0
  98. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/rate_limits.py +0 -0
  99. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/routing.py +0 -0
  100. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/schema_index.py +0 -0
  101. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/settings.py +0 -0
  102. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/signals.py +0 -0
  103. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/tool_metadata.py +0 -0
  104. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/tools.py +0 -0
  105. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/chat/views.py +0 -0
  106. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/conf.py +0 -0
  107. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/dataframes/__init__.py +0 -0
  108. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/dataframes/measurements.py +0 -0
  109. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/__init__.py +0 -0
  110. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/auto_factory.py +0 -0
  111. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/factories.py +0 -0
  112. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/factory/factory_methods.py +0 -0
  113. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/__init__.py +0 -0
  114. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/base_interface.py +0 -0
  115. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/__init__.py +0 -0
  116. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/calculation.py +0 -0
  117. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/database.py +0 -0
  118. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/remote_manager.py +0 -0
  119. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/bundles/request.py +0 -0
  120. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/__init__.py +0 -0
  121. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/base.py +0 -0
  122. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/builtin.py +0 -0
  123. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/__init__.py +0 -0
  124. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/_compat.py +0 -0
  125. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/calculation/lifecycle.py +0 -0
  126. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/configuration.py +0 -0
  127. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/core/observability.py +0 -0
  128. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/core/utils.py +0 -0
  129. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/exceptions.py +0 -0
  130. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/__init__.py +0 -0
  131. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/_compat.py +0 -0
  132. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/existing_model/resolution.py +0 -0
  133. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/factory.py +0 -0
  134. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/__init__.py +0 -0
  135. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/_compat.py +0 -0
  136. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/history.py +0 -0
  137. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/lifecycle.py +0 -0
  138. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/mutations.py +0 -0
  139. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm/support.py +0 -0
  140. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/__init__.py +0 -0
  141. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/django_manager_utils.py +0 -0
  142. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/field_descriptors.py +0 -0
  143. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/orm_utils/payload_normalizer.py +0 -0
  144. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/__init__.py +0 -0
  145. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/_compat.py +0 -0
  146. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/_types.py +0 -0
  147. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/lifecycle.py +0 -0
  148. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/read_only/management.py +0 -0
  149. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/registry.py +0 -0
  150. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/remote_manager.py +0 -0
  151. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/capabilities/request/__init__.py +0 -0
  152. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/__init__.py +0 -0
  153. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/startup_hooks.py +0 -0
  154. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/infrastructure/system_checks.py +0 -0
  155. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/__init__.py +0 -0
  156. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/calculation.py +0 -0
  157. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/database.py +0 -0
  158. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/existing_model.py +0 -0
  159. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/read_only.py +0 -0
  160. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/remote_manager.py +0 -0
  161. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/interfaces/request.py +0 -0
  162. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/__init__.py +0 -0
  163. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_builder.py +0 -0
  164. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_manifest.py +0 -0
  165. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/manifests/capability_models.py +0 -0
  166. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/orm_interface.py +0 -0
  167. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/requests.py +0 -0
  168. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/__init__.py +0 -0
  169. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/database_interface_protocols.py +0 -0
  170. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/errors.py +0 -0
  171. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/interface/utils/models.py +0 -0
  172. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/logging.py +0 -0
  173. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/chat_cleanup.py +0 -0
  174. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/graphql_warmup.py +0 -0
  175. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/graphql_warmup_refresh_due.py +0 -0
  176. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/search_index.py +0 -0
  177. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/search_reconcile.py +0 -0
  178. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/seed_manager_landscape.py +0 -0
  179. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/shell.py +0 -0
  180. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/workflow_drain_outbox.py +0 -0
  181. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/management/commands/workflow_replay_dead_letters.py +0 -0
  182. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/__init__.py +0 -0
  183. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/general_manager.py +0 -0
  184. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/group_manager.py +0 -0
  185. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/input.py +0 -0
  186. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/manager/meta.py +0 -0
  187. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/measurement/__init__.py +0 -0
  188. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/metrics/__init__.py +0 -0
  189. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/metrics/graphql.py +0 -0
  190. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0001_initial.py +0 -0
  191. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0002_workflow_outbox_scaling_indexes.py +0 -0
  192. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0003_workflow_execution_correlation_constraint.py +0 -0
  193. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0004_chat_persistence_models.py +0 -0
  194. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0004_search_index_state.py +0 -0
  195. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0005_merge_chat_search.py +0 -0
  196. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/0006_chat_pending_confirmation_scoped_ids.py +0 -0
  197. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/migrations/__init__.py +0 -0
  198. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/models.py +0 -0
  199. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/__init__.py +0 -0
  200. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/audit.py +0 -0
  201. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/base_permission.py +0 -0
  202. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/graphql_capabilities.py +0 -0
  203. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/manager_based_permission.py +0 -0
  204. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/mutation_permission.py +0 -0
  205. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/permission_checks.py +0 -0
  206. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/permission_data_manager.py +0 -0
  207. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/permission/utils.py +0 -0
  208. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/public_api_registry.py +0 -0
  209. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/py.typed +0 -0
  210. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/__init__.py +0 -0
  211. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/handler.py +0 -0
  212. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/rule/rule.py +0 -0
  213. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/__init__.py +0 -0
  214. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/async_tasks.py +0 -0
  215. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backend.py +0 -0
  216. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backend_registry.py +0 -0
  217. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/__init__.py +0 -0
  218. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/dev.py +0 -0
  219. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/meilisearch.py +0 -0
  220. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/opensearch.py +0 -0
  221. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/backends/typesense.py +0 -0
  222. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/config.py +0 -0
  223. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/indexer.py +0 -0
  224. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/models.py +0 -0
  225. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/reconciliation.py +0 -0
  226. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/registry.py +0 -0
  227. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/tasks.py +0 -0
  228. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/search/utils.py +0 -0
  229. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/seeding/__init__.py +0 -0
  230. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/seeding/manager_landscape.py +0 -0
  231. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/__init__.py +0 -0
  232. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/args_to_kwargs.py +0 -0
  233. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/filter_parser.py +0 -0
  234. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/format_string.py +0 -0
  235. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/json_encoder.py +0 -0
  236. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/make_cache_key.py +0 -0
  237. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/none_to_zero.py +0 -0
  238. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/public_api.py +0 -0
  239. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/testing.py +0 -0
  240. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/utils/type_checks.py +0 -0
  241. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/__init__.py +0 -0
  242. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/actions.py +0 -0
  243. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backend_registry.py +0 -0
  244. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/__init__.py +0 -0
  245. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/celery.py +0 -0
  246. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/local.py +0 -0
  247. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/backends/n8n.py +0 -0
  248. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/config.py +0 -0
  249. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/engine.py +0 -0
  250. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/event_registry.py +0 -0
  251. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/events.py +0 -0
  252. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/models.py +0 -0
  253. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/signal_bridge.py +0 -0
  254. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/tasks.py +0 -0
  255. {generalmanager-0.60.4 → generalmanager-0.60.6}/src/general_manager/workflow/telemetry.py +0 -0
  256. {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/test_settings.py +0 -0
  257. {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/test_urls.py +0 -0
  258. {generalmanager-0.60.4 → generalmanager-0.60.6}/tests/testing_asgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: GeneralManager
3
- Version: 0.60.4
3
+ Version: 0.60.6
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.60.4"
7
+ version = "0.60.6"
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.60.4
3
+ Version: 0.60.6
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
@@ -239,10 +239,10 @@ HANDLED_MANAGER_ERRORS: tuple[type[Exception], ...] = (
239
239
 
240
240
 
241
241
  class MeasurementType(ObjectType):
242
- """GraphQL object wrapper exposing measurement magnitude and Pint unit text.
242
+ """GraphQL object wrapper exposing measurement magnitude and unit text.
243
243
 
244
244
  ``value`` is emitted through Graphene ``Float`` and may lose Decimal
245
- precision. ``unit`` is the measurement's canonical Pint unit string.
245
+ precision. ``unit`` is the measurement's GeneralManager public unit string.
246
246
  """
247
247
 
248
248
  value = Float()
@@ -259,7 +259,7 @@ class MeasurementScalar(Scalar):
259
259
  are outside the documented user API.
260
260
 
261
261
  ``serialize()`` accepts only ``Measurement`` instances and returns their
262
- canonical string representation; it raises ``InvalidMeasurementValueError``
262
+ public string representation; it raises ``InvalidMeasurementValueError``
263
263
  for every other value. ``parse_value()`` is the public variable-input parser,
264
264
  accepts a string, and returns a ``Measurement``. Type checkers should reject
265
265
  non-string direct calls. Runtime non-string calls are unsupported; their
@@ -588,7 +588,7 @@ def create_measurement_resolver(field_name: str) -> Resolver:
588
588
  result = result.to(target_unit)
589
589
  return {
590
590
  "value": result.quantity.magnitude,
591
- "unit": str(result.quantity.units),
591
+ "unit": result.unit,
592
592
  }
593
593
 
594
594
  return resolver
@@ -255,16 +255,21 @@ def _relationship_lines(
255
255
  index: dict[str, dict[str, object]], manager_names: list[str]
256
256
  ) -> list[str]:
257
257
  relationship_lines: list[str] = []
258
- if not PathMap.mapping and manager_names:
259
- PathMap(manager_names[0])
260
- for (from_manager, to_manager), tracer in sorted(PathMap.mapping.items()):
261
- if from_manager not in index or to_manager not in index:
262
- continue
263
- path = getattr(tracer, "path", None)
264
- if path:
265
- relationship_lines.append(
266
- f"{from_manager} -> {to_manager}: {' -> '.join(path)}"
267
- )
258
+ exposed_names = [name for name in manager_names if name in index]
259
+ if len(exposed_names) > PROMPT_MANAGER_DETAIL_LIMIT:
260
+ # Bound lazy path resolution to avoid reintroducing CPU-bound O(n^2) work.
261
+ return relationship_lines
262
+ for from_manager in exposed_names:
263
+ path_map = PathMap(from_manager)
264
+ for to_manager in exposed_names:
265
+ if from_manager == to_manager:
266
+ continue
267
+ tracer = path_map.to(to_manager)
268
+ path = getattr(tracer, "path", None) if tracer is not None else None
269
+ if path:
270
+ relationship_lines.append(
271
+ f"{from_manager} -> {to_manager}: {' -> '.join(path)}"
272
+ )
268
273
  return relationship_lines
269
274
 
270
275
 
@@ -19,12 +19,19 @@ ComparisonOperation: TypeAlias = Callable[[QuantityMagnitude, QuantityMagnitude]
19
19
  # Set precision for Decimal
20
20
  getcontext().prec = 28
21
21
  _PERCENT_SCALE = Decimal("100")
22
+ _COUNT_PUBLIC_UNIT = "count"
23
+ _PIECE_COUNT_CANONICAL_UNIT = "piece"
22
24
 
23
25
  # Create a new UnitRegistry
24
26
  ureg: pint.UnitRegistry[QuantityMagnitude] = pint.UnitRegistry(
25
27
  auto_reduce_dimensions=True
26
28
  )
27
29
 
30
+ # Pint defines "count" as dimensionless. GeneralManager treats discrete item
31
+ # counts as their own unit family so scalar arithmetic cannot silently erase it.
32
+ ureg.define(f"{_PIECE_COUNT_CANONICAL_UNIT} = [piece_count] = {_COUNT_PUBLIC_UNIT}")
33
+ _PIECE_COUNT_UNIT = ureg.parse_units(_COUNT_PUBLIC_UNIT)
34
+
28
35
  # Define currency units
29
36
  currency_units = ["EUR", "USD", "GBP", "JPY", "CHF", "AUD", "CAD"]
30
37
  for currency in currency_units:
@@ -43,7 +50,10 @@ def _parse_unit(unit: str) -> pint.Unit:
43
50
  def _canonical_unit_string(unit: str) -> str:
44
51
  """Return Pint's canonical unit string for one unit expression."""
45
52
 
46
- return str(_parse_unit(unit))
53
+ parsed_unit = _parse_unit(unit)
54
+ if parsed_unit == _PIECE_COUNT_UNIT:
55
+ return _COUNT_PUBLIC_UNIT
56
+ return str(parsed_unit)
47
57
 
48
58
 
49
59
  def _format_decimal(value: Decimal) -> Decimal:
@@ -496,8 +506,11 @@ class Measurement:
496
506
  comparison, string parsing, pickling, and explicit currency conversion.
497
507
  Currency conversions never use implicit rates; callers must pass an
498
508
  ``exchange_rate`` when converting between different configured currencies.
499
- Pint canonicalizes unit names, so ``unit`` and string/repr output may use
500
- canonical names such as ``"kilogram"`` rather than the caller's spelling.
509
+ Pint canonicalizes most unit names, so ``unit`` and string/repr output may
510
+ use canonical names such as ``"kilogram"`` rather than the caller's
511
+ spelling. GeneralManager keeps the public ``"count"`` spelling for discrete
512
+ piece-count measurements even though Pint represents that base unit
513
+ internally as ``"piece"``.
501
514
  Exact Pint exception subclasses/messages, canonical compound-unit ordering,
502
515
  aliases, and offset-unit internals are delegated to the installed Pint
503
516
  version and are not a stable GeneralManager API contract.
@@ -515,8 +528,10 @@ class Measurement:
515
528
  Converts the provided numeric-like value to a Decimal through
516
529
  ``Decimal(str(value))`` and constructs the internal quantity using the
517
530
  given Pint unit expression. ``unit`` may be ``"dimensionless"`` or an
518
- empty string for dimensionless measurements. Invalid units are reported
519
- by Pint and are not wrapped by this constructor. String values are
531
+ empty string for dimensionless measurements. Discrete item quantities
532
+ should use ``"count"``, which belongs to its own unit family rather than
533
+ Pint's plain dimensionless family. Invalid units are reported by Pint and
534
+ are not wrapped by this constructor. String values are
520
535
  numeric magnitudes only; use ``from_string()`` for combined
521
536
  ``"<value> <unit>"`` text. ``bool`` is rejected even though it is an
522
537
  ``int`` subclass in Python.
@@ -531,7 +546,8 @@ class Measurement:
531
546
  value (Decimal | float | int | str): Numeric value to use as the measurement magnitude; strings and numeric types are coerced to Decimal.
532
547
  unit (str): Unit label registered in the module's unit registry,
533
548
  including configured currency codes, physical unit names,
534
- compound Pint expressions such as ``"kg / m^2"``, or
549
+ ``"count"`` for discrete item quantities, compound Pint
550
+ expressions such as ``"kg / m^2"``, or
535
551
  dimensionless units.
536
552
 
537
553
  Raises:
@@ -585,7 +601,9 @@ class Measurement:
585
601
 
586
602
  self.__quantity = quantity
587
603
  self.__magnitude = _decimal_from_magnitude(quantity.magnitude)
588
- self.__unit = unit if unit is not None else str(quantity.units)
604
+ self.__unit = (
605
+ unit if unit is not None else _canonical_unit_string(str(quantity.units))
606
+ )
589
607
  self.__quantity_exposed = False
590
608
 
591
609
  def __current_quantity(self) -> MeasurementQuantity:
@@ -605,7 +623,7 @@ class Measurement:
605
623
 
606
624
  def __current_unit(self) -> str:
607
625
  if self.__quantity_exposed:
608
- return str(self.__current_quantity().units)
626
+ return _canonical_unit_string(str(self.__current_quantity().units))
609
627
  return self.__unit
610
628
 
611
629
  def __getstate__(self) -> dict[str, str]:
@@ -671,12 +689,15 @@ class Measurement:
671
689
  """
672
690
  Retrieve the unit label associated with the measurement.
673
691
 
674
- The returned value is Pint's canonical unit string, not necessarily the
675
- spelling passed to the constructor. Empty-string and ``"dimensionless"``
676
- inputs both expose ``"dimensionless"``.
692
+ The returned value is GeneralManager's public unit string, usually
693
+ Pint's canonical unit string and not necessarily the spelling passed to
694
+ the constructor. Empty-string and ``"dimensionless"`` inputs both expose
695
+ ``"dimensionless"``. Discrete piece-count inputs such as ``"count"``
696
+ and ``"piece"`` expose ``"count"`` while Pint's internal quantity uses
697
+ ``"piece"``. The Pint ``"pc"`` alias remains parsec, not piece count.
677
698
 
678
699
  Returns:
679
- str: Canonical unit string as provided by the unit registry.
700
+ str: Public unit string used by GeneralManager.
680
701
  """
681
702
  return self.__current_unit()
682
703
 
@@ -1118,8 +1139,8 @@ class Measurement:
1118
1139
  Return a detailed representation suitable for debugging.
1119
1140
 
1120
1141
  The magnitude is read through the ``magnitude`` property, and the unit
1121
- is Pint's canonical unit string. The GeneralManager-owned shape is
1122
- ``Measurement(<magnitude>, '<canonical unit>')``; exact magnitude and
1142
+ is GeneralManager's public unit string. The GeneralManager-owned shape is
1143
+ ``Measurement(<magnitude>, '<unit>')``; exact magnitude and
1123
1144
  compound-unit spelling follow the documented Decimal/Pint boundaries.
1124
1145
 
1125
1146
  Returns:
@@ -73,10 +73,10 @@ class MeasurementField(MeasurementFieldBase):
73
73
  """
74
74
  Create a MeasurementField configured with a canonical base unit and paired backing columns.
75
75
 
76
- Initializes the field's canonical base unit and derived dimensionality, records the editable flag, constructs a Decimal-backed value column (`<name>_value`) and Char-backed unit column (`<name>_unit`), and forwards remaining arguments to the base Field constructor. Stored magnitudes are converted to `base_unit` and rounded to the backing `DecimalField(max_digits=30, decimal_places=10)` precision; the unit column stores Pint's canonical spelling for the assigned unit, such as `gram` for `g`.
76
+ Initializes the field's canonical base unit and derived dimensionality, records the editable flag, constructs a Decimal-backed value column (`<name>_value`) and Char-backed unit column (`<name>_unit`), and forwards remaining arguments to the base Field constructor. Stored magnitudes are converted to `base_unit` and rounded to the backing `DecimalField(max_digits=30, decimal_places=10)` precision; the unit column stores the Measurement's public unit spelling, such as `gram` for `g` and `count` for discrete item counts.
77
77
 
78
78
  Parameters:
79
- base_unit (str): Multiplicative Pint unit used to normalize and store measurements. Currency units must be one of `currency_units`; each configured currency is treated as its own Pint dimension.
79
+ base_unit (str): Multiplicative Pint unit used to normalize and store measurements. Currency units must be one of `currency_units`; each configured currency is treated as its own Pint dimension. Use `count` for discrete item quantities.
80
80
  *args (object): Positional arguments forwarded to the base Field implementation.
81
81
  null (bool): If True, the backing columns may be NULL in the database.
82
82
  blank (bool): If True, forms may accept an empty value for this field.
@@ -536,7 +536,7 @@ class MeasurementField(MeasurementFieldBase):
536
536
  Resolve the field value on an instance, reconstructing the measurement when possible.
537
537
 
538
538
  The descriptor reads `<name>_value` as a base-unit magnitude and
539
- `<name>_unit` as Pint's canonical spelling for the unit originally assigned. It converts the
539
+ `<name>_unit` as the Measurement public spelling for the unit originally assigned. It converts the
540
540
  base magnitude back to that stored unit for display. If stored data has
541
541
  drifted and the unit is no longer parseable or dimensionally compatible with the base
542
542
  unit, reconstruction falls back to a Measurement in `base_unit` rather
@@ -655,7 +655,7 @@ class MeasurementField(MeasurementFieldBase):
655
655
  ) from e
656
656
 
657
657
  setattr(instance, self.value_attr, self._normalize_base_magnitude(base_mag))
658
- setattr(instance, self.unit_attr, str(value.quantity.units))
658
+ setattr(instance, self.unit_attr, str(value.unit))
659
659
 
660
660
  def validate(
661
661
  self,