env-attributes

Loads environment into class attributes


Keywords
python, dotenv, python-dotenv, python_dotenv, env_attributes, attributes, env, environment
Install
pip install env-attributes==1.1.1

Documentation

EnvAttributes

Loads environment into class attributes

Install:

pip install env_attributes

Example:

Environment:

HOST=localhost
PORT=5050

Usage:

Variant 1:

from env_attributes import Environment

path_to_env = 'example/.env'
env = Environment(env_path=path_to_env)

print(env.host, env.port)

output:

localhost 5050

Variant 2:

Correct if the .env file is in the root directory

from env_attributes import env

print(env.host, env.port)

output:

localhost 5050

Additional usage:

print(env.get('host'), env['port'])

Register is not important:

print(env.get('HoSt'), env['PORT'])

You can work with the env object as with a dict:

for key in env:
    value = env.get(key)
    print(key, value)

output:

host localhost
port 5050

You can output all environment variables:

print(env)

output:

{"host": "localhost", "port": "5050"}

You can also get all keys or values from env:

print(env.keys())
print(env.values())

output:

['host', 'port']
['localhost', '5050']

You can get length of env:

print(len(env))

output:

2

NEW

Added ability to specify type annotations for environment variables

Example:

Environment:

BOOL=False
INT=123456789
FLOAT=3.14159265
STRING='Hello World!'
LIST='[123, 2.22, [1, 2, 3], {"key1": "val1", "key2": "val2"}]'
TUPLE='(1, 22, 333, 4444)'
DICT='{"key1": "val1", "key2": "val2", "key3": {"key3.1": 1, "key3.2": 2}}'
CUSTOM='1, 2, 3, 4, 5, 6, 7, 8, 9'

Usage

from env_attributes import Environment, EnvTypes


class EnvironmentTypes(EnvTypes):
    bool: bool
    int: int
    float: float
    string: str
    list: list
    tuple: tuple
    dict: dict

env = Environment(env_types=EnvironmentTypes)

print(env.bool, type(env.bool))
print(env.int, type(env.int))
print(env.float, type(env.float))
print(env.string, type(env.string))
print(env.list, type(env.list))
print(env.tuple, type(env.tuple))
print(env.dict, type(env.dict))

output:

False <class 'bool'>
123456789 <class 'int'>
3.14159265 <class 'float'>
Hello World! <class 'str'>
[123, 2.22, [1, 2, 3], {'key1': 'val1', 'key2': 'val2'}] <class 'list'>
('1', ' 22', ' 333', ' 4444') <class 'tuple'>
{'key1': 'val1', 'key2': 'val2', 'key3': {'key3.1': 1, 'key3.2': 2}} <class 'dict'>