django-cfg 1.4.46__py3-none-any.whl → 1.5.181__py3-none-any.whl

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 (1516) hide show
  1. django_cfg/__init__.py +14 -1
  2. django_cfg/apps/api/commands/serializers.py +152 -0
  3. django_cfg/apps/api/commands/views.py +32 -0
  4. django_cfg/apps/api/dashboard/TRANSACTION_FIX.md +73 -0
  5. django_cfg/apps/api/dashboard/__init__.py +8 -0
  6. django_cfg/apps/api/dashboard/apps.py +23 -0
  7. django_cfg/apps/api/dashboard/serializers/__init__.py +73 -0
  8. django_cfg/apps/api/dashboard/serializers/activity.py +38 -0
  9. django_cfg/apps/api/dashboard/serializers/apizones.py +35 -0
  10. django_cfg/apps/api/dashboard/serializers/base.py +16 -0
  11. django_cfg/apps/api/dashboard/serializers/charts.py +44 -0
  12. django_cfg/apps/api/dashboard/serializers/commands.py +85 -0
  13. django_cfg/apps/api/dashboard/serializers/config.py +317 -0
  14. django_cfg/apps/api/dashboard/serializers/metrics.py +66 -0
  15. django_cfg/apps/api/dashboard/serializers/overview.py +59 -0
  16. django_cfg/apps/api/dashboard/serializers/statistics.py +65 -0
  17. django_cfg/apps/api/dashboard/serializers/system.py +58 -0
  18. django_cfg/apps/api/dashboard/services/__init__.py +24 -0
  19. django_cfg/apps/api/dashboard/services/apizones_service.py +137 -0
  20. django_cfg/apps/api/dashboard/services/charts_service.py +267 -0
  21. django_cfg/apps/api/dashboard/services/commands_security.py +228 -0
  22. django_cfg/apps/api/dashboard/services/commands_service.py +361 -0
  23. django_cfg/apps/api/dashboard/services/config_service.py +334 -0
  24. django_cfg/apps/api/dashboard/services/metrics_service.py +262 -0
  25. django_cfg/apps/api/dashboard/services/overview_service.py +205 -0
  26. django_cfg/apps/api/dashboard/services/statistics_service.py +404 -0
  27. django_cfg/apps/api/dashboard/services/system_health_service.py +328 -0
  28. django_cfg/apps/api/dashboard/urls.py +48 -0
  29. django_cfg/apps/api/dashboard/views/__init__.py +27 -0
  30. django_cfg/apps/api/dashboard/views/activity_views.py +81 -0
  31. django_cfg/apps/api/dashboard/views/apizones_views.py +72 -0
  32. django_cfg/apps/api/dashboard/views/charts_views.py +158 -0
  33. django_cfg/apps/api/dashboard/views/commands_views.py +158 -0
  34. django_cfg/apps/api/dashboard/views/config_views.py +69 -0
  35. django_cfg/apps/api/dashboard/views/metrics_views.py +190 -0
  36. django_cfg/apps/api/dashboard/views/overview_views.py +131 -0
  37. django_cfg/apps/api/dashboard/views/statistics_views.py +105 -0
  38. django_cfg/apps/api/dashboard/views/system_views.py +72 -0
  39. django_cfg/apps/api/endpoints/README.md +144 -0
  40. django_cfg/apps/api/endpoints/endpoints_status/__init__.py +13 -0
  41. django_cfg/apps/api/endpoints/endpoints_status/drf_views.py +58 -0
  42. django_cfg/apps/api/endpoints/urls.py +13 -6
  43. django_cfg/apps/api/endpoints/urls_list/__init__.py +10 -0
  44. django_cfg/apps/api/endpoints/urls_list/serializers.py +74 -0
  45. django_cfg/apps/api/endpoints/urls_list/views.py +279 -0
  46. django_cfg/apps/api/health/drf_views.py +36 -0
  47. django_cfg/apps/api/health/serializers.py +7 -0
  48. django_cfg/apps/integrations/centrifugo/__init__.py +74 -0
  49. django_cfg/apps/integrations/centrifugo/_cfg/README_DEPENDENCIES.md +260 -0
  50. django_cfg/apps/integrations/centrifugo/_cfg/__init__.py +25 -0
  51. django_cfg/apps/integrations/centrifugo/_cfg/check_deps.py +34 -0
  52. django_cfg/apps/integrations/centrifugo/_cfg/dependencies.py +309 -0
  53. django_cfg/apps/integrations/centrifugo/admin/__init__.py +13 -0
  54. django_cfg/apps/integrations/centrifugo/admin/centrifugo_log.py +211 -0
  55. django_cfg/apps/integrations/centrifugo/admin/config.py +82 -0
  56. django_cfg/apps/integrations/centrifugo/apps.py +109 -0
  57. django_cfg/apps/integrations/centrifugo/codegen/IMPLEMENTATION_SUMMARY.md +475 -0
  58. django_cfg/apps/integrations/centrifugo/codegen/README.md +242 -0
  59. django_cfg/apps/integrations/centrifugo/codegen/USAGE.md +616 -0
  60. django_cfg/apps/integrations/centrifugo/codegen/__init__.py +24 -0
  61. django_cfg/apps/integrations/centrifugo/codegen/discovery.py +467 -0
  62. django_cfg/apps/integrations/centrifugo/codegen/generators/__init__.py +12 -0
  63. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/__init__.py +5 -0
  64. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/generator.py +217 -0
  65. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/CLAUDE.md.j2 +106 -0
  66. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/README.md.j2 +182 -0
  67. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/client.go.j2 +64 -0
  68. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/go.mod.j2 +10 -0
  69. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2 +300 -0
  70. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2.old +267 -0
  71. django_cfg/apps/integrations/centrifugo/codegen/generators/go_thin/templates/types.go.j2 +16 -0
  72. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/__init__.py +7 -0
  73. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/generator.py +278 -0
  74. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/CLAUDE.md.j2 +100 -0
  75. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/README.md.j2 +128 -0
  76. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/__init__.py.j2 +22 -0
  77. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/client.py.j2 +73 -0
  78. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/models.py.j2 +19 -0
  79. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/requirements.txt.j2 +8 -0
  80. django_cfg/apps/integrations/centrifugo/codegen/generators/python_thin/templates/rpc_client.py.j2 +193 -0
  81. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/__init__.py +5 -0
  82. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/generator.py +415 -0
  83. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/AnyCodable.swift.j2 +219 -0
  84. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/CLAUDE.md.j2 +364 -0
  85. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/CentrifugoClient.swift.j2 +223 -0
  86. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Package.swift.j2 +30 -0
  87. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/README.md.j2 +141 -0
  88. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/RPCClient.swift.j2 +465 -0
  89. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Subscriptions.swift.j2 +59 -0
  90. django_cfg/apps/integrations/centrifugo/codegen/generators/swift_thin/templates/Types.swift.j2 +73 -0
  91. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/__init__.py +5 -0
  92. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/generator.py +422 -0
  93. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/CLAUDE.md.j2 +123 -0
  94. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/README.md.j2 +38 -0
  95. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/client.ts.j2 +106 -0
  96. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/index.ts.j2 +23 -0
  97. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/package.json.j2 +13 -0
  98. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/rpc-client.ts.j2 +276 -0
  99. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/subscriptions.ts.j2 +43 -0
  100. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/tsconfig.json.j2 +14 -0
  101. django_cfg/apps/integrations/centrifugo/codegen/generators/typescript_thin/templates/types.ts.j2 +19 -0
  102. django_cfg/apps/integrations/centrifugo/codegen/utils/__init__.py +90 -0
  103. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/__init__.py +75 -0
  104. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/base.py +128 -0
  105. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/go.py +157 -0
  106. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/python.py +125 -0
  107. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/swift.py +423 -0
  108. django_cfg/apps/integrations/centrifugo/codegen/utils/converters/typescript.py +286 -0
  109. django_cfg/apps/integrations/centrifugo/codegen/utils/naming.py +287 -0
  110. django_cfg/apps/integrations/centrifugo/codegen/utils/prefix.py +167 -0
  111. django_cfg/apps/integrations/centrifugo/decorators.py +205 -0
  112. django_cfg/apps/integrations/centrifugo/handlers/__init__.py +11 -0
  113. django_cfg/apps/integrations/centrifugo/handlers/system.py +68 -0
  114. django_cfg/apps/integrations/centrifugo/management/__init__.py +1 -0
  115. django_cfg/apps/integrations/centrifugo/management/commands/README.md +131 -0
  116. django_cfg/apps/integrations/centrifugo/management/commands/__init__.py +1 -0
  117. django_cfg/apps/integrations/centrifugo/management/commands/centrifugo_publish.py +147 -0
  118. django_cfg/apps/integrations/centrifugo/management/commands/generate_centrifugo_clients.py +361 -0
  119. django_cfg/apps/integrations/centrifugo/managers/__init__.py +12 -0
  120. django_cfg/apps/integrations/centrifugo/managers/centrifugo_log.py +264 -0
  121. django_cfg/apps/integrations/centrifugo/migrations/0001_initial.py +164 -0
  122. django_cfg/apps/integrations/centrifugo/migrations/__init__.py +3 -0
  123. django_cfg/apps/integrations/centrifugo/models/__init__.py +11 -0
  124. django_cfg/apps/integrations/centrifugo/models/centrifugo_log.py +210 -0
  125. django_cfg/apps/integrations/centrifugo/registry.py +316 -0
  126. django_cfg/apps/integrations/centrifugo/router.py +125 -0
  127. django_cfg/apps/integrations/centrifugo/serializers/__init__.py +48 -0
  128. django_cfg/apps/integrations/centrifugo/serializers/admin_api.py +264 -0
  129. django_cfg/apps/integrations/centrifugo/serializers/channels.py +27 -0
  130. django_cfg/apps/integrations/centrifugo/serializers/health.py +20 -0
  131. django_cfg/apps/integrations/centrifugo/serializers/publishes.py +61 -0
  132. django_cfg/apps/integrations/centrifugo/serializers/stats.py +21 -0
  133. django_cfg/apps/integrations/centrifugo/services/__init__.py +18 -0
  134. django_cfg/apps/integrations/centrifugo/services/channel_validator.py +153 -0
  135. django_cfg/apps/integrations/centrifugo/services/client/__init__.py +34 -0
  136. django_cfg/apps/integrations/centrifugo/services/client/client.py +590 -0
  137. django_cfg/apps/integrations/centrifugo/services/client/config.py +236 -0
  138. django_cfg/apps/integrations/centrifugo/services/client/direct_client.py +296 -0
  139. django_cfg/apps/integrations/centrifugo/services/client/direct_client.py.backup +286 -0
  140. django_cfg/apps/integrations/centrifugo/services/client/exceptions.py +212 -0
  141. django_cfg/apps/integrations/centrifugo/services/config_helper.py +63 -0
  142. django_cfg/apps/integrations/centrifugo/services/dashboard_notifier.py +157 -0
  143. django_cfg/apps/integrations/centrifugo/services/logging.py +753 -0
  144. django_cfg/apps/integrations/centrifugo/services/publisher.py +379 -0
  145. django_cfg/apps/integrations/centrifugo/services/token_generator.py +122 -0
  146. django_cfg/apps/integrations/centrifugo/urls.py +44 -0
  147. django_cfg/apps/integrations/centrifugo/views/__init__.py +15 -0
  148. django_cfg/apps/integrations/centrifugo/views/admin_api.py +374 -0
  149. django_cfg/apps/integrations/centrifugo/views/monitoring.py +385 -0
  150. django_cfg/apps/integrations/centrifugo/views/rpc_proxy.py +199 -0
  151. django_cfg/apps/integrations/centrifugo/views/testing_api.py +406 -0
  152. django_cfg/apps/integrations/centrifugo/views/token_api.py +101 -0
  153. django_cfg/apps/integrations/centrifugo/views/wrapper.py +269 -0
  154. django_cfg/apps/integrations/grpc/__init__.py +9 -0
  155. django_cfg/apps/integrations/grpc/_cfg/README_DEPENDENCIES.md +307 -0
  156. django_cfg/apps/integrations/grpc/_cfg/__init__.py +25 -0
  157. django_cfg/apps/integrations/grpc/_cfg/check_deps.py +34 -0
  158. django_cfg/apps/integrations/grpc/_cfg/dependencies.py +484 -0
  159. django_cfg/apps/integrations/grpc/admin/__init__.py +38 -0
  160. django_cfg/apps/integrations/grpc/admin/config.py +496 -0
  161. django_cfg/apps/integrations/grpc/admin/connection_state.py +257 -0
  162. django_cfg/apps/integrations/grpc/admin/grpc_api_key.py +204 -0
  163. django_cfg/apps/integrations/grpc/admin/grpc_request_log.py +171 -0
  164. django_cfg/apps/integrations/grpc/admin/grpc_server_status.py +211 -0
  165. django_cfg/apps/integrations/grpc/apps.py +108 -0
  166. django_cfg/apps/integrations/grpc/auth/__init__.py +17 -0
  167. django_cfg/apps/integrations/grpc/auth/api_key_auth.py +366 -0
  168. django_cfg/apps/integrations/grpc/configs/__init__.py +90 -0
  169. django_cfg/apps/integrations/grpc/configs/channels.py +324 -0
  170. django_cfg/apps/integrations/grpc/configs/commands.py +126 -0
  171. django_cfg/apps/integrations/grpc/configs/constants.py +403 -0
  172. django_cfg/apps/integrations/grpc/configs/tls.py +297 -0
  173. django_cfg/apps/integrations/grpc/management/__init__.py +1 -0
  174. django_cfg/apps/integrations/grpc/management/commands/compile_proto.py +105 -0
  175. django_cfg/apps/integrations/grpc/management/commands/generate_protos.py +185 -0
  176. django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +844 -0
  177. django_cfg/apps/integrations/grpc/management/commands/test_grpc_integration.py +75 -0
  178. django_cfg/apps/integrations/grpc/management/proto/__init__.py +3 -0
  179. django_cfg/apps/integrations/grpc/management/proto/compiler.py +194 -0
  180. django_cfg/apps/integrations/grpc/managers/__init__.py +26 -0
  181. django_cfg/apps/integrations/grpc/managers/connection_state/__init__.py +22 -0
  182. django_cfg/apps/integrations/grpc/managers/connection_state/event.py +225 -0
  183. django_cfg/apps/integrations/grpc/managers/connection_state/metric.py +235 -0
  184. django_cfg/apps/integrations/grpc/managers/connection_state/state.py +456 -0
  185. django_cfg/apps/integrations/grpc/managers/grpc_api_key.py +186 -0
  186. django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +357 -0
  187. django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +393 -0
  188. django_cfg/apps/integrations/grpc/migrations/0001_initial.py +69 -0
  189. django_cfg/apps/integrations/grpc/migrations/0002_rename_django_cfg__service_4c4a8e_idx_django_cfg__service_584308_idx_and_more.py +38 -0
  190. django_cfg/apps/integrations/grpc/migrations/0003_grpcserverstatus.py +119 -0
  191. django_cfg/apps/integrations/grpc/migrations/0004_grpcserverstatus_registered_services.py +22 -0
  192. django_cfg/apps/integrations/grpc/migrations/0005_grpcapikey.py +143 -0
  193. django_cfg/apps/integrations/grpc/migrations/0006_grpcrequestlog_api_key_and_more.py +34 -0
  194. django_cfg/apps/integrations/grpc/migrations/0007_simplify_grpc_models.py +330 -0
  195. django_cfg/apps/integrations/grpc/migrations/0008_grpcrequestlog_error_details.py +18 -0
  196. django_cfg/apps/integrations/grpc/migrations/0009_grpcagentconnectionstate_grpcagentconnectionmetric_and_more.py +349 -0
  197. django_cfg/apps/integrations/grpc/migrations/0010_grpcapikey_hash_security.py +102 -0
  198. django_cfg/apps/integrations/grpc/migrations/0011_alter_grpcapikey_key.py +27 -0
  199. django_cfg/apps/integrations/grpc/models/__init__.py +23 -0
  200. django_cfg/apps/integrations/grpc/models/connection_state/__init__.py +18 -0
  201. django_cfg/apps/integrations/grpc/models/connection_state/event.py +123 -0
  202. django_cfg/apps/integrations/grpc/models/connection_state/metric.py +200 -0
  203. django_cfg/apps/integrations/grpc/models/connection_state/state.py +275 -0
  204. django_cfg/apps/integrations/grpc/models/grpc_api_key.py +346 -0
  205. django_cfg/apps/integrations/grpc/models/grpc_request_log.py +94 -0
  206. django_cfg/apps/integrations/grpc/models/grpc_server_status.py +136 -0
  207. django_cfg/apps/integrations/grpc/resilience/__init__.py +99 -0
  208. django_cfg/apps/integrations/grpc/resilience/circuit.py +495 -0
  209. django_cfg/apps/integrations/grpc/resilience/config.py +117 -0
  210. django_cfg/apps/integrations/grpc/resilience/logging.py +325 -0
  211. django_cfg/apps/integrations/grpc/resilience/retry.py +273 -0
  212. django_cfg/apps/integrations/grpc/serializers/__init__.py +42 -0
  213. django_cfg/apps/integrations/grpc/serializers/api_keys.py +54 -0
  214. django_cfg/apps/integrations/grpc/serializers/config.py +120 -0
  215. django_cfg/apps/integrations/grpc/serializers/health.py +18 -0
  216. django_cfg/apps/integrations/grpc/serializers/requests.py +24 -0
  217. django_cfg/apps/integrations/grpc/serializers/service_registry.py +271 -0
  218. django_cfg/apps/integrations/grpc/serializers/stats.py +56 -0
  219. django_cfg/apps/integrations/grpc/services/__init__.py +121 -0
  220. django_cfg/apps/integrations/grpc/services/base.py +375 -0
  221. django_cfg/apps/integrations/grpc/services/centrifugo/__init__.py +29 -0
  222. django_cfg/apps/integrations/grpc/services/centrifugo/bridge.py +506 -0
  223. django_cfg/apps/integrations/grpc/services/centrifugo/config.py +167 -0
  224. django_cfg/apps/integrations/grpc/services/centrifugo/demo.py +630 -0
  225. django_cfg/apps/integrations/grpc/services/centrifugo/test_publish.py +229 -0
  226. django_cfg/apps/integrations/grpc/services/centrifugo/transformers.py +89 -0
  227. django_cfg/apps/integrations/grpc/services/client/__init__.py +102 -0
  228. django_cfg/apps/integrations/grpc/services/client/betterproto_client.py +841 -0
  229. django_cfg/apps/integrations/grpc/services/client/client.py +619 -0
  230. django_cfg/apps/integrations/grpc/services/client/pool.py +632 -0
  231. django_cfg/apps/integrations/grpc/services/client/resilient.py +717 -0
  232. django_cfg/apps/integrations/grpc/services/commands/IMPLEMENTATION.md +456 -0
  233. django_cfg/apps/integrations/grpc/services/commands/README.md +252 -0
  234. django_cfg/apps/integrations/grpc/services/commands/__init__.py +114 -0
  235. django_cfg/apps/integrations/grpc/services/commands/base.py +561 -0
  236. django_cfg/apps/integrations/grpc/services/commands/examples/__init__.py +22 -0
  237. django_cfg/apps/integrations/grpc/services/commands/examples/base_client.py +166 -0
  238. django_cfg/apps/integrations/grpc/services/commands/examples/client.py +272 -0
  239. django_cfg/apps/integrations/grpc/services/commands/examples/config.py +177 -0
  240. django_cfg/apps/integrations/grpc/services/commands/examples/start.py +125 -0
  241. django_cfg/apps/integrations/grpc/services/commands/examples/stop.py +101 -0
  242. django_cfg/apps/integrations/grpc/services/commands/helpers/README.md +253 -0
  243. django_cfg/apps/integrations/grpc/services/commands/helpers/__init__.py +43 -0
  244. django_cfg/apps/integrations/grpc/services/commands/helpers/builders.py +114 -0
  245. django_cfg/apps/integrations/grpc/services/commands/helpers/decorators.py +219 -0
  246. django_cfg/apps/integrations/grpc/services/commands/helpers/protocols.py +138 -0
  247. django_cfg/apps/integrations/grpc/services/commands/registry.py +170 -0
  248. django_cfg/apps/integrations/grpc/services/commands/viewset_mixin.py +311 -0
  249. django_cfg/apps/integrations/grpc/services/discovery/__init__.py +70 -0
  250. django_cfg/apps/integrations/grpc/services/discovery/registration.py +127 -0
  251. django_cfg/apps/integrations/grpc/services/discovery/service_discovery.py +274 -0
  252. django_cfg/apps/integrations/grpc/services/discovery/service_registry.py +201 -0
  253. django_cfg/apps/integrations/grpc/services/discovery/statistics.py +215 -0
  254. django_cfg/apps/integrations/grpc/services/discovery/utils.py +166 -0
  255. django_cfg/apps/integrations/grpc/services/interceptors/__init__.py +47 -0
  256. django_cfg/apps/integrations/grpc/services/interceptors/db_logger.py +113 -0
  257. django_cfg/apps/integrations/grpc/services/interceptors/errors.py +248 -0
  258. django_cfg/apps/integrations/grpc/services/interceptors/metrics.py +80 -0
  259. django_cfg/apps/integrations/grpc/services/interceptors/observability.py +578 -0
  260. django_cfg/apps/integrations/grpc/services/interceptors/publishers.py +190 -0
  261. django_cfg/apps/integrations/grpc/services/interceptors/utils.py +107 -0
  262. django_cfg/apps/integrations/grpc/services/interceptors/wrapped_handler.py +29 -0
  263. django_cfg/apps/integrations/grpc/services/management/__init__.py +37 -0
  264. django_cfg/apps/integrations/grpc/services/management/config_helper.py +152 -0
  265. django_cfg/apps/integrations/grpc/services/management/proto_manager.py +268 -0
  266. django_cfg/apps/integrations/grpc/services/monitoring/__init__.py +17 -0
  267. django_cfg/apps/integrations/grpc/services/monitoring/monitoring.py +395 -0
  268. django_cfg/apps/integrations/grpc/services/routing/__init__.py +59 -0
  269. django_cfg/apps/integrations/grpc/services/routing/config.py +83 -0
  270. django_cfg/apps/integrations/grpc/services/routing/router.py +430 -0
  271. django_cfg/apps/integrations/grpc/services/streaming/README.md +463 -0
  272. django_cfg/apps/integrations/grpc/services/streaming/__init__.py +115 -0
  273. django_cfg/apps/integrations/grpc/services/streaming/config.py +487 -0
  274. django_cfg/apps/integrations/grpc/services/streaming/core/__init__.py +21 -0
  275. django_cfg/apps/integrations/grpc/services/streaming/core/connection.py +199 -0
  276. django_cfg/apps/integrations/grpc/services/streaming/core/queue.py +104 -0
  277. django_cfg/apps/integrations/grpc/services/streaming/core/registry.py +299 -0
  278. django_cfg/apps/integrations/grpc/services/streaming/integrations/__init__.py +18 -0
  279. django_cfg/apps/integrations/grpc/services/streaming/integrations/centrifugo.py +228 -0
  280. django_cfg/apps/integrations/grpc/services/streaming/integrations/circuit_breaker.py +247 -0
  281. django_cfg/apps/integrations/grpc/services/streaming/processors/__init__.py +18 -0
  282. django_cfg/apps/integrations/grpc/services/streaming/processors/input.py +390 -0
  283. django_cfg/apps/integrations/grpc/services/streaming/processors/output.py +199 -0
  284. django_cfg/apps/integrations/grpc/services/streaming/service.py +474 -0
  285. django_cfg/apps/integrations/grpc/services/streaming/types.py +316 -0
  286. django_cfg/apps/integrations/grpc/testing/__init__.py +12 -0
  287. django_cfg/apps/integrations/grpc/testing/examples.py +263 -0
  288. django_cfg/apps/integrations/grpc/urls.py +36 -0
  289. django_cfg/apps/integrations/grpc/utils/SERVER_LOGGING.md +164 -0
  290. django_cfg/apps/integrations/grpc/utils/__init__.py +108 -0
  291. django_cfg/apps/integrations/grpc/utils/betterproto_compiler.py +576 -0
  292. django_cfg/apps/integrations/grpc/utils/converters.py +565 -0
  293. django_cfg/apps/integrations/grpc/utils/handlers.py +242 -0
  294. django_cfg/apps/integrations/grpc/utils/integration_test.py +334 -0
  295. django_cfg/apps/integrations/grpc/utils/proto_gen.py +463 -0
  296. django_cfg/apps/integrations/grpc/utils/streaming_logger.py +425 -0
  297. django_cfg/apps/integrations/grpc/views/__init__.py +15 -0
  298. django_cfg/apps/integrations/grpc/views/api_keys.py +235 -0
  299. django_cfg/apps/integrations/grpc/views/config.py +193 -0
  300. django_cfg/apps/integrations/grpc/views/monitoring.py +360 -0
  301. django_cfg/apps/integrations/grpc/views/services.py +298 -0
  302. django_cfg/apps/integrations/rq/__init__.py +9 -0
  303. django_cfg/apps/integrations/rq/_cfg/__init__.py +28 -0
  304. django_cfg/apps/integrations/rq/_cfg/dependencies.py +313 -0
  305. django_cfg/apps/integrations/rq/apps.py +157 -0
  306. django_cfg/apps/integrations/rq/management/__init__.py +1 -0
  307. django_cfg/apps/integrations/rq/management/commands/__init__.py +1 -0
  308. django_cfg/apps/integrations/rq/management/commands/rqscheduler.py +31 -0
  309. django_cfg/apps/integrations/rq/management/commands/rqstats.py +33 -0
  310. django_cfg/apps/integrations/rq/management/commands/rqworker.py +31 -0
  311. django_cfg/apps/integrations/rq/management/commands/rqworker_pool.py +27 -0
  312. django_cfg/apps/integrations/rq/serializers/__init__.py +40 -0
  313. django_cfg/apps/integrations/rq/serializers/health.py +77 -0
  314. django_cfg/apps/integrations/rq/serializers/job.py +104 -0
  315. django_cfg/apps/integrations/rq/serializers/queue.py +80 -0
  316. django_cfg/apps/integrations/rq/serializers/schedule.py +183 -0
  317. django_cfg/apps/integrations/rq/serializers/testing.py +139 -0
  318. django_cfg/apps/integrations/rq/serializers/worker.py +58 -0
  319. django_cfg/apps/integrations/rq/services/__init__.py +25 -0
  320. django_cfg/apps/integrations/rq/services/config_helper.py +323 -0
  321. django_cfg/apps/integrations/rq/services/models/README.md +417 -0
  322. django_cfg/apps/integrations/rq/services/models/__init__.py +30 -0
  323. django_cfg/apps/integrations/rq/services/models/event.py +123 -0
  324. django_cfg/apps/integrations/rq/services/models/job.py +99 -0
  325. django_cfg/apps/integrations/rq/services/models/queue.py +92 -0
  326. django_cfg/apps/integrations/rq/services/models/worker.py +106 -0
  327. django_cfg/apps/integrations/rq/services/rq_converters.py +188 -0
  328. django_cfg/apps/integrations/rq/tasks/__init__.py +21 -0
  329. django_cfg/apps/integrations/rq/tasks/demo_tasks.py +55 -0
  330. django_cfg/apps/integrations/rq/tasks/maintenance.py +259 -0
  331. django_cfg/apps/integrations/rq/urls.py +54 -0
  332. django_cfg/apps/integrations/rq/views/__init__.py +19 -0
  333. django_cfg/apps/integrations/rq/views/jobs.py +900 -0
  334. django_cfg/apps/integrations/rq/views/monitoring.py +248 -0
  335. django_cfg/apps/integrations/rq/views/queues.py +261 -0
  336. django_cfg/apps/integrations/rq/views/schedule.py +408 -0
  337. django_cfg/apps/integrations/rq/views/testing.py +698 -0
  338. django_cfg/apps/integrations/rq/views/workers.py +198 -0
  339. django_cfg/apps/integrations/webpush/__init__.py +18 -0
  340. django_cfg/apps/integrations/webpush/_cfg.py +35 -0
  341. django_cfg/apps/integrations/webpush/admin/__init__.py +13 -0
  342. django_cfg/apps/integrations/webpush/admin/config.py +76 -0
  343. django_cfg/apps/integrations/webpush/admin/push_subscription.py +115 -0
  344. django_cfg/apps/integrations/webpush/apps.py +98 -0
  345. django_cfg/apps/integrations/webpush/management/commands/test_push.py +85 -0
  346. django_cfg/apps/integrations/webpush/migrations/0001_initial.py +73 -0
  347. django_cfg/apps/integrations/webpush/models/__init__.py +5 -0
  348. django_cfg/apps/integrations/webpush/models/push_subscription.py +80 -0
  349. django_cfg/apps/integrations/webpush/serializers/__init__.py +19 -0
  350. django_cfg/apps/integrations/webpush/serializers/subscription.py +78 -0
  351. django_cfg/apps/integrations/webpush/services/__init__.py +33 -0
  352. django_cfg/apps/integrations/webpush/services/exceptions.py +61 -0
  353. django_cfg/apps/integrations/webpush/services/models.py +64 -0
  354. django_cfg/apps/integrations/webpush/services/push_service.py +270 -0
  355. django_cfg/apps/integrations/webpush/urls.py +23 -0
  356. django_cfg/apps/integrations/webpush/views/__init__.py +7 -0
  357. django_cfg/apps/integrations/webpush/views/api.py +175 -0
  358. django_cfg/apps/system/accounts/README.md +333 -0
  359. django_cfg/apps/system/accounts/admin/__init__.py +45 -0
  360. django_cfg/apps/system/accounts/admin/filters.py +128 -0
  361. django_cfg/apps/system/accounts/admin/inlines.py +177 -0
  362. django_cfg/apps/system/accounts/admin/oauth_admin.py +170 -0
  363. django_cfg/apps/system/accounts/admin/resources.py +270 -0
  364. django_cfg/apps/system/accounts/admin/user_admin.py +375 -0
  365. django_cfg/apps/system/accounts/apps.py +19 -0
  366. django_cfg/apps/system/accounts/management/commands/otp_test.py +206 -0
  367. django_cfg/apps/system/accounts/managers/user_manager.py +299 -0
  368. django_cfg/apps/system/accounts/migrations/0001_initial.py +119 -0
  369. django_cfg/apps/system/accounts/migrations/0008_oauth_models.py +180 -0
  370. django_cfg/apps/system/accounts/migrations/0009_delete_twilioresponse.py +22 -0
  371. django_cfg/apps/system/accounts/migrations/0010_twofactorsettings.py +100 -0
  372. django_cfg/apps/system/accounts/migrations/0011_delete_twofactorsettings.py +16 -0
  373. django_cfg/apps/system/accounts/migrations/0012_customuser_is_test_account.py +21 -0
  374. django_cfg/apps/system/accounts/migrations/0013_add_deleted_at.py +22 -0
  375. django_cfg/apps/system/accounts/models/__init__.py +68 -0
  376. django_cfg/apps/system/accounts/models/choices.py +15 -0
  377. django_cfg/apps/system/accounts/models/oauth.py +263 -0
  378. django_cfg/apps/system/accounts/models/settings.py +133 -0
  379. django_cfg/apps/system/accounts/models/user.py +254 -0
  380. django_cfg/apps/system/accounts/serializers/__init__.py +25 -0
  381. django_cfg/apps/system/accounts/serializers/oauth.py +171 -0
  382. django_cfg/apps/system/accounts/serializers/otp.py +171 -0
  383. django_cfg/apps/system/accounts/serializers/profile.py +236 -0
  384. django_cfg/apps/system/accounts/services/github_service.py +418 -0
  385. django_cfg/apps/system/accounts/services/otp_service.py +305 -0
  386. django_cfg/apps/system/accounts/signals.py +162 -0
  387. django_cfg/apps/system/accounts/urls.py +70 -0
  388. django_cfg/apps/system/accounts/utils/notifications.py +346 -0
  389. django_cfg/apps/system/accounts/views/oauth.py +368 -0
  390. django_cfg/apps/system/accounts/views/otp.py +205 -0
  391. django_cfg/apps/system/accounts/views/profile.py +250 -0
  392. django_cfg/apps/system/frontend/JWT_AUTO_INJECTION.md +224 -0
  393. django_cfg/apps/system/frontend/__init__.py +18 -0
  394. django_cfg/apps/system/frontend/apps.py +15 -0
  395. django_cfg/apps/system/frontend/management/commands/download_admin.py +111 -0
  396. django_cfg/apps/system/frontend/setup.py +105 -0
  397. django_cfg/apps/system/frontend/templates/frontend/404.html +23 -0
  398. django_cfg/apps/system/frontend/templates/frontend/route_not_found.html +33 -0
  399. django_cfg/apps/system/frontend/test_routing.py +134 -0
  400. django_cfg/apps/system/frontend/urls.py +12 -0
  401. django_cfg/apps/system/frontend/utils/__init__.py +24 -0
  402. django_cfg/apps/system/frontend/utils/compression.py +75 -0
  403. django_cfg/apps/system/frontend/utils/downloader.py +342 -0
  404. django_cfg/apps/system/frontend/utils/html_link_fixer.py +203 -0
  405. django_cfg/apps/system/frontend/utils/jwt_injection.py +134 -0
  406. django_cfg/apps/system/frontend/utils/spa_path_resolver.py +94 -0
  407. django_cfg/apps/system/frontend/views.py +270 -0
  408. django_cfg/apps/system/totp/README.md +292 -0
  409. django_cfg/apps/system/totp/__init__.py +38 -0
  410. django_cfg/apps/system/totp/admin/__init__.py +22 -0
  411. django_cfg/apps/system/totp/admin/backup_admin.py +44 -0
  412. django_cfg/apps/system/totp/admin/config.py +143 -0
  413. django_cfg/apps/system/totp/admin/device_admin.py +72 -0
  414. django_cfg/apps/system/totp/admin/session_admin.py +58 -0
  415. django_cfg/apps/system/totp/apps.py +20 -0
  416. django_cfg/apps/system/totp/decorators/__init__.py +101 -0
  417. django_cfg/apps/system/totp/middleware/__init__.py +74 -0
  418. django_cfg/apps/system/totp/migrations/0001_initial.py +79 -0
  419. django_cfg/apps/system/totp/migrations/__init__.py +5 -0
  420. django_cfg/apps/system/totp/models/__init__.py +18 -0
  421. django_cfg/apps/system/totp/models/backup_code.py +82 -0
  422. django_cfg/apps/system/totp/models/choices.py +20 -0
  423. django_cfg/apps/system/totp/models/device.py +146 -0
  424. django_cfg/apps/system/totp/models/session.py +172 -0
  425. django_cfg/apps/system/totp/serializers/__init__.py +20 -0
  426. django_cfg/apps/system/totp/serializers/backup.py +51 -0
  427. django_cfg/apps/system/totp/serializers/device.py +66 -0
  428. django_cfg/apps/system/totp/serializers/setup.py +72 -0
  429. django_cfg/apps/system/totp/serializers/verify.py +79 -0
  430. django_cfg/apps/system/totp/services/__init__.py +15 -0
  431. django_cfg/apps/system/totp/services/backup_service.py +181 -0
  432. django_cfg/apps/system/totp/services/session_service.py +267 -0
  433. django_cfg/apps/system/totp/services/totp_service.py +289 -0
  434. django_cfg/apps/system/totp/signals.py +125 -0
  435. django_cfg/apps/system/totp/urls.py +77 -0
  436. django_cfg/apps/system/totp/views/__init__.py +17 -0
  437. django_cfg/apps/system/totp/views/backup.py +134 -0
  438. django_cfg/apps/system/totp/views/device.py +171 -0
  439. django_cfg/apps/system/totp/views/setup.py +171 -0
  440. django_cfg/apps/system/totp/views/verify.py +228 -0
  441. django_cfg/apps/tools/currency/__init__.py +5 -0
  442. django_cfg/apps/tools/currency/admin/__init__.py +23 -0
  443. django_cfg/apps/tools/currency/admin/currency_admin.py +114 -0
  444. django_cfg/apps/tools/currency/admin/currency_rate_admin.py +183 -0
  445. django_cfg/apps/tools/currency/apps.py +37 -0
  446. django_cfg/apps/tools/currency/migrations/0001_initial.py +131 -0
  447. django_cfg/apps/tools/currency/migrations/0002_populate_currencies.py +86 -0
  448. django_cfg/apps/tools/currency/models.py +248 -0
  449. django_cfg/apps/tools/currency/services/__init__.py +36 -0
  450. django_cfg/apps/tools/currency/services/clients/__init__.py +6 -0
  451. django_cfg/apps/tools/currency/services/clients/coinpaprika.py +149 -0
  452. django_cfg/apps/tools/currency/services/clients/hybrid.py +237 -0
  453. django_cfg/apps/tools/currency/services/converter.py +226 -0
  454. django_cfg/apps/tools/currency/services/exceptions.py +21 -0
  455. django_cfg/apps/tools/currency/services/schemas.py +33 -0
  456. django_cfg/apps/tools/currency/services/update.py +166 -0
  457. django_cfg/apps/tools/currency/tasks.py +83 -0
  458. django_cfg/apps/urls.py +65 -119
  459. django_cfg/cli/README.md +2 -2
  460. django_cfg/cli/commands/create_project.py +324 -101
  461. django_cfg/cli/commands/info.py +3 -3
  462. django_cfg/cli/commands/search.py +80 -0
  463. django_cfg/cli/main.py +2 -0
  464. django_cfg/cli/utils.py +1 -3
  465. django_cfg/config.py +60 -5
  466. django_cfg/core/__init__.py +3 -0
  467. django_cfg/core/backends/__init__.py +1 -0
  468. django_cfg/core/backends/smtp.py +69 -0
  469. django_cfg/core/base/config_model.py +310 -270
  470. django_cfg/core/builders/apps_builder.py +58 -88
  471. django_cfg/core/builders/middleware_builder.py +33 -6
  472. django_cfg/core/builders/security_builder.py +404 -16
  473. django_cfg/core/constants.py +8 -0
  474. django_cfg/core/debug/README.md +116 -0
  475. django_cfg/core/debug/__init__.py +7 -0
  476. django_cfg/core/debug/example_config.py +63 -0
  477. django_cfg/core/debug/warnings_helper.py +155 -0
  478. django_cfg/core/decorators/__init__.py +28 -0
  479. django_cfg/core/decorators/cors.py +172 -0
  480. django_cfg/core/decorators/rate_limit.py +525 -0
  481. django_cfg/core/decorators/rate_limit_test.py +188 -0
  482. django_cfg/core/generation/core_generators/settings.py +3 -6
  483. django_cfg/core/generation/core_generators/static.py +7 -2
  484. django_cfg/core/generation/core_generators/templates.py +38 -23
  485. django_cfg/core/generation/data_generators/cache.py +28 -2
  486. django_cfg/core/generation/data_generators/database.py +70 -0
  487. django_cfg/core/generation/integration_generators/__init__.py +7 -3
  488. django_cfg/core/generation/integration_generators/api.py +12 -0
  489. django_cfg/core/generation/integration_generators/django_rq.py +80 -0
  490. django_cfg/core/generation/integration_generators/grpc_generator.py +335 -0
  491. django_cfg/core/generation/integration_generators/oauth.py +64 -0
  492. django_cfg/core/generation/integration_generators/third_party.py +8 -8
  493. django_cfg/core/generation/orchestrator.py +49 -6
  494. django_cfg/core/generation/security_generators/crypto_fields.py +72 -0
  495. django_cfg/core/generation/utility_generators/__init__.py +3 -0
  496. django_cfg/core/generation/utility_generators/i18n.py +1 -1
  497. django_cfg/core/generation/utility_generators/testing.py +79 -0
  498. django_cfg/core/integration/__init__.py +17 -0
  499. django_cfg/core/integration/display/__init__.py +10 -0
  500. django_cfg/core/integration/display/ai_hints.py +182 -0
  501. django_cfg/core/integration/display/banner.py +91 -0
  502. django_cfg/core/integration/display/base.py +73 -0
  503. django_cfg/core/integration/display/grpc_display.py +172 -0
  504. django_cfg/core/integration/display/startup.py +192 -112
  505. django_cfg/core/integration/timing.py +151 -0
  506. django_cfg/core/integration/url_integration.py +123 -9
  507. django_cfg/core/integration/version_checker.py +3 -3
  508. django_cfg/core/middleware/__init__.py +9 -0
  509. django_cfg/core/middleware/noindex.py +71 -0
  510. django_cfg/core/middleware/public_api_cors.py +132 -0
  511. django_cfg/core/utils/__init__.py +5 -0
  512. django_cfg/core/utils/url_helpers.py +73 -0
  513. django_cfg/core/validation.py +4 -6
  514. django_cfg/extensions/__init__.py +80 -0
  515. django_cfg/extensions/configs/__init__.py +9 -0
  516. django_cfg/extensions/configs/apps/__init__.py +39 -0
  517. django_cfg/extensions/configs/apps/agents.py +79 -0
  518. django_cfg/extensions/configs/apps/backup.py +175 -0
  519. django_cfg/extensions/configs/apps/base/__init__.py +18 -0
  520. django_cfg/extensions/configs/apps/base/constants.py +6 -0
  521. django_cfg/extensions/configs/apps/base/navigation.py +57 -0
  522. django_cfg/extensions/configs/apps/base/schedule.py +99 -0
  523. django_cfg/extensions/configs/apps/base/settings.py +208 -0
  524. django_cfg/extensions/configs/apps/currency.py +182 -0
  525. django_cfg/extensions/configs/apps/knowbase.py +103 -0
  526. django_cfg/extensions/configs/apps/leads.py +80 -0
  527. django_cfg/extensions/configs/apps/maintenance.py +68 -0
  528. django_cfg/extensions/configs/apps/newsletter.py +67 -0
  529. django_cfg/extensions/configs/apps/payments.py +138 -0
  530. django_cfg/extensions/configs/apps/support.py +89 -0
  531. django_cfg/extensions/configs/modules/__init__.py +11 -0
  532. django_cfg/extensions/configs/modules/base.py +83 -0
  533. django_cfg/extensions/constance.py +80 -0
  534. django_cfg/extensions/loader.py +284 -0
  535. django_cfg/extensions/manifest.py +57 -0
  536. django_cfg/extensions/mixin.py +157 -0
  537. django_cfg/extensions/module_loader.py +253 -0
  538. django_cfg/extensions/scanner.py +323 -0
  539. django_cfg/extensions/schedules.py +88 -0
  540. django_cfg/extensions/urls.py +214 -0
  541. django_cfg/management/commands/check_endpoints.py +3 -3
  542. django_cfg/management/commands/check_settings.py +3 -10
  543. django_cfg/management/commands/clear_constance.py +3 -10
  544. django_cfg/management/commands/create_token.py +4 -11
  545. django_cfg/management/commands/list_urls.py +6 -72
  546. django_cfg/management/commands/migrate_all.py +22 -103
  547. django_cfg/management/commands/migrator.py +29 -254
  548. django_cfg/management/commands/pool_status.py +153 -0
  549. django_cfg/management/commands/script.py +4 -10
  550. django_cfg/management/commands/show_config.py +8 -16
  551. django_cfg/management/commands/show_urls.py +5 -11
  552. django_cfg/management/commands/superuser.py +4 -43
  553. django_cfg/management/commands/test_db.py +448 -0
  554. django_cfg/management/commands/tree.py +5 -10
  555. django_cfg/management/utils/README.md +402 -0
  556. django_cfg/management/utils/__init__.py +37 -0
  557. django_cfg/management/utils/migration_manager.py +499 -0
  558. django_cfg/management/utils/mixins.py +176 -0
  559. django_cfg/management/utils/postgresql.py +228 -0
  560. django_cfg/middleware/README.md +372 -0
  561. django_cfg/middleware/__init__.py +6 -0
  562. django_cfg/middleware/admin_notifications.py +214 -0
  563. django_cfg/middleware/authentication.py +216 -0
  564. django_cfg/middleware/pagination.py +53 -54
  565. django_cfg/middleware/pool_cleanup.py +261 -0
  566. django_cfg/middleware/public_endpoints.py +0 -1
  567. django_cfg/middleware/user_activity.py +0 -5
  568. django_cfg/mixins/__init__.py +17 -0
  569. django_cfg/mixins/admin_api.py +37 -0
  570. django_cfg/mixins/client_api.py +39 -0
  571. django_cfg/mixins/public_api.py +31 -0
  572. django_cfg/mixins/superadmin_api.py +59 -0
  573. django_cfg/models/__init__.py +30 -2
  574. django_cfg/models/api/__init__.py +10 -0
  575. django_cfg/models/api/config.py +2 -2
  576. django_cfg/models/api/drf/config.py +4 -2
  577. django_cfg/models/api/grpc/__init__.py +75 -0
  578. django_cfg/models/api/grpc/config.py +732 -0
  579. django_cfg/models/api/oauth.py +222 -0
  580. django_cfg/models/api/rate_limiting.py +278 -0
  581. django_cfg/models/api/twofactor.py +110 -0
  582. django_cfg/models/api/webpush/__init__.py +9 -0
  583. django_cfg/models/api/webpush/config.py +68 -0
  584. django_cfg/models/django/__init__.py +7 -0
  585. django_cfg/models/django/axes.py +187 -0
  586. django_cfg/models/django/constance.py +10 -17
  587. django_cfg/models/django/crypto_fields.py +135 -0
  588. django_cfg/models/django/currency.py +69 -0
  589. django_cfg/models/django/django_rq.py +780 -0
  590. django_cfg/models/django/openapi.py +53 -3
  591. django_cfg/models/infrastructure/__init__.py +14 -2
  592. django_cfg/models/infrastructure/backup.py +413 -0
  593. django_cfg/models/infrastructure/database/config.py +16 -0
  594. django_cfg/models/infrastructure/database/converters.py +2 -0
  595. django_cfg/models/ngrok/config.py +7 -6
  596. django_cfg/models/services/email.py +13 -13
  597. django_cfg/modules/base.py +124 -61
  598. django_cfg/modules/django_admin/README.md +1165 -0
  599. django_cfg/modules/django_admin/__init__.py +86 -29
  600. django_cfg/modules/django_admin/apps.py +19 -0
  601. django_cfg/modules/django_admin/base/__init__.py +3 -1
  602. django_cfg/modules/django_admin/base/pydantic_admin/__init__.py +90 -0
  603. django_cfg/modules/django_admin/base/pydantic_admin/actions.py +90 -0
  604. django_cfg/modules/django_admin/base/pydantic_admin/base_class.py +44 -0
  605. django_cfg/modules/django_admin/base/pydantic_admin/display_methods.py +420 -0
  606. django_cfg/modules/django_admin/base/pydantic_admin/import_export.py +111 -0
  607. django_cfg/modules/django_admin/base/pydantic_admin/list_display.py +156 -0
  608. django_cfg/modules/django_admin/base/pydantic_admin/mixin.py +276 -0
  609. django_cfg/modules/django_admin/base/pydantic_admin/views.py +285 -0
  610. django_cfg/modules/django_admin/config/__init__.py +41 -2
  611. django_cfg/modules/django_admin/config/action_config.py +16 -2
  612. django_cfg/modules/django_admin/config/admin_config.py +76 -5
  613. django_cfg/modules/django_admin/config/background_task_config.py +76 -0
  614. django_cfg/modules/django_admin/config/documentation_config.py +529 -0
  615. django_cfg/modules/django_admin/config/field_config/__init__.py +48 -0
  616. django_cfg/modules/django_admin/config/field_config/avatar.py +89 -0
  617. django_cfg/modules/django_admin/config/field_config/badge.py +37 -0
  618. django_cfg/modules/django_admin/config/field_config/base.py +54 -0
  619. django_cfg/modules/django_admin/config/field_config/boolean.py +32 -0
  620. django_cfg/modules/django_admin/config/field_config/counter_badge.py +116 -0
  621. django_cfg/modules/django_admin/config/field_config/currency.py +55 -0
  622. django_cfg/modules/django_admin/config/field_config/datetime.py +34 -0
  623. django_cfg/modules/django_admin/config/field_config/decimal.py +38 -0
  624. django_cfg/modules/django_admin/config/field_config/foreignkey.py +104 -0
  625. django_cfg/modules/django_admin/config/field_config/image.py +66 -0
  626. django_cfg/modules/django_admin/config/field_config/image_preview.py +223 -0
  627. django_cfg/modules/django_admin/config/field_config/link.py +95 -0
  628. django_cfg/modules/django_admin/config/field_config/markdown.py +97 -0
  629. django_cfg/modules/django_admin/config/field_config/money.py +117 -0
  630. django_cfg/modules/django_admin/config/field_config/short_uuid.py +31 -0
  631. django_cfg/modules/django_admin/config/field_config/status_badges.py +151 -0
  632. django_cfg/modules/django_admin/config/field_config/text.py +38 -0
  633. django_cfg/modules/django_admin/config/field_config/user.py +31 -0
  634. django_cfg/modules/django_admin/config/field_config/video.py +84 -0
  635. django_cfg/modules/django_admin/config/fieldset_config.py +24 -0
  636. django_cfg/modules/django_admin/config/resource_config.py +129 -0
  637. django_cfg/modules/django_admin/config/widget_config.py +192 -0
  638. django_cfg/modules/django_admin/models/badge_models.py +16 -2
  639. django_cfg/modules/django_admin/models/display_models.py +1 -0
  640. django_cfg/modules/django_admin/static/django_admin/css/documentation-modal.css +349 -0
  641. django_cfg/modules/django_admin/static/django_admin/css/image_preview.css +129 -0
  642. django_cfg/modules/django_admin/static/django_admin/css/json_editor_theme.css +100 -0
  643. django_cfg/modules/django_admin/templates/django_admin/change_form_docs.html +11 -0
  644. django_cfg/modules/django_admin/templates/django_admin/change_list_docs.html +11 -0
  645. django_cfg/modules/django_admin/templates/django_admin/documentation_block.html +15 -0
  646. django_cfg/modules/django_admin/templates/django_admin/documentation_modal.html +317 -0
  647. django_cfg/modules/django_admin/templates/django_admin/documentation_tree_node.html +124 -0
  648. django_cfg/modules/django_admin/templates/django_admin/markdown_docs_block.html +37 -0
  649. django_cfg/modules/django_admin/templates/django_admin/widgets/avatar_display.html +56 -0
  650. django_cfg/modules/django_admin/templates/django_admin/widgets/counter_badge_display.html +21 -0
  651. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_field.html +80 -0
  652. django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_password.html +62 -0
  653. django_cfg/modules/django_admin/templates/django_admin/widgets/image_display.html +14 -0
  654. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview.html +340 -0
  655. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_card.html +70 -0
  656. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_modal.html +286 -0
  657. django_cfg/modules/django_admin/templates/django_admin/widgets/image_preview_thumbnail.html +38 -0
  658. django_cfg/modules/django_admin/templates/django_admin/widgets/json_display.html +17 -0
  659. django_cfg/modules/django_admin/templates/django_admin/widgets/json_editor.html +153 -0
  660. django_cfg/modules/django_admin/templates/django_admin/widgets/link_display.html +29 -0
  661. django_cfg/modules/django_admin/templates/django_admin/widgets/money_field_input.html +157 -0
  662. django_cfg/modules/django_admin/templates/django_admin/widgets/short_uuid_display.html +13 -0
  663. django_cfg/modules/django_admin/templates/django_admin/widgets/status_badges_display.html +21 -0
  664. django_cfg/modules/django_admin/templates/django_admin/widgets/video_display.html +69 -0
  665. django_cfg/modules/django_admin/utils/__init__.py +70 -3
  666. django_cfg/modules/django_admin/utils/badges/__init__.py +13 -0
  667. django_cfg/modules/django_admin/utils/badges/status_badges.py +179 -0
  668. django_cfg/modules/django_admin/utils/decorators.py +30 -4
  669. django_cfg/modules/django_admin/utils/displays/__init__.py +34 -0
  670. django_cfg/modules/django_admin/utils/displays/avatar_display.py +158 -0
  671. django_cfg/modules/django_admin/utils/displays/counter_badge_display.py +138 -0
  672. django_cfg/modules/django_admin/utils/displays/data_displays.py +316 -0
  673. django_cfg/modules/django_admin/utils/displays/image_display.py +124 -0
  674. django_cfg/modules/django_admin/utils/displays/image_preview.py +225 -0
  675. django_cfg/modules/django_admin/utils/displays/json_display.py +155 -0
  676. django_cfg/modules/django_admin/utils/displays/link_display.py +133 -0
  677. django_cfg/modules/django_admin/utils/displays/short_uuid_display.py +95 -0
  678. django_cfg/modules/django_admin/utils/displays/status_badges_display.py +118 -0
  679. django_cfg/modules/django_admin/utils/displays/text_display.py +136 -0
  680. django_cfg/modules/django_admin/utils/displays/video_display.py +149 -0
  681. django_cfg/modules/django_admin/utils/html/__init__.py +26 -0
  682. django_cfg/modules/django_admin/utils/html/badges.py +55 -0
  683. django_cfg/modules/django_admin/utils/html/base.py +198 -0
  684. django_cfg/modules/django_admin/utils/html/code.py +87 -0
  685. django_cfg/modules/django_admin/utils/html/composition.py +265 -0
  686. django_cfg/modules/django_admin/utils/html/formatting.py +274 -0
  687. django_cfg/modules/django_admin/utils/html/keyvalue.py +219 -0
  688. django_cfg/modules/django_admin/utils/html/markdown_integration.py +108 -0
  689. django_cfg/modules/django_admin/utils/html/progress.py +127 -0
  690. django_cfg/modules/django_admin/utils/html_builder.py +58 -194
  691. django_cfg/modules/django_admin/utils/markdown/__init__.py +21 -0
  692. django_cfg/modules/django_admin/utils/markdown/mermaid_plugin.py +277 -0
  693. django_cfg/modules/django_admin/utils/markdown/renderer.py +366 -0
  694. django_cfg/modules/django_admin/widgets/README.md +148 -0
  695. django_cfg/modules/django_admin/widgets/__init__.py +38 -0
  696. django_cfg/modules/django_admin/widgets/encrypted_field_widget.py +66 -0
  697. django_cfg/modules/django_admin/widgets/image_preview_widget.py +131 -0
  698. django_cfg/modules/django_admin/widgets/json_editor_widget.py +91 -0
  699. django_cfg/modules/django_admin/widgets/money_widget.py +452 -0
  700. django_cfg/modules/django_admin/widgets/registry.py +144 -9
  701. django_cfg/modules/django_ai/__init__.py +50 -0
  702. django_cfg/modules/django_ai/client.py +237 -0
  703. django_cfg/modules/django_client/core/__init__.py +19 -7
  704. django_cfg/modules/django_client/core/archiver/manager.py +148 -0
  705. django_cfg/modules/django_client/core/config/config.py +8 -0
  706. django_cfg/modules/django_client/core/config/service.py +1 -1
  707. django_cfg/modules/django_client/core/external/__init__.py +131 -0
  708. django_cfg/modules/django_client/core/external/base.py +388 -0
  709. django_cfg/modules/django_client/core/external/go.py +179 -0
  710. django_cfg/modules/django_client/core/external/python.py +244 -0
  711. django_cfg/modules/django_client/core/external/swift.py +158 -0
  712. django_cfg/modules/django_client/core/generator/__init__.py +120 -2
  713. django_cfg/modules/django_client/core/generator/base.py +3 -0
  714. django_cfg/modules/django_client/core/generator/claude_generator.py +345 -0
  715. django_cfg/modules/django_client/core/generator/go/__init__.py +14 -0
  716. django_cfg/modules/django_client/core/generator/go/client_generator.py +124 -0
  717. django_cfg/modules/django_client/core/generator/go/files_generator.py +133 -0
  718. django_cfg/modules/django_client/core/generator/go/generator.py +207 -0
  719. django_cfg/modules/django_client/core/generator/go/models_generator.py +304 -0
  720. django_cfg/modules/django_client/core/generator/go/naming.py +193 -0
  721. django_cfg/modules/django_client/core/generator/go/operations_generator.py +134 -0
  722. django_cfg/modules/django_client/core/generator/go/templates/Makefile.j2 +38 -0
  723. django_cfg/modules/django_client/core/generator/go/templates/README.md.j2 +55 -0
  724. django_cfg/modules/django_client/core/generator/go/templates/_header.jinja +1 -0
  725. django_cfg/modules/django_client/core/generator/go/templates/client.go.j2 +122 -0
  726. django_cfg/modules/django_client/core/generator/go/templates/enums.go.j2 +49 -0
  727. django_cfg/modules/django_client/core/generator/go/templates/errors.go.j2 +182 -0
  728. django_cfg/modules/django_client/core/generator/go/templates/go.mod.j2 +6 -0
  729. django_cfg/modules/django_client/core/generator/go/templates/main_client.go.j2 +60 -0
  730. django_cfg/modules/django_client/core/generator/go/templates/middleware.go.j2 +388 -0
  731. django_cfg/modules/django_client/core/generator/go/templates/models.go.j2 +28 -0
  732. django_cfg/modules/django_client/core/generator/go/templates/operations_client.go.j2 +142 -0
  733. django_cfg/modules/django_client/core/generator/go/templates/validation.go.j2 +217 -0
  734. django_cfg/modules/django_client/core/generator/go/type_mapper.py +380 -0
  735. django_cfg/modules/django_client/core/generator/proto/ENUM_NAMING_FIX.md +149 -0
  736. django_cfg/modules/django_client/core/generator/proto/__init__.py +19 -0
  737. django_cfg/modules/django_client/core/generator/proto/generator.py +511 -0
  738. django_cfg/modules/django_client/core/generator/proto/messages_generator.py +326 -0
  739. django_cfg/modules/django_client/core/generator/proto/naming.py +216 -0
  740. django_cfg/modules/django_client/core/generator/proto/services_generator.py +299 -0
  741. django_cfg/modules/django_client/core/generator/proto/test_proto_generator.py +262 -0
  742. django_cfg/modules/django_client/core/generator/proto/type_mapper.py +154 -0
  743. django_cfg/modules/django_client/core/generator/python/files_generator.py +5 -13
  744. django_cfg/modules/django_client/core/generator/python/generator.py +34 -1
  745. django_cfg/modules/django_client/core/generator/python/models_generator.py +76 -50
  746. django_cfg/modules/django_client/core/generator/python/operations_generator.py +6 -8
  747. django_cfg/modules/django_client/core/generator/python/templates/__init__.py.jinja +2 -0
  748. django_cfg/modules/django_client/core/generator/python/templates/_header.jinja +1 -0
  749. django_cfg/modules/django_client/core/generator/python/templates/api_wrapper.py.jinja +18 -4
  750. django_cfg/modules/django_client/core/generator/python/templates/app_init.py.jinja +2 -0
  751. django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja +0 -2
  752. django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja +0 -1
  753. django_cfg/modules/django_client/core/generator/python/templates/client_file.py.jinja +2 -0
  754. django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja +6 -4
  755. django_cfg/modules/django_client/core/generator/python/templates/models/app_models.py.jinja +2 -0
  756. django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja +9 -1
  757. django_cfg/modules/django_client/core/generator/python/templates/models/models.py.jinja +2 -0
  758. django_cfg/modules/django_client/core/generator/python/templates/models/schema_class.py.jinja +1 -1
  759. django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja +2 -0
  760. django_cfg/modules/django_client/core/generator/python/templates/utils/logger.py.jinja +2 -0
  761. django_cfg/modules/django_client/core/generator/python/templates/utils/retry.py.jinja +2 -0
  762. django_cfg/modules/django_client/core/generator/python/templates/utils/schema.py.jinja +2 -0
  763. django_cfg/modules/django_client/core/generator/swift_codable/__init__.py +30 -0
  764. django_cfg/modules/django_client/core/generator/swift_codable/endpoints_generator.py +284 -0
  765. django_cfg/modules/django_client/core/generator/swift_codable/generator.py +398 -0
  766. django_cfg/modules/django_client/core/generator/swift_codable/models_generator.py +299 -0
  767. django_cfg/modules/django_client/core/generator/swift_codable/naming.py +114 -0
  768. django_cfg/modules/django_client/core/generator/swift_codable/type_mapper.py +120 -0
  769. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +36 -2
  770. django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +11 -1
  771. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +18 -5
  772. django_cfg/modules/django_client/core/generator/typescript/generator.py +43 -0
  773. django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +7 -1
  774. django_cfg/modules/django_client/core/generator/typescript/models_generator.py +16 -0
  775. django_cfg/modules/django_client/core/generator/typescript/naming.py +6 -4
  776. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +169 -6
  777. django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +41 -7
  778. django_cfg/modules/django_client/core/generator/typescript/templates/_header.jinja +1 -0
  779. django_cfg/modules/django_client/core/generator/typescript/templates/api_instance.ts.jinja +63 -13
  780. django_cfg/modules/django_client/core/generator/typescript/templates/app_index.ts.jinja +2 -0
  781. django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja +284 -25
  782. django_cfg/modules/django_client/core/generator/typescript/templates/client/flat_client.ts.jinja +10 -3
  783. django_cfg/modules/django_client/core/generator/typescript/templates/client_file.ts.jinja +2 -0
  784. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja +3 -1
  785. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja +45 -2
  786. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja +2 -0
  787. django_cfg/modules/django_client/core/generator/typescript/templates/hooks/hooks.ts.jinja +8 -0
  788. django_cfg/modules/django_client/core/generator/typescript/templates/hooks/index.ts.jinja +4 -0
  789. django_cfg/modules/django_client/core/generator/typescript/templates/index.ts.jinja +2 -0
  790. django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +36 -22
  791. django_cfg/modules/django_client/core/generator/typescript/templates/models/app_models.ts.jinja +9 -1
  792. django_cfg/modules/django_client/core/generator/typescript/templates/models/enums.ts.jinja +2 -0
  793. django_cfg/modules/django_client/core/generator/typescript/templates/models/models.ts.jinja +2 -0
  794. django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja +5 -1
  795. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/index.ts.jinja +2 -0
  796. django_cfg/modules/django_client/core/generator/typescript/templates/utils/errors.ts.jinja +2 -0
  797. django_cfg/modules/django_client/core/generator/typescript/templates/utils/http.ts.jinja +18 -5
  798. django_cfg/modules/django_client/core/generator/typescript/templates/utils/logger.ts.jinja +2 -0
  799. django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja +2 -0
  800. django_cfg/modules/django_client/core/generator/typescript/templates/utils/schema.ts.jinja +2 -0
  801. django_cfg/modules/django_client/core/generator/typescript/templates/utils/storage.ts.jinja +5 -0
  802. django_cfg/modules/django_client/core/generator/typescript/templates/utils/validation-events.ts.jinja +135 -0
  803. django_cfg/modules/django_client/core/groups/manager.py +113 -22
  804. django_cfg/modules/django_client/core/ir/context.py +14 -0
  805. django_cfg/modules/django_client/core/ir/schema.py +81 -2
  806. django_cfg/modules/django_client/core/parser/base.py +249 -15
  807. django_cfg/modules/django_client/core/parser/openapi30.py +26 -1
  808. django_cfg/modules/django_client/core/parser/openapi31.py +26 -1
  809. django_cfg/modules/django_client/core/validation/checker.py +23 -1
  810. django_cfg/modules/django_client/core/validation/rules/__init__.py +2 -0
  811. django_cfg/modules/django_client/core/validation/rules/dict_field.py +283 -0
  812. django_cfg/modules/django_client/core/validation/safety.py +4 -4
  813. django_cfg/modules/django_client/generate_client/__init__.py +52 -0
  814. django_cfg/modules/django_client/generate_client/config.py +120 -0
  815. django_cfg/modules/django_client/generate_client/generators/__init__.py +12 -0
  816. django_cfg/modules/django_client/generate_client/generators/external.py +246 -0
  817. django_cfg/modules/django_client/generate_client/generators/internal.py +200 -0
  818. django_cfg/modules/django_client/generate_client/orchestrator.py +566 -0
  819. django_cfg/modules/django_client/generate_client/utils/__init__.py +9 -0
  820. django_cfg/modules/django_client/generate_client/utils/nextjs.py +214 -0
  821. django_cfg/modules/django_client/generate_client/utils/schema.py +97 -0
  822. django_cfg/modules/django_client/generate_client/utils/typescript.py +104 -0
  823. django_cfg/modules/django_client/management/commands/generate_client.py +164 -291
  824. django_cfg/modules/django_client/management/commands/validate_openapi.py +5 -2
  825. django_cfg/modules/django_client/urls.py +38 -5
  826. django_cfg/modules/django_currency/__init__.py +8 -102
  827. django_cfg/modules/django_currency/admin.py +97 -0
  828. django_cfg/modules/django_currency/fields.py +145 -0
  829. django_cfg/modules/django_email/__init__.py +9 -1
  830. django_cfg/modules/django_email/management/commands/test_email.py +4 -10
  831. django_cfg/modules/django_email/service.py +117 -54
  832. django_cfg/modules/django_email/utils.py +167 -1
  833. django_cfg/modules/django_health/service.py +2 -1
  834. django_cfg/modules/django_import_export/README.md +19 -1
  835. django_cfg/modules/django_import_export/__init__.py +8 -0
  836. django_cfg/modules/django_import_export/apps.py +16 -0
  837. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export.html +6 -0
  838. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_export_item.html +7 -0
  839. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import.html +6 -0
  840. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_export.html +39 -0
  841. django_cfg/modules/django_import_export/templates/admin/import_export/change_list_import_item.html +7 -0
  842. django_cfg/modules/django_llm/llm/__init__.py +33 -2
  843. django_cfg/modules/django_llm/llm/cache_dirs.py +119 -0
  844. django_cfg/modules/django_llm/llm/client.py +8 -0
  845. django_cfg/modules/django_llm/llm/models_cache.py +5 -22
  846. django_cfg/modules/django_llm/llm/vision/__init__.py +21 -0
  847. django_cfg/modules/django_llm/llm/vision/client.py +572 -0
  848. django_cfg/modules/django_llm/llm/vision/image_encoder.py +198 -0
  849. django_cfg/modules/django_llm/llm/vision/models.py +103 -0
  850. django_cfg/modules/django_llm/llm/vision/vision_models.py +370 -0
  851. django_cfg/modules/django_llm_monitoring/README.md +872 -0
  852. django_cfg/modules/django_llm_monitoring/__init__.py +24 -0
  853. django_cfg/modules/django_llm_monitoring/apps.py +11 -0
  854. django_cfg/modules/django_llm_monitoring/balance_checker.py +90 -0
  855. django_cfg/modules/django_llm_monitoring/management/__init__.py +1 -0
  856. django_cfg/modules/django_llm_monitoring/management/commands/__init__.py +1 -0
  857. django_cfg/modules/django_llm_monitoring/management/commands/check_llm_balance.py +143 -0
  858. django_cfg/modules/django_llm_monitoring/models.py +64 -0
  859. django_cfg/modules/django_llm_monitoring/notifier.py +285 -0
  860. django_cfg/modules/django_llm_monitoring/providers/__init__.py +15 -0
  861. django_cfg/modules/django_llm_monitoring/providers/base.py +109 -0
  862. django_cfg/modules/django_llm_monitoring/providers/openai.py +126 -0
  863. django_cfg/modules/django_llm_monitoring/providers/openrouter.py +128 -0
  864. django_cfg/modules/django_logging/__init__.py +2 -0
  865. django_cfg/modules/django_logging/django_logger.py +238 -58
  866. django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +17 -14
  867. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +26 -11
  868. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +2 -2
  869. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +10 -4
  870. django_cfg/modules/django_telegram/__init__.py +2 -0
  871. django_cfg/modules/django_telegram/management/commands/test_telegram.py +4 -11
  872. django_cfg/modules/django_telegram/service.py +289 -42
  873. django_cfg/modules/django_unfold/__init__.py +5 -24
  874. django_cfg/modules/django_unfold/forms/EXAMPLE.md +48 -0
  875. django_cfg/modules/django_unfold/forms/__init__.py +5 -0
  876. django_cfg/modules/django_unfold/forms/auth.py +48 -0
  877. django_cfg/modules/django_unfold/models/__init__.py +0 -23
  878. django_cfg/modules/django_unfold/models/config.py +149 -136
  879. django_cfg/modules/django_unfold/models/navigation.py +1 -1
  880. django_cfg/modules/django_unfold/navigation.py +338 -0
  881. django_cfg/modules/django_unfold/tailwind.py +29 -79
  882. django_cfg/modules/nextjs_admin/__init__.py +12 -0
  883. django_cfg/modules/nextjs_admin/apps.py +12 -0
  884. django_cfg/modules/nextjs_admin/models/__init__.py +5 -0
  885. django_cfg/modules/nextjs_admin/models/config.py +191 -0
  886. django_cfg/modules/nextjs_admin/templatetags/__init__.py +1 -0
  887. django_cfg/modules/nextjs_admin/templatetags/nextjs_admin.py +164 -0
  888. django_cfg/modules/nextjs_admin/urls.py +19 -0
  889. django_cfg/modules/nextjs_admin/views.py +283 -0
  890. django_cfg/pyproject.toml +394 -41
  891. django_cfg/registry/core.py +26 -3
  892. django_cfg/registry/modules.py +19 -2
  893. django_cfg/registry/services.py +10 -6
  894. django_cfg/registry/third_party.py +0 -9
  895. django_cfg/requirements.txt +52 -0
  896. django_cfg/routing/callbacks.py +1 -43
  897. django_cfg/static/admin/css/constance.css +44 -0
  898. django_cfg/static/admin/css/dashboard.css +6 -170
  899. django_cfg/static/admin/css/layout.css +21 -0
  900. django_cfg/static/admin/css/tabs.css +95 -0
  901. django_cfg/static/admin/css/theme.css +110 -0
  902. django_cfg/templates/TAILWIND.md +170 -0
  903. django_cfg/templates/admin/DUAL_TAB_ARCHITECTURE.md +561 -0
  904. django_cfg/templates/admin/base_site.html +8 -0
  905. django_cfg/templates/admin/constance/includes/results_list.html +68 -11
  906. django_cfg/templates/admin/index.html +813 -61
  907. django_cfg/templates/unfold/layouts/skeleton.html +27 -0
  908. django_cfg/templatetags/django_cfg.py +380 -0
  909. django_cfg/testing/README.md +278 -0
  910. django_cfg/testing/SMART_MIGRATION_MANAGER.md +396 -0
  911. django_cfg/testing/TEST_DB_COMMAND.md +331 -0
  912. django_cfg/testing/__init__.py +14 -0
  913. django_cfg/testing/runners.py +320 -0
  914. django_cfg/utils/__init__.py +5 -1
  915. django_cfg/utils/pool_monitor.py +320 -0
  916. django_cfg/utils/smart_defaults.py +235 -9
  917. django_cfg-1.5.181.dist-info/METADATA +388 -0
  918. django_cfg-1.5.181.dist-info/RECORD +1182 -0
  919. django_cfg-1.5.181.dist-info/WHEEL +4 -0
  920. django_cfg/apps/accounts/README.md +0 -333
  921. django_cfg/apps/accounts/__models.py +0 -286
  922. django_cfg/apps/accounts/admin/__init__.py +0 -45
  923. django_cfg/apps/accounts/admin/filters.py +0 -175
  924. django_cfg/apps/accounts/admin/inlines.py +0 -177
  925. django_cfg/apps/accounts/admin/resources.py +0 -376
  926. django_cfg/apps/accounts/admin/twilio_admin.py +0 -270
  927. django_cfg/apps/accounts/admin/user_admin.py +0 -308
  928. django_cfg/apps/accounts/apps.py +0 -19
  929. django_cfg/apps/accounts/management/commands/otp_test.py +0 -203
  930. django_cfg/apps/accounts/managers/user_manager.py +0 -299
  931. django_cfg/apps/accounts/migrations/0001_initial.py +0 -119
  932. django_cfg/apps/accounts/models/__init__.py +0 -67
  933. django_cfg/apps/accounts/models/choices.py +0 -32
  934. django_cfg/apps/accounts/models/integrations.py +0 -75
  935. django_cfg/apps/accounts/models/user.py +0 -81
  936. django_cfg/apps/accounts/serializers/__init__.py +0 -20
  937. django_cfg/apps/accounts/serializers/otp.py +0 -134
  938. django_cfg/apps/accounts/serializers/profile.py +0 -169
  939. django_cfg/apps/accounts/serializers/webhook.py +0 -94
  940. django_cfg/apps/accounts/services/otp_service.py +0 -205
  941. django_cfg/apps/accounts/signals.py +0 -147
  942. django_cfg/apps/accounts/urls.py +0 -49
  943. django_cfg/apps/accounts/utils/notifications.py +0 -381
  944. django_cfg/apps/accounts/views/otp.py +0 -168
  945. django_cfg/apps/accounts/views/profile.py +0 -165
  946. django_cfg/apps/accounts/views/webhook.py +0 -263
  947. django_cfg/apps/agents/README.md +0 -129
  948. django_cfg/apps/agents/__init__.py +0 -68
  949. django_cfg/apps/agents/admin/__init__.py +0 -29
  950. django_cfg/apps/agents/admin/execution_admin.py +0 -692
  951. django_cfg/apps/agents/admin/registry_admin.py +0 -462
  952. django_cfg/apps/agents/admin/toolsets_admin.py +0 -633
  953. django_cfg/apps/agents/apps.py +0 -29
  954. django_cfg/apps/agents/core/__init__.py +0 -20
  955. django_cfg/apps/agents/core/dependencies.py +0 -155
  956. django_cfg/apps/agents/core/django_agent.py +0 -223
  957. django_cfg/apps/agents/core/exceptions.py +0 -80
  958. django_cfg/apps/agents/core/models.py +0 -107
  959. django_cfg/apps/agents/core/orchestrator.py +0 -406
  960. django_cfg/apps/agents/examples/__init__.py +0 -3
  961. django_cfg/apps/agents/examples/simple_example.py +0 -166
  962. django_cfg/apps/agents/integration/__init__.py +0 -14
  963. django_cfg/apps/agents/integration/middleware.py +0 -81
  964. django_cfg/apps/agents/integration/registry.py +0 -348
  965. django_cfg/apps/agents/integration/signals.py +0 -50
  966. django_cfg/apps/agents/management/__init__.py +0 -3
  967. django_cfg/apps/agents/management/commands/__init__.py +0 -3
  968. django_cfg/apps/agents/management/commands/create_agent.py +0 -366
  969. django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -192
  970. django_cfg/apps/agents/managers/__init__.py +0 -28
  971. django_cfg/apps/agents/managers/execution.py +0 -237
  972. django_cfg/apps/agents/managers/registry.py +0 -255
  973. django_cfg/apps/agents/managers/toolsets.py +0 -497
  974. django_cfg/apps/agents/migrations/0001_initial.py +0 -287
  975. django_cfg/apps/agents/migrations/__init__.py +0 -5
  976. django_cfg/apps/agents/models/__init__.py +0 -15
  977. django_cfg/apps/agents/models/execution.py +0 -216
  978. django_cfg/apps/agents/models/registry.py +0 -221
  979. django_cfg/apps/agents/models/toolsets.py +0 -306
  980. django_cfg/apps/agents/patterns/__init__.py +0 -24
  981. django_cfg/apps/agents/patterns/content_agents.py +0 -235
  982. django_cfg/apps/agents/toolsets/__init__.py +0 -15
  983. django_cfg/apps/agents/toolsets/cache_toolset.py +0 -286
  984. django_cfg/apps/agents/toolsets/django_toolset.py +0 -221
  985. django_cfg/apps/agents/toolsets/file_toolset.py +0 -325
  986. django_cfg/apps/agents/toolsets/orm_toolset.py +0 -320
  987. django_cfg/apps/agents/urls.py +0 -47
  988. django_cfg/apps/agents/urls_admin.py +0 -12
  989. django_cfg/apps/api/endpoints/drf_views.py +0 -55
  990. django_cfg/apps/ipc/README.md +0 -346
  991. django_cfg/apps/ipc/__init__.py +0 -51
  992. django_cfg/apps/ipc/apps.py +0 -28
  993. django_cfg/apps/ipc/serializers/__init__.py +0 -19
  994. django_cfg/apps/ipc/serializers/serializers.py +0 -229
  995. django_cfg/apps/ipc/services/__init__.py +0 -7
  996. django_cfg/apps/ipc/services/client/__init__.py +0 -23
  997. django_cfg/apps/ipc/services/client/client.py +0 -542
  998. django_cfg/apps/ipc/services/client/config.py +0 -214
  999. django_cfg/apps/ipc/services/client/exceptions.py +0 -201
  1000. django_cfg/apps/ipc/services/monitor.py +0 -464
  1001. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs +0 -441
  1002. django_cfg/apps/ipc/templates/django_cfg_ipc/base.html +0 -71
  1003. django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +0 -202
  1004. django_cfg/apps/ipc/urls.py +0 -21
  1005. django_cfg/apps/ipc/urls_admin.py +0 -20
  1006. django_cfg/apps/ipc/views/__init__.py +0 -8
  1007. django_cfg/apps/ipc/views/dashboard.py +0 -15
  1008. django_cfg/apps/ipc/views/viewsets.py +0 -245
  1009. django_cfg/apps/knowbase/README.md +0 -150
  1010. django_cfg/apps/knowbase/__init__.py +0 -27
  1011. django_cfg/apps/knowbase/admin/__init__.py +0 -37
  1012. django_cfg/apps/knowbase/admin/archive_admin.py +0 -767
  1013. django_cfg/apps/knowbase/admin/chat_admin.py +0 -604
  1014. django_cfg/apps/knowbase/admin/document_admin.py +0 -699
  1015. django_cfg/apps/knowbase/admin/external_data_admin.py +0 -543
  1016. django_cfg/apps/knowbase/apps.py +0 -81
  1017. django_cfg/apps/knowbase/config/README.md +0 -176
  1018. django_cfg/apps/knowbase/config/__init__.py +0 -52
  1019. django_cfg/apps/knowbase/config/constance_fields.py +0 -188
  1020. django_cfg/apps/knowbase/config/constance_settings.py +0 -201
  1021. django_cfg/apps/knowbase/config/settings.py +0 -468
  1022. django_cfg/apps/knowbase/examples/__init__.py +0 -3
  1023. django_cfg/apps/knowbase/examples/external_data_usage.py +0 -194
  1024. django_cfg/apps/knowbase/management/commands/knowbase_stats.py +0 -159
  1025. django_cfg/apps/knowbase/management/commands/setup_knowbase.py +0 -57
  1026. django_cfg/apps/knowbase/managers/__init__.py +0 -22
  1027. django_cfg/apps/knowbase/managers/archive.py +0 -427
  1028. django_cfg/apps/knowbase/managers/base.py +0 -32
  1029. django_cfg/apps/knowbase/managers/chat.py +0 -142
  1030. django_cfg/apps/knowbase/managers/document.py +0 -203
  1031. django_cfg/apps/knowbase/managers/external_data.py +0 -472
  1032. django_cfg/apps/knowbase/migrations/0001_initial.py +0 -428
  1033. django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -435
  1034. django_cfg/apps/knowbase/migrations/0003_alter_documentarchive_archive_type.py +0 -29
  1035. django_cfg/apps/knowbase/migrations/__init__.py +0 -5
  1036. django_cfg/apps/knowbase/mixins/__init__.py +0 -32
  1037. django_cfg/apps/knowbase/mixins/config/__init__.py +0 -14
  1038. django_cfg/apps/knowbase/mixins/config/defaults.py +0 -75
  1039. django_cfg/apps/knowbase/mixins/config/meta_config.py +0 -120
  1040. django_cfg/apps/knowbase/mixins/config.py +0 -109
  1041. django_cfg/apps/knowbase/mixins/creator.py +0 -81
  1042. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -200
  1043. django_cfg/apps/knowbase/mixins/external_data_mixin.py +0 -516
  1044. django_cfg/apps/knowbase/mixins/generators/__init__.py +0 -16
  1045. django_cfg/apps/knowbase/mixins/generators/content_generator.py +0 -218
  1046. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +0 -76
  1047. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +0 -124
  1048. django_cfg/apps/knowbase/mixins/service.py +0 -364
  1049. django_cfg/apps/knowbase/models/__init__.py +0 -41
  1050. django_cfg/apps/knowbase/models/archive.py +0 -599
  1051. django_cfg/apps/knowbase/models/base.py +0 -57
  1052. django_cfg/apps/knowbase/models/chat.py +0 -158
  1053. django_cfg/apps/knowbase/models/document.py +0 -269
  1054. django_cfg/apps/knowbase/models/external_data.py +0 -370
  1055. django_cfg/apps/knowbase/serializers/__init__.py +0 -68
  1056. django_cfg/apps/knowbase/serializers/archive_serializers.py +0 -394
  1057. django_cfg/apps/knowbase/serializers/chat_serializers.py +0 -138
  1058. django_cfg/apps/knowbase/serializers/document_serializers.py +0 -95
  1059. django_cfg/apps/knowbase/serializers/external_data_serializers.py +0 -256
  1060. django_cfg/apps/knowbase/serializers/public_serializers.py +0 -75
  1061. django_cfg/apps/knowbase/services/__init__.py +0 -40
  1062. django_cfg/apps/knowbase/services/archive/__init__.py +0 -43
  1063. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +0 -17
  1064. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +0 -33
  1065. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +0 -36
  1066. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +0 -39
  1067. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +0 -103
  1068. django_cfg/apps/knowbase/services/archive/archive_service.py +0 -538
  1069. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +0 -19
  1070. django_cfg/apps/knowbase/services/archive/chunking/base.py +0 -82
  1071. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +0 -63
  1072. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +0 -108
  1073. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +0 -249
  1074. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +0 -71
  1075. django_cfg/apps/knowbase/services/archive/chunking_service.py +0 -168
  1076. django_cfg/apps/knowbase/services/archive/context/__init__.py +0 -14
  1077. django_cfg/apps/knowbase/services/archive/context/builders.py +0 -221
  1078. django_cfg/apps/knowbase/services/archive/context/models.py +0 -39
  1079. django_cfg/apps/knowbase/services/archive/exceptions.py +0 -52
  1080. django_cfg/apps/knowbase/services/archive/extraction_service.py +0 -509
  1081. django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -365
  1082. django_cfg/apps/knowbase/services/base.py +0 -55
  1083. django_cfg/apps/knowbase/services/chat_service.py +0 -240
  1084. django_cfg/apps/knowbase/services/document_service.py +0 -145
  1085. django_cfg/apps/knowbase/services/embedding/__init__.py +0 -43
  1086. django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -242
  1087. django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -253
  1088. django_cfg/apps/knowbase/services/embedding/batch_result.py +0 -62
  1089. django_cfg/apps/knowbase/services/embedding/models.py +0 -234
  1090. django_cfg/apps/knowbase/services/embedding/processors.py +0 -152
  1091. django_cfg/apps/knowbase/services/embedding/utils.py +0 -176
  1092. django_cfg/apps/knowbase/services/prompt_builder.py +0 -192
  1093. django_cfg/apps/knowbase/services/search_service.py +0 -374
  1094. django_cfg/apps/knowbase/signals/__init__.py +0 -18
  1095. django_cfg/apps/knowbase/signals/archive_signals.py +0 -212
  1096. django_cfg/apps/knowbase/signals/chat_signals.py +0 -38
  1097. django_cfg/apps/knowbase/signals/document_signals.py +0 -143
  1098. django_cfg/apps/knowbase/signals/external_data_signals.py +0 -157
  1099. django_cfg/apps/knowbase/tasks/__init__.py +0 -38
  1100. django_cfg/apps/knowbase/tasks/archive_tasks.py +0 -316
  1101. django_cfg/apps/knowbase/tasks/document_processing.py +0 -354
  1102. django_cfg/apps/knowbase/tasks/external_data_tasks.py +0 -343
  1103. django_cfg/apps/knowbase/tasks/maintenance.py +0 -197
  1104. django_cfg/apps/knowbase/urls.py +0 -23
  1105. django_cfg/apps/knowbase/urls_admin.py +0 -26
  1106. django_cfg/apps/knowbase/urls_system.py +0 -25
  1107. django_cfg/apps/knowbase/utils/__init__.py +0 -12
  1108. django_cfg/apps/knowbase/utils/chunk_settings.py +0 -263
  1109. django_cfg/apps/knowbase/utils/text_processing.py +0 -376
  1110. django_cfg/apps/knowbase/utils/validation.py +0 -99
  1111. django_cfg/apps/knowbase/views/__init__.py +0 -28
  1112. django_cfg/apps/knowbase/views/archive_views.py +0 -472
  1113. django_cfg/apps/knowbase/views/base.py +0 -46
  1114. django_cfg/apps/knowbase/views/chat_views.py +0 -197
  1115. django_cfg/apps/knowbase/views/document_views.py +0 -183
  1116. django_cfg/apps/knowbase/views/public_views.py +0 -129
  1117. django_cfg/apps/leads/README.md +0 -113
  1118. django_cfg/apps/leads/admin/__init__.py +0 -11
  1119. django_cfg/apps/leads/admin/actions.py +0 -29
  1120. django_cfg/apps/leads/admin/leads_admin.py +0 -255
  1121. django_cfg/apps/leads/admin/resources.py +0 -119
  1122. django_cfg/apps/leads/admin.py +0 -68
  1123. django_cfg/apps/leads/apps.py +0 -16
  1124. django_cfg/apps/leads/migrations/0001_initial.py +0 -127
  1125. django_cfg/apps/leads/models.py +0 -86
  1126. django_cfg/apps/leads/serializers.py +0 -48
  1127. django_cfg/apps/leads/signals.py +0 -67
  1128. django_cfg/apps/leads/tests.py +0 -271
  1129. django_cfg/apps/leads/urls.py +0 -19
  1130. django_cfg/apps/leads/urls_admin.py +0 -12
  1131. django_cfg/apps/leads/views.py +0 -91
  1132. django_cfg/apps/maintenance/__init__.py +0 -56
  1133. django_cfg/apps/maintenance/admin/__init__.py +0 -17
  1134. django_cfg/apps/maintenance/admin/actions.py +0 -159
  1135. django_cfg/apps/maintenance/admin/api_key_admin.py +0 -211
  1136. django_cfg/apps/maintenance/admin/log_admin.py +0 -208
  1137. django_cfg/apps/maintenance/admin/scheduled_admin.py +0 -226
  1138. django_cfg/apps/maintenance/admin/site_admin.py +0 -286
  1139. django_cfg/apps/maintenance/apps.py +0 -18
  1140. django_cfg/apps/maintenance/management/commands/maintenance.py +0 -262
  1141. django_cfg/apps/maintenance/management/commands/process_scheduled_maintenance.py +0 -241
  1142. django_cfg/apps/maintenance/management/commands/sync_cloudflare.py +0 -209
  1143. django_cfg/apps/maintenance/managers/__init__.py +0 -15
  1144. django_cfg/apps/maintenance/managers/cloudflare_site_manager.py +0 -193
  1145. django_cfg/apps/maintenance/managers/maintenance_log_manager.py +0 -152
  1146. django_cfg/apps/maintenance/migrations/0001_initial.py +0 -380
  1147. django_cfg/apps/maintenance/migrations/0002_cloudflaresite_maintenance_url.py +0 -21
  1148. django_cfg/apps/maintenance/migrations/0003_cloudflaresite_include_subdomains_and_more.py +0 -27
  1149. django_cfg/apps/maintenance/models/__init__.py +0 -29
  1150. django_cfg/apps/maintenance/models/cloudflare_api_key.py +0 -109
  1151. django_cfg/apps/maintenance/models/cloudflare_site.py +0 -168
  1152. django_cfg/apps/maintenance/models/maintenance_log.py +0 -132
  1153. django_cfg/apps/maintenance/models/scheduled_maintenance.py +0 -308
  1154. django_cfg/apps/maintenance/services/__init__.py +0 -42
  1155. django_cfg/apps/maintenance/services/bulk_operations_service.py +0 -400
  1156. django_cfg/apps/maintenance/services/maintenance_service.py +0 -320
  1157. django_cfg/apps/maintenance/services/scheduled_maintenance_service.py +0 -381
  1158. django_cfg/apps/maintenance/services/site_sync_service.py +0 -434
  1159. django_cfg/apps/maintenance/urls.py +0 -12
  1160. django_cfg/apps/maintenance/urls_admin.py +0 -12
  1161. django_cfg/apps/maintenance/utils/__init__.py +0 -12
  1162. django_cfg/apps/maintenance/utils/retry_utils.py +0 -109
  1163. django_cfg/apps/newsletter/README.md +0 -92
  1164. django_cfg/apps/newsletter/admin/__init__.py +0 -35
  1165. django_cfg/apps/newsletter/admin/filters.py +0 -124
  1166. django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -814
  1167. django_cfg/apps/newsletter/admin/resources.py +0 -241
  1168. django_cfg/apps/newsletter/admin.py +0 -241
  1169. django_cfg/apps/newsletter/admin_filters.py +0 -124
  1170. django_cfg/apps/newsletter/apps.py +0 -22
  1171. django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -139
  1172. django_cfg/apps/newsletter/managers/README.md +0 -120
  1173. django_cfg/apps/newsletter/managers/__init__.py +0 -1
  1174. django_cfg/apps/newsletter/migrations/0001_initial.py +0 -100
  1175. django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  1176. django_cfg/apps/newsletter/models.py +0 -260
  1177. django_cfg/apps/newsletter/serializers.py +0 -154
  1178. django_cfg/apps/newsletter/services/email_service.py +0 -392
  1179. django_cfg/apps/newsletter/signals.py +0 -76
  1180. django_cfg/apps/newsletter/urls.py +0 -41
  1181. django_cfg/apps/newsletter/urls_admin.py +0 -12
  1182. django_cfg/apps/newsletter/utils/__init__.py +0 -1
  1183. django_cfg/apps/newsletter/views/__init__.py +0 -42
  1184. django_cfg/apps/newsletter/views/campaigns.py +0 -138
  1185. django_cfg/apps/newsletter/views/emails.py +0 -129
  1186. django_cfg/apps/newsletter/views/newsletters.py +0 -44
  1187. django_cfg/apps/newsletter/views/subscriptions.py +0 -146
  1188. django_cfg/apps/newsletter/views/tracking.py +0 -75
  1189. django_cfg/apps/payments/CONFIGURATION.md +0 -280
  1190. django_cfg/apps/payments/__init__.py +0 -14
  1191. django_cfg/apps/payments/admin/__init__.py +0 -35
  1192. django_cfg/apps/payments/admin/actions.py +0 -17
  1193. django_cfg/apps/payments/admin/balance_actions.py +0 -18
  1194. django_cfg/apps/payments/admin/balance_admin.py +0 -385
  1195. django_cfg/apps/payments/admin/currency_admin.py +0 -130
  1196. django_cfg/apps/payments/admin/filters.py +0 -196
  1197. django_cfg/apps/payments/admin/payment_actions.py +0 -65
  1198. django_cfg/apps/payments/admin/payment_admin.py +0 -313
  1199. django_cfg/apps/payments/admin/withdrawal_actions.py +0 -61
  1200. django_cfg/apps/payments/admin/withdrawal_admin.py +0 -355
  1201. django_cfg/apps/payments/api/__init__.py +0 -5
  1202. django_cfg/apps/payments/api/serializers.py +0 -223
  1203. django_cfg/apps/payments/api/urls.py +0 -38
  1204. django_cfg/apps/payments/api/views.py +0 -397
  1205. django_cfg/apps/payments/apps.py +0 -23
  1206. django_cfg/apps/payments/config.py +0 -104
  1207. django_cfg/apps/payments/management/README.md +0 -375
  1208. django_cfg/apps/payments/management/__init__.py +0 -0
  1209. django_cfg/apps/payments/management/commands/__init__.py +0 -0
  1210. django_cfg/apps/payments/management/commands/check_payment_status.py +0 -290
  1211. django_cfg/apps/payments/management/commands/create_payment.py +0 -346
  1212. django_cfg/apps/payments/management/commands/sync_currencies.py +0 -254
  1213. django_cfg/apps/payments/migrations/0001_initial.py +0 -159
  1214. django_cfg/apps/payments/migrations/__init__.py +0 -0
  1215. django_cfg/apps/payments/models/__init__.py +0 -23
  1216. django_cfg/apps/payments/models/balance.py +0 -255
  1217. django_cfg/apps/payments/models/base.py +0 -84
  1218. django_cfg/apps/payments/models/currency.py +0 -123
  1219. django_cfg/apps/payments/models/managers/__init__.py +0 -25
  1220. django_cfg/apps/payments/models/managers/balance_managers.py +0 -421
  1221. django_cfg/apps/payments/models/managers/payment_managers.py +0 -412
  1222. django_cfg/apps/payments/models/payment.py +0 -362
  1223. django_cfg/apps/payments/models/withdrawal.py +0 -331
  1224. django_cfg/apps/payments/services/__init__.py +0 -41
  1225. django_cfg/apps/payments/services/balance_service.py +0 -214
  1226. django_cfg/apps/payments/services/payment_service.py +0 -514
  1227. django_cfg/apps/payments/services/providers/__init__.py +0 -17
  1228. django_cfg/apps/payments/services/providers/models.py +0 -86
  1229. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +0 -16
  1230. django_cfg/apps/payments/services/providers/nowpayments/config.py +0 -135
  1231. django_cfg/apps/payments/services/providers/nowpayments/parser.py +0 -206
  1232. django_cfg/apps/payments/services/providers/nowpayments/provider.py +0 -347
  1233. django_cfg/apps/payments/urls.py +0 -14
  1234. django_cfg/apps/support/__init__.py +0 -0
  1235. django_cfg/apps/support/admin/__init__.py +0 -19
  1236. django_cfg/apps/support/admin/actions.py +0 -35
  1237. django_cfg/apps/support/admin/filters.py +0 -71
  1238. django_cfg/apps/support/admin/resources.py +0 -183
  1239. django_cfg/apps/support/admin/support_admin.py +0 -396
  1240. django_cfg/apps/support/admin.py +0 -197
  1241. django_cfg/apps/support/admin_filters.py +0 -71
  1242. django_cfg/apps/support/apps.py +0 -11
  1243. django_cfg/apps/support/managers/message_manager.py +0 -34
  1244. django_cfg/apps/support/managers/ticket_manager.py +0 -68
  1245. django_cfg/apps/support/migrations/0001_initial.py +0 -94
  1246. django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -23
  1247. django_cfg/apps/support/migrations/__init__.py +0 -0
  1248. django_cfg/apps/support/models.py +0 -68
  1249. django_cfg/apps/support/serializers.py +0 -43
  1250. django_cfg/apps/support/signals.py +0 -86
  1251. django_cfg/apps/support/templates/support/chat/access_denied.html +0 -21
  1252. django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -210
  1253. django_cfg/apps/support/urls.py +0 -24
  1254. django_cfg/apps/support/urls_admin.py +0 -12
  1255. django_cfg/apps/support/utils/__init__.py +0 -0
  1256. django_cfg/apps/support/utils/support_email_service.py +0 -124
  1257. django_cfg/apps/support/views/__init__.py +0 -20
  1258. django_cfg/apps/support/views/admin.py +0 -50
  1259. django_cfg/apps/support/views/api.py +0 -169
  1260. django_cfg/apps/support/views/chat.py +0 -108
  1261. django_cfg/apps/tasks/__init__.py +0 -5
  1262. django_cfg/apps/tasks/admin/__init__.py +0 -11
  1263. django_cfg/apps/tasks/admin/actions.py +0 -29
  1264. django_cfg/apps/tasks/admin/tasks_admin.py +0 -154
  1265. django_cfg/apps/tasks/apps.py +0 -17
  1266. django_cfg/apps/tasks/serializers.py +0 -82
  1267. django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -120
  1268. django_cfg/apps/tasks/static/tasks/js/api.js +0 -100
  1269. django_cfg/apps/tasks/static/tasks/js/components/DataManager.js +0 -24
  1270. django_cfg/apps/tasks/static/tasks/js/components/TabManager.js +0 -85
  1271. django_cfg/apps/tasks/static/tasks/js/components/TaskRenderer.js +0 -216
  1272. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +0 -269
  1273. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +0 -125
  1274. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +0 -122
  1275. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +0 -352
  1276. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +0 -171
  1277. django_cfg/apps/tasks/tasks/__init__.py +0 -10
  1278. django_cfg/apps/tasks/tasks/demo_tasks.py +0 -134
  1279. django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -50
  1280. django_cfg/apps/tasks/templates/tasks/components/overview_content.html +0 -69
  1281. django_cfg/apps/tasks/templates/tasks/components/queues_content.html +0 -19
  1282. django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -33
  1283. django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +0 -51
  1284. django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +0 -269
  1285. django_cfg/apps/tasks/templates/tasks/components/workers_content.html +0 -30
  1286. django_cfg/apps/tasks/templates/tasks/layout/base.html +0 -22
  1287. django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +0 -168
  1288. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +0 -101
  1289. django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +0 -40
  1290. django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +0 -37
  1291. django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +0 -41
  1292. django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +0 -50
  1293. django_cfg/apps/tasks/urls.py +0 -22
  1294. django_cfg/apps/tasks/urls_admin.py +0 -15
  1295. django_cfg/apps/tasks/utils/__init__.py +0 -1
  1296. django_cfg/apps/tasks/utils/simulator.py +0 -353
  1297. django_cfg/apps/tasks/views/__init__.py +0 -16
  1298. django_cfg/apps/tasks/views/api.py +0 -571
  1299. django_cfg/apps/tasks/views/dashboard.py +0 -89
  1300. django_cfg/core/generation/integration_generators/tasks.py +0 -92
  1301. django_cfg/management/commands/rundramatiq.py +0 -24
  1302. django_cfg/management/commands/rundramatiq_simulator.py +0 -22
  1303. django_cfg/management/commands/task_clear.py +0 -25
  1304. django_cfg/management/commands/task_status.py +0 -24
  1305. django_cfg/management/commands/test_twilio.py +0 -24
  1306. django_cfg/models/django/revolution_legacy.py +0 -223
  1307. django_cfg/models/tasks/__init__.py +0 -51
  1308. django_cfg/models/tasks/backends.py +0 -251
  1309. django_cfg/models/tasks/config.py +0 -316
  1310. django_cfg/models/tasks/utils.py +0 -174
  1311. django_cfg/modules/django_admin/base/pydantic_admin.py +0 -274
  1312. django_cfg/modules/django_admin/config/field_config.py +0 -197
  1313. django_cfg/modules/django_admin/utils/badges.py +0 -171
  1314. django_cfg/modules/django_admin/utils/displays.py +0 -203
  1315. django_cfg/modules/django_client/core/archive/manager.py +0 -134
  1316. django_cfg/modules/django_client/system/__init__.py +0 -24
  1317. django_cfg/modules/django_client/system/base_generator.py +0 -123
  1318. django_cfg/modules/django_client/system/generate_mjs_clients.py +0 -174
  1319. django_cfg/modules/django_client/system/mjs_generator.py +0 -219
  1320. django_cfg/modules/django_client/system/schema_parser.py +0 -195
  1321. django_cfg/modules/django_client/system/templates/api_client.js.j2 +0 -87
  1322. django_cfg/modules/django_client/system/templates/app_index.js.j2 +0 -13
  1323. django_cfg/modules/django_client/system/templates/base_client.js.j2 +0 -166
  1324. django_cfg/modules/django_client/system/templates/main_index.js.j2 +0 -80
  1325. django_cfg/modules/django_client/system/templates/types.js.j2 +0 -24
  1326. django_cfg/modules/django_currency/README.md +0 -169
  1327. django_cfg/modules/django_currency/clients/__init__.py +0 -11
  1328. django_cfg/modules/django_currency/clients/coinpaprika_client.py +0 -289
  1329. django_cfg/modules/django_currency/clients/hybrid_client.py +0 -588
  1330. django_cfg/modules/django_currency/core/__init__.py +0 -30
  1331. django_cfg/modules/django_currency/core/converter.py +0 -165
  1332. django_cfg/modules/django_currency/core/exceptions.py +0 -28
  1333. django_cfg/modules/django_currency/core/models.py +0 -166
  1334. django_cfg/modules/django_currency/database/__init__.py +0 -25
  1335. django_cfg/modules/django_currency/database/database_loader.py +0 -438
  1336. django_cfg/modules/django_currency/examples/__init__.py +0 -3
  1337. django_cfg/modules/django_currency/examples/example_database_usage.py +0 -145
  1338. django_cfg/modules/django_currency/utils/__init__.py +0 -9
  1339. django_cfg/modules/django_currency/utils/cache.py +0 -91
  1340. django_cfg/modules/django_dashboard/__init__.py +0 -23
  1341. django_cfg/modules/django_dashboard/components.py +0 -312
  1342. django_cfg/modules/django_dashboard/debug.py +0 -174
  1343. django_cfg/modules/django_dashboard/management/__init__.py +0 -0
  1344. django_cfg/modules/django_dashboard/management/commands/__init__.py +0 -0
  1345. django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +0 -109
  1346. django_cfg/modules/django_dashboard/sections/__init__.py +0 -1
  1347. django_cfg/modules/django_dashboard/sections/base.py +0 -129
  1348. django_cfg/modules/django_dashboard/sections/commands.py +0 -33
  1349. django_cfg/modules/django_dashboard/sections/documentation.py +0 -393
  1350. django_cfg/modules/django_dashboard/sections/overview.py +0 -398
  1351. django_cfg/modules/django_dashboard/sections/stats.py +0 -48
  1352. django_cfg/modules/django_dashboard/sections/system.py +0 -74
  1353. django_cfg/modules/django_logging/FIXES_SUMMARY.md +0 -276
  1354. django_cfg/modules/django_logging/LOGGING_GUIDE.md +0 -504
  1355. django_cfg/modules/django_tasks/__init__.py +0 -29
  1356. django_cfg/modules/django_tasks/dramatiq_setup.py +0 -20
  1357. django_cfg/modules/django_tasks/factory.py +0 -127
  1358. django_cfg/modules/django_tasks/management/__init__.py +0 -0
  1359. django_cfg/modules/django_tasks/management/commands/__init__.py +0 -0
  1360. django_cfg/modules/django_tasks/management/commands/rundramatiq.py +0 -253
  1361. django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +0 -436
  1362. django_cfg/modules/django_tasks/management/commands/task_clear.py +0 -226
  1363. django_cfg/modules/django_tasks/management/commands/task_status.py +0 -257
  1364. django_cfg/modules/django_tasks/service.py +0 -281
  1365. django_cfg/modules/django_tasks/settings.py +0 -107
  1366. django_cfg/modules/django_twilio/README.md +0 -501
  1367. django_cfg/modules/django_twilio/__init__.py +0 -92
  1368. django_cfg/modules/django_twilio/_imports.py +0 -30
  1369. django_cfg/modules/django_twilio/base.py +0 -196
  1370. django_cfg/modules/django_twilio/email_otp.py +0 -228
  1371. django_cfg/modules/django_twilio/exceptions.py +0 -337
  1372. django_cfg/modules/django_twilio/management/__init__.py +0 -0
  1373. django_cfg/modules/django_twilio/management/commands/__init__.py +0 -0
  1374. django_cfg/modules/django_twilio/management/commands/test_twilio.py +0 -111
  1375. django_cfg/modules/django_twilio/models.py +0 -409
  1376. django_cfg/modules/django_twilio/sendgrid_service.py +0 -502
  1377. django_cfg/modules/django_twilio/simple_service.py +0 -290
  1378. django_cfg/modules/django_twilio/sms.py +0 -95
  1379. django_cfg/modules/django_twilio/templates/guide.md +0 -266
  1380. django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -213
  1381. django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -14
  1382. django_cfg/modules/django_twilio/twilio_service.py +0 -544
  1383. django_cfg/modules/django_twilio/unified.py +0 -311
  1384. django_cfg/modules/django_twilio/utils.py +0 -189
  1385. django_cfg/modules/django_twilio/whatsapp.py +0 -138
  1386. django_cfg/modules/django_unfold/callbacks/__init__.py +0 -9
  1387. django_cfg/modules/django_unfold/callbacks/actions.py +0 -51
  1388. django_cfg/modules/django_unfold/callbacks/apizones.py +0 -122
  1389. django_cfg/modules/django_unfold/callbacks/base.py +0 -290
  1390. django_cfg/modules/django_unfold/callbacks/charts.py +0 -223
  1391. django_cfg/modules/django_unfold/callbacks/commands.py +0 -40
  1392. django_cfg/modules/django_unfold/callbacks/main.py +0 -294
  1393. django_cfg/modules/django_unfold/callbacks/statistics.py +0 -240
  1394. django_cfg/modules/django_unfold/callbacks/system.py +0 -180
  1395. django_cfg/modules/django_unfold/callbacks/users.py +0 -65
  1396. django_cfg/modules/django_unfold/dashboard.py +0 -338
  1397. django_cfg/modules/django_unfold/models/dashboard.py +0 -207
  1398. django_cfg/modules/django_unfold/models/tabs.py +0 -26
  1399. django_cfg/modules/django_unfold/models.py +0 -98
  1400. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +0 -102
  1401. django_cfg/static/admin/js/commands.js +0 -171
  1402. django_cfg/static/admin/js/dashboard.js +0 -126
  1403. django_cfg/static/js/api/accounts/client.mjs +0 -69
  1404. django_cfg/static/js/api/accounts/index.mjs +0 -13
  1405. django_cfg/static/js/api/base.mjs +0 -166
  1406. django_cfg/static/js/api/index.mjs +0 -100
  1407. django_cfg/static/js/api/ipc/client.mjs +0 -74
  1408. django_cfg/static/js/api/ipc/index.mjs +0 -13
  1409. django_cfg/static/js/api/leads/client.mjs +0 -71
  1410. django_cfg/static/js/api/leads/index.mjs +0 -13
  1411. django_cfg/static/js/api/newsletter/client.mjs +0 -109
  1412. django_cfg/static/js/api/newsletter/index.mjs +0 -13
  1413. django_cfg/static/js/api/payments/client.mjs +0 -1264
  1414. django_cfg/static/js/api/payments/index.mjs +0 -13
  1415. django_cfg/static/js/api/support/client.mjs +0 -84
  1416. django_cfg/static/js/api/support/index.mjs +0 -13
  1417. django_cfg/static/js/api/tasks/client.mjs +0 -74
  1418. django_cfg/static/js/api/tasks/index.mjs +0 -13
  1419. django_cfg/static/js/api/types.mjs +0 -729
  1420. django_cfg/static/js/api-loader.mjs +0 -169
  1421. django_cfg/templates/admin/components/action_grid.html +0 -49
  1422. django_cfg/templates/admin/components/card.html +0 -50
  1423. django_cfg/templates/admin/components/data_table.html +0 -67
  1424. django_cfg/templates/admin/components/management_commands.js +0 -375
  1425. django_cfg/templates/admin/components/metric_card.html +0 -39
  1426. django_cfg/templates/admin/components/modal.html +0 -58
  1427. django_cfg/templates/admin/components/progress_bar.html +0 -20
  1428. django_cfg/templates/admin/components/section_header.html +0 -26
  1429. django_cfg/templates/admin/components/stat_item.html +0 -32
  1430. django_cfg/templates/admin/components/stats_grid.html +0 -72
  1431. django_cfg/templates/admin/components/status_badge.html +0 -28
  1432. django_cfg/templates/admin/components/user_avatar.html +0 -27
  1433. django_cfg/templates/admin/constance/change_list.html +0 -113
  1434. django_cfg/templates/admin/constance/includes/default_value.html +0 -24
  1435. django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -15
  1436. django_cfg/templates/admin/constance/includes/setting_row.html +0 -50
  1437. django_cfg/templates/admin/constance/includes/table_headers.html +0 -10
  1438. django_cfg/templates/admin/examples/component_class_example.html +0 -156
  1439. django_cfg/templates/admin/import_export/change_list_export.html +0 -24
  1440. django_cfg/templates/admin/import_export/change_list_import.html +0 -24
  1441. django_cfg/templates/admin/import_export/change_list_import_export.html +0 -34
  1442. django_cfg/templates/admin/index_new.html +0 -119
  1443. django_cfg/templates/admin/layouts/base_dashboard.html +0 -60
  1444. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -565
  1445. django_cfg/templates/admin/sections/commands_section.html +0 -626
  1446. django_cfg/templates/admin/sections/documentation_section.html +0 -172
  1447. django_cfg/templates/admin/sections/overview_section.html +0 -112
  1448. django_cfg/templates/admin/sections/stats_section.html +0 -35
  1449. django_cfg/templates/admin/sections/system_section.html +0 -99
  1450. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +0 -322
  1451. django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -92
  1452. django_cfg/templates/admin/snippets/components/charts_section.html +0 -179
  1453. django_cfg/templates/admin/snippets/components/django_commands.html +0 -357
  1454. django_cfg/templates/admin/snippets/components/quick_actions.html +0 -66
  1455. django_cfg/templates/admin/snippets/components/recent_activity.html +0 -35
  1456. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +0 -25
  1457. django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -102
  1458. django_cfg/templates/admin/snippets/components/stats_cards.html +0 -4
  1459. django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -92
  1460. django_cfg/templates/admin/snippets/components/system_health.html +0 -22
  1461. django_cfg/templates/admin/snippets/components/system_metrics.html +0 -191
  1462. django_cfg/templates/admin/snippets/components/user_permissions.html +0 -57
  1463. django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -201
  1464. django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -66
  1465. django_cfg/templates/admin/snippets/tabs/documentation_tab.html +0 -231
  1466. django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -116
  1467. django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -89
  1468. django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -51
  1469. django_cfg/templates/admin/snippets/zones/zones_table.html +0 -176
  1470. django_cfg-1.4.46.dist-info/METADATA +0 -533
  1471. django_cfg-1.4.46.dist-info/RECORD +0 -1000
  1472. django_cfg-1.4.46.dist-info/WHEEL +0 -4
  1473. /django_cfg/apps/api/endpoints/{checker.py → endpoints_status/checker.py} +0 -0
  1474. /django_cfg/apps/api/endpoints/{serializers.py → endpoints_status/serializers.py} +0 -0
  1475. /django_cfg/apps/api/endpoints/{tests.py → endpoints_status/tests.py} +0 -0
  1476. /django_cfg/apps/api/endpoints/{views.py → endpoints_status/views.py} +0 -0
  1477. /django_cfg/apps/{accounts/migrations → integrations}/__init__.py +0 -0
  1478. /django_cfg/apps/{knowbase/management → integrations/grpc/management/commands}/__init__.py +0 -0
  1479. /django_cfg/apps/{knowbase/management/commands → integrations/grpc/migrations}/__init__.py +0 -0
  1480. /django_cfg/apps/{leads → integrations/webpush/management}/__init__.py +0 -0
  1481. /django_cfg/apps/{leads/migrations → integrations/webpush/management/commands}/__init__.py +0 -0
  1482. /django_cfg/apps/{maintenance/management → integrations/webpush/migrations}/__init__.py +0 -0
  1483. /django_cfg/apps/{maintenance/management/commands → system}/__init__.py +0 -0
  1484. /django_cfg/apps/{accounts → system/accounts}/__init__.py +0 -0
  1485. /django_cfg/apps/{accounts → system/accounts}/admin/activity_admin.py +0 -0
  1486. /django_cfg/apps/{accounts → system/accounts}/admin/group_admin.py +0 -0
  1487. /django_cfg/apps/{accounts → system/accounts}/admin/otp_admin.py +0 -0
  1488. /django_cfg/apps/{accounts → system/accounts}/admin/registration_admin.py +0 -0
  1489. /django_cfg/apps/{accounts → system/accounts}/managers/__init__.py +0 -0
  1490. /django_cfg/apps/{accounts → system/accounts}/migrations/0002_add_phone_otp_clean.py +0 -0
  1491. /django_cfg/apps/{accounts → system/accounts}/migrations/0003_twilioresponse.py +0 -0
  1492. /django_cfg/apps/{accounts → system/accounts}/migrations/0004_delete_twilioresponse.py +0 -0
  1493. /django_cfg/apps/{accounts → system/accounts}/migrations/0005_twilioresponse.py +0 -0
  1494. /django_cfg/apps/{accounts → system/accounts}/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  1495. /django_cfg/apps/{accounts → system/accounts}/migrations/0007_twilioresponse.py +0 -0
  1496. /django_cfg/apps/{maintenance → system/accounts}/migrations/__init__.py +0 -0
  1497. /django_cfg/apps/{accounts → system/accounts}/models/activity.py +0 -0
  1498. /django_cfg/apps/{accounts → system/accounts}/models/auth.py +0 -0
  1499. /django_cfg/apps/{accounts → system/accounts}/models/base.py +0 -0
  1500. /django_cfg/apps/{accounts → system/accounts}/models/registration.py +0 -0
  1501. /django_cfg/apps/{accounts → system/accounts}/services/__init__.py +0 -0
  1502. /django_cfg/apps/{accounts → system/accounts}/services/activity_service.py +0 -0
  1503. /django_cfg/apps/{accounts → system/accounts}/templates/emails/base_email.html +0 -0
  1504. /django_cfg/apps/{accounts → system/accounts}/templates/emails/base_email.txt +0 -0
  1505. /django_cfg/apps/{accounts → system/accounts}/templates/emails/otp_email.html +0 -0
  1506. /django_cfg/apps/{accounts → system/accounts}/templates/emails/otp_email.txt +0 -0
  1507. /django_cfg/apps/{accounts → system/accounts}/templates/emails/welcome_email.html +0 -0
  1508. /django_cfg/apps/{accounts → system/accounts}/templates/emails/welcome_email.txt +0 -0
  1509. /django_cfg/apps/{accounts → system/accounts}/urls_admin.py +0 -0
  1510. /django_cfg/apps/{accounts → system/accounts}/views/__init__.py +0 -0
  1511. /django_cfg/apps/{newsletter → system/frontend/management}/__init__.py +0 -0
  1512. /django_cfg/apps/{newsletter/management → system/frontend/management/commands}/__init__.py +0 -0
  1513. /django_cfg/apps/{newsletter/management/commands → tools/currency/migrations}/__init__.py +0 -0
  1514. /django_cfg/modules/django_client/core/{archive → archiver}/__init__.py +0 -0
  1515. {django_cfg-1.4.46.dist-info → django_cfg-1.5.181.dist-info}/entry_points.txt +0 -0
  1516. {django_cfg-1.4.46.dist-info → django_cfg-1.5.181.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,247 @@
1
+ """
2
+ Centrifugo resilience layer for auto-publishing.
3
+
4
+ Simple circuit breaker pattern without external dependencies.
5
+ Designed for non-critical auto-publishing use case.
6
+
7
+ Created: 2025-11-14
8
+ Status: %%PRODUCTION%%
9
+ Phase: Phase 1 - Universal Components
10
+ """
11
+
12
+ import logging
13
+ from datetime import datetime, timedelta, timezone as tz
14
+ from typing import Optional
15
+ from enum import Enum
16
+
17
+ # Logger will be configured by BidirectionalStreamingService via setup_streaming_logger
18
+ logger = logging.getLogger("grpc_streaming.circuit_breaker")
19
+
20
+
21
+ class CircuitState(str, Enum):
22
+ """Circuit breaker states."""
23
+ CLOSED = "closed" # Normal operation
24
+ OPEN = "open" # Too many errors, blocking calls
25
+ HALF_OPEN = "half_open" # Testing if service recovered
26
+
27
+
28
+ class CentrifugoCircuitBreaker:
29
+ """
30
+ Simple circuit breaker for Centrifugo auto-publishing.
31
+
32
+ **States**:
33
+ - CLOSED: Normal operation, all calls go through
34
+ - OPEN: Too many failures, all calls blocked
35
+ - HALF_OPEN: Testing recovery, limited calls allowed
36
+
37
+ **Configuration**:
38
+ - failure_threshold: Max consecutive failures before opening (default: 5)
39
+ - recovery_timeout: Seconds to wait before testing recovery (default: 60)
40
+ - success_threshold: Successful calls needed to close from half-open (default: 2)
41
+
42
+ **Usage**:
43
+ ```python
44
+ circuit = CentrifugoCircuitBreaker(failure_threshold=5, recovery_timeout=60)
45
+
46
+ if circuit.can_execute():
47
+ try:
48
+ await publish_to_centrifugo(data)
49
+ circuit.record_success()
50
+ except Exception as e:
51
+ circuit.record_failure(e)
52
+ else:
53
+ # Circuit is open, skip publishing
54
+ pass
55
+ ```
56
+
57
+ **Thread Safety**: Not thread-safe, designed for single asyncio event loop.
58
+ """
59
+
60
+ def __init__(
61
+ self,
62
+ failure_threshold: int = 5,
63
+ recovery_timeout: float = 60.0,
64
+ success_threshold: int = 2,
65
+ enable_logging: bool = True,
66
+ ):
67
+ """
68
+ Initialize circuit breaker.
69
+
70
+ Args:
71
+ failure_threshold: Max consecutive failures before opening circuit
72
+ recovery_timeout: Seconds to wait in OPEN state before trying HALF_OPEN
73
+ success_threshold: Successful calls needed in HALF_OPEN to close circuit
74
+ enable_logging: Enable state transition logging
75
+ """
76
+ self.failure_threshold = failure_threshold
77
+ self.recovery_timeout = recovery_timeout
78
+ self.success_threshold = success_threshold
79
+ self.enable_logging = enable_logging
80
+
81
+ # State
82
+ self._state = CircuitState.CLOSED
83
+ self._failure_count = 0
84
+ self._success_count = 0
85
+ self._last_failure_time: Optional[datetime] = None
86
+ self._opened_at: Optional[datetime] = None
87
+
88
+ # Statistics
89
+ self._total_calls = 0
90
+ self._total_failures = 0
91
+ self._total_blocked = 0
92
+
93
+ @property
94
+ def state(self) -> CircuitState:
95
+ """Get current circuit state."""
96
+ return self._state
97
+
98
+ @property
99
+ def is_open(self) -> bool:
100
+ """Check if circuit is open (blocking calls)."""
101
+ return self._state == CircuitState.OPEN
102
+
103
+ def can_execute(self) -> bool:
104
+ """
105
+ Check if call can be executed.
106
+
107
+ Returns:
108
+ True if call should proceed, False if blocked by circuit breaker
109
+ """
110
+ self._total_calls += 1
111
+
112
+ # CLOSED: Allow all calls
113
+ if self._state == CircuitState.CLOSED:
114
+ return True
115
+
116
+ # OPEN: Check if recovery timeout passed
117
+ if self._state == CircuitState.OPEN:
118
+ if self._opened_at is None:
119
+ # Should never happen, but handle gracefully
120
+ self._transition_to(CircuitState.HALF_OPEN)
121
+ return True
122
+
123
+ elapsed = (datetime.now(tz.utc) - self._opened_at).total_seconds()
124
+ if elapsed >= self.recovery_timeout:
125
+ # Try recovery
126
+ self._transition_to(CircuitState.HALF_OPEN)
127
+ return True
128
+ else:
129
+ # Still in recovery timeout
130
+ self._total_blocked += 1
131
+ return False
132
+
133
+ # HALF_OPEN: Allow call to test recovery
134
+ if self._state == CircuitState.HALF_OPEN:
135
+ return True
136
+
137
+ # Should never reach here
138
+ return False
139
+
140
+ def record_success(self) -> None:
141
+ """Record successful call."""
142
+ if self._state == CircuitState.CLOSED:
143
+ # Reset failure counter on success
144
+ self._failure_count = 0
145
+
146
+ elif self._state == CircuitState.HALF_OPEN:
147
+ # Count successes to close circuit
148
+ self._success_count += 1
149
+ if self._success_count >= self.success_threshold:
150
+ self._transition_to(CircuitState.CLOSED)
151
+
152
+ def record_failure(self, error: Exception) -> None:
153
+ """
154
+ Record failed call.
155
+
156
+ Args:
157
+ error: Exception that caused the failure
158
+ """
159
+ self._total_failures += 1
160
+ self._last_failure_time = datetime.now(tz.utc)
161
+
162
+ if self._state == CircuitState.CLOSED:
163
+ self._failure_count += 1
164
+ if self._failure_count >= self.failure_threshold:
165
+ self._transition_to(CircuitState.OPEN)
166
+
167
+ elif self._state == CircuitState.HALF_OPEN:
168
+ # Failure during testing - reopen circuit
169
+ self._transition_to(CircuitState.OPEN)
170
+
171
+ def _transition_to(self, new_state: CircuitState) -> None:
172
+ """
173
+ Transition to new state.
174
+
175
+ Args:
176
+ new_state: New circuit state
177
+ """
178
+ old_state = self._state
179
+ self._state = new_state
180
+
181
+ # Reset counters based on new state
182
+ if new_state == CircuitState.CLOSED:
183
+ self._failure_count = 0
184
+ self._success_count = 0
185
+ self._opened_at = None
186
+
187
+ elif new_state == CircuitState.OPEN:
188
+ self._opened_at = datetime.now(tz.utc)
189
+ self._success_count = 0
190
+
191
+ elif new_state == CircuitState.HALF_OPEN:
192
+ self._failure_count = 0
193
+ self._success_count = 0
194
+
195
+ # Log transition
196
+ if self.enable_logging and old_state != new_state:
197
+ logger.warning(
198
+ f"⚔ Centrifugo Circuit Breaker: {old_state.value} → {new_state.value} "
199
+ f"(failures={self._failure_count}, total_blocked={self._total_blocked})"
200
+ )
201
+
202
+ def reset(self) -> None:
203
+ """Reset circuit breaker to initial state."""
204
+ self._state = CircuitState.CLOSED
205
+ self._failure_count = 0
206
+ self._success_count = 0
207
+ self._last_failure_time = None
208
+ self._opened_at = None
209
+
210
+ if self.enable_logging:
211
+ logger.info("šŸ”„ Centrifugo Circuit Breaker reset")
212
+
213
+ def get_stats(self) -> dict:
214
+ """
215
+ Get circuit breaker statistics.
216
+
217
+ Returns:
218
+ Dictionary with statistics
219
+ """
220
+ return {
221
+ "state": self._state.value,
222
+ "total_calls": self._total_calls,
223
+ "total_failures": self._total_failures,
224
+ "total_blocked": self._total_blocked,
225
+ "failure_count": self._failure_count,
226
+ "success_count": self._success_count,
227
+ "failure_rate": (
228
+ self._total_failures / self._total_calls
229
+ if self._total_calls > 0
230
+ else 0.0
231
+ ),
232
+ "last_failure_time": (
233
+ self._last_failure_time.isoformat()
234
+ if self._last_failure_time
235
+ else None
236
+ ),
237
+ }
238
+
239
+
240
+ # ============================================================================
241
+ # Exports
242
+ # ============================================================================
243
+
244
+ __all__ = [
245
+ 'CentrifugoCircuitBreaker',
246
+ 'CircuitState',
247
+ ]
@@ -0,0 +1,18 @@
1
+ """
2
+ Processors for bidirectional streaming.
3
+
4
+ Input and output message/command processing with Centrifugo integration.
5
+
6
+ Created: 2025-11-14
7
+ Status: %%PRODUCTION%%
8
+ Phase: Phase 1 - Universal Components (Refactored)
9
+ """
10
+
11
+ from .input import InputProcessor
12
+ from .output import OutputProcessor
13
+
14
+
15
+ __all__ = [
16
+ 'InputProcessor',
17
+ 'OutputProcessor',
18
+ ]
@@ -0,0 +1,390 @@
1
+ """
2
+ Input message processing for bidirectional streaming.
3
+
4
+ Handles incoming messages from clients with async iteration support.
5
+
6
+ Created: 2025-11-14
7
+ Status: %%PRODUCTION%%
8
+ Phase: Phase 1 - Universal Components (Refactored)
9
+ """
10
+
11
+ import asyncio
12
+ import logging
13
+ import traceback
14
+ from typing import AsyncIterator, Optional, Any
15
+ import grpc
16
+
17
+ from ..types import (
18
+ TMessage,
19
+ TCommand,
20
+ ClientIdExtractor,
21
+ MessageProcessor,
22
+ CommandAckExtractor,
23
+ HeartbeatExtractor,
24
+ HeartbeatCallback,
25
+ )
26
+ from ..integrations.centrifugo import CentrifugoPublisher
27
+ from ..config import StreamingMode
28
+
29
+ # Logger will be configured by BidirectionalStreamingService via setup_streaming_logger
30
+ logger = logging.getLogger("grpc_streaming.input_processor")
31
+
32
+
33
+ class InputProcessor:
34
+ """
35
+ Processes incoming messages from clients.
36
+
37
+ Responsibilities:
38
+ - Extract client_id from each message
39
+ - Auto-resolve CommandAck (for synchronous RPC)
40
+ - Auto-handle Heartbeat (for keepalive + metrics)
41
+ - Route messages to message processor callback
42
+ - Auto-publish to Centrifugo (if configured)
43
+ - Handle errors gracefully
44
+ - Support both async for and anext() iteration modes
45
+ """
46
+
47
+ def __init__(
48
+ self,
49
+ extract_client_id: ClientIdExtractor[TMessage],
50
+ process_message: MessageProcessor[TMessage, TCommand],
51
+ centrifugo_publisher: Optional[CentrifugoPublisher] = None,
52
+ command_ack_extractor: Optional[CommandAckExtractor[TMessage]] = None,
53
+ heartbeat_extractor: Optional[HeartbeatExtractor[TMessage]] = None,
54
+ heartbeat_callback: Optional[HeartbeatCallback] = None,
55
+ streaming_mode: StreamingMode = StreamingMode.ASYNC_FOR,
56
+ connection_timeout: Optional[float] = None,
57
+ yield_event_loop: bool = True,
58
+ enable_logging: bool = True
59
+ ):
60
+ """
61
+ Initialize input processor.
62
+
63
+ Args:
64
+ extract_client_id: Callback to extract client_id from message
65
+ process_message: Callback to process message (business logic)
66
+ centrifugo_publisher: Optional Centrifugo publisher for auto-publishing
67
+ command_ack_extractor: Optional callback to extract CommandAck from message
68
+ heartbeat_extractor: Optional callback to extract Heartbeat from message
69
+ heartbeat_callback: Optional callback to handle heartbeat (update DB, send ping)
70
+ streaming_mode: ASYNC_FOR or ANEXT iteration mode
71
+ connection_timeout: Timeout for anext() mode (None = no timeout)
72
+ yield_event_loop: Whether to yield event loop with asyncio.sleep(0)
73
+ enable_logging: Enable logging
74
+ """
75
+ self.extract_client_id = extract_client_id
76
+ self.process_message = process_message
77
+ self.centrifugo_publisher = centrifugo_publisher
78
+ self.command_ack_extractor = command_ack_extractor
79
+ self.heartbeat_extractor = heartbeat_extractor
80
+ self.heartbeat_callback = heartbeat_callback
81
+ self.streaming_mode = streaming_mode
82
+ self.connection_timeout = connection_timeout
83
+ self.yield_event_loop = yield_event_loop
84
+ self.enable_logging = enable_logging
85
+
86
+ async def process_stream(
87
+ self,
88
+ request_iterator: AsyncIterator[TMessage],
89
+ output_queue: asyncio.Queue[TCommand],
90
+ context: grpc.aio.ServicerContext,
91
+ streaming_service: Optional[Any] = None,
92
+ on_connect: Optional[Any] = None
93
+ ) -> Optional[str]:
94
+ """
95
+ Process incoming message stream.
96
+
97
+ Args:
98
+ request_iterator: Async iterator of incoming messages
99
+ output_queue: Queue for outgoing commands
100
+ context: gRPC service context
101
+ streaming_service: Reference to BidirectionalStreamingService (for callbacks)
102
+ on_connect: Optional callback when client connects
103
+
104
+ Returns:
105
+ client_id if extracted, None otherwise
106
+
107
+ Raises:
108
+ Exception: If critical error occurs during processing
109
+ """
110
+ if self.streaming_mode == StreamingMode.ASYNC_FOR:
111
+ return await self._process_async_for(
112
+ request_iterator,
113
+ output_queue,
114
+ context,
115
+ streaming_service,
116
+ on_connect
117
+ )
118
+ else: # StreamingMode.ANEXT
119
+ return await self._process_anext(
120
+ request_iterator,
121
+ output_queue,
122
+ context,
123
+ streaming_service,
124
+ on_connect
125
+ )
126
+
127
+ async def _process_async_for(
128
+ self,
129
+ request_iterator: AsyncIterator[TMessage],
130
+ output_queue: asyncio.Queue[TCommand],
131
+ context: grpc.aio.ServicerContext,
132
+ streaming_service: Optional[Any] = None,
133
+ on_connect: Optional[Any] = None
134
+ ) -> Optional[str]:
135
+ """Process input stream using async for iteration."""
136
+ client_id: Optional[str] = None
137
+ is_first_message = True
138
+
139
+ try:
140
+ if self.enable_logging:
141
+ logger.info("Starting async for loop")
142
+
143
+ async for message in request_iterator:
144
+ # DEBUG: Log every received message
145
+ msg_type = message.WhichOneof('payload') if hasattr(message, 'WhichOneof') else 'unknown'
146
+ print(f"\nšŸ“„šŸ“„šŸ“„ [INPUT_PROCESSOR] Received message type={msg_type}", flush=True)
147
+ logger.info(f"šŸ“„ [INPUT_PROCESSOR] Received message type={msg_type}")
148
+
149
+ # Extract client ID from first message
150
+ if is_first_message:
151
+ client_id = self.extract_client_id(message)
152
+ is_first_message = False
153
+
154
+ # Register connection in ConnectionManager
155
+ if streaming_service and hasattr(streaming_service, 'connection_manager'):
156
+ streaming_service.connection_manager.register(
157
+ client_id=client_id,
158
+ output_queue=output_queue
159
+ )
160
+
161
+ if self.enable_logging:
162
+ logger.info(f"Client {client_id[:8]}... connected")
163
+
164
+ if on_connect:
165
+ await on_connect(client_id)
166
+
167
+ # Auto-publish to Centrifugo (Client ļæ½ Server message)
168
+ if self.centrifugo_publisher:
169
+ await self.centrifugo_publisher.publish_message(
170
+ client_id=client_id,
171
+ message=message
172
+ )
173
+
174
+
175
+ # Auto-resolve CommandAck (for synchronous RPC)
176
+ if self.command_ack_extractor and streaming_service:
177
+ command_ack = self.command_ack_extractor(message)
178
+ if command_ack and hasattr(command_ack, 'command_id') and command_ack.command_id:
179
+ # Resolve in ResponseRegistry (only if command_id is not empty)
180
+ if hasattr(streaming_service, 'response_registry'):
181
+ await streaming_service.response_registry.resolve_command(
182
+ command_ack.command_id,
183
+ command_ack
184
+ )
185
+ if self.enable_logging:
186
+ logger.debug(
187
+ f"āœ… Auto-resolved CommandAck: {command_ack.command_id} "
188
+ f"(client={client_id[:8]}...)"
189
+ )
190
+ # CommandAck processed, skip user's message_processor
191
+ continue
192
+
193
+ # Auto-handle Heartbeat (for keepalive)
194
+ if self.heartbeat_extractor and self.heartbeat_callback:
195
+ heartbeat = self.heartbeat_extractor(message)
196
+ if heartbeat:
197
+ # Run in background (non-blocking - DB queries can be slow)
198
+ asyncio.create_task(
199
+ self.heartbeat_callback(
200
+ client_id=client_id,
201
+ heartbeat=heartbeat,
202
+ output_queue=output_queue
203
+ )
204
+ )
205
+ if self.enable_logging:
206
+ logger.debug(
207
+ f"šŸ’“ Auto-handled Heartbeat (client={client_id[:8]}...)"
208
+ )
209
+ # Heartbeat processed, skip user's message_processor
210
+ continue
211
+
212
+ # Process message (business logic)
213
+ await self.process_message(
214
+ client_id=client_id,
215
+ message=message,
216
+ output_queue=output_queue,
217
+ streaming_service=streaming_service
218
+ )
219
+
220
+ # ļæ½ CRITICAL: Yield to event loop!
221
+ # Without this, the next message read blocks output loop from yielding.
222
+ if self.yield_event_loop:
223
+ await asyncio.sleep(0)
224
+
225
+ except asyncio.CancelledError:
226
+ if self.enable_logging:
227
+ logger.info(f"Input stream cancelled for client {client_id}")
228
+ raise
229
+
230
+ except Exception as e:
231
+ if self.enable_logging:
232
+ logger.error(
233
+ f"āŒ [INPUT_PROCESSOR] Input stream error for client {client_id}:\n"
234
+ f" Error: {type(e).__name__}: {e}\n"
235
+ f" Traceback:\n{traceback.format_exc()}"
236
+ )
237
+ raise
238
+
239
+ return client_id
240
+
241
+ async def _process_anext(
242
+ self,
243
+ request_iterator: AsyncIterator[TMessage],
244
+ output_queue: asyncio.Queue[TCommand],
245
+ context: grpc.aio.ServicerContext,
246
+ streaming_service: Optional[Any] = None,
247
+ on_connect: Optional[Any] = None
248
+ ) -> Optional[str]:
249
+ """Process input stream using anext() calls."""
250
+ client_id: Optional[str] = None
251
+ is_first_message = True
252
+
253
+ try:
254
+ # DEBUG: Check context state before loop
255
+ print(f"\nšŸ” [INPUT_PROCESSOR] _process_anext starting", flush=True)
256
+ print(f" context.cancelled()={context.cancelled()}", flush=True)
257
+ print(f" request_iterator type={type(request_iterator)}", flush=True)
258
+ if self.enable_logging:
259
+ logger.info(f"_process_anext starting, context.cancelled()={context.cancelled()}")
260
+
261
+ while not context.cancelled():
262
+ try:
263
+ # Get next message with optional timeout
264
+ # NOTE: connection_timeout is for non-blocking read, not for closing connection
265
+ if self.connection_timeout:
266
+ message = await asyncio.wait_for(
267
+ anext(request_iterator),
268
+ timeout=self.connection_timeout,
269
+ )
270
+ else:
271
+ message = await anext(request_iterator)
272
+
273
+ # Extract client ID from first message
274
+ if is_first_message:
275
+ client_id = self.extract_client_id(message)
276
+ is_first_message = False
277
+
278
+ # Register connection in ConnectionManager
279
+ if streaming_service and hasattr(streaming_service, 'connection_manager'):
280
+ streaming_service.connection_manager.register(
281
+ client_id=client_id,
282
+ output_queue=output_queue
283
+ )
284
+
285
+ if self.enable_logging:
286
+ logger.info(f"Client {client_id[:8]}... connected")
287
+
288
+ if on_connect:
289
+ await on_connect(client_id)
290
+
291
+ # Auto-publish to Centrifugo (Client ļæ½ Server message)
292
+ if self.centrifugo_publisher:
293
+ await self.centrifugo_publisher.publish_message(
294
+ client_id=client_id,
295
+ message=message
296
+ )
297
+
298
+ # Auto-resolve CommandAck (for synchronous RPC)
299
+ if self.command_ack_extractor and streaming_service:
300
+ command_ack = self.command_ack_extractor(message)
301
+ if command_ack and hasattr(command_ack, 'command_id') and command_ack.command_id:
302
+ # Resolve in ResponseRegistry (only if command_id is not empty)
303
+ if hasattr(streaming_service, 'response_registry'):
304
+ await streaming_service.response_registry.resolve_command(
305
+ command_ack.command_id,
306
+ command_ack
307
+ )
308
+ if self.enable_logging:
309
+ logger.debug(
310
+ f"āœ… Auto-resolved CommandAck: {command_ack.command_id} "
311
+ f"(client={client_id[:8]}...)"
312
+ )
313
+ # CommandAck processed, skip user's message_processor
314
+ continue
315
+
316
+ # Auto-handle Heartbeat (for keepalive)
317
+ if self.heartbeat_extractor and self.heartbeat_callback:
318
+ heartbeat = self.heartbeat_extractor(message)
319
+ if heartbeat:
320
+ # Run in background (non-blocking - DB queries can be slow)
321
+ asyncio.create_task(
322
+ self.heartbeat_callback(
323
+ client_id=client_id,
324
+ heartbeat=heartbeat,
325
+ output_queue=output_queue
326
+ )
327
+ )
328
+ if self.enable_logging:
329
+ logger.debug(
330
+ f"šŸ’“ Auto-handled Heartbeat (client={client_id[:8]}...)"
331
+ )
332
+ # Heartbeat processed, skip user's message_processor
333
+ continue
334
+
335
+ # Process message (business logic)
336
+ await self.process_message(
337
+ client_id=client_id,
338
+ message=message,
339
+ output_queue=output_queue,
340
+ streaming_service=streaming_service
341
+ )
342
+
343
+ # ļæ½ CRITICAL: Yield to event loop!
344
+ if self.yield_event_loop:
345
+ await asyncio.sleep(0)
346
+
347
+ except StopAsyncIteration:
348
+ # Stream ended normally
349
+ print(f" āš ļø StopAsyncIteration - stream ended", flush=True)
350
+ if self.enable_logging:
351
+ logger.info(f"Client {client_id} stream ended")
352
+ break
353
+
354
+ except asyncio.TimeoutError:
355
+ # connection_timeout is for non-blocking read, NOT for closing connection.
356
+ # Just continue the loop to check context.cancelled() and wait for more messages.
357
+ # The real connection timeout should be handled via ping_timeout in OutputProcessor.
358
+ continue
359
+
360
+ # DEBUG: Log when while loop exits normally (context.cancelled() == True)
361
+ if self.enable_logging:
362
+ logger.info(f"_process_anext while loop exited, context.cancelled()={context.cancelled()}, client_id={client_id}")
363
+
364
+ except asyncio.CancelledError:
365
+ print(f" 🚫 CancelledError - input stream cancelled (client_id={client_id})", flush=True)
366
+ if self.enable_logging:
367
+ logger.info(f"Input stream cancelled for client {client_id}")
368
+ raise
369
+
370
+ except Exception as e:
371
+ print(f" āŒ Exception: {type(e).__name__}: {e}", flush=True)
372
+ if self.enable_logging:
373
+ logger.error(
374
+ f"āŒ [INPUT_PROCESSOR] Input stream error (anext) for client {client_id}:\n"
375
+ f" Error: {type(e).__name__}: {e}\n"
376
+ f" Traceback:\n{traceback.format_exc()}"
377
+ )
378
+ raise
379
+
380
+ print(f" šŸ _process_anext returning, client_id={client_id}", flush=True)
381
+ return client_id
382
+
383
+
384
+ # ============================================================================
385
+ # Exports
386
+ # ============================================================================
387
+
388
+ __all__ = [
389
+ 'InputProcessor',
390
+ ]