django-cfg 1.4.76__py3-none-any.whl → 1.4.78__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

django_cfg/__init__.py CHANGED
@@ -32,7 +32,7 @@ Example:
32
32
  default_app_config = "django_cfg.apps.DjangoCfgConfig"
33
33
 
34
34
  # Version information
35
- __version__ = "1.4.76"
35
+ __version__ = "1.4.78"
36
36
  __license__ = "MIT"
37
37
 
38
38
  # Import registry for organized lazy loading
@@ -267,11 +267,11 @@ class ModelsGenerator:
267
267
  if schema.properties:
268
268
  for prop in schema.properties.values():
269
269
  if prop.enum and prop.name:
270
- enum_names.add(prop.name.replace(".", ""))
270
+ enum_names.add(self.base.sanitize_enum_name(prop.name))
271
271
  elif prop.ref and prop.ref in self.context.schemas:
272
272
  ref_schema = self.context.schemas[prop.ref]
273
273
  if ref_schema.enum:
274
- enum_names.add(prop.ref.replace(".", ""))
274
+ enum_names.add(self.base.sanitize_enum_name(prop.ref))
275
275
 
276
276
  # Request models
277
277
  for name, schema in schemas.items():
@@ -282,11 +282,11 @@ class ModelsGenerator:
282
282
  if schema.properties:
283
283
  for prop in schema.properties.values():
284
284
  if prop.enum and prop.name:
285
- enum_names.add(prop.name.replace(".", ""))
285
+ enum_names.add(self.base.sanitize_enum_name(prop.name))
286
286
  elif prop.ref and prop.ref in self.context.schemas:
287
287
  ref_schema = self.context.schemas[prop.ref]
288
288
  if ref_schema.enum:
289
- enum_names.add(prop.ref.replace(".", ""))
289
+ enum_names.add(self.base.sanitize_enum_name(prop.ref))
290
290
 
291
291
  # Patch models
292
292
  for name, schema in schemas.items():
@@ -297,11 +297,11 @@ class ModelsGenerator:
297
297
  if schema.properties:
298
298
  for prop in schema.properties.values():
299
299
  if prop.enum and prop.name:
300
- enum_names.add(prop.name.replace(".", ""))
300
+ enum_names.add(self.base.sanitize_enum_name(prop.name))
301
301
  elif prop.ref and prop.ref in self.context.schemas:
302
302
  ref_schema = self.context.schemas[prop.ref]
303
303
  if ref_schema.enum:
304
- enum_names.add(prop.ref.replace(".", ""))
304
+ enum_names.add(self.base.sanitize_enum_name(prop.ref))
305
305
 
306
306
  template = self.jinja_env.get_template('models/app_models.py.jinja')
