django-cfg 1.4.11__py3-none-any.whl → 1.4.13__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 (101) hide show
  1. django_cfg/core/generation/integration_generators/api.py +2 -1
  2. django_cfg/models/django/openapi.py +4 -80
  3. django_cfg/modules/django_client/core/archive/manager.py +2 -2
  4. django_cfg/modules/django_client/core/config/config.py +20 -0
  5. django_cfg/modules/django_client/core/config/service.py +1 -1
  6. django_cfg/modules/django_client/core/generator/__init__.py +4 -4
  7. django_cfg/modules/django_client/core/generator/base.py +71 -0
  8. django_cfg/modules/django_client/core/generator/python/__init__.py +16 -0
  9. django_cfg/modules/django_client/core/generator/python/async_client_gen.py +174 -0
  10. django_cfg/modules/django_client/core/generator/python/files_generator.py +180 -0
  11. django_cfg/modules/django_client/core/generator/python/generator.py +182 -0
  12. django_cfg/modules/django_client/core/generator/python/models_generator.py +318 -0
  13. django_cfg/modules/django_client/core/generator/python/operations_generator.py +278 -0
  14. django_cfg/modules/django_client/core/generator/python/sync_client_gen.py +102 -0
  15. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/api_wrapper.py.jinja +25 -2
  16. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/main_client.py.jinja +24 -6
  17. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/main_client_file.py.jinja +1 -0
  18. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/operation_method.py.jinja +3 -1
  19. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/sub_client.py.jinja +8 -1
  20. django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja +50 -0
  21. django_cfg/modules/django_client/core/generator/python/templates/client/sync_operation_method.py.jinja +9 -0
  22. django_cfg/modules/django_client/core/generator/python/templates/client/sync_sub_client.py.jinja +18 -0
  23. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/main_init.py.jinja +2 -0
  24. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/enum_class.py.jinja +3 -1
  25. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/schema_class.py.jinja +3 -1
  26. django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja +55 -0
  27. django_cfg/modules/django_client/core/generator/python/templates/utils/retry.py.jinja +271 -0
  28. django_cfg/modules/django_client/core/generator/typescript/__init__.py +14 -0
  29. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +165 -0
  30. django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +428 -0
  31. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +207 -0
  32. django_cfg/modules/django_client/core/generator/typescript/generator.py +432 -0
  33. django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +536 -0
  34. django_cfg/modules/django_client/core/generator/typescript/models_generator.py +245 -0
  35. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +298 -0
  36. django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +329 -0
  37. django_cfg/modules/django_client/core/generator/typescript/templates/api_instance.ts.jinja +131 -0
  38. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/app_client.ts.jinja +1 -1
  39. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/client.ts.jinja +77 -1
  40. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/main_client_file.ts.jinja +1 -0
  41. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/sub_client.ts.jinja +3 -3
  42. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja +45 -0
  43. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja +30 -0
  44. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/main_index.ts.jinja +73 -11
  45. django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja +52 -0
  46. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/index.ts.jinja +21 -0
  47. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/schema.ts.jinja +24 -0
  48. django_cfg/modules/django_client/core/generator/typescript/templates/tsconfig.json.jinja +20 -0
  49. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/errors.ts.jinja +3 -1
  50. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/logger.ts.jinja +9 -1
  51. django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja +175 -0
  52. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/storage.ts.jinja +54 -10
  53. django_cfg/modules/django_client/management/commands/generate_client.py +5 -0
  54. django_cfg/modules/django_client/pytest.ini +30 -0
  55. django_cfg/modules/django_client/spectacular/__init__.py +3 -2
  56. django_cfg/modules/django_client/spectacular/async_detection.py +187 -0
  57. django_cfg/{dashboard → modules/django_dashboard}/DEBUG_README.md +2 -2
  58. django_cfg/{dashboard → modules/django_dashboard}/REFACTORING_SUMMARY.md +1 -1
  59. django_cfg/{dashboard → modules/django_dashboard}/management/commands/debug_dashboard.py +5 -5
  60. django_cfg/modules/django_logging/LOGGING_GUIDE.md +1 -1
  61. django_cfg/modules/django_unfold/callbacks/main.py +6 -6
  62. django_cfg/pyproject.toml +1 -1
  63. {django_cfg-1.4.11.dist-info → django_cfg-1.4.13.dist-info}/METADATA +1 -1
  64. {django_cfg-1.4.11.dist-info → django_cfg-1.4.13.dist-info}/RECORD +99 -70
  65. django_cfg/modules/django_client/core/generator/python.py +0 -751
  66. django_cfg/modules/django_client/core/generator/typescript.py +0 -872
  67. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/__init__.py.jinja +0 -0
  68. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/app_init.py.jinja +0 -0
  69. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/app_client.py.jinja +0 -0
  70. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/flat_client.py.jinja +0 -0
  71. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client_file.py.jinja +0 -0
  72. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/app_models.py.jinja +0 -0
  73. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/enums.py.jinja +0 -0
  74. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/models.py.jinja +0 -0
  75. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/utils/logger.py.jinja +0 -0
  76. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/utils/schema.py.jinja +0 -0
  77. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/app_index.ts.jinja +0 -0
  78. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/flat_client.ts.jinja +0 -0
  79. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/operation.ts.jinja +0 -0
  80. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client_file.ts.jinja +0 -0
  81. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/index.ts.jinja +0 -0
  82. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/app_models.ts.jinja +0 -0
  83. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/enums.ts.jinja +0 -0
  84. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/models.ts.jinja +0 -0
  85. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/http.ts.jinja +0 -0
  86. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/schema.ts.jinja +0 -0
  87. /django_cfg/{dashboard → modules/django_dashboard}/__init__.py +0 -0
  88. /django_cfg/{dashboard → modules/django_dashboard}/components.py +0 -0
  89. /django_cfg/{dashboard → modules/django_dashboard}/debug.py +0 -0
  90. /django_cfg/{dashboard → modules/django_dashboard}/management/__init__.py +0 -0
  91. /django_cfg/{dashboard → modules/django_dashboard}/management/commands/__init__.py +0 -0
  92. /django_cfg/{dashboard → modules/django_dashboard}/sections/__init__.py +0 -0
  93. /django_cfg/{dashboard → modules/django_dashboard}/sections/base.py +0 -0
  94. /django_cfg/{dashboard → modules/django_dashboard}/sections/commands.py +0 -0
  95. /django_cfg/{dashboard → modules/django_dashboard}/sections/documentation.py +0 -0
  96. /django_cfg/{dashboard → modules/django_dashboard}/sections/overview.py +0 -0
  97. /django_cfg/{dashboard → modules/django_dashboard}/sections/stats.py +0 -0
  98. /django_cfg/{dashboard → modules/django_dashboard}/sections/system.py +0 -0
  99. {django_cfg-1.4.11.dist-info → django_cfg-1.4.13.dist-info}/WHEEL +0 -0
  100. {django_cfg-1.4.11.dist-info → django_cfg-1.4.13.dist-info}/entry_points.txt +0 -0
  101. {django_cfg-1.4.11.dist-info → django_cfg-1.4.13.dist-info}/licenses/LICENSE +0 -0
@@ -1,9 +1,10 @@
1
1
  """
2
2
  DRF Spectacular postprocessing hooks for django-cfg.
3
3
 
4
- Auto-fixes for OpenAPI schema generation.
4
+ Auto-fixes and enhancements for OpenAPI schema generation.
5
5
  """
6
6
 
7
7
  from .enum_naming import auto_fix_enum_names
8
+ from .async_detection import mark_async_operations
8
9
 
