joke2k / django-environ

Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application.
https://django-environ.rtfd.org
MIT License
3.02k stars 316 forks source link

idea: using pydantic-settings as base / .env parser #534

Open markdoerr opened 1 month ago

markdoerr commented 1 month ago

Dear django-environ developers,

since pydantic-settings made recently quite big advances and has a substantial overlap with django-environ's functionality - and there is a big community behind it, testing it - I am wondering, if it makes sense to base django-environ on pydantic-settings and just add the django related additions in django-environ. This would follow the DRY principles ;)

What do you think ?

pataquets commented 1 week ago

Without having reviewed it myself and due to lack of enough knowledge, I can't weigh in. My take is that it sounds quite reasonable and worth exploring. However, as an exploratory work, I've researched on PyPI.org dependencies' sizes (as of late Oct '24) to help decision makers.

From pydantic-settings' downloadable files:

Source Distribution pydantic_settings-2.6.0.tar.gz (75.2 kB view hashes) Uploaded 17 oct 2024 Source

Built Distribution pydantic_settings-2.6.0-py3-none-any.whl (28.6 kB view hashes) Uploaded 17 oct 2024 Python 3

Since the above depends on main Pydantic, here is also the info from pydantic's downloadable files:

Source Distribution pydantic-2.9.2.tar.gz (769.9 kB view hashes) Uploaded 17 sept 2024 Source

Built Distribution pydantic-2.9.2-py3-none-any.whl (434.9 kB view hashes) Uploaded 17 sept 2024 Python 3

There is also a dependency on python-dotenv, but I guess it might help trim out some code here and not sure how it would affect overall size. Just my 2c.

markdoerr commented 1 week ago

Thanks, @pataquets, for the positive feedback :) let's see, what the other developers think ... From my perspective, these two dependencies are acceptable, since many use them as well and they are very useful.

joke2k commented 1 week ago

Hello everyone, this is a good idea from my point of view, precisely to reduce the overlap between the two projects, especially considering the popularity and maturity that pysetting has reached.

I admit that the absence of dependencies in this project was one of the requirements with which I designed it, but I am open to suggestions regarding this new development