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)
| File | Size | Uploaded | |
|---|---|---|---|
| envreader-1.0.0.tar.gz | 5.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|