Source code for jacinle.utils.env

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# File   : env.py
# Author : Jiayuan Mao
# Email  : maojiayuan@gmail.com
# Date   : 04/10/2019
#
# This file is part of Jacinle.
# Distributed under terms of the MIT license.

import os
import sys
from typing import Any, Optional, Union
from jacinle.cli.keyboard import str2bool
from .cache import cached_result

__all__ = ['jac_getenv', 'jac_is_verbose', 'jac_is_debug']


[docs] def jac_getenv(name: str, default: Any = None, type: Optional[Union[str, type]] = None, prefix: str = None) -> Any: """Get the environment variable with the given name. Args: name: the name of the environment variable. default: the default value if the environment variable is not set. type: the type of the environment variable. If not given, the type of the default value will be used. It supports a special type, denoted by a string ``'bool'``, indicating that the value will be converted to a boolean value ('true'/'false', 'yes'/'no', '1'/'0'). prefix: the prefix of the environment variable. If not given, the prefix will be ``JAC_``. Returns: the value of the environment variable. """ if prefix is None: prefix = 'JAC_' value = os.getenv((prefix + name).upper(), default) if value is None: return None if type is None: return value elif type == 'bool': return str2bool(value) else: return type(value)
[docs] @cached_result def jac_get_dashdebug_arg(): """Return if the ``--debug`` argument is given in the command line.""" # Return True if there is a '-debug' or '--debug' arg in the argv. for value in sys.argv: if value in ('-debug', '--debug'): return True return False
[docs] @cached_result def jac_is_verbose(default='n', prefix=None): """Return if the verbose mode is enabled. This is controlled by the environment variable ``JAC_VERBOSE``.""" return jac_getenv('verbose', default, type='bool', prefix=prefix)
[docs] @cached_result def jac_is_debug(default='n', prefix=None): """Return if the debug mode is enabled. This is controlled by the environment variable ``JAC_DEBUG`` or the ``--debug`` argument in the command line.""" return jac_get_dashdebug_arg() or jac_getenv('debug', default, type='bool', prefix=prefix)