9
- __all__ = ['auto_fix_enum_names']
10
+ __all__ = ['auto_fix_enum_names', 'mark_async_operations']
@@ -0,0 +1,187 @@
1
+ """
2
+ Async View Detection for OpenAPI Schema.
3
+
4
+ Postprocessing hook that detects async-capable Django views and marks
5
+ operations with x-async-capable extension for dual client generation.
6
+ """
7
+
8
+ import inspect
9
+ import logging
10
+ from typing import Dict, Any, Optional
11
+ from django.urls import resolve, Resolver404
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ def mark_async_operations(result: Dict[str, Any], generator, request, public) -> Dict[str, Any]:
17
+ """
18
+ DRF Spectacular postprocessing hook to mark async-capable operations.
19
+
20
+ Scans Django views and marks operations:
21
+ - async def → operation['x-async-capable'] = True
22
+ - def → operation['x-async-capable'] = False
23
+
24
+ Args:
25
+ result: OpenAPI schema dict
26
+ generator: Schema generator instance
27
+ request: HTTP request
28
+ public: Whether schema is public
29
+
30
+ Returns:
31
+ Modified OpenAPI schema with async metadata
32
+
33
+ Example:
34
+ paths:
35
+ /api/products/:
36
+ get:
37
+ operationId: products_list
38
+ x-async-capable: true # Async view detected
39
+ """
40
+
41
+ if 'paths' not in result:
42
+ return result
43
+
44
+ async_count = 0
45
+ sync_count = 0
46
+
47
+ for path, methods in result['paths'].items():
48
+ for method, operation in methods.items():
49
+ if method.upper() in ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']:
50
+ # Try to resolve view function
51
+ view_func = _resolve_view_function(path, method, operation)
52
+
53
+ if view_func:
54
+ # Check if view is async
55
+ is_async = inspect.iscoroutinefunction(view_func)
56
+ operation['x-async-capable'] = is_async
57
+
58
+ if is_async:
59
+ async_count += 1
60
+ logger.debug(f"✓ Async view detected: {method.upper()} {path}")
61
+ else:
62
+ sync_count += 1
63
+ else:
64
+ # Default to sync if cannot resolve
65
+ operation['x-async-capable'] = False
66
+ sync_count += 1
67
+
68
+ logger.info(f"🔍 Async detection: {async_count} async, {sync_count} sync operations")
69
+
70
+ return result
71
+
72
+
73
+ def _resolve_view_function(path: str, method: str, operation: Dict[str, Any]) -> Optional[callable]:
74
+ """
75
+ Resolve view function from OpenAPI operation.
76
+
77
+ Args:
78
+ path: API path (e.g., /api/products/)
79
+ method: HTTP method (e.g., GET)
80
+ operation: OpenAPI operation dict
81
+
82
+ Returns:
83
+ View function or None if cannot resolve
84
+ """
85
+ # Try to get view from operationId
86
+ operation_id = operation.get('operationId')
87
+
88
+ if not operation_id:
89
+ return None
90
+
91
+ # Convert path to Django URL format
92
+ # /api/products/{id}/ → /api/products/1/
93
+ django_path = _convert_openapi_path_to_django(path)
94
+
95
+ try:
96
+ # Resolve URL to view
97
+ resolved = resolve(django_path)
98
+ view_func = resolved.func
99
+
100
+ # Handle ViewSets and class-based views
101
+ if hasattr(view_func, 'cls'):
102
+ # ViewSet - get specific action method
103
+ view_class = view_func.cls
104
+
105
+ # Extract action from operationId
106
+ # products_list → list, products_create → create
107
+ action = _extract_action_from_operation_id(operation_id)
108
+
109
+ if hasattr(view_class, action):
110
+ return getattr(view_class, action)
111
+
112
+ # Fallback to view class itself
113
+ return view_class
114
+
115
+ elif hasattr(view_func, 'view_class'):
116
+ # Class-based view
117
+ view_class = view_func.view_class
118
+
119
+ # Get method handler (get, post, put, etc.)
120
+ method_lower = method.lower()
121
+ if hasattr(view_class, method_lower):
122
+ return getattr(view_class, method_lower)
123
+
124
+ return view_class
125
+
126
+ else:
127
+ # Function-based view
128
+ return view_func
129
+
130
+ except Resolver404:
131
+ logger.debug(f"Cannot resolve path: {django_path}")
132
+ return None
133
+ except Exception as e:
134
+ logger.debug(f"Error resolving view for {path}: {e}")
135
+ return None
136
+
137
+
138
+ def _convert_openapi_path_to_django(openapi_path: str) -> str:
139
+ """
140
+ Convert OpenAPI path to Django URL format.
141
+
142
+ Examples:
143
+ /api/products/{id}/ → /api/products/1/
144
+ /api/posts/{post_slug}/comments/ → /api/posts/test-slug/comments/
145
+ """
146
+ import re
147
+
148
+ # Replace path parameters with sample values
149
+ # {id} → 1, {slug} → test-slug, {pk} → 1, {uuid} → sample UUID
150
+ def replace_param(match):
151
+ param_name = match.group(1)
152
+
153
+ # Check uuid first (before id, since uuid contains 'id')
154
+ if 'uuid' in param_name.lower():
155
+ return '00000000-0000-0000-0000-000000000001'
156
+ elif 'id' in param_name.lower() or 'pk' in param_name.lower():
157
+ return '1'
158
+ elif 'slug' in param_name.lower():
159
+ return 'test-slug'
160
+ else:
161
+ return 'test-value'
162
+
163
+ django_path = re.sub(r'\{([^}]+)\}', replace_param, openapi_path)
164
+ return django_path
165
+
166
+
167
+ def _extract_action_from_operation_id(operation_id: str) -> str:
168
+ """
169
+ Extract ViewSet action from operationId.
170
+
171
+ Examples:
172
+ products_list → list
173
+ products_create → create
174
+ products_retrieve → retrieve
175
+ products_partial_update → partial_update
176
+ """
177
+ # Split by underscore and get last part
178
+ parts = operation_id.split('_')
179
+
180
+ if len(parts) >= 2:
181
+ # Get everything after first underscore
182
+ # products_list → list
183
+ # products_partial_update → partial_update
184
+ action = '_'.join(parts[1:])
185
+ return action
186
+
187
+ return operation_id
@@ -37,7 +37,7 @@ libs/django_cfg/src/django_cfg/debug/dashboard/
37
37
  ### 3. Программное использование
38
38
 
39
39
  ```python
40
- from django_cfg.dashboard.debug import save_section_render
40
+ from django_cfg.modules.django_dashboard.debug import save_section_render
41
41
 
42
42
  # В коде секции
43
43
  html = section.render()
@@ -62,7 +62,7 @@ dashboard/
62
62
  ## Сравнение с архивом
63
63
 
64
64
  ```python
65
- from django_cfg.dashboard.debug import get_debugger
65
+ from django_cfg.modules.django_dashboard.debug import get_debugger
66
66
  from pathlib import Path
67
67
 
68
68
  debugger = get_debugger()
@@ -65,7 +65,7 @@ python manage.py debug_dashboard
65
65
  ### 2. Автоматическое сохранение рендеров ✅
66
66
  При каждом рендере секции автоматически сохраняются через:
67
67
  ```python
68
- from django_cfg.dashboard.debug import save_section_render
68
+ from django_cfg.modules.django_dashboard.debug import save_section_render
69
69
 
70
70
  save_section_render('overview', html)
71
71
  ```
@@ -8,11 +8,11 @@ from django.core.management.base import BaseCommand
8
8
  from django.test import RequestFactory
9
9
  from django.contrib.auth import get_user_model
10
10
 
