Skip to main content

Simple util to get environment variables in the right data type.

Project description

Easy Environment Variables

An easier way to use environment variables with the correct typecasting in Python.

pipeline status coverage report PyPI - Python Version Code style: black Imports: isort License: MIT

Since environment variables can only be strings, it usually means we need loads of related variables or weird casting in our code. Without easy_env_var that would look something like this

CACHE_KEY=default
CACHE_BACKEND=redis_cache.RedisCache
CACHE_LOCATION=redis://localhost:6379/3
DEBUG=true
TIMEOUT=1000
import os

CACHES = {
    os.environ.get("CACHE_KEY", "default"): {
        "BACKEND": os.environ["CACHE_BACKEND"],
        "LOCATION": os.environ["CACHE_LOCATION"],
    }
}
DEBUG = os.environ.get("DEBUG", "false") == "false"
TIMEOUT = int(os.environ.get("TIMEOUT", "300"))

With easy_env_var it is as simple as

CACHES = {"default": {"BACKEND": redis_cache.RedisCache, "LOCATION": redis://localhost:6379/3}}
DEBUG=true
TIMEOUT=1000
from easy_env_var import env

CACHES = env("CACHE", expected_type=dict)
DEBUG = env("DEBUG", expected_type=bool, default=False)
TIMEOUT = env("TIMEOUT", expected_type=int, default=300)

Installation

Simply install using pip by running

pip install easy_env_var

For Python 3.7 you will also need typed-ast which should automatically be installed. For Python 3.8 and above it is not needed.

Usage

from easy_env_var import env
FOO = env("foo")  # get the environment variable named foo
BAR = env("bar", expected_type=float)  # cast to the correct data type
try:
    BAZ = env("baz")
except KeyError:
    BAZ = "Not Set"
# or simply pass a default
QUX = env("qux", default="The default value")

Supported data types

Environment variables can be parsed to the following data types:

  • str (this is the default type)
  • int
  • float
  • bool (works with case-insensitive values of True & False)
  • Decimal
  • list
  • dict (the keys need to always be strings)
    Sets and tuples are not supported since using lists is good enough for most use cases.

Why easy_env_var?

We wanted to call it easy_env but that's an existing package.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_env_var-1.1.0.tar.gz (4.4 kB view hashes)

Uploaded Source

Built Distribution

easy_env_var-1.1.0-py3-none-any.whl (5.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page