Source code for pysecret.env

# -*- coding: utf-8 -*-

import typing as T
import os
import json
import dataclasses


[docs]@dataclasses.dataclass class BaseEnvVar: """ A base class for environment secrets data container. """ @classmethod def load(cls): kwargs = {f.name: os.environ.get(f.name) for f in dataclasses.fields(cls)} return cls(**kwargs) def to_json(self, pretty: bool=True) -> str: kwargs = dict() if pretty: kwargs["indent"] = 4 return json.dumps(dataclasses.asdict(self), **kwargs)
[docs]@dataclasses.dataclass class AWSEnvVar(BaseEnvVar): """ AWS related environment variable secrets. Ref: - https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html """ AWS_ACCESS_KEY_ID: T.Optional[str] = dataclasses.field(default=None) AWS_CA_BUNDLE: T.Optional[str] = dataclasses.field(default=None) AWS_CLI_AUTO_PROMPT: T.Optional[str] = dataclasses.field(default=None) AWS_CLI_FILE_ENCODING: T.Optional[str] = dataclasses.field(default=None) AWS_CONFIG_FILE: T.Optional[str] = dataclasses.field(default=None) AWS_DATA_PATH: T.Optional[str] = dataclasses.field(default=None) AWS_DEFAULT_OUTPUT: T.Optional[str] = dataclasses.field(default=None) AWS_DEFAULT_REGION: T.Optional[str] = dataclasses.field(default=None) AWS_EC2_METADATA_DISABLED: T.Optional[str] = dataclasses.field(default=None) AWS_MAX_ATTEMPTS: T.Optional[str] = dataclasses.field(default=None) AWS_METADATA_SERVICE_NUM_ATTEMPTS: T.Optional[str] = dataclasses.field(default=None) AWS_METADATA_SERVICE_TIMEOUT: T.Optional[str] = dataclasses.field(default=None) AWS_PAGER: T.Optional[str] = dataclasses.field(default=None) AWS_PROFILE: T.Optional[str] = dataclasses.field(default=None) AWS_REGION: T.Optional[str] = dataclasses.field(default=None) AWS_RETRY_MODE: T.Optional[str] = dataclasses.field(default=None) AWS_ROLE_ARN: T.Optional[str] = dataclasses.field(default=None) AWS_ROLE_SESSION_NAME: T.Optional[str] = dataclasses.field(default=None) AWS_SECRET_ACCESS_KEY: T.Optional[str] = dataclasses.field(default=None) AWS_SESSION_TOKEN: T.Optional[str] = dataclasses.field(default=None) AWS_SHARED_CREDENTIALS_FILE: T.Optional[str] = dataclasses.field(default=None) AWS_USE_FIPS_ENDPOINT: T.Optional[str] = dataclasses.field(default=None) AWS_WEB_IDENTITY_TOKEN_FILE: T.Optional[str] = dataclasses.field(default=None)