11
- from django_cfg.dashboard.sections.overview import OverviewSection
12
- from django_cfg.dashboard.sections.stats import StatsSection
13
- from django_cfg.dashboard.sections.system import SystemSection
14
- from django_cfg.dashboard.sections.commands import CommandsSection
15
- from django_cfg.dashboard.debug import get_debugger
11
+ from django_cfg.modules.django_dashboard.sections.overview import OverviewSection
12
+ from django_cfg.modules.django_dashboard.sections.stats import StatsSection
13
+ from django_cfg.modules.django_dashboard.sections.system import SystemSection
14
+ from django_cfg.modules.django_dashboard.sections.commands import CommandsSection
15
+ from django_cfg.modules.django_dashboard.debug import get_debugger
16
16
 
17
17
 
18
18
  class Command(BaseCommand):
@@ -247,7 +247,7 @@ config = get_current_config()
247
247
 
248
248
  if config and config.debug:
249
249
  # Expensive operation only in debug mode
250
- from django_cfg.dashboard.debug import save_section_render
250
+ from django_cfg.modules.django_dashboard.debug import save_section_render
251
251
  save_section_render('overview', html_content)
252
252
  else:
253
253
  # Skip debug rendering in production
@@ -24,12 +24,12 @@ from .users import UsersCallbacks
24
24
  from .base import get_user_admin_urls
25
25
 
26
26
  # Import new dashboard sections
27
- from django_cfg.dashboard.sections.overview import OverviewSection
28
- from django_cfg.dashboard.sections.stats import StatsSection
29
- from django_cfg.dashboard.sections.system import SystemSection
30
- from django_cfg.dashboard.sections.commands import CommandsSection
31
- from django_cfg.dashboard.sections.documentation import DocumentationSection
32
- from django_cfg.dashboard.debug import save_section_render
27
+ from django_cfg.modules.django_dashboard.sections.overview import OverviewSection
28
+ from django_cfg.modules.django_dashboard.sections.stats import StatsSection
29
+ from django_cfg.modules.django_dashboard.sections.system import SystemSection
30
+ from django_cfg.modules.django_dashboard.sections.commands import CommandsSection
31
+ from django_cfg.modules.django_dashboard.sections.documentation import DocumentationSection
32
+ from django_cfg.modules.django_dashboard.debug import save_section_render
33
33
 
34
34
  logger = logging.getLogger(__name__)
35
35
 
django_cfg/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "django-cfg"
7
- version = "1.4.11"
7
+ version = "1.4.13"
8
8
  description = "Django AI framework with built-in agents, type-safe Pydantic v2 configuration, and 8 enterprise apps. Replace settings.py, validate at startup, 90% less code. Production-ready AI workflows for Django."
9
9
  readme = "README.md"
10
10
  keywords = [ "django", "configuration", "pydantic", "settings", "type-safety", "pydantic-settings", "django-environ", "startup-validation", "ide-autocomplete", "ai-agents", "enterprise-django", "django-settings", "type-safe-config",]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.4.11
3
+ Version: 1.4.13
4
4
  Summary: Django AI framework with built-in agents, type-safe Pydantic v2 configuration, and 8 enterprise apps. Replace settings.py, validate at startup, 90% less code. Production-ready AI workflows for Django.
5
5
  Project-URL: Homepage, https://djangocfg.com
6
6
  Project-URL: Documentation, https://djangocfg.com
@@ -571,7 +571,7 @@ django_cfg/core/generation/data_generators/__init__.py,sha256=t8YepmMhMysy95tRYG
571
571
  django_cfg/core/generation/data_generators/cache.py,sha256=IEwyVBJ-QJgOm5C13z-974YzV73aZO9MCresGweE7PM,3840
572
572
  django_cfg/core/generation/data_generators/database.py,sha256=ixJOB5e-e3N06F2QNQ1NJV0KLy26RxyvoKaRI1x5FIE,3481
573
573
  django_cfg/core/generation/integration_generators/__init__.py,sha256=tBuO25IHxx5KFHlJumh4L-jA1hXi9smIECPCR2jcgy8,599
574
- django_cfg/core/generation/integration_generators/api.py,sha256=fAyulLYjDw7DWDKOpbSfbIB0QICvOBMYutAB90U0qaM,9938
574
+ django_cfg/core/generation/integration_generators/api.py,sha256=RmHvu9vfe5FFc7Qhf7BiF6chMlNhQg5pibCYZsHAp98,10017
575
575
  django_cfg/core/generation/integration_generators/sessions.py,sha256=W2KJetdF-lgfo54fouLCM6a_iTWGpXZrj1xI2CrtZ7g,1644
576
576
  django_cfg/core/generation/integration_generators/tailwind.py,sha256=nEcaBu-uNJ_O2Y2lHCAc1pG7m8LthnrFFHPxDJqSh3k,1208
577
577
  django_cfg/core/generation/integration_generators/tasks.py,sha256=Wlh9f1dpn_05k7dZxGEm2TegGK-TuP4zVwbCMg5ocM4,2514
@@ -601,21 +601,6 @@ django_cfg/core/state/registry.py,sha256=08SYwqp2qrZY0FUg6xXVYgyZfVykIF4mmBkzLKH
601
601
  django_cfg/core/types/__init__.py,sha256=zBdIm_Xgr-nTlZ4p7Hr5hoiRdYpIbmikv0SFHXOnFOw,378
602
602
  django_cfg/core/types/aliases.py,sha256=keoGFIw8rLeeRMNNmqhstUo9p-e4VQ7JTIGOxx6BJBc,271
603
603
  django_cfg/core/types/enums.py,sha256=o_g7fvEQ7PboDmf2k-3wODE1lvGfHBFos17bW1673UM,1116
604
- django_cfg/dashboard/DEBUG_README.md,sha256=wTvgptUgH-7d1Y0C7EDTJ60rhG_ZZ-p58Z5yLN7DnlU,3357
605
- django_cfg/dashboard/REFACTORING_SUMMARY.md,sha256=u-wNCZSEQ0lo0Zab7WpjbIiDauEK5du1uNejezb_a8Q,8027
606
- django_cfg/dashboard/__init__.py,sha256=Uh42VBq8QRr-x1eCi2cPGdXGgQM1g4tapIv4zk-PRuo,626
607
- django_cfg/dashboard/components.py,sha256=TDuD54gMzae4jirPZ-vycJN_B0Fdzvq-uvcsnMa4nnw,9451
608
- django_cfg/dashboard/debug.py,sha256=XpbVYvkX7dcYqYi2ogV88hQfwAwXVep1C57WiDiIXE8,5406
609
- django_cfg/dashboard/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
610
- django_cfg/dashboard/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
611
- django_cfg/dashboard/management/commands/debug_dashboard.py,sha256=k6Rxv2M3Sb3pb5lUGrvDoRfL3Sv2WrwQmSnQmMJoip4,3589
612
- django_cfg/dashboard/sections/__init__.py,sha256=AnyTuKlR1SrxfF6aK7vBxhv3yuSaL2YLiKSepnkQAq0,34
613
- django_cfg/dashboard/sections/base.py,sha256=QbN8rMu44z2CpM1O6AVY6PSuGV9WBrL4H6LwifgdBZo,3460
614
- django_cfg/dashboard/sections/commands.py,sha256=u6O8kSreArpktc0VodcZpEOV06uE3v2PTpW-XA-BXmk,946
615
- django_cfg/dashboard/sections/documentation.py,sha256=ShWCIaC2VWH1I_8vAZz188mszH4tXzeUFOsDOPh2YtU,16971
616
- django_cfg/dashboard/sections/overview.py,sha256=ysycr-qTRC1ndCFmO7KaEkc1BWU-eoaNqkoRnvnaYgw,13465
617
- django_cfg/dashboard/sections/stats.py,sha256=k4ogZtZtR1CEkFTvoWgU-HTysr-Y2S4Lie7CNRzl534,1348
618
- django_cfg/dashboard/sections/system.py,sha256=IP4SJMPOL-gqDancE_g46ZbmlveYDvljpszRJmz1tSc,2025
619
604
  django_cfg/management/__init__.py,sha256=NrLAhiS59hqjy-bipOC1abNuRiNm5BpKXmjN05VzKbM,28
