Skip to main content

Environment variable helpers

Project description

Roskarl

Is a tiny module for environment variables.

Requires

Python 3.11.0+

How to install

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.

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

str

value = env_var(name="STR_VAR")

returns str

bool

value = env_var_bool(name="BOOL_VAR")

returns bool — accepts true or false (case insensitive)

tz

value = env_var_tz(name="TZ_VAR")

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

list

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

returns list[str] if value is splittable by separator

int

value = env_var_int(name="INT_VAR")

returns int if value is numeric

float

value = env_var_float(name="FLOAT_VAR")

returns float if value is a float

cron

value = env_var_cron(name="CRON_EXPRESSION_VAR")

returns str if value is a valid cron expression

datetime (ISO8601)

value = env_var_iso8601_datetime(name="DATETIME_VAR")

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

2026-01-01T00:00:00
2026-01-01T00:00:00+00:00

datetime (RFC3339)

value = env_var_rfc3339_datetime(name="DATETIME_VAR")

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

2026-01-01T00:00:00+00:00

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

Marshal

Marshals environment variables into typed configuration objects. Requires croniter:

pip install croniter
from roskarl.marshal import load_env_config

env = load_env_config()

Raises ValueError if both CRON_ENABLED and BACKFILL_ENABLED are true.

Env vars

Env var Type Description
MODEL_NAME str Model name
CRON_ENABLED bool Enable cron mode
CRON_EXPRESSION str Valid cron expression
BACKFILL_ENABLED bool Enable backfill mode
BACKFILL_SINCE datetime ISO8601 UTC datetime
BACKFILL_UNTIL datetime ISO8601 UTC datetime
BACKFILL_BATCH_SIZE int Batch size

CronConfig

since and until are derived from CRON_EXPRESSION based on the latest fully elapsed interval — e.g. 0 * * * * at 14:35 → since=13:00, until=14:00.

BackfillConfig

since and until read from env as ISO8601 UTC datetimes. CRON_ENABLED and BACKFILL_ENABLED are mutually exclusive.

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.0.0.tar.gz (7.9 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.0.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for roskarl-3.0.0.tar.gz
Algorithm Hash digest
SHA256 bfd6aaff914de6c539a39b427ec314ad2aed4a8a9f64ed41975da5eb9b815e51
MD5 dc4ba7fd3aa636b8ede5182dbd1abe66
BLAKE2b-256 e7af745051e697cc30ea656297761d9d966d72897c67c90d8030155eff3aae35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: roskarl-3.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6a787b2b0ec314bb6974985ea92796272fd20c47eb9b5cb2289854680815cf0c
MD5 2fb9401aba87c2c27669a28829f3bb6a
BLAKE2b-256 79514cfbb04faba0471e53a02585d8fc6b30cf5ae95cdf7d7b9fb92c2f5f7f6c

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