def get_variable(name: str = None, function: FunctionType = str): env = Env() env.read_env() for var in VARIABLES: env(var) if name not in VARIABLES: return None if name: return function(env.dump().get(name)) else: return env.dump()
def get_env(): if path.exists(os.getcwd() + '/.env'): # Load env file env = Env() env.read_env(os.getcwd() + '/.env') # Retrieve the values: # Flask application env.bool("DEBUG") env.bool("CSRF_ENABLED") env.str("HOST") env.int("PORT") env.str("SECRET_KEY") # Postgres database env.str("DATABASE_USER") env.str("DATABASE_PASSWORD") env.str("DATABASE_HOST") env.str("DATABASE_PORT") env.str("DATABASE_NAME") # SqlAlchemy env.str("SQLALCHEMY_TRACK_MODIFICATIONS") env.str("MIGRATION_PATH") env.bool("SQLALCHEMY_ECHO") return env.dump() env = dict() # Retrieve the values: # Flask application env['DEBUG'] = bool(os.getenv('DEBUG')) or None env['CSRF_ENABLED'] = bool(os.getenv('CSRF_ENABLED')) or None env['HOST'] = os.getenv('HOST') or None env['PORT'] = int(os.getenv('PORT') or 5000) env['SECRET_KEY'] = os.getenv('SECRET_KEY') or None # Postgres database env['DATABASE_USER'] = os.getenv('DATABASE_USER') or None env['DATABASE_PASSWORD'] = os.getenv('DATABASE_PASSWORD') or None env['DATABASE_HOST'] = os.getenv('DATABASE_HOST') or None env['DATABASE_PORT'] = os.getenv('DATABASE_PORT') or None env['DATABASE_NAME'] = os.getenv('DATABASE_NAME') or None # SqlAlchemy env['SQLALCHEMY_TRACK_MODIFICATIONS'] = os.getenv( "SQLALCHEMY_TRACK_MODIFICATIONS") or True env['MIGRATION_PATH'] = os.getenv('MIGRATION_PATH') or '' env['SQLALCHEMY_ECHO'] = bool(os.getenv('SQLALCHEMY_ECHO')) or None return env
import os from environs import Env # Prefixed envvars os.environ["CANTEEN_HOST"] = "lolcathost" os.environ["CANTEEN_PORT"] = "3000" # A non-prefixed envvar os.environ["NODE_ENV"] = "production" env = Env() with env.prefixed("CANTEEN_"): host = env.str("HOST", "localhost") port = env.int("PORT", 5000) node_env = env.str("NODE_ENV", "development") assert host == "lolcathost" assert port == 3000 assert node_env == "production" print(env.dump())
from environs import Env os.environ["GITHUB_USER"] = "******" os.environ["API_KEY"] = "123abc" os.environ["SHIP_DATE"] = "1984-06-25" os.environ["ENABLE_LOGIN"] = "******" os.environ["MAX_CONNECTIONS"] = "42" os.environ["GITHUB_REPOS"] = "webargs,konch,ped" os.environ["COORDINATES"] = "23.3,50.0" os.environ["MYAPP_HOST"] = "lolcathost" os.environ["MYAPP_PORT"] = "3000" env = Env() # reading an environment variable gh_user = env("GITHUB_USER") # => 'sloria' # casting api_key = env.str("API_KEY") # => '123abc' date = env.date("SHIP_DATE") # => datetime.date(1984, 6, 25) # providing a default value enable_login = env.bool("ENABLE_LOGIN", False) # => True enable_feature_x = env.bool("ENABLE_FEATURE_X", False) # => False # parsing lists gh_repos = env.list("GITHUB_REPOS") # => ['webargs', 'konch', 'ped'] coords = env.list("COORDINATES", subcast=float) # => [23.3, 50.0] with env.prefixed("MYAPP_"): host = env("HOST", "localhost") port = env.int("PORT", 5000) pprint(env.dump(), indent=2)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from environs import Env import json from pprint import pprint # with open(".env.test", "w") as fobj: # fobj.write("A=foo\n") # fobj.write("B=123\n") env = Env() env.read_env(".env.test", recurse=False) assert env("A") == "foo" assert env.int("B") == 12 with open('to.json', 'w') as outfile: json.dump(env.dump(), outfile) pprint(env.dump(), indent=2)
os.environ["GITHUB_USER"] = "******" os.environ["API_KEY"] = "123abc" os.environ["SHIP_DATE"] = "1984-06-25" os.environ["ENABLE_LOGIN"] = "******" os.environ["MAX_CONNECTIONS"] = "42" os.environ["GITHUB_REPOS"] = "webargs,konch,ped" os.environ["COORDINATES"] = "23.3,50.0" os.environ["MYAPP_HOST"] = "lolcathost" os.environ["MYAPP_PORT"] = "3000" env = Env() # reading an environment variable gh_user = env("GITHUB_USER") # => 'sloria' # casting api_key = env.str("API_KEY") # => '123abc' date = env.date("SHIP_DATE") # => datetime.date(1984, 6, 25) # providing a default value enable_login = env.bool("ENABLE_LOGIN", False) # => True enable_feature_x = env.bool("ENABLE_FEATURE_X", False) # => False # parsing lists gh_repos = env.list("GITHUB_REPOS") # => ['webargs', 'konch', 'ped'] coords = env.list("COORDINATES", subcast=float) # => [23.3, 50.0] with env.prefixed("MYAPP_"): host = env("HOST", "localhost") port = env.int("PORT", 5000) pprint(env.dump(), indent=2)
def get_env(): if path.exists(os.getcwd() + '/.env'): # Load env file env = Env() env.read_env(os.getcwd() + '/.env') # Flask application env.bool("CSRF_ENABLED") env.bool("DEBUG") env.str("HOST") env.int("PORT") env.str("MIGRATION_PATH") env.bool("SQLALCHEMY_ECHO") env.str("TRACK_MODIFICATIONS") # Postgres database env.str("DATABASE_USER") env.str("DATABASE_PASSWORD") env.str("DATABASE_HOST") env.str("DATABASE_PORT") env.str("DATABASE_NAME") # JWT env.str("JWT_SECRET_KEY") # Mail env.str("MAIL_USERNAME") env.str("MAIL_PASSWORD") env.str("MAIL_SERVER") env.str("MAIL_PORT") env.str("MAIL_USE_SSL") # Redis env.str("REDIS_PORT") env.str("REDIS_HOST") env.str("REDIS_PASSWORD") # Scouter env.str("SCOUTER_HOST") env.str("SCOUTER_PORT") env.str("SCOUTER_X_API_KEY") return env.dump() env = dict() # Flask application env['DEBUG'] = bool(os.getenv('DEBUG')) or None env['CSRF_ENABLED'] = bool(os.getenv('CSRF_ENABLED')) or None env['HOST'] = os.getenv('HOST') or None env['PORT'] = int(os.getenv('PORT') or 5000) env['MIGRATION_PATH'] = os.getenv('MIGRATION_PATH') or '' env['SQLALCHEMY_ECHO'] = bool(os.getenv('SQLALCHEMY_ECHO')) or None env['TRACK_MODIFICATIONS'] = os.getenv("TRACK_MODIFICATIONS") or True # Postgres database env['DATABASE_USER'] = os.getenv('DATABASE_USER') or None env['DATABASE_PASSWORD'] = os.getenv('DATABASE_PASSWORD') or None env['DATABASE_HOST'] = os.getenv('DATABASE_HOST') or None env['DATABASE_PORT'] = os.getenv('DATABASE_PORT') or None env['DATABASE_NAME'] = os.getenv('DATABASE_NAME') or None # JWT env['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY') or None # Mail env['MAIL_USERNAME'] = os.getenv("MAIL_USERNAME") or None env['MAIL_PASSWORD'] = os.getenv("MAIL_PASSWORD") or None env['MAIL_SERVER'] = os.getenv("MAIL_SERVER") or None env['MAIL_PORT'] = os.getenv("MAIL_PORT") or None env['MAIL_USE_SSL'] = os.getenv("MAIL_USE_SSL") or None # Redis env['REDIS_PORT'] = os.getenv("REDIS_PORT") or None env['REDIS_HOST'] = os.getenv("REDIS_HOST") or None env['REDIS_PASSWORD'] = os.getenv("REDIS_PASSWORD") or None # Scouter env['SCOUTER_HOST'] = os.getenv("SCOUTER_HOST") or None env['SCOUTER_PORT'] = os.getenv("SCOUTER_PORT") or None env['SCOUTER_X_API_KEY'] = os.getenv("SCOUTER_X_API_KEY") or None return env
import os import pathlib import marshmallow as ma from environs import Env os.environ["STATIC_PATH"] = "app/static" class PathField(ma.fields.Field): def _deserialize(self, value, *args, **kwargs): return pathlib.Path(value) def _serialize(self, value, *args, **kwargs): return str(value) env = Env() env.parser_from_field("path", PathField) static_path = env.path("STATIC_PATH") assert isinstance(static_path, pathlib.Path) print(env.dump())