django-cfg 1.5.20__py3-none-any.whl → 1.5.31__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.

Potentially problematic release.


This version of django-cfg might be problematic. Click here for more details.

Files changed (98) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/integrations/centrifugo/__init__.py +2 -0
  3. django_cfg/apps/integrations/centrifugo/services/client/client.py +1 -1
  4. django_cfg/apps/integrations/centrifugo/services/logging.py +90 -14
  5. django_cfg/apps/integrations/centrifugo/views/admin_api.py +29 -32
  6. django_cfg/apps/integrations/centrifugo/views/testing_api.py +47 -43
  7. django_cfg/apps/integrations/centrifugo/views/wrapper.py +41 -29
  8. django_cfg/apps/integrations/grpc/auth/api_key_auth.py +11 -10
  9. django_cfg/apps/integrations/grpc/management/commands/generate_protos.py +1 -1
  10. django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +22 -36
  11. django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +84 -0
  12. django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +126 -3
  13. django_cfg/apps/integrations/grpc/models/grpc_api_key.py +7 -1
  14. django_cfg/apps/integrations/grpc/models/grpc_server_status.py +22 -3
  15. django_cfg/apps/integrations/grpc/services/__init__.py +102 -17
  16. django_cfg/apps/integrations/grpc/services/centrifugo/bridge.py +469 -0
  17. django_cfg/apps/integrations/grpc/{centrifugo → services/centrifugo}/demo.py +1 -1
  18. django_cfg/apps/integrations/grpc/{centrifugo → services/centrifugo}/test_publish.py +4 -4
  19. django_cfg/apps/integrations/grpc/services/client/__init__.py +26 -0
  20. django_cfg/apps/integrations/grpc/services/commands/IMPLEMENTATION.md +456 -0
  21. django_cfg/apps/integrations/grpc/services/commands/README.md +252 -0
  22. django_cfg/apps/integrations/grpc/services/commands/__init__.py +93 -0
  23. django_cfg/apps/integrations/grpc/services/commands/base.py +243 -0
  24. django_cfg/apps/integrations/grpc/services/commands/examples/__init__.py +22 -0
  25. django_cfg/apps/integrations/grpc/services/commands/examples/base_client.py +228 -0
  26. django_cfg/apps/integrations/grpc/services/commands/examples/client.py +272 -0
  27. django_cfg/apps/integrations/grpc/services/commands/examples/config.py +177 -0
  28. django_cfg/apps/integrations/grpc/services/commands/examples/start.py +125 -0
  29. django_cfg/apps/integrations/grpc/services/commands/examples/stop.py +101 -0
  30. django_cfg/apps/integrations/grpc/services/commands/registry.py +170 -0
  31. django_cfg/apps/integrations/grpc/services/discovery/__init__.py +39 -0
  32. django_cfg/apps/integrations/grpc/services/{discovery.py → discovery/discovery.py} +62 -55
  33. django_cfg/apps/integrations/grpc/services/{service_registry.py → discovery/registry.py} +216 -5
  34. django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/metrics.py +3 -3
  35. django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/request_logger.py +10 -13
  36. django_cfg/apps/integrations/grpc/services/management/__init__.py +37 -0
  37. django_cfg/apps/integrations/grpc/services/monitoring/__init__.py +38 -0
  38. django_cfg/apps/integrations/grpc/services/{monitoring_service.py → monitoring/monitoring.py} +2 -2
  39. django_cfg/apps/integrations/grpc/services/{testing_service.py → monitoring/testing.py} +5 -5
  40. django_cfg/apps/integrations/grpc/services/rendering/__init__.py +27 -0
  41. django_cfg/apps/integrations/grpc/services/{chart_generator.py → rendering/charts.py} +1 -1
  42. django_cfg/apps/integrations/grpc/services/routing/__init__.py +59 -0
  43. django_cfg/apps/integrations/grpc/services/routing/config.py +76 -0
  44. django_cfg/apps/integrations/grpc/services/routing/router.py +430 -0
  45. django_cfg/apps/integrations/grpc/services/streaming/__init__.py +117 -0
  46. django_cfg/apps/integrations/grpc/services/streaming/config.py +451 -0
  47. django_cfg/apps/integrations/grpc/services/streaming/service.py +651 -0
  48. django_cfg/apps/integrations/grpc/services/streaming/types.py +367 -0
  49. django_cfg/apps/integrations/grpc/utils/__init__.py +58 -1
  50. django_cfg/apps/integrations/grpc/utils/converters.py +565 -0
  51. django_cfg/apps/integrations/grpc/utils/handlers.py +242 -0
  52. django_cfg/apps/integrations/grpc/utils/proto_gen.py +1 -1
  53. django_cfg/apps/integrations/grpc/utils/streaming_logger.py +55 -8
  54. django_cfg/apps/integrations/grpc/views/charts.py +1 -1
  55. django_cfg/apps/integrations/grpc/views/config.py +1 -1
  56. django_cfg/core/base/config_model.py +11 -0
  57. django_cfg/core/builders/middleware_builder.py +5 -0
  58. django_cfg/management/commands/pool_status.py +153 -0
  59. django_cfg/middleware/pool_cleanup.py +261 -0
  60. django_cfg/models/api/grpc/config.py +2 -2
  61. django_cfg/models/infrastructure/database/config.py +16 -0
  62. django_cfg/models/infrastructure/database/converters.py +2 -0
  63. django_cfg/modules/django_admin/utils/html/composition.py +57 -13
  64. django_cfg/modules/django_admin/utils/html_builder.py +1 -0
  65. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +12 -0
  66. django_cfg/modules/django_client/core/generator/typescript/generator.py +8 -0
  67. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja +22 -0
  68. django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +4 -0
  69. django_cfg/modules/django_client/core/generator/typescript/templates/utils/validation-events.ts.jinja +133 -0
  70. django_cfg/modules/django_client/core/groups/manager.py +25 -18
  71. django_cfg/modules/django_client/management/commands/generate_client.py +9 -5
  72. django_cfg/modules/django_client/urls.py +38 -5
  73. django_cfg/modules/django_logging/django_logger.py +58 -19
  74. django_cfg/modules/django_twilio/email_otp.py +3 -1
  75. django_cfg/modules/django_twilio/sms.py +3 -1
  76. django_cfg/modules/django_twilio/unified.py +6 -2
  77. django_cfg/modules/django_twilio/whatsapp.py +3 -1
  78. django_cfg/pyproject.toml +3 -3
  79. django_cfg/static/frontend/admin.zip +0 -0
  80. django_cfg/templates/admin/index.html +17 -57
  81. django_cfg/utils/pool_monitor.py +320 -0
  82. django_cfg/utils/smart_defaults.py +233 -7
  83. {django_cfg-1.5.20.dist-info → django_cfg-1.5.31.dist-info}/METADATA +75 -5
  84. {django_cfg-1.5.20.dist-info → django_cfg-1.5.31.dist-info}/RECORD +97 -68
  85. django_cfg/apps/integrations/grpc/centrifugo/bridge.py +0 -277
  86. /django_cfg/apps/integrations/grpc/{centrifugo → services/centrifugo}/__init__.py +0 -0
  87. /django_cfg/apps/integrations/grpc/{centrifugo → services/centrifugo}/config.py +0 -0
  88. /django_cfg/apps/integrations/grpc/{centrifugo → services/centrifugo}/transformers.py +0 -0
  89. /django_cfg/apps/integrations/grpc/services/{grpc_client.py → client/client.py} +0 -0
  90. /django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/__init__.py +0 -0
  91. /django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/centrifugo.py +0 -0
  92. /django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/errors.py +0 -0
  93. /django_cfg/apps/integrations/grpc/{interceptors → services/interceptors}/logging.py +0 -0
  94. /django_cfg/apps/integrations/grpc/services/{config_helper.py → management/config_helper.py} +0 -0
  95. /django_cfg/apps/integrations/grpc/services/{proto_files_manager.py → management/proto_manager.py} +0 -0
  96. {django_cfg-1.5.20.dist-info → django_cfg-1.5.31.dist-info}/WHEEL +0 -0
  97. {django_cfg-1.5.20.dist-info → django_cfg-1.5.31.dist-info}/entry_points.txt +0 -0
  98. {django_cfg-1.5.20.dist-info → django_cfg-1.5.31.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.5.20
3
+ Version: 1.5.31
4
4
  Summary: Modern Django framework with type-safe Pydantic v2 configuration, Next.js admin integration, real-time WebSockets, and 8 enterprise apps. Replace settings.py with validated models, 90% less code. Production-ready with AI agents, auto-generated TypeScript clients, and zero-config features.
5
5
  Project-URL: Homepage, https://djangocfg.com
6
6
  Project-URL: Documentation, https://djangocfg.com
@@ -116,6 +116,7 @@ Requires-Dist: mkdocs>=1.5; extra == 'docs'
116
116
  Requires-Dist: mkdocstrings[python]>=0.24; extra == 'docs'
117
117
  Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
118
118
  Provides-Extra: full
119
+ Requires-Dist: aiobreaker<2.0,>=1.2.0; extra == 'full'
119
120
  Requires-Dist: black>=23.0; extra == 'full'
120
121
  Requires-Dist: build>=1.0; extra == 'full'
121
122
  Requires-Dist: cent<6.0,>=5.0.0; extra == 'full'
@@ -150,6 +151,7 @@ Requires-Dist: tomlkit>=0.11; extra == 'full'
150
151
  Requires-Dist: twine>=4.0; extra == 'full'
151
152
  Requires-Dist: websockets<15.0,>=13.0; extra == 'full'
152
153
  Provides-Extra: grpc
154
+ Requires-Dist: aiobreaker<2.0,>=1.2.0; extra == 'grpc'
153
155
  Requires-Dist: grpcio-health-checking<2.0,>=1.50.0; extra == 'grpc'
154
156
  Requires-Dist: grpcio-reflection<2.0,>=1.50.0; extra == 'grpc'
155
157
  Requires-Dist: grpcio-tools<2.0,>=1.50.0; extra == 'grpc'
@@ -194,7 +196,7 @@ Description-Content-Type: text/markdown
194
196
 
195
197
  ### 🚀 The Modern Django Framework for Enterprise Applications
196
198
 
197
- **Type-safe configuration** • **Next.js Admin** • **AI Agents** • **Real-time WebSockets** • **8 Enterprise Apps**
199
+ **Type-safe configuration** • **Next.js Admin** • **gRPC Streaming** • **Real-time WebSockets** • **AI Agents** • **8 Enterprise Apps**
198
200
 
199
201
  **[🎯 Live Demo](http://demo.djangocfg.com)** • **[📚 Documentation](https://djangocfg.com/docs/getting-started/intro)** • **[🐙 GitHub](https://github.com/markolofsen/django-cfg)**
200
202
 
@@ -394,6 +396,72 @@ class MyConfig(DjangoConfig):
394
396
 
395
397
  ---
396
398
 
399
+ ### 🌐 gRPC Microservices & Streaming
400
+
401
+ **Production-ready gRPC integration** - bidirectional streaming, WebSocket bridge, and type-safe Protobuf.
402
+
403
+ ```python
404
+ from django_cfg.apps.integrations.grpc.services.centrifugo import (
405
+ CentrifugoBridgeMixin,
406
+ CentrifugoChannels,
407
+ ChannelConfig,
408
+ )
409
+
410
+ # Define type-safe channel mappings
411
+ class BotChannels(CentrifugoChannels):
412
+ heartbeat: ChannelConfig = ChannelConfig(
413
+ template='bot#{bot_id}#heartbeat',
414
+ rate_limit=5.0, # Max once per 5 seconds
415
+ )
416
+ status: ChannelConfig = ChannelConfig(
417
+ template='bot#{bot_id}#status',
418
+ critical=True, # Bypass rate limiting
419
+ )
420
+
421
+ # gRPC service with automatic WebSocket publishing
422
+ class BotStreamingService(
423
+ pb2_grpc.BotStreamingServiceServicer,
424
+ CentrifugoBridgeMixin # ← One-line WebSocket integration
425
+ ):
426
+ centrifugo_channels = BotChannels()
427
+
428
+ async def ConnectBot(self, request_iterator, context):
429
+ async for message in request_iterator:
430
+ # Your business logic
431
+ await process_message(message)
432
+
433
+ # Auto-publish to WebSocket (1 line!)
434
+ await self._notify_centrifugo(message, bot_id=bot_id)
435
+ ```
436
+
437
+ **Built-in features:**
438
+ - 🔄 **Bidirectional Streaming** - Full-duplex gRPC communication
439
+ - 🌉 **Centrifugo Bridge** - Auto-publish gRPC events to WebSocket
440
+ - 🛡️ **Circuit Breaker** - Graceful degradation if Centrifugo unavailable
441
+ - 🔁 **Auto Retry** - Exponential backoff for critical events
442
+ - 📦 **Dead Letter Queue** - Never lose important messages
443
+ - ⚡ **Rate Limiting** - Per-channel throttling with critical bypass
444
+ - 🎯 **Type-Safe Config** - Pydantic v2 validation for channels
445
+
446
+ **Architecture:**
447
+ ```
448
+ Trading Bot ──gRPC──> Django gRPC Service ──WebSocket──> Browser
449
+
450
+ [Business Logic]
451
+ [Database Save]
452
+ [Centrifugo Publish]
453
+ ```
454
+
455
+ **Why this approach?**
456
+ - ✅ Django controls all business logic and validation
457
+ - ✅ Single source of truth for data transformations
458
+ - ✅ Graceful degradation - gRPC works even if WebSocket fails
459
+ - ✅ Production-ready resilience patterns built-in
460
+
461
+ **[📚 gRPC Integration Guide →](https://djangocfg.com/docs/features/integrations/grpc)**
462
+
463
+ ---
464
+
397
465
  ### 🤖 AI-Ready Infrastructure
398
466
 
399
467
  **Built-in AI agent framework** - LLM workflow automation with Django ORM integration.
@@ -585,9 +653,11 @@ class ProductionConfig(DjangoConfig):
585
653
  - **[Quick Start](https://djangocfg.com/docs/features/integrations/nextjs-admin/quick-start)** - 5-minute setup
586
654
  - **[Configuration](https://djangocfg.com/docs/features/integrations/nextjs-admin/configuration)** - All options
587
655
 
588
- ### 📡 Real-Time Features
656
+ ### 📡 Real-Time & Microservices
589
657
  - **[Centrifugo Integration](https://djangocfg.com/docs/features/integrations/centrifugo)** - WebSocket setup
590
658
  - **[Live Updates](https://djangocfg.com/docs/features/integrations/centrifugo/live-updates)** - Real-time data
659
+ - **[gRPC Streaming](https://djangocfg.com/docs/features/integrations/grpc)** - Bidirectional streaming
660
+ - **[gRPC → WebSocket Bridge](https://djangocfg.com/docs/features/integrations/grpc/centrifugo-bridge)** - Auto-publish to clients
591
661
 
592
662
  ### 🏗️ Core Features
593
663
  - **[Built-in Apps](https://djangocfg.com/docs/features/built-in-apps/overview)** - 8 enterprise apps
@@ -632,9 +702,9 @@ class ProductionConfig(DjangoConfig):
632
702
 
633
703
  <div align="center">
634
704
 
635
- **Modern Django Framework** • **Type-Safe Configuration** • **Next.js Admin** • **Real-Time WebSockets** • **AI-Ready**
705
+ **Modern Django Framework** • **Type-Safe Configuration** • **Next.js Admin** • **gRPC Streaming** • **Real-Time WebSockets** • **AI-Ready**
636
706
 
637
- Django-CFG is the modern Django framework for enterprise applications. Built with Pydantic v2 for type-safe configuration, includes Next.js admin integration, Centrifugo WebSocket support, AI agent framework, and 8 production-ready apps. Perfect for building scalable Django applications with reduced boilerplate and enterprise features out of the box.
707
+ Django-CFG is the modern Django framework for enterprise applications. Built with Pydantic v2 for type-safe configuration, includes Next.js admin integration, gRPC bidirectional streaming with WebSocket bridge, Centrifugo real-time support, AI agent framework, and 8 production-ready apps. Perfect for building scalable microservices and real-time Django applications with reduced boilerplate and enterprise features out of the box.
638
708
 
639
709
  ---
640
710
 
@@ -1,5 +1,5 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=7vWY05VFSatnf83RG0vpsyHNxZ99xvs6XoK4aTms40Q,1822
2
+ django_cfg/__init__.py,sha256=D5Xv2whEAdJnyt2NXLAkpDOQ700x6HQ92QzLkYJRwUs,1822
3
3
  django_cfg/apps.py,sha256=72m3uuvyqGiLx6gOfE-BD3P61jddCCERuBOYpxTX518,1605
4
4
  django_cfg/config.py,sha256=ZqvSbFje8LJS5NtXTZsnUErgcUSCHa251LNfjEatZtY,2152
5
5
  django_cfg/requirements.txt,sha256=NQjf3cPCjzPMaGFewhJxGNHnUdE9gE8yTXDEBIt0vuA,2682
@@ -362,7 +362,7 @@ django_cfg/apps/business/support/views/admin.py,sha256=3bofdyoFWPhip0kia7WTFW_4y
362
362
  django_cfg/apps/business/support/views/api.py,sha256=8hHY-j6EZpSdYkT6JA8_yo7LJKPpSon3DVNWl6jfGRw,5506
363
363
  django_cfg/apps/business/support/views/chat.py,sha256=wbWR_UgvdgYBYlhHJBLJRPpVm7V44bNy5NZWHqBx2AE,3255
364
364
  django_cfg/apps/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
365
- django_cfg/apps/integrations/centrifugo/__init__.py,sha256=EOgnKnOKLntnK0XdppncfoPKvltEUPBmQmBgx9NZ20Y,1859
365
+ django_cfg/apps/integrations/centrifugo/__init__.py,sha256=U-0e1-N9e3VOhxBHe7t3wOn0kcAUEe4R5-7ARt1ck-Q,1955
366
366
  django_cfg/apps/integrations/centrifugo/apps.py,sha256=dYs1FA8HpGj3WKJQIMTa-DwjIyGNkDx0lB1_dMAOwuw,2987
367
367
  django_cfg/apps/integrations/centrifugo/decorators.py,sha256=J3KA0ll3lYwU_gLPKmfmB0HQ5vFnbSABbCNOjKm3y-Y,4174
368
368
  django_cfg/apps/integrations/centrifugo/registry.py,sha256=HRaBN39UlCMX6ZAysYhdCWMlzAx1scGTvgZLyl3MCjc,2819
@@ -426,20 +426,20 @@ django_cfg/apps/integrations/centrifugo/serializers/stats.py,sha256=OAoulxUY_8Lh
426
426
  django_cfg/apps/integrations/centrifugo/services/__init__.py,sha256=q0Dzm_gIrKcCgCrRAPLxKY-n_FZUWHtrKMCgZ110ZVg,507
427
427
  django_cfg/apps/integrations/centrifugo/services/config_helper.py,sha256=d2eT8AczcCRl-v2OqZUu0n-MvSt42GWJOD7tJTHKiSg,1583
428
428
  django_cfg/apps/integrations/centrifugo/services/dashboard_notifier.py,sha256=uagZMbykw4GjX-mqlekCYjR6tgLMifWe2c9mwIjYrLU,4793
429
- django_cfg/apps/integrations/centrifugo/services/logging.py,sha256=_pNm0zW0jqAy9zAlB4wtGnwy3bt3zmbClTswEKMyCqI,21840
429
+ django_cfg/apps/integrations/centrifugo/services/logging.py,sha256=_A07mXEz0X5hvtQUOFq5H-aBJbbvhQri9ceMutBz8WU,24434
430
430
  django_cfg/apps/integrations/centrifugo/services/publisher.py,sha256=9p2vF03yJWZQOrMMpWFwmv29azsTIAI31it7ac37giU,11232
431
431
  django_cfg/apps/integrations/centrifugo/services/token_generator.py,sha256=hjNKRg5neOYv1LytjrpOQBsBiBPx4wcPrbbglTJieh8,3375
432
432
  django_cfg/apps/integrations/centrifugo/services/client/__init__.py,sha256=IH3RKQTnahybxlFp20X189A5MzWs-kxTnSSoN0Bt8pQ,1003
433
- django_cfg/apps/integrations/centrifugo/services/client/client.py,sha256=8pyAKAzzHHWSk8R7u37VNbAcWSXLhEZLOVkADh22i84,18964
433
+ django_cfg/apps/integrations/centrifugo/services/client/client.py,sha256=7PjCaQTba5xKYUBDhCELYuUxyr8SprEAnWMZ3sZvrig,18976
434
434
  django_cfg/apps/integrations/centrifugo/services/client/config.py,sha256=p8Vz91XH-EHJucIGYHI6u20UuuJ0NQTjUDaxmzJ7RIc,6965
435
435
  django_cfg/apps/integrations/centrifugo/services/client/direct_client.py,sha256=DfohtVwe2SNc51XF-X5G3bRI9nWEC1Z22Xe2uNCIiqw,8738
436
436
  django_cfg/apps/integrations/centrifugo/services/client/exceptions.py,sha256=VsYExbk_H-qOaPa3iFUWBa1HMgw1IObil73JI1FhcDM,6263
437
437
  django_cfg/apps/integrations/centrifugo/views/__init__.py,sha256=ieaKBQSQeOi57BS3CUJltoqLDeAIgcixkT9YzsGK9c4,370
438
- django_cfg/apps/integrations/centrifugo/views/admin_api.py,sha256=ECD7W7v0o6cvo4OShZ0K5OgluNxKqReRcNn9aIZjcg4,13888
438
+ django_cfg/apps/integrations/centrifugo/views/admin_api.py,sha256=BBxyJo3c7ROivU191gjI7kiJojC4HwMTQsS3td7NSXI,13855
439
439
  django_cfg/apps/integrations/centrifugo/views/monitoring.py,sha256=UM9tdgeFpcXYai3dYpf6lJT4jq8DkrT1OMjiuiTCjBE,13756
440
- django_cfg/apps/integrations/centrifugo/views/testing_api.py,sha256=5GeIhdrTn26wa8xoV0_FcQJhDVhWsHb5AEP5YLz7MMY,14123
440
+ django_cfg/apps/integrations/centrifugo/views/testing_api.py,sha256=HzLplNbKGJHyztkBseVJ9FIGE6fVLGu2E1WCmEvBlLI,14462
441
441
  django_cfg/apps/integrations/centrifugo/views/token_api.py,sha256=j5_9DALkFzzOmiC_JTdIlppra67WzJq-E_OAzaxWeqQ,3499
442
- django_cfg/apps/integrations/centrifugo/views/wrapper.py,sha256=GM2l0QNbw0mVpI9GdlhhKnVrooeEHa9VoCqMIpl9GNc,8426
442
+ django_cfg/apps/integrations/centrifugo/views/wrapper.py,sha256=sf14OqS2VoJFJGsptGhcASP0hbLujgYNJLN57inp4GQ,9005
443
443
  django_cfg/apps/integrations/grpc/__init__.py,sha256=mzsALD2x44rGQNNh3mIUFi7flQj6PvS1wPq-0TeBz3c,235
444
444
  django_cfg/apps/integrations/grpc/apps.py,sha256=RF605ivjVMIVbQKIWhGKoDkYfJR9hk3Ou-hCQbBDfzY,3148
445
445
  django_cfg/apps/integrations/grpc/urls.py,sha256=Hq1tpLQljoWifXIYudDDYytMeFO60m1FPE17gTAMlTg,1375
@@ -453,31 +453,19 @@ django_cfg/apps/integrations/grpc/admin/grpc_api_key.py,sha256=a3PLso6XqkqAws-o3
453
453
  django_cfg/apps/integrations/grpc/admin/grpc_request_log.py,sha256=aBQscXcBjWhYq_2WKrxTnRdjBmy-qAXNcJkrcoIPc_0,9314
454
454
  django_cfg/apps/integrations/grpc/admin/grpc_server_status.py,sha256=aGEmCFk-WFDci4myzvIlkT88-Tr-UOcAe8QeWUH-1_E,8123
455
455
  django_cfg/apps/integrations/grpc/auth/__init__.py,sha256=A2CloEosP2mSte9j80PrtGdYG723Eerg6sHim2YTOCE,312
456
- django_cfg/apps/integrations/grpc/auth/api_key_auth.py,sha256=asrG7CDo1MKOXtBxCt-ZRsbLq-GeMsLr3gDXvXPxtKU,12193
457
- django_cfg/apps/integrations/grpc/centrifugo/__init__.py,sha256=7jWO3EmYbL5vNnqkP1o4qeBKYicfz9Heu_hx5ChDAPY,620
458
- django_cfg/apps/integrations/grpc/centrifugo/bridge.py,sha256=_XobJgUSQW90V2o4czQgJEJXUyFC3-7HqEYgqAq6iOA,9363
459
- django_cfg/apps/integrations/grpc/centrifugo/config.py,sha256=a7bvTw3HjyYp1Lfqw5qmZlq6LNDzNEgDqCRTNIVSxxU,4791
460
- django_cfg/apps/integrations/grpc/centrifugo/demo.py,sha256=qlxp8NfVmpxRkGWg5l3FRRFJrtIWbJVdWtW_wYcSiZQ,19338
461
- django_cfg/apps/integrations/grpc/centrifugo/test_publish.py,sha256=Vv4V78VnREm-g6S_mpSMutsdeND3EcEt0iJUT8hbj8U,6899
462
- django_cfg/apps/integrations/grpc/centrifugo/transformers.py,sha256=KBK4UZNpdsZl7TL1wGm8KOTa4sU-0qUmF2JT6UJw80k,2259
463
- django_cfg/apps/integrations/grpc/interceptors/__init__.py,sha256=Gp2cQ7PZ3VbpulsU-vB1VwF67DFY5JIURuZoRSopOoM,603
464
- django_cfg/apps/integrations/grpc/interceptors/centrifugo.py,sha256=xhIH6JC6gwudPUfQrUX4MDz2mdUp9SYT455AvBGQ_3Q,19880
465
- django_cfg/apps/integrations/grpc/interceptors/errors.py,sha256=rbhUhD_gwKESiGqFDsGR9bQ-x3zJdM0FxZ2ytb-rK_E,7968
466
- django_cfg/apps/integrations/grpc/interceptors/logging.py,sha256=qhp9a6cNFKulFWevJV1cEie0b1Sa9_9aGUkYqHhhOAs,9468
467
- django_cfg/apps/integrations/grpc/interceptors/metrics.py,sha256=dLTAvSeWEcCgdqlaxRO_L00k7ICwoVcZLh8U5eAXtMs,10009
468
- django_cfg/apps/integrations/grpc/interceptors/request_logger.py,sha256=LMZrJbKqIijdrcCE2jGeMZz-JXossX3XOb8jK78xVfE,18009
456
+ django_cfg/apps/integrations/grpc/auth/api_key_auth.py,sha256=nfXSax14UFzygdbTPaPxhwJA2zo_Gq7aMhZII-KdyW0,12098
469
457
  django_cfg/apps/integrations/grpc/management/__init__.py,sha256=qeaIQO1EY_-VkrUFRigi-UGbrHmN6U_0ZetCQkjDGvk,40
470
458
  django_cfg/apps/integrations/grpc/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
471
459
  django_cfg/apps/integrations/grpc/management/commands/compile_proto.py,sha256=5978_OnFOz6j1m_XG1amlZ3U2dVw3w3395I5ktx2mIA,3440
472
- django_cfg/apps/integrations/grpc/management/commands/generate_protos.py,sha256=e1xqimCeC2Lj_sJWMBP286ZRtKI8kYKjFZm8-HPM6gY,6607
473
- django_cfg/apps/integrations/grpc/management/commands/rungrpc.py,sha256=YqAUyvxwpahlVElGOhCUtfKJlmUmSNVSV5jSFR7_dO0,31365
460
+ django_cfg/apps/integrations/grpc/management/commands/generate_protos.py,sha256=zCGEncUf3kfT_PkvECbAOzBjrzzBx9iTYxq49tie9yg,6618
461
+ django_cfg/apps/integrations/grpc/management/commands/rungrpc.py,sha256=PvQK-bRJjCRNuP4Ip9HJIuNM2ehbuEFKHM1rDh3JA8A,30974
474
462
  django_cfg/apps/integrations/grpc/management/commands/test_grpc_integration.py,sha256=lyKkjIUVNSmMgQdmd9Ko82hp3CZQgdVDCGU1NSxxvd8,2146
475
463
  django_cfg/apps/integrations/grpc/management/proto/__init__.py,sha256=2esCFQpr2J0ERGvQaHsR-LOElHV1iXT1AK9McWlJ9g0,57
476
464
  django_cfg/apps/integrations/grpc/management/proto/compiler.py,sha256=9qcIcPUeXqpJ-U0WdHYArCH0l0it_9nLNWt0GfK2E4E,5827
477
465
  django_cfg/apps/integrations/grpc/managers/__init__.py,sha256=esYhaeeiC83NKQPbWW__RQ20NGMMg-ReyNtlXV4LH6Y,345
478
466
  django_cfg/apps/integrations/grpc/managers/grpc_api_key.py,sha256=hu0zL2YS4fVKtTurj0zZ8X4MUVBSc4AirnA79mkdFR4,4851
479
- django_cfg/apps/integrations/grpc/managers/grpc_request_log.py,sha256=QvRgXmPkSkJKdOOguiPIhwWzmXKx7gF30MfR52rVDfQ,9315
480
- django_cfg/apps/integrations/grpc/managers/grpc_server_status.py,sha256=9CPpVgUpC2Qes6DqWwDSI0XukfKWZX8Xri_72qK4M4c,8500
467
+ django_cfg/apps/integrations/grpc/managers/grpc_request_log.py,sha256=c3NxCsqIg5mqjO_NrlWYRVMQHKBAK_ZyMu91977CSQ0,11836
468
+ django_cfg/apps/integrations/grpc/managers/grpc_server_status.py,sha256=ri39wTo5uiqSNObKTG7-rUjDqgsZUigHSmLIPBP3ieQ,12413
481
469
  django_cfg/apps/integrations/grpc/migrations/0001_initial.py,sha256=Wa-uP4JualP-Qrz37HUTzZnRtU_Urz-JWH7F9oT1yzY,4562
482
470
  django_cfg/apps/integrations/grpc/migrations/0002_rename_django_cfg__service_4c4a8e_idx_django_cfg__service_584308_idx_and_more.py,sha256=88Ox17gYjdhYEymiKbt8F8-clVoad56gm7xSaJCtNvQ,1179
483
471
  django_cfg/apps/integrations/grpc/migrations/0003_grpcserverstatus.py,sha256=CvTxgc9CJEvjTZfl8HfHMHukGJjNx2w2K7Lle1lbqTc,4613
@@ -486,9 +474,9 @@ django_cfg/apps/integrations/grpc/migrations/0005_grpcapikey.py,sha256=aZSYBPtux
486
474
  django_cfg/apps/integrations/grpc/migrations/0006_grpcrequestlog_api_key_and_more.py,sha256=z8BaLFRmmzmKdrhjAp6E6xlR_njnMPRZWTjV_UqrTF8,1010
487
475
  django_cfg/apps/integrations/grpc/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
488
476
  django_cfg/apps/integrations/grpc/models/__init__.py,sha256=a-1vjS6L-stjNTDUn8OUw3m3jxQCsbxoixdrCiPc_tk,240
489
- django_cfg/apps/integrations/grpc/models/grpc_api_key.py,sha256=gZ4shrRNOfzkBsCPupUQk3kyoy0bRrj8Hf3T5hZ-BCw,5454
477
+ django_cfg/apps/integrations/grpc/models/grpc_api_key.py,sha256=_eqNOaM6ampfV58Gnuct_geravgOuMxRzfydZgCRM3k,5753
490
478
  django_cfg/apps/integrations/grpc/models/grpc_request_log.py,sha256=CggWp4FwpJ4AyRFUhLhYTd1DTVMMtyIAeGhr0hqWSRg,6080
491
- django_cfg/apps/integrations/grpc/models/grpc_server_status.py,sha256=FQ9J8RPBZajFKGAu6F3mTHdKaSw4s2S-gMs9AJVRQJo,8897
479
+ django_cfg/apps/integrations/grpc/models/grpc_server_status.py,sha256=ddKlp45BJLJbJ7Pywx_vtuz5EIkU4Vw9HwnlriKDWZk,9807
492
480
  django_cfg/apps/integrations/grpc/serializers/__init__.py,sha256=phrJr74amte_2AKMgMsMdSLhQu_xE8V-FSUIOp_qiF8,2244
493
481
  django_cfg/apps/integrations/grpc/serializers/api_keys.py,sha256=pnr2iR-mQJeo-Y-r59EYHyX-rFHeIDb0lUFfpyIgl7c,2356
494
482
  django_cfg/apps/integrations/grpc/serializers/charts.py,sha256=N4Uojw6FOo9W5sl6RsrGhD3s7YsQF1Aav5YJHb1OJ04,8965
@@ -500,27 +488,64 @@ django_cfg/apps/integrations/grpc/serializers/service_registry.py,sha256=9HusXFl
500
488
  django_cfg/apps/integrations/grpc/serializers/services.py,sha256=CY8SQ5cLSEPK9nvHS4EZ4silBAIyADpxQZgJArr4I-0,1059
501
489
  django_cfg/apps/integrations/grpc/serializers/stats.py,sha256=PquPBqE0E7uImbUqLSGYCRT1r3cJmgrTl1_cdhli-R8,3252
502
490
  django_cfg/apps/integrations/grpc/serializers/testing.py,sha256=MjZ_6UyxNH6A7pepp7hXnaH-amKorKhCWZvdFjbqswA,4293
503
- django_cfg/apps/integrations/grpc/services/__init__.py,sha256=gpPmiXikBUrd3txE9CyLD2964f-MHSqpGdxZu7DHOLA,1151
491
+ django_cfg/apps/integrations/grpc/services/__init__.py,sha256=T6KaTpqghLfvMiWK5vK_Y-aBtiUEHWLE7SamOqnGOYk,3585
504
492
  django_cfg/apps/integrations/grpc/services/base.py,sha256=ieN4GiAzEDgQVc7sHsxgTy7-QQKnDNo2rFBedhc1ySE,11148
505
- django_cfg/apps/integrations/grpc/services/chart_generator.py,sha256=3iE05iBql06Iuv6VnJ8zJ4v8EArnV0Z48DMTQ2DPOIM,14921
506
- django_cfg/apps/integrations/grpc/services/config_helper.py,sha256=234QZ8CTNkYkmRFbL_4pyawQR0IQO5n0vTlSI2Ecigg,3480
507
- django_cfg/apps/integrations/grpc/services/discovery.py,sha256=XbYuJvgSB13w2Ptg8JLBqH3IWCbaO8qfEw2XeRkrNJo,19972
508
- django_cfg/apps/integrations/grpc/services/grpc_client.py,sha256=FArKYlT1EZowyZyI7hbLDmzt6iTVGYPiHXvxwe8mS-A,21996
509
- django_cfg/apps/integrations/grpc/services/monitoring_service.py,sha256=UgP5xFbkzDkoMNl4G2NmVFzeRcjlPNTiP0PK5bLkMi8,13244
510
- django_cfg/apps/integrations/grpc/services/proto_files_manager.py,sha256=_jDm4lFzC5KIa_cGTdktMDvHfLU9BoaeCa5jd7eH6W0,8995
511
- django_cfg/apps/integrations/grpc/services/service_registry.py,sha256=3Ezc54qdI7XQ-7nAkGB6PPPPU7ANacb_dBV9AC_DjJI,10717
512
- django_cfg/apps/integrations/grpc/services/testing_service.py,sha256=8wWqeFS1Vr9hCPQ6js96DzZAeuRSaljX32sP2pD6c78,10469
493
+ django_cfg/apps/integrations/grpc/services/centrifugo/__init__.py,sha256=7jWO3EmYbL5vNnqkP1o4qeBKYicfz9Heu_hx5ChDAPY,620
494
+ django_cfg/apps/integrations/grpc/services/centrifugo/bridge.py,sha256=n_VxZGezXd2Xw8AXy9rCEInt8wWFqnZjxOUBpiQCOWI,17633
495
+ django_cfg/apps/integrations/grpc/services/centrifugo/config.py,sha256=a7bvTw3HjyYp1Lfqw5qmZlq6LNDzNEgDqCRTNIVSxxU,4791
496
+ django_cfg/apps/integrations/grpc/services/centrifugo/demo.py,sha256=Ij91Zgjb0YLTk2tvqQUpIjld5-jOZxOLRrh_d5Qkoyc,19339
497
+ django_cfg/apps/integrations/grpc/services/centrifugo/test_publish.py,sha256=eMdLKEg7_4uBNt26uS5FAaaezvww7NqpK3A_3pjdciE,6935
498
+ django_cfg/apps/integrations/grpc/services/centrifugo/transformers.py,sha256=KBK4UZNpdsZl7TL1wGm8KOTa4sU-0qUmF2JT6UJw80k,2259
499
+ django_cfg/apps/integrations/grpc/services/client/__init__.py,sha256=ari1y4vBwF6_bpUhATq4t3X8sbJisQuLIE7dnVcWNS0,566
500
+ django_cfg/apps/integrations/grpc/services/client/client.py,sha256=FArKYlT1EZowyZyI7hbLDmzt6iTVGYPiHXvxwe8mS-A,21996
501
+ django_cfg/apps/integrations/grpc/services/commands/IMPLEMENTATION.md,sha256=p_Q2Naa-P5372hubNjHj4yF0R0KFpBmcqcsbZkvYefU,10885
502
+ django_cfg/apps/integrations/grpc/services/commands/README.md,sha256=suR6oVcxWhwk6Apui0LVprHupuBkZSTBLywnHoNFv6k,8693
503
+ django_cfg/apps/integrations/grpc/services/commands/__init__.py,sha256=Q3Hu9v0oTbvf3DoXg_ZTaw9TbjxKS1PNv9H5z_NJQQE,2772
504
+ django_cfg/apps/integrations/grpc/services/commands/base.py,sha256=plCVJaWaZu8D9OBPRaianrp1HNgutGuzdSNfHe61EQ0,7428
505
+ django_cfg/apps/integrations/grpc/services/commands/registry.py,sha256=9n7HFVrQ7N6r8CNe2oM33YKSvYANIxBaWQMxGvmw8ec,4773
506
+ django_cfg/apps/integrations/grpc/services/commands/examples/__init__.py,sha256=VRqnhBZ2vKWf1XkKcgvJ5Kf_8H5fJWIgLHqmGUFa9Vg,675
507
+ django_cfg/apps/integrations/grpc/services/commands/examples/base_client.py,sha256=D-7LftZZRayOV146C6KPtxeAZMkUbSH-UM3frsw4uJk,7587
508
+ django_cfg/apps/integrations/grpc/services/commands/examples/client.py,sha256=mPF_9oJbLlHG1o3MeN5s52l83kvKWsOEb3lp0ytDU9Q,7636
509
+ django_cfg/apps/integrations/grpc/services/commands/examples/config.py,sha256=jvD2tn-sJTVjuL2bud-dxPWArTykKHJS1LcseXa6I38,5547
510
+ django_cfg/apps/integrations/grpc/services/commands/examples/start.py,sha256=9Yi1KtF-uEooibQXzADLu3Xqrhs7hX4YVfHMBuPhYLA,4130
511
+ django_cfg/apps/integrations/grpc/services/commands/examples/stop.py,sha256=4q4RS9pmk4GbiYsmAvJ7GoQjtq9F05vVdp1f2PYcabg,2836
512
+ django_cfg/apps/integrations/grpc/services/discovery/__init__.py,sha256=FEC3x2zfJNelUqfulTlFpAxUDOTpTJVdW8dEoV3XOdc,914
513
+ django_cfg/apps/integrations/grpc/services/discovery/discovery.py,sha256=d1bDjVEdJEtrbXFuQV_zuQ5p3JfRGNfUAQQiVNYN7E8,20391
514
+ django_cfg/apps/integrations/grpc/services/discovery/registry.py,sha256=3PH4pfxoKco_ZGad8Pn4HvQ3SFbFOfT7bpxG3PQ36VU,18305
515
+ django_cfg/apps/integrations/grpc/services/interceptors/__init__.py,sha256=Gp2cQ7PZ3VbpulsU-vB1VwF67DFY5JIURuZoRSopOoM,603
516
+ django_cfg/apps/integrations/grpc/services/interceptors/centrifugo.py,sha256=xhIH6JC6gwudPUfQrUX4MDz2mdUp9SYT455AvBGQ_3Q,19880
517
+ django_cfg/apps/integrations/grpc/services/interceptors/errors.py,sha256=rbhUhD_gwKESiGqFDsGR9bQ-x3zJdM0FxZ2ytb-rK_E,7968
518
+ django_cfg/apps/integrations/grpc/services/interceptors/logging.py,sha256=qhp9a6cNFKulFWevJV1cEie0b1Sa9_9aGUkYqHhhOAs,9468
519
+ django_cfg/apps/integrations/grpc/services/interceptors/metrics.py,sha256=GYyFMfIRIXbgf2Xk_F5WCG_ZntZaJhhqywj_QPSimBU,10036
520
+ django_cfg/apps/integrations/grpc/services/interceptors/request_logger.py,sha256=sY_UJQNo99uJNXRNY9BnY2bzbmjNOYJMw2FtfuaCkSE,17903
521
+ django_cfg/apps/integrations/grpc/services/management/__init__.py,sha256=H4mE3wIhXotTQ_ijBve0qykfFyC0BU76TqHNBKJ2Dks,796
522
+ django_cfg/apps/integrations/grpc/services/management/config_helper.py,sha256=234QZ8CTNkYkmRFbL_4pyawQR0IQO5n0vTlSI2Ecigg,3480
523
+ django_cfg/apps/integrations/grpc/services/management/proto_manager.py,sha256=_jDm4lFzC5KIa_cGTdktMDvHfLU9BoaeCa5jd7eH6W0,8995
524
+ django_cfg/apps/integrations/grpc/services/monitoring/__init__.py,sha256=b7eT2tT_aUkSpkbuVjnrQwsdvz66sYBPmXElr-PkLHM,820
525
+ django_cfg/apps/integrations/grpc/services/monitoring/monitoring.py,sha256=kxKDqCoOWSudMDegEgtRHnNPzcnw4oiG0mRVLsk82DY,13257
526
+ django_cfg/apps/integrations/grpc/services/monitoring/testing.py,sha256=ZYKlcqD_iM9MzXwoRAC1kDo-Lvq4RQ7LelJlQUXORM4,10489
527
+ django_cfg/apps/integrations/grpc/services/rendering/__init__.py,sha256=Y4EwpuLgCgcQ-fsJ7p4hJ37ZZsFMvZBeNSZpj6FU6w0,574
528
+ django_cfg/apps/integrations/grpc/services/rendering/charts.py,sha256=U-kBKGboGRzRt8i930k072cj4YvJcOv5YJ_owY-HbqA,14922
529
+ django_cfg/apps/integrations/grpc/services/routing/__init__.py,sha256=q247AwqDGAgRkhPgn_Vh0-7gUOo-tIvU1dr4XrFRVmg,1633
530
+ django_cfg/apps/integrations/grpc/services/routing/config.py,sha256=c0hXK7UL13BKZoE56K7kgeZnGYmCYjJXYCYHBDZkJMI,1872
531
+ django_cfg/apps/integrations/grpc/services/routing/router.py,sha256=IFTGpFpCv2OEvxOjAsHsob21vqcg9rGWm0HvycEMTo0,15382
532
+ django_cfg/apps/integrations/grpc/services/streaming/__init__.py,sha256=03PHwE06V1BTdyAMBpeiDH5PSUA5LAw2yCbBm8lSB_Q,2535
533
+ django_cfg/apps/integrations/grpc/services/streaming/config.py,sha256=BJnuF5K0DzY7Stf8eh188020pg63XsA7Glkm9SHSIdI,14900
534
+ django_cfg/apps/integrations/grpc/services/streaming/service.py,sha256=rzRDnqVfnLCoFVl9_LyyeFWyfuEnUapfJIcDRDKMSQo,24179
535
+ django_cfg/apps/integrations/grpc/services/streaming/types.py,sha256=fZjNtglKUS9frJoLgH1CcS8dS5N9TLDWfWjWAtmDImM,10243
513
536
  django_cfg/apps/integrations/grpc/testing/__init__.py,sha256=jCDnG47GrMAHTPMEIoQhRI0w-i6_91K8dxSIN-Amq8k,223
514
537
  django_cfg/apps/integrations/grpc/testing/examples.py,sha256=MZU8-wVdBRqhHpvCgbvVwmiQaJuXpCPcqTOivD-Jtt0,8588
515
538
  django_cfg/apps/integrations/grpc/utils/SERVER_LOGGING.md,sha256=0_02dkCeizx7jBhQmY-OGuZcmCai03fxMkFGhEDi-ww,5332
516
- django_cfg/apps/integrations/grpc/utils/__init__.py,sha256=9uzkCPLhRlspjId47V6avfUZF37PcjuCPW2yImGxYAo,231
539
+ django_cfg/apps/integrations/grpc/utils/__init__.py,sha256=wjOeW8yWeB31YgKKq7JIxhfCaILUDQCfnBb_SKkX7_Y,1407
540
+ django_cfg/apps/integrations/grpc/utils/converters.py,sha256=f6o4iek9GRDJwZOGJk7VMc2Mu7A3B__eu2LUNGA905I,15536
541
+ django_cfg/apps/integrations/grpc/utils/handlers.py,sha256=MZEbfwF2Lzc5nXsHWwBqUnMgokbYSliWIevxKTWuzug,6706
517
542
  django_cfg/apps/integrations/grpc/utils/integration_test.py,sha256=K0FlPBYuAdsTRp01q0kFjd1t2g9Q0wttkgoLUhu2uXE,12286
518
- django_cfg/apps/integrations/grpc/utils/proto_gen.py,sha256=BQ2SHULZ8HzIgC0SFBHsEFfD_0SLjIv1Wx3ntan1eXQ,14042
519
- django_cfg/apps/integrations/grpc/utils/streaming_logger.py,sha256=ycugmWy78WccrEpMQWyJ5-uJcxWh5m9jS2y_hykxQew,11922
543
+ django_cfg/apps/integrations/grpc/utils/proto_gen.py,sha256=W8idEL7sVhLPXzdiSQBHpXRBzncuYUvbPclU-IPh1Io,14053
544
+ django_cfg/apps/integrations/grpc/utils/streaming_logger.py,sha256=tPQZIAG9zDw7MnS_1XN99uhFk0iKM5DOMHt-bHqxADo,13699
520
545
  django_cfg/apps/integrations/grpc/views/__init__.py,sha256=vgdi6lFXcVEwk-TnuVGMy_KXGkFKhqBVpVFBZcOdNvg,461
521
546
  django_cfg/apps/integrations/grpc/views/api_keys.py,sha256=7XtpIY9DByXqrxeAvh2Uqk7Nvp1NJuBgMQFFpJVzMeg,9296
522
- django_cfg/apps/integrations/grpc/views/charts.py,sha256=6h8Rqv1ERzNXyuAEoXruqGPzrVEX0Ouk_uRG9YbVlyg,9136
523
- django_cfg/apps/integrations/grpc/views/config.py,sha256=zp76VMSr3YI-F6DPewucEbQDP8U8rwdClMBVn0he1zk,7288
547
+ django_cfg/apps/integrations/grpc/views/charts.py,sha256=t1-H2EB21e1461IjFBV0pIN8lnQnQzpTemmYvPoPnDM,9137
548
+ django_cfg/apps/integrations/grpc/views/config.py,sha256=caDkfk2rRYHyEQVY9duL7RfPMWhx01TqBlOPh7kq_iw,7299
524
549
  django_cfg/apps/integrations/grpc/views/monitoring.py,sha256=VC2IcWMMgESpiYqbFmxbKLS_3EWLEtyq2Ktd-lrph28,13512
525
550
  django_cfg/apps/integrations/grpc/views/proto_files.py,sha256=s0c5wlk7Zv0B7CGNtrLjm062eVoHrCOfeNhDvZFpczg,7521
526
551
  django_cfg/apps/integrations/grpc/views/services.py,sha256=eSVUSl4XVcxpfK8TwJaI6zXlkrWMMjtEQZfemK0Mi4Q,10775
@@ -651,10 +676,10 @@ django_cfg/core/validation.py,sha256=QmwGlNDa0MFG2OUmgykIUAaEotT55YNh-wAWSVxOAos
651
676
  django_cfg/core/backends/__init__.py,sha256=5Qfza7oKQ8_UIHOs4ibhYvwtgAjngUqLrlwjKl_q124,38
652
677
  django_cfg/core/backends/smtp.py,sha256=kWkNMG7UwLsHcFYSKRgrk1HbP9mU1fxzWYnalHXqoL8,2308
653
678
  django_cfg/core/base/__init__.py,sha256=Z3bZvxejxk4vvWqmqTBLUi9XJpo6A_5Bq4R0J8q81Y4,116
654
- django_cfg/core/base/config_model.py,sha256=HZGKMg78bYk7nw6pW_rzIUW-TqaE6e0zRJIQZdO1pp8,21857
679
+ django_cfg/core/base/config_model.py,sha256=1SlYntY--6EWhkubCx9djh521ZRb1wbI_ooRQXL7dhk,22305
655
680
  django_cfg/core/builders/__init__.py,sha256=jkInI7_jbxcjitapohw6QmbJPpacnnID6V1JovqtOFM,282
656
681
  django_cfg/core/builders/apps_builder.py,sha256=E1WSZRmP2sVYfZg_2UitZi6jrd3wd8Cdr8ikgPufa8k,6775
657
- django_cfg/core/builders/middleware_builder.py,sha256=OwqQRoJKYWlXsQNPFBfUvVMYdppUHCPw-UDczV_esYg,3101
682
+ django_cfg/core/builders/middleware_builder.py,sha256=gVfHVKx3dSGlXoV_kXwhRLXyTp0hz9k4aiEvyXV39D4,3396
658
683
  django_cfg/core/builders/security_builder.py,sha256=cE3V7irdRkMdaUaSxf24RgyG9Wx_ihauBLa72TQ87_8,24004
659
684
  django_cfg/core/debug/README.md,sha256=zdASNAvWr1nOijngul2AY6nAPYxBjanYIXveLHmX5bA,2968
660
685
  django_cfg/core/debug/__init__.py,sha256=Y3660Ouzcg9sCYotqtnpcY1XaBb-u8oa5ga_TfRevi4,127
@@ -719,6 +744,7 @@ django_cfg/management/commands/generate_clients.py,sha256=Ziyo1i9QGFVULPHf1iosp8
719
744
  django_cfg/management/commands/list_urls.py,sha256=8omYzdie8p_8kP9oWS22AjXt6BGSezJGxUdX92mNtYc,10737
720
745
  django_cfg/management/commands/migrate_all.py,sha256=Rp9uUMcThQEVSthsrEaVjiH_STGBx90BaApNwK4SDbs,5617
721
746
  django_cfg/management/commands/migrator.py,sha256=6EchuTCtSPa1uOmZoqIi80JHKnYOclSNqw-Aas6UYd8,16226
747
+ django_cfg/management/commands/pool_status.py,sha256=aQlSHG2VJasOq7NSl86k38--76AedY4wS_by1kgDrDw,6070
722
748
  django_cfg/management/commands/runserver_ngrok.py,sha256=FEkYBkAssUNp9JPbJl6yCxaiM3xuFt12XMV8fA36Pnc,591
723
749
  django_cfg/management/commands/script.py,sha256=2pO4zbUz0QBF8HMPPrajRiFTPM-WY-MZbGIPYdqstEM,16898
724
750
  django_cfg/management/commands/show_config.py,sha256=RPFlTX2GH_8C2ssIvFCaQ-xJrtf8DD43jKX0lg1lGf4,8604
@@ -737,6 +763,7 @@ django_cfg/middleware/__init__.py,sha256=EVah9AYIWT3R8inTqPY20oB4xb-KejhwqngM1Z4
737
763
  django_cfg/middleware/admin_notifications.py,sha256=EVoXjSLaDz4r-lL5hy6V9sC1BpNF0rKsa-s6L31foRQ,6856
738
764
  django_cfg/middleware/authentication.py,sha256=iwQLHyHSSLe4tazEJHuOUn3X3TcqgX9JZ5zfxQTzbZw,6148
739
765
  django_cfg/middleware/pagination.py,sha256=5xhvk3fYCJ0Mmjer-BFl1tdzXBlmGahOvgwMMCQ95ck,8677
766
+ django_cfg/middleware/pool_cleanup.py,sha256=JmkApgFUvpcZMtOqjiPSEcS5v3BmyKigfeNaEA4ke8o,8471
740
767
  django_cfg/middleware/public_endpoints.py,sha256=p-VCjeu0k7B4OuQIe2OVUx7Onh9gsM2HweWcYNxEaRA,6775
741
768
  django_cfg/middleware/user_activity.py,sha256=bgftHXXeGBS-jCa8mLzTx4Gcz2fHTaQz_nbRCR5Yqio,5980
742
769
  django_cfg/mixins/__init__.py,sha256=3nJ5PySz233LJCKC5x5iqqh9P_C2n-KxNKxAEY5tVao,284
@@ -756,7 +783,7 @@ django_cfg/models/api/drf/redoc.py,sha256=XNNWnMwkfIhtkCUt_KiPtc0-Nw0E3jvQOIjwcd
756
783
  django_cfg/models/api/drf/spectacular.py,sha256=UYBATiEY3qzx0IlTvCyhpymASO2Wej_j-gQsgL03Nec,5020
757
784
  django_cfg/models/api/drf/swagger.py,sha256=ku_eE7bWgHxjXD6Z2sEKSYE-bIzmZfAR0vQW9xqlG4Q,2127
758
785
  django_cfg/models/api/grpc/__init__.py,sha256=1xv125eMwbydphFqcSVznyN2RvIL5BK1abTeIV7L5BI,1357
759
- django_cfg/models/api/grpc/config.py,sha256=6rqc7yP7Nd13eJ9uFPFtnYh8ROKzoQuJ6q3rpZarSGE,14399
786
+ django_cfg/models/api/grpc/config.py,sha256=XLwEnW6pu4EBfwTfj2hx1H6-XkvZm9w3uk1ZaZwSohM,14431
760
787
  django_cfg/models/base/__init__.py,sha256=f6sMVyd-YEFdLebmIKOOPviu1Ovn4BHGp7j7ZVNqFDo,271
761
788
  django_cfg/models/base/config.py,sha256=hfpf35yMR8oOE1J0SBPNNSBwXckK3F2-Iv0Vw6cNX4E,10114
762
789
  django_cfg/models/base/module.py,sha256=nxN1Y9J4l94kOfSXLQJ2eGgIGWTq8kyh7hUGvCQNyIs,2674
@@ -773,8 +800,8 @@ django_cfg/models/infrastructure/cache.py,sha256=-eN2GjDJo-4Ta6b4hamG-AuBHNEKoYK
773
800
  django_cfg/models/infrastructure/logging.py,sha256=dbbDJ0hjJKigKKTmqKnh7hkLzmipm3_abp-whaK1lOY,10314
774
801
  django_cfg/models/infrastructure/security.py,sha256=8KiZSCzyXYugvDnb-Y9fLnZo0UDlq63064kAow-WAgk,6593
775
802
  django_cfg/models/infrastructure/database/__init__.py,sha256=3BXDKeJwvjyFws4MAjox_PIp_g0N1YuXv6qNjRb7wqQ,500
776
- django_cfg/models/infrastructure/database/config.py,sha256=GLGwUPmZ3s_wyjRJWOmV8YjEZ27bl5E5o1EuAROT3Q8,7787
777
- django_cfg/models/infrastructure/database/converters.py,sha256=xRqL5rOSqOGA06KK5Z6nbx6waUm9WMAtHM4mxgXSI-0,3083
803
+ django_cfg/models/infrastructure/database/config.py,sha256=InBE1sG5EQ7MeMwD2lAEKacLen8g7akBUm2GhXe7Q24,8478
804
+ django_cfg/models/infrastructure/database/converters.py,sha256=cIqQqDm62C1UqyTw9YJUkJtDrX23rXc-KKJ8o2ck9EA,3193
778
805
  django_cfg/models/infrastructure/database/parsers.py,sha256=8q1hq95SHKHxL2_AcHRc9HkSB_ide1zTjbDn_WDyQXk,2667
779
806
  django_cfg/models/infrastructure/database/routing.py,sha256=Z22AeCjKJB-aV0Scq9u1RDTRspKEf4jmCKwzWLIqDOk,1999
780
807
  django_cfg/models/infrastructure/database/validators.py,sha256=VA6Y-t7DdU7cWI42kXTxUKMhf1XwNJ6_NkxPWlXv-l8,5854
@@ -820,7 +847,7 @@ django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_field.h
820
847
  django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_password.html,sha256=BdiM0CqRyBH1aHGf6iLSfSKOoADY5qaqetbC9AktzaI,2154
821
848
  django_cfg/modules/django_admin/utils/__init__.py,sha256=Y0c62CUe41GNsz6ibbYaj7rSOg5Cq8kHDUvAH4eySTo,1712
822
849
  django_cfg/modules/django_admin/utils/decorators.py,sha256=s4jTcgPklY4T4xjXsMHpShd71K_LzgKogem9JKBgNzk,8371
823
- django_cfg/modules/django_admin/utils/html_builder.py,sha256=Xm0U0kn02Et8Ml1c1AXAEFpPCvXeIerpiSnVcQbiMBs,2190
850
+ django_cfg/modules/django_admin/utils/html_builder.py,sha256=TTbelsi_mhtoqe2Uxs8890uD1Q9Km_2H9DSczo7UjhI,2256
824
851
  django_cfg/modules/django_admin/utils/badges/__init__.py,sha256=_S5uUxavLG0ouUWrsVqBF1CSLrcxWTb5GlRmTuev_l0,250
825
852
  django_cfg/modules/django_admin/utils/badges/status_badges.py,sha256=kOShlu3MZv7kjhtpxPgub0t91CBMb8Mm3ZZvTMh_Gyo,6331
826
853
  django_cfg/modules/django_admin/utils/displays/__init__.py,sha256=q0N2kForOp2IRhnMTmj2tJRx7P1ekTu425vHHZ63UI8,258
@@ -829,7 +856,7 @@ django_cfg/modules/django_admin/utils/html/__init__.py,sha256=22_xZ2Mlec5U-eSRZw
829
856
  django_cfg/modules/django_admin/utils/html/badges.py,sha256=FaqTDhVu8-cKXs-YJBcEOfP0_NjnBGW21q58OBlRMDE,2074
830
857
  django_cfg/modules/django_admin/utils/html/base.py,sha256=HWhGTRy1pXFcK2v2Gds7psFDze1S-GS89HDlrmWLq3M,5302
831
858
  django_cfg/modules/django_admin/utils/html/code.py,sha256=yBhBjEWI0o9NlB-EJiHFmyxzPDh8wH3iJwv7kB6HDw8,3012
832
- django_cfg/modules/django_admin/utils/html/composition.py,sha256=KrlRDdpKGosw9tUhGeS1Q7V86gCxYpKv4kGUS2R7jzg,7356
859
+ django_cfg/modules/django_admin/utils/html/composition.py,sha256=x-uarh_0QslLQ_kxq5wT3sAOzk0jbz9KEqfnv8b7UgM,9262
833
860
  django_cfg/modules/django_admin/utils/html/formatting.py,sha256=EeSHyObFGPr2Ie6KbySE8WBQtqUFT_BQfXf0oucigIU,8613
834
861
  django_cfg/modules/django_admin/utils/html/keyvalue.py,sha256=cBw2RPE3J_3kENYSYNxpm8eY56bwp5yityxBl6N4_q8,7299
835
862
  django_cfg/modules/django_admin/utils/html/markdown_integration.py,sha256=r28EyVtma9YfCnSoDDbBthWrZtT9LVmhcXSwe4OG4Ws,3372
@@ -843,7 +870,7 @@ django_cfg/modules/django_admin/widgets/registry.py,sha256=P2kQiB3eYXhjRiCXlcImH
843
870
  django_cfg/modules/django_client/__init__.py,sha256=iHaGKbsyR2wMmVCWNsETC7cwB60fZudvnFMiK1bchW8,529
844
871
  django_cfg/modules/django_client/apps.py,sha256=xfkw2aXy08xXlkFhbCiTFveMmRwlDk3SQOAWdqXraFM,1952
845
872
  django_cfg/modules/django_client/pytest.ini,sha256=yC1PeQKS4nWQD-jVo5fWF9y1Uv6rywcH0mtHREsiAp0,668
846
- django_cfg/modules/django_client/urls.py,sha256=0Q0uDhiRqI-jlTU_tsylg-HtRHNXARko6gGGz2-63Aw,1799
873
+ django_cfg/modules/django_client/urls.py,sha256=mvoeGUh7X3XcX82a3kAW0HD4rp05jGM4dqvyGs_dkdk,2751
847
874
  django_cfg/modules/django_client/core/__init__.py,sha256=xAqXcFoY3H0oCBp8g7d9PzO99bOGIDdtHUKgVAOoS_c,1135
848
875
  django_cfg/modules/django_client/core/archive/__init__.py,sha256=SKeOKjRnw_NsL7_fOU_2Neo-bcDj4Hv2sVFYztJYiSI,171
849
876
  django_cfg/modules/django_client/core/archive/manager.py,sha256=2qSi1ymdjfjU-X0cWzl_hq2adt09EmOCz4z4pMQMAQw,4345
@@ -913,8 +940,8 @@ django_cfg/modules/django_client/core/generator/python/templates/utils/schema.py
913
940
  django_cfg/modules/django_client/core/generator/typescript/__init__.py,sha256=eHOZp7M65WZ9u3tA_xQlON5-oijZZiGXDhz22Bq73s0,371
914
941
  django_cfg/modules/django_client/core/generator/typescript/client_generator.py,sha256=5CKeXuw6OvbRrq-ezdooqbpLpCrjYLmkL-kWkDdlD14,6068
915
942
  django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py,sha256=nOaPFpSRb1izEpyXjJcnC2gdRcSLqhtmTPY0QWXUWkI,9184
916
- django_cfg/modules/django_client/core/generator/typescript/files_generator.py,sha256=GU28mlTK7wrBw3NG5mq2dAGi4gE77ZFtHPtIXVg3qVk,7072
917
- django_cfg/modules/django_client/core/generator/typescript/generator.py,sha256=7C0cFf3zDlgz2Ij-yxt7mGHKGKnqkcKyo0WZqRmL8jY,20862
943
+ django_cfg/modules/django_client/core/generator/typescript/files_generator.py,sha256=iX4WpiQdL6PnTToseEZWvhYrZiNKo27i2As50E1Pxfg,7512
944
+ django_cfg/modules/django_client/core/generator/typescript/generator.py,sha256=SajtFMQDu5Q47CLwX9COsGIQcB3sVC0YoMOHS3bsaSY,21268
918
945
  django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py,sha256=0yT4cuUa1BP5LcF17jj3poeR7udJQ14A9TN0gB21d18,16002
919
946
  django_cfg/modules/django_client/core/generator/typescript/models_generator.py,sha256=xhIaEn76_Jt9KeW_JE7PCBzdJMF7WZdE75T11Ih_ay0,9597
920
947
  django_cfg/modules/django_client/core/generator/typescript/naming.py,sha256=kSZwPGqD42G2KBqoPGDiy4CoWjaQWseKAWbdJOF7VaU,2574
@@ -926,7 +953,7 @@ django_cfg/modules/django_client/core/generator/typescript/templates/api_instanc
926
953
  django_cfg/modules/django_client/core/generator/typescript/templates/app_index.ts.jinja,sha256=gLsoYyEzKD6Gv64vsO9sQHMPiFMGdaB5XVufLHeRyvQ,62
927
954
  django_cfg/modules/django_client/core/generator/typescript/templates/client_file.ts.jinja,sha256=LHUt72fO2eRNAHYEscIYvqVR69GC6mxqjcgSlUzeCtc,251
928
955
  django_cfg/modules/django_client/core/generator/typescript/templates/index.ts.jinja,sha256=OtQxzqV_6SYvugk_oS0F9_WXty2tnKY_wl2n9-WeJqo,127
929
- django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja,sha256=gyO5BPgycniHdLRILmIwav4MTFVYUIwpvJrOJ3zFiTw,7624
956
+ django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja,sha256=9u30Lti9OPN9h6sliB5MyUUTjdi2dQSAP1-Nwagv2p0,7870
930
957
  django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja,sha256=XOgZJG3twzWJ8gsZ5VZ_gQx7zBvrnwXy-yUFHfdyBBs,1280
931
958
  django_cfg/modules/django_client/core/generator/typescript/templates/tsconfig.json.jinja,sha256=QKbo6hYoVdRXrm7psRzBGStzAP5omQrnamSQT6b44gE,482
932
959
  django_cfg/modules/django_client/core/generator/typescript/templates/client/app_client.ts.jinja,sha256=jaFN_QIQU2eyu-6uiwUjwACYNr06LI14XGJN0Dgv-9E,260
@@ -936,7 +963,7 @@ django_cfg/modules/django_client/core/generator/typescript/templates/client/main
936
963
  django_cfg/modules/django_client/core/generator/typescript/templates/client/operation.ts.jinja,sha256=z6GD-r7Y-S_yhDtlOAjMgDSL10AF3YrBLLNLPiCt8rE,1869
937
964
  django_cfg/modules/django_client/core/generator/typescript/templates/client/sub_client.ts.jinja,sha256=1rtFMqJO8ynjNNblhMPwCbVFhbSbLJJwiMhuJJYf9Lw,215
938
965
  django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja,sha256=vk-yQgNuS4jxnN6bqUl7gDrrK7_q5eLnWXiBvHVSvSQ,1291
939
- django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja,sha256=5jUCSWbMPdG1n5jxOVFKDfRnI4ocwsMcJsaM1vP6wyo,1567
966
+ django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/function.ts.jinja,sha256=d3ImACQDM-KoqiU6ytElXSr82m7rY5Q_mRQxpMPaKOg,2352
940
967
  django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja,sha256=DoAVm8EoglJKtLrE917Fk7Na6rn5Bt9L1nI39o9AwzM,747
941
968
  django_cfg/modules/django_client/core/generator/typescript/templates/hooks/hooks.ts.jinja,sha256=RdImlx61kBn1uCrrpqeTfxa1l-5a3AYU1ZKMVw1f6TU,870
942
969
  django_cfg/modules/django_client/core/generator/typescript/templates/hooks/index.ts.jinja,sha256=c4Jru6DAKD-y8nzig1my0iE-BO3OwjSCENALbHvAp7E,694
@@ -953,9 +980,10 @@ django_cfg/modules/django_client/core/generator/typescript/templates/utils/logge
953
980
  django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja,sha256=xv1wvOqyIITi7e-318Wxu_af9T72H68TWufVRsHiCqw,4080
954
981
  django_cfg/modules/django_client/core/generator/typescript/templates/utils/schema.ts.jinja,sha256=KC8zJ6R91LtyeVW-dp9ljbwCTZVPyvf0glnRD8pJzAA,167
955
982
  django_cfg/modules/django_client/core/generator/typescript/templates/utils/storage.ts.jinja,sha256=Sbszp1L7b1pN9EScq7c2WmltdC7yXrbqU55v4FmRdT0,4899
983
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/validation-events.ts.jinja,sha256=u5nVpO_TjPLvAX-t5bl-9MWEeAb-u7qAwQkEPZ9F6h0,3413
956
984
  django_cfg/modules/django_client/core/groups/__init__.py,sha256=4n80S-cdywX4wITntbo9tsmVwv8iRQEkPKrtsaXz7jQ,226
957
985
  django_cfg/modules/django_client/core/groups/detector.py,sha256=nCCqpXPGNznm57KzyuriL0D7hBJ2yGA3woL9upf4i5o,5543
958
- django_cfg/modules/django_client/core/groups/manager.py,sha256=GLeIgCPoOy-pNHOH0pdZItFp6aH1w3b9hIvvES6UbsU,10900
986
+ django_cfg/modules/django_client/core/groups/manager.py,sha256=MBXVhHBb19antrrbwFWP47v9y2OMz0oQ1RAz406Yip4,11201
959
987
  django_cfg/modules/django_client/core/ir/__init__.py,sha256=58JBUka_gxjScbyTqGKrjOhIPbPQVqdyMMqs13vrSx0,2009
960
988
  django_cfg/modules/django_client/core/ir/context.py,sha256=We-XTjfhEOlasUv2wMhDuZonQ10O8c2-i5hJWcXRD-k,13801
961
989
  django_cfg/modules/django_client/core/ir/operation.py,sha256=gwvTciqIAUS0Hb7TqVU1Zr_StU9ulG3Vf73V7jYTp_U,17182
@@ -980,7 +1008,7 @@ django_cfg/modules/django_client/core/validation/rules/base.py,sha256=xVJli0eSEz
980
1008
  django_cfg/modules/django_client/core/validation/rules/type_hints.py,sha256=hwjTMADillsTPruDvXZQeZMj4LVV443zxY9o0Gqgg6k,10200
981
1009
  django_cfg/modules/django_client/management/__init__.py,sha256=mCTPP_bIOmqNnn0WAG2n4BuF6zwc9PTgdZr_dORfNDk,54
982
1010
  django_cfg/modules/django_client/management/commands/__init__.py,sha256=CJ55pHUNYQ5h-QHUe3axeTtxzlUJv7wbEuZmGN21iCM,36
983
- django_cfg/modules/django_client/management/commands/generate_client.py,sha256=jCzWa9KTi5QM3BmxxZWU4lJ9K_2AizFtj9-7svWydSw,31436
1011
+ django_cfg/modules/django_client/management/commands/generate_client.py,sha256=HsZgmM3Zsm57epkRWUTt6xHEeBzmh815Ci0wuvgrjgM,31718
984
1012
  django_cfg/modules/django_client/management/commands/validate_openapi.py,sha256=1qQcrR3mG9BIEG-0mpceFxBt-b457M5o71T8DEvyQl4,11091
985
1013
  django_cfg/modules/django_client/spectacular/__init__.py,sha256=M8fG-odu2ltkG36aMMr0KDkCKGX676TwdrJO8vky2cI,345
986
1014
  django_cfg/modules/django_client/spectacular/async_detection.py,sha256=S_pwGR7_2SIWHjZJyiu7SCfySF3Nr3P8eqjDyBSkkLs,5731
@@ -1069,7 +1097,7 @@ django_cfg/modules/django_llm/translator/utils/__init__.py,sha256=t_sZIH4BT6UJzS
1069
1097
  django_cfg/modules/django_llm/translator/utils/prompt_builder.py,sha256=ZSOnm9_eoG_aCd2XT1HV_fzw8Sq9mrssTGF7Gm0tRXc,3352
1070
1098
  django_cfg/modules/django_llm/translator/utils/text_utils.py,sha256=_7Z4n1oi2_Zl3NU8kbRiLa2dCRViyzFG6-sUIcEmnmE,2925
1071
1099
  django_cfg/modules/django_logging/__init__.py,sha256=rVDB2mpMnxtnMMb1svphxCPDy3nnekVwfZyJOP3lk9s,378
1072
- django_cfg/modules/django_logging/django_logger.py,sha256=6XtgKZrOkURK_CH0i2PZfUX7lTiXg-ZQeyQtyAPZEpI,12452
1100
+ django_cfg/modules/django_logging/django_logger.py,sha256=YfQChJK8ElIM6-YHep7C-tdQEGpj3l3W5KxZ1eRiDUY,14195
1073
1101
  django_cfg/modules/django_logging/logger.py,sha256=_8v70X5imm1KLDjMsgID5tTtpG6eSh4ozFZfYnb0IU4,10915
1074
1102
  django_cfg/modules/django_ngrok/__init__.py,sha256=CYHHSKRIHIP3E_NpUnFX-D2exWZK8o_6wfqh1T8ZIyo,792
1075
1103
  django_cfg/modules/django_ngrok/service.py,sha256=Xkh9Gl6Rth32UcT0UYjD0ckROHFw6FJLKDtg3VzWLQY,9304
@@ -1097,16 +1125,16 @@ django_cfg/modules/django_twilio/README.md,sha256=Zmh_mG0loPTHlr4piqRfz7AWp-uSRt
1097
1125
  django_cfg/modules/django_twilio/__init__.py,sha256=R51VI_lxA47h2nRx1jkcXnwdYrdsDfKJK7TSojYc5yI,2378
1098
1126
  django_cfg/modules/django_twilio/_imports.py,sha256=qZo8urnj-K66z4HcIzaAZWhdAtqZU_lHVHL1ipqCU9A,782
1099
1127
  django_cfg/modules/django_twilio/base.py,sha256=wizSK-AelOpH0oCzVgqAJHPzvxekBmIX-hKseWbhHJM,6426
1100
- django_cfg/modules/django_twilio/email_otp.py,sha256=udK5_GiIwKIworbPiqkNIS8ygYu3-Bp8N8jPOSd-7bA,7743
1128
+ django_cfg/modules/django_twilio/email_otp.py,sha256=iGk7O8lGwp1bJqZnE2EQWgXB2VfQGryhW_7kacncpnc,7948
1101
1129
  django_cfg/modules/django_twilio/exceptions.py,sha256=KWdiEc7mFYvxEwvOgLb14d_XmidJXtUVt-i2VNVWOwE,10498
1102
1130
  django_cfg/modules/django_twilio/models.py,sha256=u7PHSiHfbkuTpfh9Z3WiPPBvV0Ps9ZW8ZxAUXcKMVMo,11599
1103
1131
  django_cfg/modules/django_twilio/sendgrid_service.py,sha256=Xk0BAWKW2hgfKQ4-Y4oUNidqkcdwf-wgeFHoUTBqFUM,18296
1104
1132
  django_cfg/modules/django_twilio/simple_service.py,sha256=zDV8hm7dVWqdL-Y0XF-T80wxJvIpe3JR1JpwdUFv-OY,9672
1105
- django_cfg/modules/django_twilio/sms.py,sha256=IYbVh0HBd89Y0ssiGOZ4DKRD6tJkwJnhPsqC0B41GUA,2762
1133
+ django_cfg/modules/django_twilio/sms.py,sha256=EUIwOfhS8fDn8UGyANLu8PZCk5sFqIrecWSt-taymSI,2965
1106
1134
  django_cfg/modules/django_twilio/twilio_service.py,sha256=PPjoemzZAgpEOZBENyHHC1F8s77NQh3gMN3EcH6iG-w,19299
1107
- django_cfg/modules/django_twilio/unified.py,sha256=hS_OZzqBtsI_q9KXbDYwImIzkhOttXe5RalH6R5Y5QY,11370
1135
+ django_cfg/modules/django_twilio/unified.py,sha256=VnuauH9Ys5ZDtjNv2LX_VK_-ybKTgXsp2xb6GedrJoU,11776
1108
1136
  django_cfg/modules/django_twilio/utils.py,sha256=6PSyvd0Jgvf3QuiHTHM8t0Sc4vYUXxAnJACd8WHWzQ8,4898
1109
- django_cfg/modules/django_twilio/whatsapp.py,sha256=E0MWT7Um0g38nP0hu0OldMCJ6JlWbFkGXaaJFFHkiFs,4923
1137
+ django_cfg/modules/django_twilio/whatsapp.py,sha256=AR2Ez0vsZIllhYaE_BVMI3NPkaA8exkK8zrODIbQyV8,5126
1110
1138
  django_cfg/modules/django_twilio/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1111
1139
  django_cfg/modules/django_twilio/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1112
1140
  django_cfg/modules/django_twilio/management/commands/test_twilio.py,sha256=hFQjks4ZoZj1-K9rKCHdYFlwp71IUxNE6rYmJ8jEjHo,4118
@@ -1154,7 +1182,7 @@ django_cfg/static/admin/js/alpine/commands-section.js,sha256=8z2MQNwZF9Tx_2EK1AY
1154
1182
  django_cfg/static/admin/js/alpine/dashboard-tabs.js,sha256=ob8Q_I9lFLDv_hFERXgTyvqMDBspAGfzCxI_7slRur4,1354
1155
1183
  django_cfg/static/admin/js/alpine/system-metrics.js,sha256=m-Fg55K_vpHXToD46PXL9twl4OBF_V9MONvbSWbQqDw,440
1156
1184
  django_cfg/static/admin/js/alpine/toggle-section.js,sha256=T141NFmy0fRJyGGuuaCJRjJXwPam-xxtQNW1hi8BJbc,672
1157
- django_cfg/static/frontend/admin.zip,sha256=YFsValTFHn8JGA2oiqyKW1PfW31gqBd2C5pwFzjP0X0,24310721
1185
+ django_cfg/static/frontend/admin.zip,sha256=q-mvBZpSOujXj1ZyQeHUY8H4__JjfRR2Tp9D5kPS1MM,24319401
1158
1186
  django_cfg/static/js/api-loader.mjs,sha256=boGqqRGnFR-Mzo_RQOjhAzNvsb7QxZddSwMKROzkk9Q,5163
1159
1187
  django_cfg/static/js/api/base.mjs,sha256=KUxZHHdELAV8mNnACpwJRvaQhdJxp-n5LFEQ4oUZxBo,4707
1160
1188
  django_cfg/static/js/api/index.mjs,sha256=_-Q04jjHcgwi4CGfiaLyiOR6NW7Yu1HBhJWp2J1cjpc,2538
@@ -1177,7 +1205,7 @@ django_cfg/static/js/api/tasks/client.mjs,sha256=tIy8K-finXzTUL9kOo_L4Q1kchDaHyu
1177
1205
  django_cfg/static/js/api/tasks/index.mjs,sha256=yCY1GzdD-RtFZ3pAfk1l0msgO1epyo0lsGCjH0g1Afc,294
1178
1206
  django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
1179
1207
  django_cfg/templates/admin/DUAL_TAB_ARCHITECTURE.md,sha256=CL8E3K4rFpXeQiNgrYSMvCW1y-eFaoXxxsI58zPf9dY,17562
1180
- django_cfg/templates/admin/index.html,sha256=j8WVCX-wlg11k9AWEfQQ46xzGiHV5sg2REAV0FKgQIg,37124
1208
+ django_cfg/templates/admin/index.html,sha256=MfDz35In0iOI_HjoHldTq0KbR9LIcp1FgQZTZmzhlJE,34826
1181
1209
  django_cfg/templates/admin/constance/includes/results_list.html,sha256=Itzs1lGqOYg6ftJUjQ1jWmsbdXDKdov3cDtqMllxih8,3835
1182
1210
  django_cfg/templates/emails/base_email.html,sha256=TWcvYa2IHShlF_E8jf1bWZStRO0v8G4L_GexPxvz6XQ,8836
1183
1211
  django_cfg/templates/unfold/layouts/skeleton.html,sha256=2ArkcNZ34mFs30cOAsTQ1EZiDXcB0aVxkO71lJq9SLE,718
@@ -1185,14 +1213,15 @@ django_cfg/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
1185
1213
  django_cfg/templatetags/django_cfg.py,sha256=7vAxJ56vggN9ZEFmV_pUNhSiWjX2nF_4IhaC0Mp82hI,12429
1186
1214
  django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,435
1187
1215
  django_cfg/utils/path_resolution.py,sha256=2n0I04lQkSssFaELu3A93YyMAl1K10KPdpxMt5k4Iy0,13341
1188
- django_cfg/utils/smart_defaults.py,sha256=ZUj6K_Deq-fp5O0Dy_Emt257UWFn0f9bkgFv9YCR58U,9239
1216
+ django_cfg/utils/pool_monitor.py,sha256=AiYdWo-6Q00MT-fRU_wzoc8vzvWpZZi-G00BYf0qZKI,11523
1217
+ django_cfg/utils/smart_defaults.py,sha256=2XM0aBmfL9U1b0eGbrGFf8j7mPPsmyQSZXY2mE21zqs,16975
1189
1218
  django_cfg/utils/version_check.py,sha256=WO51J2m2e-wVqWCRwbultEwu3q1lQasV67Mw2aa5jlw,4711
1190
1219
  django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
1191
1220
  django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
1192
1221
  django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1193
- django_cfg/pyproject.toml,sha256=P31joqhitG3i6gUGvSB0f2ZJPsuBrWAjdft-gM_i9as,8816
1194
- django_cfg-1.5.20.dist-info/METADATA,sha256=hT1Z4N_Mduuiv2ajZ0GElck-EMUAKdybUvoZsBBw9KQ,25581
1195
- django_cfg-1.5.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1196
- django_cfg-1.5.20.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1197
- django_cfg-1.5.20.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1198
- django_cfg-1.5.20.dist-info/RECORD,,
1222
+ django_cfg/pyproject.toml,sha256=q2h83EyAumlN37F-_O6bas7tz-Dbtb1w-RcMZKsqtLg,8868
1223
+ django_cfg-1.5.31.dist-info/METADATA,sha256=2AFiJZJDolxFzpZQQNQEVnM7loaXthn6r0QEJFMpwRo,28377
1224
+ django_cfg-1.5.31.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1225
+ django_cfg-1.5.31.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1226
+ django_cfg-1.5.31.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1227
+ django_cfg-1.5.31.dist-info/RECORD,,