django-cfg 1.4.4__py3-none-any.whl → 1.4.6__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.
@@ -117,7 +117,7 @@ class Command(BaseCommand):
117
117
 
118
118
  process_args = [
119
119
  executable_name,
120
- "django_cfg.modules.dramatiq_setup", # Broker module
120
+ "django_cfg.modules.django_tasks.dramatiq_setup", # Broker module
121
121
  "--processes", str(processes),
122
122
  "--threads", str(threads),
123
123
  "--worker-shutdown-timeout", str(worker_shutdown_timeout),
@@ -155,7 +155,7 @@ class Command(BaseCommand):
155
155
  # Build process arguments exactly like django_dramatiq
156
156
  process_args = [
157
157
  executable_name,
158
- "django_cfg.modules.dramatiq_setup", # Broker module
158
+ "django_cfg.modules.django_tasks.dramatiq_setup", # Broker module
159
159
  "--processes", str(processes),
160
160
  "--threads", str(threads),
161
161
  "--worker-shutdown-timeout", str(worker_shutdown_timeout),
@@ -213,7 +213,7 @@ class Command(BaseCommand):
213
213
  def _discover_tasks_modules(self):
214
214
  """Discover task modules like django_dramatiq does."""
215
215
  # Always include our broker setup module first
216
- tasks_modules = ["django_cfg.modules.dramatiq_setup"]
216
+ tasks_modules = ["django_cfg.modules.django_tasks.dramatiq_setup"]
217
217
 
218
218
  # Get task service for configuration
219
219
  task_service = get_task_service()
@@ -228,6 +228,7 @@ class DjangoCfgRPCClient:
228
228
  "method": method,
229
229
  "params": json.loads(params_json), # Embedded as dict
230
230
  "correlation_id": cid,
231
+ "reply_to": reply_key, # Redis List key for response
231
232
  "timeout": timeout,
232
233
  }
233
234
 
@@ -61,6 +61,7 @@ class DashboardManager(BaseCfgModule):
61
61
  NavigationItem(title="Overview", icon=Icons.DASHBOARD, link="/admin/"),
62
62
  NavigationItem(title="Settings", icon=Icons.SETTINGS, link="/admin/constance/config/"),
63
63
  NavigationItem(title="Health Check", icon=Icons.HEALTH_AND_SAFETY, link="/cfg/health/"),
64
+ NavigationItem(title="Endpoints Status", icon=Icons.API, link="/cfg/endpoints/drf/"),
64
65
  ]
65
66
  ),
66
67
  ]