620
605
  django_cfg/management/commands/__init__.py,sha256=GqJDbjiwRa9Y9uvf695EZ-Y42vQIMHp5YkjhMoeAM9I,417
621
606
  django_cfg/management/commands/check_endpoints.py,sha256=ulsxnUVK2ADMNYPy8CpRHBIhHjYdT8NncLMH_M5lbYk,503
@@ -663,7 +648,7 @@ django_cfg/models/base/module.py,sha256=P6YowmE-VOqp_L25Ijxj2hjjNhB9xtlm8G35DHWq
663
648
  django_cfg/models/django/__init__.py,sha256=eAV-U4Kj7lW1ymGEQ8Ng6Y7MAq0Nro3wk4_yf80nPEI,350
664
649
  django_cfg/models/django/constance.py,sha256=IVklMTtusxWnWaU3PSatGLQfg5qY_Y89MZQjsJFwbCk,9175
665
650
  django_cfg/models/django/environment.py,sha256=jdg6DXQrnuLSdfZNV4KoFlkiPl1n2jOicPU8NFzyB5U,9439
666
- django_cfg/models/django/openapi.py,sha256=oUX5A3ErqyxnsJB7p1CeyzvHCUh7xYrB6e6rVr_uDDc,9335
651
+ django_cfg/models/django/openapi.py,sha256=UyObu4IJqDUWQ_CcaZFXsd0rdCpAejlobYTVj5Y1pPA,5846
667
652
  django_cfg/models/django/revolution_legacy.py,sha256=NONFa3U-w2HSMKumEh0BOD5HVI3ghiMvDbISpWC_wr4,9005
668
653
  django_cfg/models/infrastructure/__init__.py,sha256=If0XLyDNaR_F6rOhDJBCT5RmkOOoNcY61L70pQvaO1s,369
669
654
  django_cfg/models/infrastructure/cache.py,sha256=N6LWinyokWcmuJmInn0q48TQq0Je-xXMJdZ0DbelGPU,12175
@@ -730,56 +715,84 @@ django_cfg/modules/django_admin/utils/badges.py,sha256=YPpIzJMDdDFLKCFqgXAZ8tYcL
730
715
  django_cfg/modules/django_admin/utils/displays.py,sha256=b7aicrsoocYWZhmBIZeJvrKsew-X8tSHRDQjulR0_IY,9971
731
716
  django_cfg/modules/django_client/__init__.py,sha256=iHaGKbsyR2wMmVCWNsETC7cwB60fZudvnFMiK1bchW8,529
732
717
  django_cfg/modules/django_client/apps.py,sha256=5BiyZCo70pceGcRWXMduXhALiK7D8fM-pEIx4VOi1KY,1153
718
+ django_cfg/modules/django_client/pytest.ini,sha256=yC1PeQKS4nWQD-jVo5fWF9y1Uv6rywcH0mtHREsiAp0,668
733
719
  django_cfg/modules/django_client/urls.py,sha256=n4hdy2lA05a-Vc5JXUvEl-wr7dwg03fxhb_jWkmhkWs,1789
734
720
  django_cfg/modules/django_client/core/__init__.py,sha256=JQN7WunYrVWN6Mw9U1e6LfseuLh0Q-8SiI2DImWODvU,1066
735
721
  django_cfg/modules/django_client/core/archive/__init__.py,sha256=SKeOKjRnw_NsL7_fOU_2Neo-bcDj4Hv2sVFYztJYiSI,171
736
- django_cfg/modules/django_client/core/archive/manager.py,sha256=UeBuEdXQVUxHrJm8tG6RLVXyxjQpnLOYeytdk3NXVVI,3752
722
+ django_cfg/modules/django_client/core/archive/manager.py,sha256=yCBzRLs4-nnd_QqYssdeVSPpHjE3LjkrxiyXjqOyP2w,3792
737
723
  django_cfg/modules/django_client/core/cli/__init__.py,sha256=bqY0TX3uaOyhlDmVVQ0kjoCvEPqKJFgWBYVPj974dQs,167
738
724
  django_cfg/modules/django_client/core/cli/main.py,sha256=jzNBESbsxxcy5OQkoXBvxlw2gfx5Uy7uKjJuFOFzIvA,6651
739
725
  django_cfg/modules/django_client/core/config/__init__.py,sha256=aFniCFG7yC1Iaal5euPLjuQ-VubyDryc3a7cST8APTk,411
740
- django_cfg/modules/django_client/core/config/config.py,sha256=gtkPr2dOQ00ro1VyWa4TB3RZVqalkSi7SdhyzSf56p0,5766
726
+ django_cfg/modules/django_client/core/config/config.py,sha256=P1x4PuTp9ZndlQ_lmCsSdXbyqSoRAVoPxvoBIaLbMxU,6399
741
727
  django_cfg/modules/django_client/core/config/group.py,sha256=jmFJLzzhozIBApENHJ_rzrZWd-abd2zXQhf54SLZZAc,2645
