Envolved
Envolved is a library to make environment variable parsing powerful and effortless.
documentation: https://envolved.readthedocs.io/en/latest/
from envolved import env_var, EnvVar
# create an env var with an int value
foo: EnvVar[int] = env_var('FOO', type=int, default=0)
value_of_foo = foo.get() # this method will check for the environment variable FOO, and parse it as an int
# we can also have some more complex parsers
from typing import List, Optional
from envolved.parsers import CollectionParser
foo = env_var('FOO', type=CollectionParser(',', int))
foo.get() # now we will parse the value of FOO as a comma-separated list of ints
# we can also use schemas to combine multiple environment variables
from dataclasses import dataclass
@dataclass
# say we want the environment to describe a ConnectionSetting
class ConnectionSetting:
host: str
port: int
user: Optional[str]
password: Optional[str]
connection_settings: EnvVar[ConnectionSetting] = env_var('service_', type=ConnectionSetting, args={
'host': env_var('hostname'),
# we now define an env var as an argument. Its suffix will be "hostname", and its type will be inferred from the
# type's annotation
'port': env_var('port'),
'user': env_var('username', type=str), # for most types, we can infer the type from the annotation, though we can
# also override it if we want
'password': env_var('password', type=str, default=None) # we can also set a default value per arg
})
service_connection_settings: ConnectionSetting = connection_settings.get()
# this will look in 4 environment variables:
# host will be extracted from service_hostname
# port will be extracted from service_port, then converted to an int
# user will be extracted from service_username
# password will be extracted from service_password, and will default to None
# finally, ConnectionSetting will be called with the parameters
Metadata
Release files for envolved 1.7.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 | |
|---|---|---|---|
| envolved-1.7.0.tar.gz | 17.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| envolved-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.2 kB
Release files / envolved-1.7.0.tar.gz
| Download URL | envolved-1.7.0.tar.gz |
|---|---|
| Size | 17.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6529a9aa821954d2712926326bfcaad7d51f34991b61aa97a541e2a9eb86201f
|
|
BLAKE2b-256 checksum How to use checksums |
bfa691903861ecfe994387e337b2bef22f459b65736deee82b8a61a38526c338
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1022-azure
|
Release files / envolved-1.7.0-py3-none-any.whl
| Download URL | envolved-1.7.0-py3-none-any.whl |
|---|---|
| Size | 20.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ca57a82dbe10a8735300d2324a13abde3be6e909e30a0a31456fac26db1c91d2
|
|
BLAKE2b-256 checksum How to use checksums |
0dd277782c74673e374a186c92230345468fa6496997e4b821b23d03e78d5610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.12.4 Linux/6.5.0-1022-azure
|