@@ -0,0 +1,148 @@
1
+ [build-system]
2
+ requires = [ "hatchling",]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "django-cfg"
7
+ version = "1.4.6"
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
+ readme = "README.md"
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",]
11
+ classifiers = [ "Development Status :: 4 - Beta", "Framework :: Django", "Framework :: Django :: 5.2", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Systems Administration", "Typing :: Typed",]
12
+ requires-python = ">=3.12,<4.0"
13
+ dependencies = [ "pydantic>=2.11.0,<3.0", "pydantic[email]>=2.11.0,<3.0", "PyYAML>=6.0,<7.0", "pydantic-yaml>=1.6.0,<2.0", "click>=8.2.0,<9.0", "questionary>=2.1.0,<3.0", "rich>=14.0.0,<15.0", "cloudflare>=4.3.0,<5.0", "loguru>=0.7.0,<1.0", "colorlog>=6.9.0,<7.0", "cachetools>=5.3.0,<7.0", "toml>=0.10.2,<0.11.0", "ngrok>=1.5.1; python_version>='3.12'", "psycopg[binary,pool]>=3.2.0,<4.0", "dj-database-url>=3.0.0,<4.0", "whitenoise>=6.8.0,<7.0", "django-cors-headers>=4.7.0,<5.0", "djangorestframework>=3.16.0,<4.0", "djangorestframework-simplejwt>=5.5.0,<6.0", "djangorestframework-simplejwt[token-blacklist]>=5.5.0,<6.0", "drf-nested-routers>=0.94.0,<1.0", "django-filter>=25.0,<26.0", "django-ratelimit>=4.1.0,<5.0.0", "drf-spectacular>=0.28.0,<1.0", "drf-spectacular-sidecar>=2025.8.0,<2026.0", "django-json-widget>=2.0.0,<3.0", "django-import-export>=4.3.0,<5.0", "django-extensions>=4.1.0,<5.0", "django-constance>=4.3.0,<5.0", "django-unfold>=0.64.0,<1.0", "django-redis>=6.0.0,<7.0", "redis>=6.4.0,<7.0", "hiredis>=2.0.0,<4.0", "dramatiq[redis]>=1.18.0,<2.0", "django-dramatiq>=0.14.0,<1.0", "pyTelegramBotAPI>=4.28.0,<5.0", "coolname>=2.2.0,<3.0", "django-admin-rangefilter>=0.13.0,<1.0", "python-json-logger>=3.3.0,<4.0", "requests>=2.32.0,<3.0", "tiktoken>=0.11.0,<1.0", "openai>=1.107.0,<2.0", "twilio>=9.8.0,<10.0", "sendgrid>=6.12.0,<7.0", "beautifulsoup4>=4.13.0,<5.0", "lxml>=6.0.0,<7.0", "pgvector>=0.4.0,<1.0", "pydantic-ai>=1.0.10,<2.0", "django-revolution>=1.0.43,<2.0", "tenacity>=9.1.2,<10.0.0", "mypy (>=1.18.2,<2.0.0)", "django-tailwind[reload] (>=4.2.0,<5.0.0)",]
14
+ [[project.authors]]
15
+ name = "Django-CFG Team"
16
+ email = "info@djangocfg.com"
17
+
18
+ [[project.maintainers]]
19
+ name = "Django-CFG Team"
20
+ email = "info@djangocfg.com"
21
+
22
+ [project.license]
23
+ text = "MIT"
24
+
25
+ [project.optional-dependencies]
26
+ local = []
27
+ django52 = [ "django>=5.2,<6.0",]
28
+ dev = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "factory-boy>=3.3,<4.0", "fakeredis>=2.28,<3.0", "black>=25.9,<26.0", "isort>=6.0,<7.0", "flake8>=6.0.0,<8.0", "mypy>=1.18,<2.0", "pre-commit>=4.3,<5.0", "build>=1.3,<2.0", "twine>=6.2,<7.0", "tomlkit>=0.13.3,<1.0", "questionary>=2.1.0,<3.0", "rich>=13.0.0,<15.0", "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "redis>=6.4.0,<7.0",]
29
+ test = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "pytest-xdist>=3.8,<4.0", "factory-boy>=3.3,<4.0", "fakeredis>=2.28,<3.0",]
30
+ docs = [ "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "pymdown-extensions>=10.16,<11.0",]
31
+ tasks = [ "redis>=6.4.0,<7.0",]
32
+ full = [ "django>=5.2,<6.0", "pytest>=8.4,<9.0", "pytest-django>=4.11,<5.0", "pytest-cov>=7.0,<8.0", "pytest-mock>=3.15,<4.0", "pytest-xdist>=3.8,<4.0", "factory-boy>=3.3,<4.0", "black>=25.9,<26.0", "isort>=6.0,<7.0", "flake8>=6.0.0,<8.0", "mypy>=1.18,<2.0", "pre-commit>=4.3,<5.0", "build>=1.3,<2.0", "twine>=6.2,<7.0", "tomlkit>=0.13.3,<1.0", "questionary>=2.1.0,<3.0", "rich>=13.0.0,<15.0", "mkdocs>=1.6,<2.0", "mkdocs-material>=9.6,<10.0", "mkdocstrings[python]>=0.30,<1.0", "pymdown-extensions>=10.16,<11.0", "redis>=6.4.0,<7.0",]
33
+
34
+ [project.urls]
35
+ Homepage = "https://djangocfg.com"
36
+ Documentation = "https://djangocfg.com"
37
+ Repository = "https://github.com/markolofsen/django-cfg"
38
+ Issues = "https://github.com/markolofsen/django-cfg/issues"
39
+ Changelog = "https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md"
40
+
41
+ [project.scripts]
42
+ django-cfg = "django_cfg.cli.main:main"
43
+
44
+ [tool.black]
45
+ line-length = 100
46
+ target-version = [ "py39",]
47
+ include = "\\.pyi?$"
48
+ extend-exclude = "/(\n \\.eggs\n | \\.git\n | \\.hg\n | \\.mypy_cache\n | \\.tox\n | \\.venv\n | _build\n | buck-out\n | build\n | dist\n | migrations\n)/\n"
49
+
50
+ [tool.isort]
51
+ profile = "black"
52
+ line_length = 100
53
+ multi_line_output = 3
54
+ include_trailing_comma = true
55
+ force_grid_wrap = 0
56
+ use_parentheses = true
57
+ ensure_newline_before_comments = true
58
+ known_django = [ "django",]
59
+ known_first_party = [ "django_cfg",]
60
+ sections = [ "FUTURE", "STDLIB", "DJANGO", "THIRDPARTY", "FIRSTPARTY", "LOCALFOLDER",]
61
+
62
+ [tool.mypy]
63
+ python_version = "3.9"
64
+ check_untyped_defs = true
65
+ ignore_missing_imports = true
66
+ warn_unused_ignores = true
67
+ warn_redundant_casts = true
68
+ warn_unused_configs = true
69
+ disallow_untyped_defs = true
70
+ disallow_incomplete_defs = true
71
+ disallow_untyped_decorators = true
72
+ strict_optional = true
73
+ show_error_codes = true
74
+ [[tool.mypy.overrides]]
75
+ module = [ "django.*", "rest_framework.*", "django_redis.*", "yaml.*",]
76
+ ignore_missing_imports = true
77
+
78
+ [tool.ruff]
79
+ target-version = "py39"
80
+ line-length = 100
81
+ select = [ "E", "W", "F", "I", "B", "C4", "UP", "N", "S",]
82
+ ignore = [ "E501", "B008", "S101", "S311",]
83
+
84
+ [tool.bandit]
85
+ exclude_dirs = [ "tests", "migrations",]
86
+ skips = [ "B101", "B601",]
87
+
88
+ [tool.poetry]
89
+ [[tool.poetry.source]]
90
+ name = "pypi"
91
+ priority = "primary"
92
+
93
+ [tool.ruff.per-file-ignores]
94
+ "tests/*" = [ "S101", "S106",]
95
+ "*/migrations/*" = [ "N806",]
96
+
97
+ [tool.hatch.metadata]
98
+ allow-direct-references = true
99
+
100
+ [tool.pytest.ini_options]
101
+ addopts = [ "--cov=django_cfg", "--cov-report=term-missing", "--cov-report=html", "--cov-report=xml", "--cov-fail-under=50", "--strict-markers", "--strict-config", "--verbose",]
102
+ testpaths = [ "tests",]
103
+ markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests", "unit: marks tests as unit tests", "django_db: marks tests that require database access",]
104
+ filterwarnings = [ "error", "ignore::UserWarning", "ignore::DeprecationWarning",]
105
+
106
+ [tool.coverage.run]
107
+ source = [ "src/django_cfg",]
108
+ omit = [ "*/tests/*", "*/migrations/*", "*/__pycache__/*", "*/venv/*", "*/.venv/*",]
109
+
110
+ [tool.coverage.report]
111
+ exclude_lines = [ "pragma: no cover", "def __repr__", "if self.debug:", "if settings.DEBUG", "raise AssertionError", "raise NotImplementedError", "if 0:", "if __name__ == .__main__.:", "class .*\\bProtocol\\):", "@(abc\\.)?abstractmethod",]
112
+
113
+ [tool.coverage.html]
114
+ directory = "htmlcov"
115
+
116
+ [tool.poetry.group.local]
117
+ optional = true
118
+
119
+ [tool.poetry.group.dev.dependencies]
120
+ tomlkit = "^0.13.3"
121
+ build = "^1.3.0"
122
+ rich = "^14.1.0"
123
+ questionary = "^2.1.0"
124
+ psutil = "^7.0.0"
125
+ aiohttp = "^3.12.15"
126
+ pytest-asyncio = "^1.2.0"
127
+ pillow = "^11.3.0"
128
+ pytest = "^8.4.2"
129
+ pytest-django = "^4.11.1"
130
+ fakeredis = "^2.31.3"
131
+
132
+ [tool.hatch.build.targets.wheel]
133
+ packages = [ "src/django_cfg",]
134
+ exclude = [ "scripts/",]
135
+
136
+ [tool.hatch.build.targets.sdist]
137
+ include = [ "src/django_cfg", "README.md", "LICENSE", "CHANGELOG.md", "CONTRIBUTING.md", "requirements*.txt", "MANIFEST.in",]
138
+ exclude = [ "@*", "tests", "scripts", "*.log", ".env*",]
139
+
140
+ [tool.poetry.group.local.dependencies.django-ipc]
141
+ path = "/Users/markinmatrix/djangoipc"
142
+ develop = true
143
+
144
+ [tool.hatch.build.targets.wheel.force-include]
145
+ LICENSE = "django_cfg/LICENSE"
146
+ "CONTRIBUTING.md" = "django_cfg/CONTRIBUTING.md"
147
+ "CHANGELOG.md" = "django_cfg/CHANGELOG.md"
148
+ "pyproject.toml" = "django_cfg/pyproject.toml"
@@ -26,11 +26,24 @@ class DatabaseRouter:
26
26
  return rules.get(model._meta.app_label)
27
27
 
28
28
  def allow_relation(self, obj1, obj2, **hints):
29
- """Allow relations between same database."""
29
+ """
30
+ Allow relations between objects.
31
+
32
+ - If both objects are routed: only allow if they're in the same database
33
+ - If one or both objects are NOT routed (e.g., User in default): allow
34
+ (This enables cross-database ForeignKeys for shared models like User)
35
+ """
30
36
  rules = getattr(settings, 'DATABASE_ROUTING_RULES', {})
31
37
  db1 = rules.get(obj1._meta.app_label)
32
38
  db2 = rules.get(obj2._meta.app_label)
33
- return db1 == db2 if db1 and db2 else None
39
+
40
+ # If both are routed, they must be in the same database
41
+ if db1 and db2:
42
+ return db1 == db2
43
+
44
+ # If one or both are not routed (e.g., User in default db), allow the relation
45
+ # This enables routed apps (blog, shop) to have ForeignKeys to shared models (User)
46
+ return True
34
47
 
35
48
  def allow_migrate(self, db, app_label, **hints):
36
49
  """Allow migrations to correct database."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.4.4
3
+ Version: 1.4.6
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=YO6ru0XTEGR0Vdnlz0LtrhRbPcGHRG9K_zU6U1t9jCw,2777
6
+ django_cfg/apps/urls.py,sha256=dNiX1MI7XGR5QyySWiFKfdXOwFJi5iPvegInmN_dB10,2861
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
@@ -102,6 +102,13 @@ django_cfg/apps/api/__init__.py,sha256=fHkKXld_pw5Eiqz4tNb3Z02nx-7T7PnqgMh-qjkGB
102
102
  django_cfg/apps/api/commands/__init__.py,sha256=FTmBMxSpI9rO6EljgkWn8e9pxh07ao5Y1kx2TzQmZSY,88
103
103
  django_cfg/apps/api/commands/urls.py,sha256=k7auWLPi3FiCSkBwuDMK9R-jeHKfrFNzr7LvOWuGdxA,360
104
104
  django_cfg/apps/api/commands/views.py,sha256=OdSWzEjTM5SL9NJvaJB6pe1_wjevjWrOWWWwo4sB7Uo,10069
105
+ django_cfg/apps/api/endpoints/__init__.py,sha256=uHjV4E24Aj0UFgv7bW1Z0kH_NFe8PItNFuS105vvRz0,108
106
+ django_cfg/apps/api/endpoints/checker.py,sha256=mwaISxa26u0OTYEmM_ith_T03EeXkZQPA5bVrGrCsf0,19373
107
+ django_cfg/apps/api/endpoints/drf_views.py,sha256=oZLNq_OKs5DK9rZzGu5yVDwn7-GiIAS7MSokiQ3tGdo,1954
108
+ django_cfg/apps/api/endpoints/serializers.py,sha256=W5Az0m1jUi8rLLIMoKVBADk6KHFyAWrwJ_gzSinktno,3656
109
+ django_cfg/apps/api/endpoints/tests.py,sha256=hvMgYVSWI_dfoSgb1ow9EwVXXUE9uZeCUEvNo1H995k,9992
110
+ django_cfg/apps/api/endpoints/urls.py,sha256=QaGFwwA_rSq-qN0kcqM8LvTgTq_YlMd7MOAZCbC9E-k,372
111
+ django_cfg/apps/api/endpoints/views.py,sha256=sqvl07krrJur4ZhzB3QWK1ppEvuVSEX0zSoIQ-farDQ,1242
105
112
  django_cfg/apps/api/health/__init__.py,sha256=ypFUiCo0I9VJpaZ_KqEPPX3-ma_MhRm5U1XYWahUaFI,93
106
113
  django_cfg/apps/api/health/drf_views.py,sha256=EhK85lHg8J7fkZKUROSk6Gv-A2WzpRugBHwrKDjy2OI,8796
107
114
  django_cfg/apps/api/health/serializers.py,sha256=Y_kn_RIn4MBRJWbsO2_DNEG_AqxnhuD7h9srhj6ggEE,1270
@@ -336,7 +343,7 @@ django_cfg/apps/payments/admin_interface/views/api/__init__.py,sha256=0lwYw-BO_j
336
343
  django_cfg/apps/payments/admin_interface/views/api/payments.py,sha256=H02smiTvTR2XPXX7eWjueHbE1hby99Xui3jQtFe4xi4,11709
337
344
  django_cfg/apps/payments/admin_interface/views/api/stats.py,sha256=Ms2RPsZa3-inHM9GuaOa81eEVbuF2hzZ3ZTNDD0qsDg,8020
338
345
  django_cfg/apps/payments/admin_interface/views/api/users.py,sha256=iVTCbEjRHI8WO7eFXNoyW9VAfjwBz-BecXO_qfHrDOQ,2245
339
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py,sha256=UMXZ0-hwXfuEo-8iLXyGufG5XPDDtxOMtAWKbrgYsEs,12145
346
+ django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py,sha256=NEFoU2UsfgQhXJIqehtNFsloA7JceUn3XEiwBoNAnPI,12136
340
347
  django_cfg/apps/payments/admin_interface/views/api/webhook_public.py,sha256=JJtFkscn3ZnX4lfl7aHVJ3-yklUFPLRcP304ceuomsE,2467
341
348
  django_cfg/apps/payments/config/__init__.py,sha256=V42Z39g3F7LU0TGYwBqySuIaY7cgpnFNJGaX2tai7Fo,985
342
349
  django_cfg/apps/payments/config/django_cfg_integration.py,sha256=Kblp3SAkrg1HC9Lf2qbqCyqv5OOXRLEtQMzjfZBBAIk,8444
@@ -351,7 +358,7 @@ django_cfg/apps/payments/management/commands/process_pending_payments.py,sha256=
351
358
  django_cfg/apps/payments/management/commands/test_providers.py,sha256=IvvJhTNw6KQm1EeWYTUMew0ZHzgUGWpG07JOhrpJEP0,18476
352
359
  django_cfg/apps/payments/middleware/__init__.py,sha256=eL5TmlCKmpW53Ift5rtwS8ss1wUqp4j2gzjGhcAQUQY,380
353
360
  django_cfg/apps/payments/middleware/api_access.py,sha256=lWX9A1UpIwPNC5320QcSVhHU_mg-LxzKaYG1bNjvN-I,16713
354
- django_cfg/apps/payments/middleware/rate_limiting.py,sha256=m7GqkbQvLQMGqXACwm8m-2DkcyhedCvqbH0pItBcfwU,14814
361
+ django_cfg/apps/payments/middleware/rate_limiting.py,sha256=nbObLQwIssxsVwovG6S_SiEpQcYmJIyAmA4tUtIt2cg,15163
355
362
  django_cfg/apps/payments/middleware/usage_tracking.py,sha256=dY7n6lZFUo-5a49VzJnZAT6UmbaU7kHei9Xu02KXACw,11815
356
363
  django_cfg/apps/payments/migrations/0001_initial.py,sha256=uLkgbaSvdPjoTHZ3pVB7aEgVPq_hAyQRWXFqC9-2oGc,48359
357
364
  django_cfg/apps/payments/migrations/0002_rename_payments_un_user_id_7f6e79_idx_payments_un_user_id_8ce187_idx_and_more.py,sha256=MmxPMKYOzafTeVRj1cOOzVEDszKa_VYyqkUD8z7jZEk,1512
@@ -610,6 +617,7 @@ django_cfg/dashboard/sections/stats.py,sha256=k4ogZtZtR1CEkFTvoWgU-HTysr-Y2S4Lie
610
617
  django_cfg/dashboard/sections/system.py,sha256=IP4SJMPOL-gqDancE_g46ZbmlveYDvljpszRJmz1tSc,2025
611
618
  django_cfg/management/__init__.py,sha256=NrLAhiS59hqjy-bipOC1abNuRiNm5BpKXmjN05VzKbM,28
612
619
  django_cfg/management/commands/__init__.py,sha256=GqJDbjiwRa9Y9uvf695EZ-Y42vQIMHp5YkjhMoeAM9I,417
620
+ django_cfg/management/commands/check_endpoints.py,sha256=5I-8cbVD6aA9g6_j_JI76NoZCSwZTy21B7hxNKbR4OI,6275
613
621
  django_cfg/management/commands/check_settings.py,sha256=YyYKBMT3XaILD6PFKQGPALNnDv9rNtnF2U8RlkCoYiA,11770
614
622
  django_cfg/management/commands/clear_constance.py,sha256=tX6YUeJsmxJxXLQRDX3VUkUP9t6B1gAyVrBl4krQ6K0,8263
615
623
  django_cfg/management/commands/create_token.py,sha256=NspV-9j-T0dDjqY6ccJeuVqTB3v4ne1Jc43G2tKuioI,12015
@@ -617,7 +625,7 @@ django_cfg/management/commands/generate.py,sha256=tvBahlXOu63H7d-7Ree1WuR_6saebU
617
625
  django_cfg/management/commands/list_urls.py,sha256=3J1Lxhi6ImFOZQ9D047tR2lQ6Hl2Zd7f6YmEYohlmqQ,11261
618
626
  django_cfg/management/commands/migrate_all.py,sha256=gM5-Yp4k9dDWt8kpxBHAfvlSM8QW9ApUHV6tdRaVgVc,5454
619
627
  django_cfg/management/commands/migrator.py,sha256=qH1lARoKaInkTXN87lav7yxkVkWzHrZ6XZzwa5Sqrg0,16484
620
- django_cfg/management/commands/rundramatiq.py,sha256=DtwY5Qtr1wANrPVNvQZmDvHH9tzmVQK-2PNutQbOMgc,9385
628
+ django_cfg/management/commands/rundramatiq.py,sha256=I5_OlmfpeIujyF0G6nTr0JWQeQIFb6-kSTaYai2Oqck,9424
621
629
  django_cfg/management/commands/rundramatiq_simulator.py,sha256=dOLabc4bDVwpdWWFzi8H8SCIbVp0pg6dqviMLL0abxA,16101
622
630
  django_cfg/management/commands/runserver_ngrok.py,sha256=d_kiTqCgRN9MUNlJf_ERorPqTyd6QZVJPVTURd7mKLA,6520
623
631
  django_cfg/management/commands/script.py,sha256=Mrhpiz3leSzWOzULHTfsplIvRqmquaA67rVGQGKajsI,17538
@@ -741,7 +749,7 @@ django_cfg/modules/django_import_export/README.md,sha256=OuGT5gv0hwt3dcbMLfZUfos
741
749
  django_cfg/modules/django_import_export/__init__.py,sha256=oJ9BDGdbQ_B8E2bGXxSQyRSzr8212rHGtgSLf9v6cAI,1908
742
750
  django_cfg/modules/django_ipc_client/README.md,sha256=f_t_dK-W6GXMy7kxKpa_FidkZPII4M7eI3cmTFkJRMg,8971
743
751
  django_cfg/modules/django_ipc_client/__init__.py,sha256=i1EODpOg7VIjCjZjO0ALDXFlVnRvUVolooOLxAROGek,1441
744
- django_cfg/modules/django_ipc_client/client.py,sha256=OgPzjyN8gUBpbp32_rZS8C954YSHXuhgwNhIRiStSiQ,17412
752
+ django_cfg/modules/django_ipc_client/client.py,sha256=lMlRm40axUcn44XJ_-JWibhqDJ-cpjwQCMweCMGpkdY,17478
745
753
  django_cfg/modules/django_ipc_client/config.py,sha256=JArEm7Gg4eEa3C3iuJ63Nr3QIZi_-n2sHbFWiIlOukg,5668
746
754
  django_cfg/modules/django_ipc_client/exceptions.py,sha256=qUohP8mtdczjNrB0uGTC3t6Km6FYgf6dFt0pWcYF2PE,5866
747
755
  django_cfg/modules/django_ipc_client/dashboard/README.md,sha256=FTas0jg0bUxZGa05HN7AL72qLf9WyznrpmpIY_QyRbA,11567
@@ -848,7 +856,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
848
856
  django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
849
857
  django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
850
858
  django_cfg/modules/django_unfold/__init__.py,sha256=Z91x1iGmkzlRbEb2L9OCFmYDKNAV9C4G3i15j5S0esc,1898
851
- django_cfg/modules/django_unfold/dashboard.py,sha256=8ZvrF45PFZVK5Jtu0kmAY7xT6A087_q6pAzKDicQ9So,18002
859
+ django_cfg/modules/django_unfold/dashboard.py,sha256=WXz7TUQp2mchdAcPBWn7HaFWwkHzEUomckKNZK224mY,18108
852
860
  django_cfg/modules/django_unfold/models.py,sha256=bY6QSSaH_-r9vOTkSQjxeIkl5RaED7XkxXkT8-W5stk,4014
853
861
  django_cfg/modules/django_unfold/system_monitor.py,sha256=cznZqldRJqiSLSJbs4U7R2rX8ClzoIpqdfXdXqI2iQw,6955
854
862
  django_cfg/modules/django_unfold/tailwind.py,sha256=X9o1K3QL0VwUISgJ26sLb6zkdK-00qiDuekqTw-fydc,10846
@@ -878,7 +886,7 @@ django_cfg/registry/services.py,sha256=BoCGXcvaJ59UtX6MxGLGzU1cnrzEGm2invsmkEqDV
878
886
  django_cfg/registry/third_party.py,sha256=lYDcPbrFY1J2EGxEdn1SzBX7wR7hf8vsKH37iCO5rws,3141
879
887
  django_cfg/routing/__init__.py,sha256=zOg9yh2lP2NaxlnZpVH8IogQBHGlcky_C-n0VWD9LIc,277
880
888
  django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3FI,5994
881
- django_cfg/routing/routers.py,sha256=J89kcIArV2lSl3rzh61Rya0h-I5Zq7-QAat6PvmKVFs,1582
889
+ django_cfg/routing/routers.py,sha256=K-QrSUxA69Fv4uE9QOY4hbBTIMu7trl8hIDlxwywM4M,2103
882
890
  django_cfg/static/admin/css/dashboard.css,sha256=O7KXnPRfhW1Y5JrwAqHae8Q_a6qyWyq-Y7UC0RtlV6s,6262
883
891
  django_cfg/static/admin/js/commands.js,sha256=o_t5gFGsVsL3ApFFyokDNk3oUip5hPn0tuU9pHYiJeY,6433
884
892
  django_cfg/static/admin/js/dashboard.js,sha256=uCcu6mnG0HNiHI_HVyYMc5c1YGg727PzutZU8JNR9Es,4176
@@ -939,8 +947,12 @@ django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,
939
947
  django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVkaI3ToVM,13899
940
948
  django_cfg/utils/smart_defaults.py,sha256=-AQjTi-iFqAN2xzQou9KssznZYKUJSrFjHlH717lyCM,11024
941
949
  django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
942
- django_cfg-1.4.4.dist-info/METADATA,sha256=DOiy6eEQNBnSqU3Q0OrRGau9ww-mDvW10kgZPsQC-3k,22542
943
- django_cfg-1.4.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
944
- django_cfg-1.4.4.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
945
- django_cfg-1.4.4.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
946
- django_cfg-1.4.4.dist-info/RECORD,,
950
+ django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
951
+ django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
952
+ django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
953
+ django_cfg/pyproject.toml,sha256=88nmJKNOuzteCBLdh9Py3ZzYRYY__N6BnFZiT5mSr4s,8216
954
+ django_cfg-1.4.6.dist-info/METADATA,sha256=7L9aQv_xWde-XuQHa12P4iVN_9-0tKNTJzdWJ0vfxmk,22542
955
+ django_cfg-1.4.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
956
+ django_cfg-1.4.6.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
957
+ django_cfg-1.4.6.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
958
+ django_cfg-1.4.6.dist-info/RECORD,,