theskumar / python-dotenv

Reads key-value pairs from a .env file and can set them as environment variables. It helps in developing applications following the 12-factor principles.
https://saurabh-kumar.com/python-dotenv/
BSD 3-Clause "New" or "Revised" License
7.7k stars 431 forks source link

Allow modules using load_dotenv to be reloaded when launched in a separate thread #497

Closed freddyaboulton closed 10 months ago

freddyaboulton commented 10 months ago

Hello!

I am one of the maintainers of gradio, an os library for developing web applications in python. One of gradio's features is the ability to automatically refresh the web page when the python source code is modified without having to restart the server.

Users started reporting that gradio applications that use load_dotenv would fail when reloaded (See https://github.com/gradio-app/gradio/issues/5468). I think the root cause is related to the fact that load_dotenv is being reloaded on a separate thread.

I traced this to the is_interactive check and added a fix that works for gradio and I don't think introduces any unintended changes to python-dotenv.

Curious to hear your thoughts. Thank you!

theskumar commented 10 months ago

This looks great! Thank you. I'll merge and make a release.

freddyaboulton commented 10 months ago

Thank you so much @theskumar !