django-cfg 1.4.11__py3-none-any.whl → 1.4.14__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 (109) hide show
  1. django_cfg/apps/urls.py +120 -108
  2. django_cfg/core/generation/integration_generators/api.py +2 -1
  3. django_cfg/core/integration/url_integration.py +5 -10
  4. django_cfg/models/django/openapi.py +15 -128
  5. django_cfg/modules/django_client/core/archive/manager.py +2 -2
  6. django_cfg/modules/django_client/core/config/config.py +20 -0
  7. django_cfg/modules/django_client/core/config/service.py +1 -1
  8. django_cfg/modules/django_client/core/generator/__init__.py +4 -4
  9. django_cfg/modules/django_client/core/generator/base.py +71 -0
  10. django_cfg/modules/django_client/core/generator/python/__init__.py +16 -0
  11. django_cfg/modules/django_client/core/generator/python/async_client_gen.py +174 -0
  12. django_cfg/modules/django_client/core/generator/python/files_generator.py +180 -0
  13. django_cfg/modules/django_client/core/generator/python/generator.py +182 -0
  14. django_cfg/modules/django_client/core/generator/python/models_generator.py +318 -0
  15. django_cfg/modules/django_client/core/generator/python/operations_generator.py +278 -0
  16. django_cfg/modules/django_client/core/generator/python/sync_client_gen.py +102 -0
  17. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/api_wrapper.py.jinja +25 -2
  18. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/main_client.py.jinja +24 -6
  19. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/main_client_file.py.jinja +1 -0
  20. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/operation_method.py.jinja +3 -1
  21. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/sub_client.py.jinja +8 -1
  22. django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja +50 -0
  23. django_cfg/modules/django_client/core/generator/python/templates/client/sync_operation_method.py.jinja +9 -0
  24. django_cfg/modules/django_client/core/generator/python/templates/client/sync_sub_client.py.jinja +18 -0
  25. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/main_init.py.jinja +2 -0
  26. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/enum_class.py.jinja +3 -1
  27. django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/schema_class.py.jinja +3 -1
  28. django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja +55 -0
  29. django_cfg/modules/django_client/core/generator/python/templates/utils/retry.py.jinja +271 -0
  30. django_cfg/modules/django_client/core/generator/typescript/__init__.py +14 -0
  31. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +165 -0
  32. django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +428 -0
  33. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +207 -0
  34. django_cfg/modules/django_client/core/generator/typescript/generator.py +432 -0
  35. django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +539 -0
  36. django_cfg/modules/django_client/core/generator/typescript/models_generator.py +245 -0
  37. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +298 -0
  38. django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +329 -0
  39. django_cfg/modules/django_client/core/generator/typescript/templates/api_instance.ts.jinja +131 -0
  40. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/app_client.ts.jinja +1 -1
  41. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/client.ts.jinja +77 -1
  42. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/main_client_file.ts.jinja +1 -0
  43. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/sub_client.ts.jinja +3 -3
  44. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/fetchers.ts.jinja +45 -0
  45. django_cfg/modules/django_client/core/generator/typescript/templates/fetchers/index.ts.jinja +30 -0
  46. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/main_index.ts.jinja +73 -11
  47. django_cfg/modules/django_client/core/generator/typescript/templates/package.json.jinja +52 -0
  48. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/index.ts.jinja +21 -0
  49. django_cfg/modules/django_client/core/generator/typescript/templates/schemas/schema.ts.jinja +24 -0
  50. django_cfg/modules/django_client/core/generator/typescript/templates/tsconfig.json.jinja +20 -0
  51. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/errors.ts.jinja +3 -1
  52. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/logger.ts.jinja +9 -1
  53. django_cfg/modules/django_client/core/generator/typescript/templates/utils/retry.ts.jinja +175 -0
  54. django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/storage.ts.jinja +54 -10
  55. django_cfg/modules/django_client/management/commands/generate_client.py +5 -0
  56. django_cfg/modules/django_client/pytest.ini +30 -0
  57. django_cfg/modules/django_client/spectacular/__init__.py +3 -2
  58. django_cfg/modules/django_client/spectacular/async_detection.py +187 -0
  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/modules/django_unfold/dashboard.py +6 -6
  63. django_cfg/pyproject.toml +1 -1
  64. {django_cfg-1.4.11.dist-info → django_cfg-1.4.14.dist-info}/METADATA +1 -1
  65. {django_cfg-1.4.11.dist-info → django_cfg-1.4.14.dist-info}/RECORD +100 -78
  66. django_cfg/dashboard/DEBUG_README.md +0 -105
  67. django_cfg/dashboard/REFACTORING_SUMMARY.md +0 -237
  68. django_cfg/modules/django_client/core/generator/python.py +0 -751
  69. django_cfg/modules/django_client/core/generator/typescript.py +0 -872
  70. django_cfg/modules/django_drf_theme/CHANGELOG.md +0 -210
  71. django_cfg/modules/django_drf_theme/EXAMPLE.md +0 -465
  72. django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +0 -232
  73. django_cfg/modules/django_drf_theme/README.md +0 -207
  74. django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +0 -274
  75. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/__init__.py.jinja +0 -0
  76. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/app_init.py.jinja +0 -0
  77. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/app_client.py.jinja +0 -0
  78. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client/flat_client.py.jinja +0 -0
  79. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/client_file.py.jinja +0 -0
  80. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/app_models.py.jinja +0 -0
  81. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/enums.py.jinja +0 -0
  82. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/models/models.py.jinja +0 -0
  83. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/utils/logger.py.jinja +0 -0
  84. /django_cfg/modules/django_client/core/generator/{templates/python → python/templates}/utils/schema.py.jinja +0 -0
  85. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/app_index.ts.jinja +0 -0
  86. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/flat_client.ts.jinja +0 -0
  87. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client/operation.ts.jinja +0 -0
  88. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/client_file.ts.jinja +0 -0
  89. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/index.ts.jinja +0 -0
  90. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/app_models.ts.jinja +0 -0
  91. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/enums.ts.jinja +0 -0
  92. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/models/models.ts.jinja +0 -0
  93. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/http.ts.jinja +0 -0
  94. /django_cfg/modules/django_client/core/generator/{templates/typescript → typescript/templates}/utils/schema.ts.jinja +0 -0
  95. /django_cfg/{dashboard → modules/django_dashboard}/__init__.py +0 -0
  96. /django_cfg/{dashboard → modules/django_dashboard}/components.py +0 -0
  97. /django_cfg/{dashboard → modules/django_dashboard}/debug.py +0 -0
  98. /django_cfg/{dashboard → modules/django_dashboard}/management/__init__.py +0 -0
  99. /django_cfg/{dashboard → modules/django_dashboard}/management/commands/__init__.py +0 -0
  100. /django_cfg/{dashboard → modules/django_dashboard}/sections/__init__.py +0 -0
  101. /django_cfg/{dashboard → modules/django_dashboard}/sections/base.py +0 -0
  102. /django_cfg/{dashboard → modules/django_dashboard}/sections/commands.py +0 -0
  103. /django_cfg/{dashboard → modules/django_dashboard}/sections/documentation.py +0 -0
  104. /django_cfg/{dashboard → modules/django_dashboard}/sections/overview.py +0 -0
  105. /django_cfg/{dashboard → modules/django_dashboard}/sections/stats.py +0 -0
  106. /django_cfg/{dashboard → modules/django_dashboard}/sections/system.py +0 -0
  107. {django_cfg-1.4.11.dist-info → django_cfg-1.4.14.dist-info}/WHEEL +0 -0
  108. {django_cfg-1.4.11.dist-info → django_cfg-1.4.14.dist-info}/entry_points.txt +0 -0
  109. {django_cfg-1.4.11.dist-info → django_cfg-1.4.14.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
@@ -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
 
@@ -79,7 +79,7 @@ class DashboardManager(BaseCfgModule):
79
79
  if self.should_enable_tasks():
80
80
  operations_items.extend([
81
81
  NavigationItem(title="Background Tasks", icon=Icons.TASK, link="/admin/django_dramatiq/task/"),
82
- NavigationItem(title="Task Dashboard", icon=Icons.SETTINGS_APPLICATIONS, link="/cfg/admin/django_cfg_tasks/admin/dashboard/"),
82
+ NavigationItem(title="Task Dashboard", icon=Icons.SETTINGS_APPLICATIONS, link="/cfg/tasks/admin/dashboard/"),
83
83
  ])
84
84
 
85
85
  # Maintenance Mode (if enabled)
@@ -194,7 +194,7 @@ class DashboardManager(BaseCfgModule):
194
194
 
195
195
  # Main dashboard (always show if payments app enabled)
196
196
  payments_items.append(
197
- NavigationItem(title="Payment Dashboard", icon=Icons.DASHBOARD, link="/cfg/admin/django_cfg_payments/admin/")
197
+ NavigationItem(title="Payment Dashboard", icon=Icons.DASHBOARD, link="/cfg/payments/admin/")
198
198
  )
199
199
 
200
200
  # Always show basic admin models (even if payments functionality is disabled)
@@ -208,13 +208,13 @@ class DashboardManager(BaseCfgModule):
208
208
  # Add advanced features only if payments functionality is enabled
209
209
  if config.enabled:
210
210
  # payments_items.append(
211
- # NavigationItem(title="Webhook Dashboard", icon=Icons.WEBHOOK, link="/cfg/admin/django_cfg_payments/admin/webhooks/")
211
+ # NavigationItem(title="Webhook Dashboard", icon=Icons.WEBHOOK, link="/cfg/payments/admin/webhooks/")
212
212
  # )
213
213
  # payments_items.append(
214
- # NavigationItem(title="Create Payment", icon=Icons.ADD, link="/cfg/admin/django_cfg_payments/admin/payments/create/")
214
+ # NavigationItem(title="Create Payment", icon=Icons.ADD, link="/cfg/payments/admin/payments/create/")
215
215
  # )
216
216
  # payments_items.append(
217
- # NavigationItem(title="Currency Converter", icon=Icons.CURRENCY_EXCHANGE, link="/cfg/admin/django_cfg_payments/admin/tools/converter/")
217
+ # NavigationItem(title="Currency Converter", icon=Icons.CURRENCY_EXCHANGE, link="/cfg/payments/admin/tools/converter/")
218
218
  # )
219
219
 
220
220
  # Show subscription features only if enabled
@@ -246,7 +246,7 @@ class DashboardManager(BaseCfgModule):
246
246
  except Exception:
247
247
  # Fallback
248
248
  payments_items = [
249
- NavigationItem(title="Payment Dashboard", icon=Icons.DASHBOARD, link="/cfg/admin/django_cfg_payments/admin/"),
249
+ NavigationItem(title="Payment Dashboard", icon=Icons.DASHBOARD, link="/cfg/payments/admin/"),
250
250
  NavigationItem(title="Universal Payments", icon=Icons.ACCOUNT_BALANCE, link="/admin/payments/universalpayment/"),
251
251
  ]
252
252
 
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.14"
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.14
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
@@ -3,7 +3,7 @@ django_cfg/__init__.py,sha256=4dZgnuTlq8YmLISTJAqnPrr080kxPfmPKUjhiWhkEDc,1630
3
3
  django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
4
4
  django_cfg/config.py,sha256=3hX5bOCbOWdUvtD9Z5qEHEOEyWzY1-4CsvFs_EO7VSw,1398
5
5
  django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
6
- django_cfg/apps/urls.py,sha256=5fy2TPnYGyiLyy3EpDQkDuR6OuNTSw9avASrD7fSg38,4589
6
+ django_cfg/apps/urls.py,sha256=DKlW8kSPv4MImjNlc9uaukOEkKrk-AvOQrOSjerVUf8,4633
7
7
  django_cfg/apps/accounts/README.md,sha256=YkUYJ3iKMYTmm9ALK2PDnX75SDqZxgnkzNLCD5efxRs,8227
8
8
  django_cfg/apps/accounts/__init__.py,sha256=osecEQhMJVP8ejhZzElNsAqA1fX-GPD3K5_yNwDk6IE,100
9
9
  django_cfg/apps/accounts/__models.py,sha256=65AomWYd78ptQ60drPbodxf0Ue310vmJQpQOPHL6V3E,10161
@@ -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
@@ -588,7 +588,7 @@ django_cfg/core/generation/utils/helpers.py,sha256=V6dTWIzGzAHYDLR7YgV50g_eeWIV8
588
588
  django_cfg/core/integration/README.md,sha256=3V27xNWoGQkauixJGW8TAE8p0FB8iCdt6zI4G4Nnssw,10699
589
589
  django_cfg/core/integration/__init__.py,sha256=2lIMD6W1-uAuo6S3eOWNLPgPgr-uZYSUWZd9F7QZR-c,1880
590
590
  django_cfg/core/integration/commands_collector.py,sha256=-9ppg2jYSrTC35Ijm5vAHUcNZM6AkayuPkfw715Ca2Q,8325
591
- django_cfg/core/integration/url_integration.py,sha256=mEOyhMR_L4iHclM85hl5Jlg8eFtinFH8_6I6lPdKrQQ,4049
591
+ django_cfg/core/integration/url_integration.py,sha256=lTQ_OTDJ5nZQyx4vvkGRj3Edg7sjel7O_NOVZ1NTZY4,3755
592
592
  django_cfg/core/integration/version_checker.py,sha256=NrrbyTAtIkZdNPQHO2PMQjrp8DHk1xVMpvG9xiIvevA,4834
593
593
  django_cfg/core/integration/display/__init__.py,sha256=YwU9nmXOcDJL3q0wW5Q_59gLh_BXPsOfDlT3sZqHWZU,315
594
594
  django_cfg/core/integration/display/base.py,sha256=67ABqa1WErBcFTROFy8fBzwvYYmHiloBk7-Hpexd2rE,5720
@@ -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=AElzz_cPWRgibBLWEnT5dg6CAbGymMMOtRLIsBEiye0,4226
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=FxoAIVq8x1o2WxbU0zGzExP6geC4vH7ofF3w53OXC08,15649
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=DVGb6z_HrNbtMC6QqsyKOjZmAUGBFSEqSo-AijPLw7A,19994
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,11 +840,19 @@ 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
829
- django_cfg/modules/django_drf_theme/CHANGELOG.md,sha256=1yT2B3opzmo0e1rgnm79rCAhfLuWAA8RxkdfSFqRGRk,5394
830
- django_cfg/modules/django_drf_theme/EXAMPLE.md,sha256=TohVazV3tafLRVUPRhrmUahOdQZhOYhLtXcXJIupxTs,10967
831
- django_cfg/modules/django_drf_theme/IMPLEMENTATION.md,sha256=clVkX9ABfwhvWMnsV6jtD-lSuV5rj_xBO2spp4oS8so,7373
832
- django_cfg/modules/django_drf_theme/README.md,sha256=yptVECIXg9qOaAJ9Fsl_oXWaEs7ThuUmbOZ3ISqWhXY,5663
833
- django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md,sha256=00uWtI7DSzJ1khKGBkMiqnkpRXAAfy_6iSEY3tcu-D8,7107
843
+ django_cfg/modules/django_dashboard/__init__.py,sha256=Uh42VBq8QRr-x1eCi2cPGdXGgQM1g4tapIv4zk-PRuo,626
844
+ django_cfg/modules/django_dashboard/components.py,sha256=TDuD54gMzae4jirPZ-vycJN_B0Fdzvq-uvcsnMa4nnw,9451
845
+ django_cfg/modules/django_dashboard/debug.py,sha256=XpbVYvkX7dcYqYi2ogV88hQfwAwXVep1C57WiDiIXE8,5406
846
+ django_cfg/modules/django_dashboard/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
847
+ django_cfg/modules/django_dashboard/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
848
+ django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py,sha256=w4gR0LsRUD8JujqBM_W7EwFaYmWBrS5hkpDUYurPuT8,3664
849
+ django_cfg/modules/django_dashboard/sections/__init__.py,sha256=AnyTuKlR1SrxfF6aK7vBxhv3yuSaL2YLiKSepnkQAq0,34
850
+ django_cfg/modules/django_dashboard/sections/base.py,sha256=QbN8rMu44z2CpM1O6AVY6PSuGV9WBrL4H6LwifgdBZo,3460
851
+ django_cfg/modules/django_dashboard/sections/commands.py,sha256=u6O8kSreArpktc0VodcZpEOV06uE3v2PTpW-XA-BXmk,946
852
+ django_cfg/modules/django_dashboard/sections/documentation.py,sha256=ShWCIaC2VWH1I_8vAZz188mszH4tXzeUFOsDOPh2YtU,16971
853
+ django_cfg/modules/django_dashboard/sections/overview.py,sha256=ysycr-qTRC1ndCFmO7KaEkc1BWU-eoaNqkoRnvnaYgw,13465
854
+ django_cfg/modules/django_dashboard/sections/stats.py,sha256=k4ogZtZtR1CEkFTvoWgU-HTysr-Y2S4Lie7CNRzl534,1348
855
+ django_cfg/modules/django_dashboard/sections/system.py,sha256=IP4SJMPOL-gqDancE_g46ZbmlveYDvljpszRJmz1tSc,2025
834
856
  django_cfg/modules/django_drf_theme/__init__.py,sha256=0D5ctzcjadbw-z7jpvVjvo8C1ufrGRk6b-mA4xSutTE,525
835
857
  django_cfg/modules/django_drf_theme/apps.py,sha256=UzcjnTQyMqExKGwhg5KhCK0eEqgGXtaYbCztHd_V2pw,428
836
858
  django_cfg/modules/django_drf_theme/renderers.py,sha256=AVlXpepI62iHcZhbGAsLwtXpnQ8NeN0zyWQbePUnN3w,1808
@@ -909,7 +931,7 @@ django_cfg/modules/django_llm/translator/utils/__init__.py,sha256=zDKKhXonokVHtV
909
931
  django_cfg/modules/django_llm/translator/utils/prompt_builder.py,sha256=kioi4xT3lvC_lzoheak49AcUcUy8zxsiPv-KqpLPBmY,3376
910
932
  django_cfg/modules/django_llm/translator/utils/text_utils.py,sha256=_7Z4n1oi2_Zl3NU8kbRiLa2dCRViyzFG6-sUIcEmnmE,2925
911
933
  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
934
+ django_cfg/modules/django_logging/LOGGING_GUIDE.md,sha256=WVXefLk7tSEud7wo6sN-lk07buwQpkFAa4hV7Y5WYSk,14402
913
935
  django_cfg/modules/django_logging/__init__.py,sha256=Tq3w3pRVplp1KTJ1whXDKlTwdjJX72BaU-M7IM0uqGQ,231
914
936
  django_cfg/modules/django_logging/django_logger.py,sha256=xeqnOdI93QuVRsehpcHmyMdq0YDhca1_he7BxoIOhVw,8889
915
937
  django_cfg/modules/django_logging/logger.py,sha256=-tZ7DFFiws6fcyB_XVlB2I_b_K99w1DKOVB7-UW4i7A,11055
@@ -974,7 +996,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
974
996
  django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
975
997
  django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
976
998
  django_cfg/modules/django_unfold/__init__.py,sha256=Z91x1iGmkzlRbEb2L9OCFmYDKNAV9C4G3i15j5S0esc,1898
977
- django_cfg/modules/django_unfold/dashboard.py,sha256=qzbk4LblELnQYE_HLVrf25-XHrksoaZAMbfWC59qLE8,18112
999
+ django_cfg/modules/django_unfold/dashboard.py,sha256=EFQWcUG1kfxgaP_cQJjd0qh_xFbm6cehuAeSSPipP8g,18010
978
1000
  django_cfg/modules/django_unfold/models.py,sha256=bY6QSSaH_-r9vOTkSQjxeIkl5RaED7XkxXkT8-W5stk,4014
979
1001
  django_cfg/modules/django_unfold/system_monitor.py,sha256=cznZqldRJqiSLSJbs4U7R2rX8ClzoIpqdfXdXqI2iQw,6955
980
1002
  django_cfg/modules/django_unfold/tailwind.py,sha256=X9o1K3QL0VwUISgJ26sLb6zkdK-00qiDuekqTw-fydc,10846
@@ -984,7 +1006,7 @@ django_cfg/modules/django_unfold/callbacks/actions.py,sha256=nJBTC840xPyMLoR1Vjn
984
1006
  django_cfg/modules/django_unfold/callbacks/base.py,sha256=Ah8luHRuEnY95_bph50P2E9OvEmJhtGXZ_R61voA16o,10033
985
1007
  django_cfg/modules/django_unfold/callbacks/charts.py,sha256=572ogmblGaj0lcpmNNGTKvdAxQ1Y1Gt8oTSR0-Qjav8,8371
986
1008
  django_cfg/modules/django_unfold/callbacks/commands.py,sha256=L27Njk6uF7lBHjJjBjfxMnw3zNKahgtJctfw9KtHsvA,1285
987
- django_cfg/modules/django_unfold/callbacks/main.py,sha256=hj59ZrPymtXlbqWf4niLGEhNbEOLA1pRHgMPvjB2SR8,12051
1009
+ django_cfg/modules/django_unfold/callbacks/main.py,sha256=LFr2KNtGzzruru-79cWGAOW-x9O51_nkHDfTQXTZ-gc,12141
988
1010
  django_cfg/modules/django_unfold/callbacks/revolution.py,sha256=yBs71Olb63PTD2ObMwBZI2E8OUJJqKOetwVTK4-pZko,3164
989
1011
  django_cfg/modules/django_unfold/callbacks/statistics.py,sha256=MQeaUCJG06vQ90cY7Qg62Rw5En8cDybaKjx9l-9uDLg,8830
990
1012
  django_cfg/modules/django_unfold/callbacks/system.py,sha256=76o8Hx4WNsAz2B4D_F-7CHJVWh6U2M3MDsqriSxFBzo,6087
@@ -1071,9 +1093,9 @@ django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaN
1071
1093
  django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
1072
1094
  django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
1073
1095
  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,,
1096
+ django_cfg/pyproject.toml,sha256=FqIAwbsy4vIgNZhhoM8qb7w7Pmtx3V1fAxBSEIMyDHw,8210
1097
+ django_cfg-1.4.14.dist-info/METADATA,sha256=LtLAMrSnJXG5HSuhzLtMT7mz5MOfDyQkkPIUDUVPdtg,22533
1098
+ django_cfg-1.4.14.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1099
+ django_cfg-1.4.14.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1100
+ django_cfg-1.4.14.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1101
+ django_cfg-1.4.14.dist-info/RECORD,,