import os from pprint import pprint from environs import Env, EnvValidationError from marshmallow.validate import OneOf, Email, Length, Range os.environ["TTL"] = "-2" os.environ["NODE_ENV"] = "invalid" os.environ["EMAIL"] = "^_^" env = Env(eager=False) TTL = env.int("TTL", validate=Range(min=0, max=100)) NODE_ENV = env.str("NODE_ENV", validate=OneOf(["production", "development"], error="NODE_ENV must be one of: {choices}")) EMAIL = env.str("EMAIL", validate=[Length(min=4), Email()]) # This will raise an error with the combined validation messages try: env.seal() except EnvValidationError as error: pprint(error.error_messages)