Git Product home page Git Product logo

Comments (5)

theskumar avatar theskumar commented on May 27, 2024 1

Hi Guys, while I think it's a nice to have feature in an application. But I don't agree that it should be solved through this library.

The library is responsible for only populating the system's environment variable with what is available in .env. It would be responsibility of code responsible for consuming those environment variable to handle the missing variables.

In my case, i use django-environ to read the environment variable and it sort of handles missing variables pretty nice.

from python-dotenv.

hugochinchilla avatar hugochinchilla commented on May 27, 2024

I like the idea of having mandatory variables, but I don't like using a .env.example (or .env.sample) like that.
I try to make them a ready to use example, not a simple enumeration of empty variables.

When working on PHP projects I use vlucas/phpdotenv and it implements the idea this way:

<?php
// directory to look for an .env file
$dotenv = new Dotenv\Dotenv(__DIR__);
// load .env file (overloading existing variables)
$dotenv->overload();
// make some variables mandatory, trows error if not present
$dotenv->required(['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS']); 

I would suggest to implement like this for python-dotenv:

dotenv_path = join(dirname(__file__), '.env')
load_dotenv(dotenv_path, required=('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'))

But this can be already achieved by using python-dotenv with python-decouple, which I always use together, python-dotenv takes care of loading .env files, and python-decouple for reading the env and aplying castings or validations.

from python-dotenv.

keshavkaul avatar keshavkaul commented on May 27, 2024

I try to make them a ready to use example, not a simple enumeration of empty variables.

We can use comments that define the variable usage. Its always a good thing to let other team members consciously modify their own .env file based on the sample instead of simply copying from the sample.

But this can be already achieved by using python-dotenv with python-decouple

Hmm interesting..after reading python-decouple docs, it seems to do the same things as python-dotenv with a bit more features such as throwing an error if not found or setting a default if not found, casting to a type.

from python-dotenv.

keshavkaul avatar keshavkaul commented on May 27, 2024

I think python-decouple will throw an error only if we try to fetch a missing variable not when the server/app bootstraps

Providing required variables as a tuple list won't scale if we have many required variables.

load_dotenv(dotenv_path, required=('DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'))

from python-dotenv.

AlJohri avatar AlJohri commented on May 27, 2024

I use this for checking environment variables: https://github.com/humangeo/preflyt

from python-dotenv.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.