django-cfg 1.4.4__py3-none-any.whl → 1.4.5__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.
@@ -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.5"
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.hatch.build.targets.wheel]
120
+ packages = [ "src/django_cfg",]
121
+ exclude = [ "scripts/",]
122
+
123
+ [tool.hatch.build.targets.sdist]
124
+ include = [ "src/django_cfg", "README.md", "LICENSE", "CHANGELOG.md", "CONTRIBUTING.md", "requirements*.txt", "MANIFEST.in",]
125
+ exclude = [ "@*", "tests", "scripts", "*.log", ".env*",]
126
+
127
+ [tool.poetry.group.dev.dependencies]
128
+ tomlkit = "^0.13.3"
129
+ build = "^1.3.0"
130
+ rich = "^14.1.0"
131
+ questionary = "^2.1.0"
132
+ psutil = "^7.0.0"
133
+ aiohttp = "^3.12.15"
134
+ pytest-asyncio = "^1.2.0"
135
+ pillow = "^11.3.0"
136
+ pytest = "^8.4.2"
137
+ pytest-django = "^4.11.1"
138
+ fakeredis = "^2.31.3"
139
+
140
+ [tool.hatch.build.targets.wheel.force-include]
141
+ LICENSE = "django_cfg/LICENSE"
142
+ "CONTRIBUTING.md" = "django_cfg/CONTRIBUTING.md"
143
+ "CHANGELOG.md" = "django_cfg/CHANGELOG.md"
144
+ "pyproject.toml" = "django_cfg/pyproject.toml"
145
+
146
+ [tool.poetry.group.local.dependencies.django-ipc]
147
+ path = "/Users/markinmatrix/djangoipc"
148
+ develop = true
@@ -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.5
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=n9jYoDHuwkMHRYGn5J5QEwtUQlS3nh3IV37B9B6Vsuc,12537
107
+ django_cfg/apps/api/endpoints/drf_views.py,sha256=T5Fy4-0OY5nr2OpGM8YOdcXt53O7f1V79MQeXs0DUQo,1769
108
+ django_cfg/apps/api/endpoints/serializers.py,sha256=bsTAKuk8rodeVPRln4bCGq95_Q0pw9ePnSRsFtb9RJY,2978
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
@@ -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=-65NG14047mGTUnZZzupYp4vD7nFBxTLvAkwECbTQfg,5126
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
@@ -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
@@ -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=A3K-d7sTJDTOl2iTI727wbrLqllgOvg6TPp6w1ly5TQ,8216
954
+ django_cfg-1.4.5.dist-info/METADATA,sha256=XthRxgznWbMSQD4kkLoeDm2wkOfVu3h1TJJ-Pw6osN8,22542
955
+ django_cfg-1.4.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
956
+ django_cfg-1.4.5.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
957
+ django_cfg-1.4.5.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
958
+ django_cfg-1.4.5.dist-info/RECORD,,