prozorro_sale.tools.environment module

Package to provide a wrapper for parsing, cleaning, checking environment variables.

class prozorro_sale.tools.environment.Environment(prefix: str = '', spec: Optional[dict] = None, environ: Optional[dict] = None, default: Optional[dict] = None, strict: bool = False, dotenv: Optional[str] = None, **kw: Any)[source]

Bases: object

Parser, cleaner, validator for Environment Variables.

__getattr__(name)[source]
__getitem__(key)[source]
__init__(prefix: str = '', spec: Optional[dict] = None, environ: Optional[dict] = None, default: Optional[dict] = None, strict: bool = False, dotenv: Optional[str] = None, **kw: Any)[source]

Parser, cleaner, validator for Environment Variables.

Parameters
  • prefix (str) – filtering environ variables on start prefix

  • spec (Union[dict, None]) – Validation rules

  • environ (Union[dict, None]) – predefined environ variables. If set None then os.environ is used

  • default (Union[dict, None]) – default environ variables.

  • strict (bool) – strict validation. Raise Error on invalid variables

  • dotenv (Union[str, bool, None]) – absolute or relative path to .env file.

  • **kw (kwargs) – for set Validation rules

Example

>>> pretend_os_environ = {
>>>    'A': '42',
>>>    'B': 'b',
>>>    'C': 'yes',
>>>    'yes': 'yes',
>>>    'no': '',
>>>    'D': 'd'
>>> }

env = Environment(A=int, M=str, D=int, yes=booleans, no=booleans, environ=pretend_os_environ, strict=False)

__setattr__(name, value)[source]

Implement setattr(self, name, value).

__setitem__(key, value)[source]
__slots__ = ('environ', 'spec', 'prefix', 'strict', 'missing', 'malformed', 'parsed')
_parse(prefix=None, spec=None, environ=None)[source]

Parse and validate environment variables

check_missing(spec=None, environ=None)[source]

Check for missing environment variables

Returns

difference between expected environment variables and current

Return type

list

check_strict(spec=None, strict=None)[source]

Check current environment variables with expected

Parameters
  • spec (dict) – expected environment variables

  • strict – bool

Raises

ValueError – expected environment variables not defined

clenup(value)[source]

Clears the values of environment variables from spaces and line breaks

static dotenv(dotenv: Optional[Union[str, bool]] = None)[source]

Load environment variables from file. :param dotenv: File path, py.env by default. To disable loading, you must pass False :type dotenv: Union[str, bool, None]

environ
malformed
missing
parse(prefix=None, spec=None, environ=None)[source]

Parse environment variables

parsed
prefix
spec
strict
prozorro_sale.tools.environment.booleans(value)[source]

Check value is boolean

Parameters

value (Any) –

Raises

ValueError – value isn’t boolean

prozorro_sale.tools.environment.path_discover(value, discover=True)[source]

Validate string as folder path with provides support for Unix shell-style wildcards and auto discorever

Raises

IOError – directory or file path not found

prozorro_sale.tools.environment.url(value)[source]

Check value is url

Raises

ValueError – value isn’t valid url format