742
- django_cfg/modules/django_client/core/config/service.py,sha256=7Sba_o7ZMHQzzIc4GgSBMeF_Kmbmjx4zSLC488uaC5g,6287
743
- django_cfg/modules/django_client/core/generator/__init__.py,sha256=6xJWv-vDteML_O6gnvcFTco36fvlNbvlNgMKvF27NNE,3381
744
- django_cfg/modules/django_client/core/generator/base.py,sha256=TASMD4ZV1NRHcwwG--Zdvmu_ZKKL5RxAbdxePnGAJpM,28815
745
- django_cfg/modules/django_client/core/generator/python.py,sha256=eMxn9EtXzRtUStwAY0F4iJZXxFeB8C9lRvS2nx-XP5E,27255
746
- django_cfg/modules/django_client/core/generator/typescript.py,sha256=eF7QCc4NC1oE1AK9CsZRD6E5PyhanHcbzw6-eiovm0c,32715
747
- django_cfg/modules/django_client/core/generator/templates/python/__init__.py.jinja,sha256=eZEZQSz9dc7wjMiFtBtXv_8zVevZozAXwEQ1r1ODpsc,136
748
- django_cfg/modules/django_client/core/generator/templates/python/api_wrapper.py.jinja,sha256=26SkoGs40n8ZuSYiIrEz6uPWAR-OLrmg0sqLEmibVLM,3736
749
- django_cfg/modules/django_client/core/generator/templates/python/app_init.py.jinja,sha256=kffAbtfAWLKar2R9X1TyyT3NFXzZTAr1KwsKUGXLf7s,98
750
- django_cfg/modules/django_client/core/generator/templates/python/client_file.py.jinja,sha256=bzyYcWH-nt0Bt3X6P7--AlCShTOl-ecxhuJHeMNpBXA,168
751
- django_cfg/modules/django_client/core/generator/templates/python/main_init.py.jinja,sha256=GhCWRgEY5CWbzT4MIZtXms1AKkQFZLWfpXbiSj3cMAQ,1001
752
- django_cfg/modules/django_client/core/generator/templates/python/client/app_client.py.jinja,sha256=j_oyWpFmt9-s1fO-MruEDY_ZHSPUFsCkHhz-TPWoUGM,370
753
- django_cfg/modules/django_client/core/generator/templates/python/client/flat_client.py.jinja,sha256=32S3aUYMAuxIZKMLw1R-8px_rCaSRBcbs3Wcchag6o0,980
754
- django_cfg/modules/django_client/core/generator/templates/python/client/main_client.py.jinja,sha256=UnjP8yN47t6lMDms32h6Srkb6CPWn3z1_Hiqc7oU7_w,1438
755
- django_cfg/modules/django_client/core/generator/templates/python/client/main_client_file.py.jinja,sha256=F3jO-pDfAAF6LprhCQsZ9_qp30dIqJIil2e7_eBwNdE,232
756
- django_cfg/modules/django_client/core/generator/templates/python/client/operation_method.py.jinja,sha256=Dpt5qnd96GGyLqjRNjV17-6vLFganeuBmFwoJJoljgE,191
757
- django_cfg/modules/django_client/core/generator/templates/python/client/sub_client.py.jinja,sha256=toZ62b3MrHVDmiGNQcmLjjn8F9-P4AZN-O_x-oankh4,276
758
- django_cfg/modules/django_client/core/generator/templates/python/models/app_models.py.jinja,sha256=f-92TTJr0tQcAw7AhKcgksE9XAje-R_HkcbqdHsEe3E,295
759
- django_cfg/modules/django_client/core/generator/templates/python/models/enum_class.py.jinja,sha256=_wi882BOzM7M7ruqvYb41iB91K0In4Z_UjaU1DAhuv4,233
760
- django_cfg/modules/django_client/core/generator/templates/python/models/enums.py.jinja,sha256=sZcWUxdxFS-FBLfY-G0SzeD2VQ2TX7fST2hsIehxyZg,86
761
- django_cfg/modules/django_client/core/generator/templates/python/models/models.py.jinja,sha256=WzGhM3sQ6tQQ5XjGw-hVaiJSuhcp1Mh5RtXgFI0PFCw,251
762
- django_cfg/modules/django_client/core/generator/templates/python/models/schema_class.py.jinja,sha256=7LLLQWuojdaF4wymaw2-gBzMKHHCiSjXxrGZ-BbOakw,309
763
- django_cfg/modules/django_client/core/generator/templates/python/utils/logger.py.jinja,sha256=-mESMBFEsr8Jgy-76V5bm_Hiqqfg7xV_BasKS6zyBZA,7612
764
- django_cfg/modules/django_client/core/generator/templates/python/utils/schema.py.jinja,sha256=xrnhAc-hNk6DigxHmTvhR3dyDFI9ocnkhL-_Hz9hCs8,270
765
- django_cfg/modules/django_client/core/generator/templates/typescript/app_index.ts.jinja,sha256=gLsoYyEzKD6Gv64vsO9sQHMPiFMGdaB5XVufLHeRyvQ,62
766
- django_cfg/modules/django_client/core/generator/templates/typescript/client_file.ts.jinja,sha256=LHUt72fO2eRNAHYEscIYvqVR69GC6mxqjcgSlUzeCtc,251
767
- django_cfg/modules/django_client/core/generator/templates/typescript/index.ts.jinja,sha256=OtQxzqV_6SYvugk_oS0F9_WXty2tnKY_wl2n9-WeJqo,127
768
- django_cfg/modules/django_client/core/generator/templates/typescript/main_index.ts.jinja,sha256=ws1IKxfLtyBnBG_qNHArAVknoYN1MGxLy92bYhTPw1g,4741
769
- django_cfg/modules/django_client/core/generator/templates/typescript/client/app_client.ts.jinja,sha256=bIewuGqlktJ549iqibm0FPpd37o3176MehulB8MVxOk,262
770
- django_cfg/modules/django_client/core/generator/templates/typescript/client/client.ts.jinja,sha256=UoC3NnEr5xs3XWOYTM4b4PzfDa6zO7hd1v1ryqQ6tf0,8089
771
- django_cfg/modules/django_client/core/generator/templates/typescript/client/flat_client.ts.jinja,sha256=xmHic5f0Iigde0fisncTcQ2cXkqRreIMVpBFhKbksIY,2626
772
- django_cfg/modules/django_client/core/generator/templates/typescript/client/main_client_file.ts.jinja,sha256=5aze6L45IDEAJshyFAy85SjcCCBzsa9tcFZp6gcKPQs,278
773
- django_cfg/modules/django_client/core/generator/templates/typescript/client/operation.ts.jinja,sha256=z6GD-r7Y-S_yhDtlOAjMgDSL10AF3YrBLLNLPiCt8rE,1869
774
- django_cfg/modules/django_client/core/generator/templates/typescript/client/sub_client.ts.jinja,sha256=Sex7Ktqyp7y3wyv78YCmpNFI9W_eUOxVIukhHGUS0aY,229
775
- django_cfg/modules/django_client/core/generator/templates/typescript/models/app_models.ts.jinja,sha256=hRJ06Z-L4M5IEB23dd_rVgwSzSEGmqaSsKVrg5NasY0,122
776
- django_cfg/modules/django_client/core/generator/templates/typescript/models/enums.ts.jinja,sha256=8BguyHxV4r5JdJD9wYYgZrClysIdlkjf_Bp5toU81u8,49
777
- django_cfg/modules/django_client/core/generator/templates/typescript/models/models.ts.jinja,sha256=mycvqd12K2LsnN4mnwMdQ_SepiIWx6e9gDlUMAGOoBA,121
778
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/errors.ts.jinja,sha256=rC_yET0opR8bBsajoP5HNaBafqg1jD674tCFqxu72ns,3110
779
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/http.ts.jinja,sha256=9hJeUzR3RuGlHpXPmX_OizYIv1Y131WGSG52ItxkY28,2720
780
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/logger.ts.jinja,sha256=35bWYJB1IxxPbQu_2M5zupc36mnkRw5z4O2SvTAHxfM,5273
781
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/schema.ts.jinja,sha256=KC8zJ6R91LtyeVW-dp9ljbwCTZVPyvf0glnRD8pJzAA,167
782
- django_cfg/modules/django_client/core/generator/templates/typescript/utils/storage.ts.jinja,sha256=9SGkhIpOJR8GLyJxOkzkJ9W9mfaHl9R948UOpVO3oxw,3002
728
+ django_cfg/modules/django_client/core/config/service.py,sha256=cWBlLfDiR_FTX5buUHvrn4j5tSPMs3A3jTq02sn3B-Q,6285
729
+ django_cfg/modules/django_client/core/generator/__init__.py,sha256=r9oMGKjLKT3e7qOquzcN3k3K7jUMwDwiP4xp1xa_Cso,3204
730
+ django_cfg/modules/django_client/core/generator/base.py,sha256=M2XZe-Nw8oSJ-tEChuIK5UEfmpNRp9arVPMm1D2q9yw,31549
731
+ django_cfg/modules/django_client/core/generator/python/__init__.py,sha256=DOPkZBmNVX8qKZBulnE-49iMlBsMHszidzBhWG17c2E,448
732
+ django_cfg/modules/django_client/core/generator/python/async_client_gen.py,sha256=cxskiVQPtG2fMhH2TTxZ6-UUIxp_Hb7rvo13CnYGtoc,6030
733
+ django_cfg/modules/django_client/core/generator/python/files_generator.py,sha256=cWczErtcwAFw16JycRC0eRzdmCRtjQUNX4tJx3RlRpk,6420
734
+ django_cfg/modules/django_client/core/generator/python/generator.py,sha256=a7PIkip07IKAuFdcZLK1THkaW--TX9Icp_13JyOktd0,7672
735
+ django_cfg/modules/django_client/core/generator/python/models_generator.py,sha256=j6zYFLfF5OM7q6k1pkyYA1Q1rPzwu1iH0_R7gc96Do4,11844
736
+ django_cfg/modules/django_client/core/generator/python/operations_generator.py,sha256=qJNeOURxvsNPI7idbzl5evTzOj8759fGP75HqFALrjA,10365
737
+ django_cfg/modules/django_client/core/generator/python/sync_client_gen.py,sha256=DbC_ABPPnLz4SYumu0hSac_0dqKtuVu1IID395o6XRg,3489
738
+ django_cfg/modules/django_client/core/generator/python/templates/__init__.py.jinja,sha256=eZEZQSz9dc7wjMiFtBtXv_8zVevZozAXwEQ1r1ODpsc,136
739
+ django_cfg/modules/django_client/core/generator/python/templates/api_wrapper.py.jinja,sha256=tSUUFmv7-UYE-proGfYsdNNe88fS69kzqfC6Afkg66Q,4513
740
+ django_cfg/modules/django_client/core/generator/python/templates/app_init.py.jinja,sha256=kffAbtfAWLKar2R9X1TyyT3NFXzZTAr1KwsKUGXLf7s,98
741
+ django_cfg/modules/django_client/core/generator/python/templates/client_file.py.jinja,sha256=bzyYcWH-nt0Bt3X6P7--AlCShTOl-ecxhuJHeMNpBXA,168
742
+ django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja,sha256=PsyfMMe3EAFE3k3GJB94BKZYldIWqLwRvG3y675D8yk,1065
743
+ django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja,sha256=Ew6GkITkR_E37jSXwO9b8M0MzeB9qqk31CCntV5ZEKg,1318
744
+ django_cfg/modules/django_client/core/generator/python/templates/client/app_client.py.jinja,sha256=j_oyWpFmt9-s1fO-MruEDY_ZHSPUFsCkHhz-TPWoUGM,370
745
+ django_cfg/modules/django_client/core/generator/python/templates/client/flat_client.py.jinja,sha256=32S3aUYMAuxIZKMLw1R-8px_rCaSRBcbs3Wcchag6o0,980
746
+ django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja,sha256=Nye6-aR-Yfzyqf0igc09Vc5l_dxFZIyEDgt3-rS1b2I,2206
747
+ django_cfg/modules/django_client/core/generator/python/templates/client/main_client_file.py.jinja,sha256=nQ0N7vCEYJsz_fCeaGsaArhVditVcS9eZNuehy1ciS4,281
748
+ django_cfg/modules/django_client/core/generator/python/templates/client/operation_method.py.jinja,sha256=b8mwUMvk_KqmRjjQxyVkBesPG7uPOgezTmDFmFdn3Ls,221
749
+ django_cfg/modules/django_client/core/generator/python/templates/client/sub_client.py.jinja,sha256=j_oyWpFmt9-s1fO-MruEDY_ZHSPUFsCkHhz-TPWoUGM,370
750
+ django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja,sha256=2exgNPnyLMUUcuUb7iovtk-p4lxY-vwyIuOSfFrvl1I,1403
751
+ django_cfg/modules/django_client/core/generator/python/templates/client/sync_operation_method.py.jinja,sha256=Tc2WzDN9aNjjX42cIGIswhKcMBySquAa64sJ_vYVJvc,215
752
+ django_cfg/modules/django_client/core/generator/python/templates/client/sync_sub_client.py.jinja,sha256=wXxvMRWKHFDSxmyerozcwbSauUJ2TCJ6M5fZ-DBIL2o,386
753
+ django_cfg/modules/django_client/core/generator/python/templates/models/app_models.py.jinja,sha256=f-92TTJr0tQcAw7AhKcgksE9XAje-R_HkcbqdHsEe3E,295
754
+ django_cfg/modules/django_client/core/generator/python/templates/models/enum_class.py.jinja,sha256=cRiJm1Vuhvs9lss_4uMa8SNR68awCZCMUVcEWUDYBXg,263
755
+ django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja,sha256=sZcWUxdxFS-FBLfY-G0SzeD2VQ2TX7fST2hsIehxyZg,86
756
+ django_cfg/modules/django_client/core/generator/python/templates/models/models.py.jinja,sha256=WzGhM3sQ6tQQ5XjGw-hVaiJSuhcp1Mh5RtXgFI0PFCw,251
757
+ django_cfg/modules/django_client/core/generator/python/templates/models/schema_class.py.jinja,sha256=JszU-wAAwvQ3mSMkiyDtVOGKg_lUiSU3dbXWg1GORws,339
758
+ django_cfg/modules/django_client/core/generator/python/templates/utils/logger.py.jinja,sha256=-mESMBFEsr8Jgy-76V5bm_Hiqqfg7xV_BasKS6zyBZA,7612
759
+ django_cfg/modules/django_client/core/generator/python/templates/utils/retry.py.jinja,sha256=ie7oYfpO7_gUpJHkXcM70-POIldGdStHo12sd04v1n4,8141
760
+ django_cfg/modules/django_client/core/generator/python/templates/utils/schema.py.jinja,sha256=xrnhAc-hNk6DigxHmTvhR3dyDFI9ocnkhL-_Hz9hCs8,270
761
+ django_cfg/modules/django_client/core/generator/typescript/__init__.py,sha256=eHOZp7M65WZ9u3tA_xQlON5-oijZZiGXDhz22Bq73s0,371
762
+ django_cfg/modules/django_client/core/generator/typescript/client_generator.py,sha256=7ql-m59YVt6zGKfVBCxy1OR3CNy6C9lkaMEUqexiRvo,5878
763
+ django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py,sha256=m2bIpgGK11_LGXw9P0QFiSPSQL_05pVYReWBOZ6aUhI,15602
764
+ django_cfg/modules/django_client/core/generator/typescript/files_generator.py,sha256=faRdhVVf9GQ-0esVz94dsaQMB56zK3csyNkhEHL4al4,7044
765
+ django_cfg/modules/django_client/core/generator/typescript/generator.py,sha256=_xuQC10SJ1ZKwA2_h3te4ZkSmH2jlnjUr__EJuBwNVE,16982
766
+ django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py,sha256=suTnbSLHtaezc2kjZwbfNHYSDCYpq8DSeDJ0qL_Bkoc,19886
767
+ django_cfg/modules/django_client/core/generator/typescript/models_generator.py,sha256=m8K0V1sg3wXHv4IbJggFB1nxkCwiSBGruVavo9yzlxs,8283
768
+ django_cfg/modules/django_client/core/generator/typescript/operations_generator.py,sha256=CIcRLrCBqpxOrYcjFtk0mkZGJgUnQlaRDK6G0xADoUA,13171
769
+ django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py,sha256=gd6w8kvogGhy0CDmNYSLRpMG8GiEqvXrBq5TUwOfgn0,10831
770
+ django_cfg/modules/django_client/core/generator/typescript/templates/api_instance.ts.jinja,sha256=OPUjnz6Dk3kY97UFIRcgvxkEIKd6fUGqBzXJWOXKykE,2906
771
+ django_cfg/modules/django_client/core/generator/typescript/templates/app_index.ts.jinja,sha256=gLsoYyEzKD6Gv64vsO9sQHMPiFMGdaB5XVufLHeRyvQ,62
772
+ django_cfg/modules/django_client/core/generator/typescript/templates/client_file.ts.jinja,sha256=LHUt72fO2eRNAHYEscIYvqVR69GC6mxqjcgSlUzeCtc,251
773
+ django_cfg/modules/django_client/core/generator/typescript/templates/index.ts.jinja,sha256=OtQxzqV_6SYvugk_oS0F9_WXty2tnKY_wl2n9-WeJqo,127
774
+ django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja,sha256=DQhgd3fymcjckwWtlCOi37k6ukQvVCmOYnbUxyUwXyU,6824
775
+ django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja,sha256=XOgZJG3twzWJ8gsZ5VZ_gQx7zBvrnwXy-yUFHfdyBBs,1280
776
+ django_cfg/modules/django_client/core/generator/typescript/templates/tsconfig.json.jinja,sha256=QKbo6hYoVdRXrm7psRzBGStzAP5omQrnamSQT6b44gE,482
777
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/app_client.ts.jinja,sha256=jaFN_QIQU2eyu-6uiwUjwACYNr06LI14XGJN0Dgv-9E,260
778
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja,sha256=J-GR7YQuUZn3OiCHYFoDLSZ258bBf--6dx_jAEP55Xc,10376
779
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/flat_client.ts.jinja,sha256=xmHic5f0Iigde0fisncTcQ2cXkqRreIMVpBFhKbksIY,2626
780
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/main_client_file.ts.jinja,sha256=MWiSIhqbw57JcWmpQ6YJJuVLcyw3cQ6qfFyoEKhRVTo,333
781
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/operation.ts.jinja,sha256=z6GD-r7Y-S_yhDtlOAjMgDSL10AF3YrBLLNLPiCt8rE,1869
782
+ django_cfg/modules/django_client/core/generator/typescript/templates/client/sub_client.ts.jinja,sha256=1rtFMqJO8ynjNNblhMPwCbVFhbSbLJJwiMhuJJYf9Lw,215
783
+ django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja,sha256=HNeYh8LnTTmeKTQS7uup37Oq-_HwBPZH8qE1kneaJsg,1296
784
+ django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja,sha256=DoAVm8EoglJKtLrE917Fk7Na6rn5Bt9L1nI39o9AwzM,747
785
+ django_cfg/modules/django_client/core/generator/typescript/templates/models/app_models.ts.jinja,sha256=hRJ06Z-L4M5IEB23dd_rVgwSzSEGmqaSsKVrg5NasY0,122
786
+ django_cfg/modules/django_client/core/generator/typescript/templates/models/enums.ts.jinja,sha256=8BguyHxV4r5JdJD9wYYgZrClysIdlkjf_Bp5toU81u8,49
787
+ django_cfg/modules/django_client/core/generator/typescript/templates/models/models.ts.jinja,sha256=mycvqd12K2LsnN4mnwMdQ_SepiIWx6e9gDlUMAGOoBA,121
788
+ django_cfg/modules/django_client/core/generator/typescript/templates/schemas/index.ts.jinja,sha256=WhV4BOKfP0KQw-tVCTderubrttSWtMdJA9EVfOOqCcU,477
789
+ django_cfg/modules/django_client/core/generator/typescript/templates/schemas/schema.ts.jinja,sha256=6qCyIx5_Y0R4EmjxqbvPwwRRTJp-g-QPHeMLsUG3RWg,536
790
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/errors.ts.jinja,sha256=UPeJNP6pfqA54Z3r23IRBc2dVsaZx0zSuNHj8wyp6v4,3145
791
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/http.ts.jinja,sha256=9hJeUzR3RuGlHpXPmX_OizYIv1Y131WGSG52ItxkY28,2720
792
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/logger.ts.jinja,sha256=ljuinf486Qoae5Xc8ASO3VqEwTbGrTXJkwarER0Uis8,5440
793
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja,sha256=xv1wvOqyIITi7e-318Wxu_af9T72H68TWufVRsHiCqw,4080
794
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/schema.ts.jinja,sha256=KC8zJ6R91LtyeVW-dp9ljbwCTZVPyvf0glnRD8pJzAA,167
795
+ django_cfg/modules/django_client/core/generator/typescript/templates/utils/storage.ts.jinja,sha256=Sbszp1L7b1pN9EScq7c2WmltdC7yXrbqU55v4FmRdT0,4899
783
796
  django_cfg/modules/django_client/core/groups/__init__.py,sha256=6Bw7XECMxamnTDgcNDS9HI8aQCD63_Frhj8ZtejHi4I,226
