Skip to main content

Environment variable helpers

Project description

Roskarl

Is a tiny module for environment variables

For pipeline configuration via environment variables, see Marshal.

Requires

Python 3.11.0+

How to install

uv pip install roskarl

Example usage

from roskarl import (
    env_var,
    env_var_bool,
    env_var_cron,
    env_var_float,
    env_var_int,
    env_var_iso8601_datetime,
    env_var_list,
    env_var_rfc3339_datetime,
    env_var_tz,
    env_var_dsn,
    DSN
)

All functions return None if the variable is not set. An optional default parameter can be provided to return a fallback value instead.

str (returns str)

value = env_var(name="STR_VAR", default="fallback")

bool (returns bool — accepts true or false (case insensitive))

value = env_var_bool(name="BOOL_VAR")

tz (returns str if value is a valid IANA timezone (e.g. Europe/Stockholm))

value = env_var_tz(name="TZ_VAR")

list (returns list[str] if value is splittable by separator)

value = env_var_list(name="LIST_VAR", separator="|")

int (returns int if value is numeric)

value = env_var_int(name="INT_VAR")

float (returns float if value is a float)

value = env_var_float(name="FLOAT_VAR")

cron (returns str if value is a valid cron expression)

value = env_var_cron(name="CRON_EXPRESSION_VAR")

datetime (ISO8601) (returns datetime if value is a valid ISO8601 datetime string — timezone is optional)

value = env_var_iso8601_datetime(name="DATETIME_VAR")

datetime (RFC3339) (returns datetime if value is a valid RFC3339 datetime string — timezone is required)

value = env_var_rfc3339_datetime(name="DATETIME_VAR")

DSN

Note: Special characters in passwords must be URL-encoded.

from urllib.parse import quote
password = 'My$ecret!Pass@2024'
encoded = quote(password, safe='')
print(encoded)  # My%24ecret%21Pass%402024 <--- use this
value = env_var_dsn(name="DSN_VAR")

returns DSN object if value is a valid DSN string, formatted as:

postgresql://username:password@hostname:5432/database_name

The DSN object exposes the following attributes:

Attribute Type Example
scheme str postgresql
host str hostname
port int 5432
username str username
password str password
database str database_name

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roskarl-3.1.14.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roskarl-3.1.14-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file roskarl-3.1.14.tar.gz.

File metadata

  • Download URL: roskarl-3.1.14.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for roskarl-3.1.14.tar.gz
Algorithm Hash digest
SHA256 fefdae69d5e215f3287e100d8c65405a2231f66e34b1c0b50adb5a7e6cc751d3
MD5 85985050cb80088aad75a4ec5759c724
BLAKE2b-256 e499294ae3e4388f633160704761e3b3b4edd86521c441ffaf6374c2b6096a89

See more details on using hashes here.

File details

Details for the file roskarl-3.1.14-py3-none-any.whl.

File metadata

  • Download URL: roskarl-3.1.14-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for roskarl-3.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 adaeacb9bd397d515f8ab530e569fc2f8e48e0eba387126c7f709eeb124460a6
MD5 6b73d9c88b01b4b71eed10fd4128f717
BLAKE2b-256 6a9c91a5fa9418786b630fed17fe2d083f2dcb2c88e3c83d72f74b183f8f3dca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page