Skip to main content

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)

Source distribution for envolved 1.7.0
File Size Uploaded
envolved-1.7.0.tar.gz 17.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for envolved 1.7.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.7.0 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

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