784
797
  django_cfg/modules/django_client/core/groups/detector.py,sha256=c6FHjveSbMgEbTEL0AnpU5NTWtWqAxXnSH48ebbVR7Y,5562
785
798
  django_cfg/modules/django_client/core/groups/manager.py,sha256=1GL6OTOQuClYZa7_3M7iH_ukhG6z9xxpksbtQjRc-tM,9697
@@ -807,9 +820,10 @@ django_cfg/modules/django_client/core/validation/rules/base.py,sha256=xVJli0eSEz
807
820
  django_cfg/modules/django_client/core/validation/rules/type_hints.py,sha256=hwjTMADillsTPruDvXZQeZMj4LVV443zxY9o0Gqgg6k,10200
808
821
  django_cfg/modules/django_client/management/__init__.py,sha256=mCTPP_bIOmqNnn0WAG2n4BuF6zwc9PTgdZr_dORfNDk,54
809
822
  django_cfg/modules/django_client/management/commands/__init__.py,sha256=CJ55pHUNYQ5h-QHUe3axeTtxzlUJv7wbEuZmGN21iCM,36
810
- django_cfg/modules/django_client/management/commands/generate_client.py,sha256=HZktgwRzc1b5U1bbT8Nenwz2AY7NitrOSXDYAD7ZGyw,16341
823
+ django_cfg/modules/django_client/management/commands/generate_client.py,sha256=iZvaJ371EikaIs__UB6XjyFuKmE_yWrIyYzaFZiPhME,16749
811
824
  django_cfg/modules/django_client/management/commands/validate_openapi.py,sha256=EtPhZPIistvxVjoyI4hto9L8bOEAtZS21qSIojJ1uSg,11153