307
307
  content = template.render(
@@ -36,13 +36,11 @@ class APIClient:
36
36
  self._client = RetryAsyncClient(
37
37
  base_url=self.base_url,
38
38
  retry_config=retry_config,
39
- timeout=30.0,
40
39
  **kwargs,
41
40
  )
42
41
  else:
43
42
  self._client = httpx.AsyncClient(
44
43
  base_url=self.base_url,
45
- timeout=30.0,
46
44
  **kwargs,
47
45
  )
48
46
 
@@ -25,7 +25,6 @@ class SyncAPIClient:
25
25
  self.base_url = base_url.rstrip('/')
26
26
  self._client = httpx.Client(
27
27
  base_url=self.base_url,
28
- timeout=30.0,
29
28
  **kwargs,
30
29
  )
31
30
 
@@ -38,7 +38,8 @@ from .{{ tag.slug }} import {{ tag.class_name }}
38
38
  {% endfor %}
39
39
  {% if has_enums %}
40
40
  from . import enums
41
- from .enums import {{ enum_names | join(', ') }}
41
+ # NOTE: Individual enum imports commented out due to invalid Python syntax with dotted names
42
+ # from .enums import {{ enum_names | join(', ') }}
42
43
  {% endif %}
43
44
 
44
45
  TOKEN_KEY = "auth_token"
@@ -1,4 +1,10 @@
1
- from enum import IntEnum, StrEnum
1
+ from enum import IntEnum, Enum
2
+
3
+ # Python 3.10 compatibility: StrEnum was added in Python 3.11
4
+ # Use str + Enum instead for backward compatibility
5
+ class StrEnum(str, Enum):
6
+ """String Enum for Python 3.10+ compatibility"""
7
+ pass
2
8
 
3
9
 
4
10
  {% for enum in enums %}
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.76"
7
+ version = "1.4.78"
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",]
@@ -12,11 +12,8 @@
12
12
  <script src="{% static 'admin/js/utils.js' %}"></script>
13
13
  <script src="{% static 'admin/js/alpine/dashboard-tabs.js' %}"></script>
14
14
 
15
- <!-- Alpine.js Collapse Plugin (must load before Alpine.js) -->
16
- <script src="https://cdn.jsdelivr.net/npm/@alpinejs/collapse@3.x.x/dist/cdn.min.js"></script>
17
-
18
- <!-- Alpine.js - Load last with defer -->
19
- <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
15
+ <!-- Note: Alpine.js and its plugins are already loaded by Unfold's skeleton.html -->
16
+ <!-- Removed duplicate Alpine.js CDN loading to prevent conflicts with Unfold's Alpine instance -->
20
17
 
21
18
  <!-- Admin Styles -->
22
19
  <link rel="stylesheet" href="{% static 'admin/css/layout.css' %}">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.4.76
3
+ Version: 1.4.78
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
@@ -1,5 +1,5 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=JbiOG7OuTlO_1id7SIUEer9ZHvBM2KQWcboVY5oPfXQ,1620
2
+ django_cfg/__init__.py,sha256=21SK6gwhcOqj9Lnv_SO7096Ttzk7mUK9gTytijxj__s,1620
3
3
  django_cfg/apps.py,sha256=72m3uuvyqGiLx6gOfE-BD3P61jddCCERuBOYpxTX518,1605
4
4
  django_cfg/config.py,sha256=y4Z3rnYsHBE0TehpwAIPaxr---mkvyKrZGGsNwYso74,1398
5
5
  django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
@@ -736,27 +736,27 @@ django_cfg/modules/django_client/core/generator/python/__init__.py,sha256=DOPkZB
736
736
  django_cfg/modules/django_client/core/generator/python/async_client_gen.py,sha256=zFviFo0PLg3Zb-0TL5AS_Ghhvl-jS180Cl-AWIAWIa0,6030
737
737
  django_cfg/modules/django_client/core/generator/python/files_generator.py,sha256=cgJVL6OZFXQFiy3trgCK5NDfGQWygQBJNaDepDQx4Vc,6420
738
738
  django_cfg/modules/django_client/core/generator/python/generator.py,sha256=N-wkvS9uzAD_EveO9Df74Hfseu47Zi2ZjDfklZtVbO0,7672
739
- django_cfg/modules/django_client/core/generator/python/models_generator.py,sha256=J1QfmB-PNVfJ-w8J1q3DMp4PMC5r9mx1hx8A41tPWiw,11844
739
+ django_cfg/modules/django_client/core/generator/python/models_generator.py,sha256=OszWuv1VgUJIUw-yH0KZBs1xpdiGNvAI9Jnn-DwaMXA,11922
740
740
  django_cfg/modules/django_client/core/generator/python/operations_generator.py,sha256=cOrL8wZhRlOECMXDTgfqjjhzZyhxJa1yQYMbGJjl1ms,10363
741
741
  django_cfg/modules/django_client/core/generator/python/sync_client_gen.py,sha256=3UeC901JBWhlN5XfC1WDH9ulnZmddyB9nR6ncntelTU,3489
742
742
  django_cfg/modules/django_client/core/generator/python/templates/__init__.py.jinja,sha256=eZEZQSz9dc7wjMiFtBtXv_8zVevZozAXwEQ1r1ODpsc,136
743
743
  django_cfg/modules/django_client/core/generator/python/templates/api_wrapper.py.jinja,sha256=tSUUFmv7-UYE-proGfYsdNNe88fS69kzqfC6Afkg66Q,4513
744
744
  django_cfg/modules/django_client/core/generator/python/templates/app_init.py.jinja,sha256=kffAbtfAWLKar2R9X1TyyT3NFXzZTAr1KwsKUGXLf7s,98
745
745
  django_cfg/modules/django_client/core/generator/python/templates/client_file.py.jinja,sha256=bzyYcWH-nt0Bt3X6P7--AlCShTOl-ecxhuJHeMNpBXA,168
746
- django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja,sha256=PsyfMMe3EAFE3k3GJB94BKZYldIWqLwRvG3y675D8yk,1065
746
+ django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja,sha256=0F8bfFLbcyQyPh_vlywUXlT5etpBy-34Rp8iwsjy7Uk,1160
747
747
  django_cfg/modules/django_client/core/generator/python/templates/pyproject.toml.jinja,sha256=Ew6GkITkR_E37jSXwO9b8M0MzeB9qqk31CCntV5ZEKg,1318
748
748
  django_cfg/modules/django_client/core/generator/python/templates/client/app_client.py.jinja,sha256=j_oyWpFmt9-s1fO-MruEDY_ZHSPUFsCkHhz-TPWoUGM,370
749
749
  django_cfg/modules/django_client/core/generator/python/templates/client/flat_client.py.jinja,sha256=32S3aUYMAuxIZKMLw1R-8px_rCaSRBcbs3Wcchag6o0,980
750
- django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja,sha256=Nye6-aR-Yfzyqf0igc09Vc5l_dxFZIyEDgt3-rS1b2I,2206
750
+ django_cfg/modules/django_client/core/generator/python/templates/client/main_client.py.jinja,sha256=8Rs-0UGVsGOtDhEOVxvsnNAtHmKG7OQ_rWCcE08dfNY,2146
751
751
  django_cfg/modules/django_client/core/generator/python/templates/client/main_client_file.py.jinja,sha256=nQ0N7vCEYJsz_fCeaGsaArhVditVcS9eZNuehy1ciS4,281
752
752
  django_cfg/modules/django_client/core/generator/python/templates/client/operation_method.py.jinja,sha256=b8mwUMvk_KqmRjjQxyVkBesPG7uPOgezTmDFmFdn3Ls,221
753
753
  django_cfg/modules/django_client/core/generator/python/templates/client/sub_client.py.jinja,sha256=j_oyWpFmt9-s1fO-MruEDY_ZHSPUFsCkHhz-TPWoUGM,370
754
- django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja,sha256=2exgNPnyLMUUcuUb7iovtk-p4lxY-vwyIuOSfFrvl1I,1403
754
+ django_cfg/modules/django_client/core/generator/python/templates/client/sync_main_client.py.jinja,sha256=o7LIrmGb6zrbECYQxjijWR2AzyCA1Sadp3LQON125Xk,1377
755
755
  django_cfg/modules/django_client/core/generator/python/templates/client/sync_operation_method.py.jinja,sha256=Tc2WzDN9aNjjX42cIGIswhKcMBySquAa64sJ_vYVJvc,215
756
756
  django_cfg/modules/django_client/core/generator/python/templates/client/sync_sub_client.py.jinja,sha256=wXxvMRWKHFDSxmyerozcwbSauUJ2TCJ6M5fZ-DBIL2o,386
757
757
  django_cfg/modules/django_client/core/generator/python/templates/models/app_models.py.jinja,sha256=f-92TTJr0tQcAw7AhKcgksE9XAje-R_HkcbqdHsEe3E,295
758
758
  django_cfg/modules/django_client/core/generator/python/templates/models/enum_class.py.jinja,sha256=cRiJm1Vuhvs9lss_4uMa8SNR68awCZCMUVcEWUDYBXg,263
759
- django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja,sha256=sZcWUxdxFS-FBLfY-G0SzeD2VQ2TX7fST2hsIehxyZg,86
759
+ django_cfg/modules/django_client/core/generator/python/templates/models/enums.py.jinja,sha256=bZQfel62sIuRVnkDprr2MUWpS1BSyZv68maKb8uak08,286
760
760
  django_cfg/modules/django_client/core/generator/python/templates/models/models.py.jinja,sha256=WzGhM3sQ6tQQ5XjGw-hVaiJSuhcp1Mh5RtXgFI0PFCw,251
761
761
  django_cfg/modules/django_client/core/generator/python/templates/models/schema_class.py.jinja,sha256=JszU-wAAwvQ3mSMkiyDtVOGKg_lUiSU3dbXWg1GORws,339
762
762
  django_cfg/modules/django_client/core/generator/python/templates/utils/logger.py.jinja,sha256=-mESMBFEsr8Jgy-76V5bm_Hiqqfg7xV_BasKS6zyBZA,7612
@@ -1088,7 +1088,7 @@ django_cfg/templates/admin/import_export/change_list_export.html,sha256=oFBsnpgZ
1088
1088
  django_cfg/templates/admin/import_export/change_list_import.html,sha256=jL7Dhjcbx8IfzY-ltlxoWLvF97tD9B77moj8Mh6sRjY,1214
1089
1089
  django_cfg/templates/admin/import_export/change_list_import_export.html,sha256=KWnPbkv_kP5TlAKBRutbk_eFTqPXDt6_SmxXULE94iE,1840
1090
1090
  django_cfg/templates/admin/layouts/base_dashboard.html,sha256=8d5WmgT8JzfwxODflLjgsw3cAoW50ikyGwPEHoO4u20,2019
1091
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=G2UvfWDG8KJfuDDRlbV9cBhHjG5VfOXzgbxppGDYn_o,6884
1091
+ django_cfg/templates/admin/layouts/dashboard_with_tabs.html,sha256=wK43wZ4Zfe3PTGUt08CQm28E5IKBx0W6y6skXtHUUNs,6771
1092
1092
  django_cfg/templates/admin/sections/commands_section.html,sha256=yiY9OqoQHS6DZUcnuJv_rlsAMs6cmwlXEecbQDC1rE8,29498
1093
1093
  django_cfg/templates/admin/sections/documentation_section.html,sha256=gRZveCEaE8bnNCvEqXWhl5RefWEKDZJAd_Li2y-rlVY,9791
1094
1094
  django_cfg/templates/admin/sections/overview_section.html,sha256=gfhjBzQBtZQAj1DnjhFE6efgXFWb4GotIgW6kyRVE-g,4726
@@ -1124,9 +1124,9 @@ django_cfg/utils/version_check.py,sha256=WO51J2m2e-wVqWCRwbultEwu3q1lQasV67Mw2aa
1124
1124
  django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
1125
1125
  django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
1126
1126
  django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1127
- django_cfg/pyproject.toml,sha256=ogTAGQXS8RxaV4SqRqcoQkoM9XqemgCy-AUOStNK7jk,8164
1128
- django_cfg-1.4.76.dist-info/METADATA,sha256=hrqor9BC-JbvtBtQ8y9JY7OPx4Y33ZTxLVgJZXvdENk,22624
1129
- django_cfg-1.4.76.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1130
- django_cfg-1.4.76.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1131
- django_cfg-1.4.76.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1132
- django_cfg-1.4.76.dist-info/RECORD,,
1127
+ django_cfg/pyproject.toml,sha256=fSXYmVkODWUdpp7E6UGpJZH1uhCchV2In-tm8y8Z32c,8164
1128
+ django_cfg-1.4.78.dist-info/METADATA,sha256=eid1ojBP7Qxwdx_73z__jpmiHo_ZOJD6GPddB3Y484A,22624
1129
+ django_cfg-1.4.78.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
1130
+ django_cfg-1.4.78.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
1131
+ django_cfg-1.4.78.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
1132
+ django_cfg-1.4.78.dist-info/RECORD,,