Skip to main content

EnvReader

Environment variables parser with types! Yes!

Every time when you make new service you need some class to receive, validate and store environment variables.

With this package it’ll be easy and funny.

Just make a class with typed fields and... that’s it.

Requirements

Python 3.7 and above. There's no additional dependencies.

Installation

pip install envreader

Simple usage

from envreader import EnvReader


class MyEnv(EnvReader):
    PATH: str
    LIST: list
    NONE_EXIST: int = 1234  # Variable with default value


e = MyEnv()

print(e.PATH)
# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

print(e.LIST)
# [1, 2, 3, 4]

print(e.NONE_EXIST)
# 1234

Use with transform functions

I don’t want to make a giant validation library like wonderful Pydantic. Thus EnvReader supports only simple types( bool, str, int, float, list, tuple and dict) by default. This is enough in most cases.

Transform functions allows using EnvReader for more complex cases.

from typing import List
from envreader import EnvReader, Field


class MyEnv(EnvReader):
    PATH: List[str] = Field(transform=lambda x: x.split(":"))


e = MyEnv()

print(e.PATH)
# ['/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin']

Using static methods as a transform functions.

You may store all your helper functions inside the same class. But don’t forget to add @staticmethod decorator.

from typing import List
from envreader import EnvReader, Field


class MyEnv(EnvReader):
    @staticmethod
    def trans(x: str) -> List[str]:
        return x.split(':')

    PATH: List[str] = Field(transform=trans)


e = MyEnv()

print(e.PATH)
# ['/usr/local/bin', '/usr/bin', '/bin', '/usr/sbin', '/sbin']

Make your environment variables self-documented.

Documentation is in great demand for all good applications, right?

from envreader import EnvReader, Field


class MyEnv(EnvReader):
    PATH: str = Field("/sbin", description="Application path", example="/usr/bin:/bin:/usr/sbin:/sbin")


e = MyEnv()

print(e.help())
# PATH
#     Application path
#     Example: /usr/bin:/bin:/usr/sbin:/sbin
#     Default: /sbin

Error handling? Easy.

import sys
from envreader import EnvReader, EnvMissingError


class MyEnv(EnvReader):
    SOME_VAR: str


try:
    e = MyEnv()
except EnvMissingError as e:
    print(f"Missing required env var {e.field}")
    sys.exit(-1)
# Missing required env var SOME_VAR

Enjoy!

Metadata

Release files for envreader 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for envreader 1.0.0
File Size Uploaded
envreader-1.0.0.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for envreader 1.0.0
File Interpreter ABI Platform
envreader-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.8 kB

Release files / envreader-1.0.0.tar.gz

Download URL envreader-1.0.0.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dcf88657f906d167ebe3ee6b0adee8ec8139ad9aa1cdb98a55c052a96ee56374
BLAKE2b-256 checksum
How to use checksums
21e0ff9777630b696179d8c0371e69524ae4bf74136166bced09ef24006fe6ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Release files / envreader-1.0.0-py3-none-any.whl

Download URL envreader-1.0.0-py3-none-any.whl
Size 6.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b2d57448bfb669a183344950b6f7bb7847fac62776e6ee93429bdfff8116af4
BLAKE2b-256 checksum
How to use checksums
9d0855080a4dceed8a5e59724908f5b53a4020a5622ec43d216e20c88cf95cad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.7

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page