812
- django_cfg/modules/django_client/spectacular/__init__.py,sha256=gi_sWXSrXvRQGtAfcvBAs-A5MNl9h8h-RovK3kYiwxo,185
825
+ django_cfg/modules/django_client/spectacular/__init__.py,sha256=bZNK3hu-ww8BxISPirsTbklaKBNPsf-Jonw3-uIPDhY,278
826
+ django_cfg/modules/django_client/spectacular/async_detection.py,sha256=6mFNl8EdIZd4evt2aFhCb3NXphYK3uf1AtzW3vAs7lE,5730
813
827
  django_cfg/modules/django_client/spectacular/enum_naming.py,sha256=GSTY8DCxtm75v-IBWs07jxM6mAmgSrq_9Nuz6ai2j3k,6496
814
828
  django_cfg/modules/django_currency/README.md,sha256=4R7KtF-rhR6yRg5jbsXwOVXMZNGEpOyW4N3WGN89W7A,4670
815
829
  django_cfg/modules/django_currency/__init__.py,sha256=vAqVGR7_yL66jMsJSUTOOrRfXJVNIXHdAR6bJ1v3skw,2511
@@ -826,6 +840,21 @@ django_cfg/modules/django_currency/examples/__init__.py,sha256=AaHTrP-T1wQot01qi
826
840
  django_cfg/modules/django_currency/examples/example_database_usage.py,sha256=VelbgtnvKH37jkz6e2PHTgjMEc9GiUGkcr2cPyWIwL4,4518
827
841
  django_cfg/modules/django_currency/utils/__init__.py,sha256=6nD3BGQrBn94ZqCCBG8X78KPuTmberoOauwNOUi3SUk,130
828
842
  django_cfg/modules/django_currency/utils/cache.py,sha256=lkbkjtBpok-6UljoL8u3yWgyIaaayujlaPXiCamxGHE,2557
843
+ django_cfg/modules/django_dashboard/DEBUG_README.md,sha256=X1yKA_IVQHwnyam2dZ7hHroLWyLeAOQ_OMfog1ILggk,3387
844
+ django_cfg/modules/django_dashboard/REFACTORING_SUMMARY.md,sha256=PAxz0u0ueJRpzDbdhHEiJQncYob5Tc_LfuE1E5OtQko,8042
845
+ django_cfg/modules/django_dashboard/__init__.py,sha256=Uh42VBq8QRr-x1eCi2cPGdXGgQM1g4tapIv4zk-PRuo,626
846
+ django_cfg/modules/django_dashboard/components.py,sha256=TDuD54gMzae4jirPZ-vycJN_B0Fdzvq-uvcsnMa4nnw,9451
847
+ django_cfg/modules/django_dashboard/debug.py,sha256=XpbVYvkX7dcYqYi2ogV88hQfwAwXVep1C57WiDiIXE8,5406
848
+ django_cfg/modules/django_dashboard/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
849
+ django_cfg/modules/django_dashboard/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
850
+ django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py,sha256=w4gR0LsRUD8JujqBM_W7EwFaYmWBrS5hkpDUYurPuT8,3664
851
+ django_cfg/modules/django_dashboard/sections/__init__.py,sha256=AnyTuKlR1SrxfF6aK7vBxhv3yuSaL2YLiKSepnkQAq0,34
852
+ django_cfg/modules/django_dashboard/sections/base.py,sha256=QbN8rMu44z2CpM1O6AVY6PSuGV9WBrL4H6LwifgdBZo,3460
853
+ django_cfg/modules/django_dashboard/sections/commands.py,sha256=u6O8kSreArpktc0VodcZpEOV06uE3v2PTpW-XA-BXmk,946
854
+ django_cfg/modules/django_dashboard/sections/documentation.py,sha256=ShWCIaC2VWH1I_8vAZz188mszH4tXzeUFOsDOPh2YtU,16971
855
+ django_cfg/modules/django_dashboard/sections/overview.py,sha256=ysycr-qTRC1ndCFmO7KaEkc1BWU-eoaNqkoRnvnaYgw,13465
856
+ django_cfg/modules/django_dashboard/sections/stats.py,sha256=k4ogZtZtR1CEkFTvoWgU-HTysr-Y2S4Lie7CNRzl534,1348
857
+ django_cfg/modules/django_dashboard/sections/system.py,sha256=IP4SJMPOL-gqDancE_g46ZbmlveYDvljpszRJmz1tSc,2025
829
858
  django_cfg/modules/django_drf_theme/CHANGELOG.md,sha256=1yT2B3opzmo0e1rgnm79rCAhfLuWAA8RxkdfSFqRGRk,5394
830
859
  django_cfg/modules/django_drf_theme/EXAMPLE.md,sha256=TohVazV3tafLRVUPRhrmUahOdQZhOYhLtXcXJIupxTs,10967
831
860
  django_cfg/modules/django_drf_theme/IMPLEMENTATION.md,sha256=clVkX9ABfwhvWMnsV6jtD-lSuV5rj_xBO2spp4oS8so,7373
@@ -909,7 +938,7 @@ django_cfg/modules/django_llm/translator/utils/__init__.py,sha256=zDKKhXonokVHtV
909
938
  django_cfg/modules/django_llm/translator/utils/prompt_builder.py,sha256=kioi4xT3lvC_lzoheak49AcUcUy8zxsiPv-KqpLPBmY,3376
910
939
  django_cfg/modules/django_llm/translator/utils/text_utils.py,sha256=_7Z4n1oi2_Zl3NU8kbRiLa2dCRViyzFG6-sUIcEmnmE,2925
911
940
  django_cfg/modules/django_logging/FIXES_SUMMARY.md,sha256=O2Dvecw-9gEbQkZVq6HfMrC3lfqkRMfn5YaHAp_Ay1s,7741
912
- django_cfg/modules/django_logging/LOGGING_GUIDE.md,sha256=eatXnw0G97FrQnTleoAay7U-2v_sj2XRQgu4M3z2oHc,14387
941
+ django_cfg/modules/django_logging/LOGGING_GUIDE.md,sha256=WVXefLk7tSEud7wo6sN-lk07buwQpkFAa4hV7Y5WYSk,14402
913
942
  django_cfg/modules/django_logging/__init__.py,sha256=Tq3w3pRVplp1KTJ1whXDKlTwdjJX72BaU-M7IM0uqGQ,231
914
943
  django_cfg/modules/django_logging/django_logger.py,sha256=xeqnOdI93QuVRsehpcHmyMdq0YDhca1_he7BxoIOhVw,8889
915
944
  django_cfg/modules/django_logging/logger.py,sha256=-tZ7DFFiws6fcyB_XVlB2I_b_K99w1DKOVB7-UW4i7A,11055
@@ -984,7 +1013,7 @@ django_cfg/modules/django_unfold/callbacks/actions.py,sha256=nJBTC840xPyMLoR1Vjn
984
1013
  django_cfg/modules/django_unfold/callbacks/base.py,sha256=Ah8luHRuEnY95_bph50P2E9OvEmJhtGXZ_R61voA16o,10033
985
1014
  django_cfg/modules/django_unfold/callbacks/charts.py,sha256=572ogmblGaj0lcpmNNGTKvdAxQ1Y1Gt8oTSR0-Qjav8,8371
986
1015
  django_cfg/modules/django_unfold/callbacks/commands.py,sha256=L27Njk6uF7lBHjJjBjfxMnw3zNKahgtJctfw9KtHsvA,1285
987
- django_cfg/modules/django_unfold/callbacks/main.py,sha256=hj59ZrPymtXlbqWf4niLGEhNbEOLA1pRHgMPvjB2SR8,12051
1016
+ django_cfg/modules/django_unfold/callbacks/main.py,sha256=LFr2KNtGzzruru-79cWGAOW-x9O51_nkHDfTQXTZ-gc,12141
988
1017
  django_cfg/modules/django_unfold/callbacks/revolution.py,sha256=yBs71Olb63PTD2ObMwBZI2E8OUJJqKOetwVTK4-pZko,3164
989
1018
  django_cfg/modules/django_unfold/callbacks/statistics.py,sha256=MQeaUCJG06vQ90cY7Qg62Rw5En8cDybaKjx9l-9uDLg,8830
990
1019
  django_cfg/modules/django_unfold/callbacks/system.py,sha256=76o8Hx4WNsAz2B4D_F-7CHJVWh6U2M3MDsqriSxFBzo,6087
@@ -1071,9 +1100,9 @@ django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaN
1071
1100
  django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
1072
1101
  django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
1073
1102
  django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1074
- django_cfg/pyproject.toml,sha256=orbucjtYxXpujO4yFWseOO09DGVezTNWj4PViyEd0QY,8210
1075
- django_cfg-1.4.11.dist-info/METADATA,sha256=1xFWyMjErK4EbyuS-wQAmV0-U-3eyq88W_u0VhkXM_g,22533
1076
- django_cfg-1.4.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1077
- django_cfg-1.4.11.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1078
- django_cfg-1.4.11.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1079
- django_cfg-1.4.11.dist-info/RECORD,,
1103
+ django_cfg/pyproject.toml,sha256=0WNgZnwXJtXHRf27_wAqyXZd3paevoZLLw-7p4wD-R4,8210
1104
+ django_cfg-1.4.13.dist-info/METADATA,sha256=HCB5jEjGz2UBDub6qlL55AU8SDwqHHukwNiK2OCb-b4,22533
1105
+ django_cfg-1.4.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1106
+ django_cfg-1.4.13.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1107
+ django_cfg-1.4.13.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1108
+ django_cfg-1.4.13.dist-info/RECORD,,