{"id":10160,"library":"python-envcfg","title":"Python EnvCFG","description":"Python EnvCFG (python-envcfg) provides a 'magic module' for accessing environment variables as attributes, automatically converting them to common Python types (str, int, float, bool). It also supports loading configuration from YAML files. The current version is 0.2.0, released in 2017, and the project appears to be no longer actively maintained.","status":"abandoned","version":"0.2.0","language":"en","source_language":"en","source_url":"https://github.com/tonyseek/python-envcfg","tags":["environment variables","configuration","settings","yaml"],"install":[{"cmd":"pip install python-envcfg","lang":"bash","label":"Install latest version"}],"dependencies":[],"imports":[{"symbol":"env","correct":"from envcfg import env"},{"symbol":"from_yaml","correct":"from envcfg import from_yaml"}],"quickstart":{"code":"import os\nfrom envcfg import env\n\n# Simulate setting environment variables for demonstration\nos.environ['DATABASE_URL'] = 'postgres://user:password@host:port/database'\nos.environ['DEBUG'] = 'true'\nos.environ['PORT'] = '8000'\n\nprint(f\"Database URL: {env.DATABASE_URL} (type: {type(env.DATABASE_URL)})\")\nprint(f\"Debug Mode: {env.DEBUG} (type: {type(env.DEBUG)})\") # Auto-converts 'true' to True\nprint(f\"Port Number: {env.PORT} (type: {type(env.PORT)})\") # Auto-converts '8000' to 8000\n\n# Accessing an undefined variable with a default\napp_env = env.APP_ENV('development')\nprint(f\"App Environment: {app_env} (type: {type(app_env)})\")\n\n# Example of retrieving an explicitly string value:\nstring_port = env.PORT('default_string_port') # Ensures string type\nprint(f\"Port as String: {string_port} (type: {type(string_port)})\")","lang":"python","description":"This quickstart demonstrates how to access environment variables using the `env` magic module, including automatic type conversion and providing default values for unset variables. Note that environment variables must be set in `os.environ` before `envcfg` processes them."},"warnings":[{"fix":"Consider using actively maintained alternatives like `os.getenv`, `python-decouple`, `dynaconf`, or `pydantic-settings` for robust environment variable management.","message":"Project Abandonment: `python-envcfg` has not been updated since 2017 and is no longer actively maintained. This means no new features, bug fixes, or security updates are to be expected.","severity":"gotcha","affected_versions":"0.2.0 and earlier"},{"fix":"Thoroughly test `python-envcfg` in your target Python environment. Be prepared to switch to an alternative if compatibility issues arise.","message":"Potential Python Version Incompatibility: While `0.2.0` listed Python 3 support, it has not been tested or updated for modern Python versions (e.g., 3.9+). Users may encounter unexpected runtime errors or deprecated syntax issues.","severity":"gotcha","affected_versions":"0.2.0"},{"fix":"Always verify the types of retrieved values. Use the default value mechanism `env.VAR('default_string')` to explicitly retrieve a string or manually convert if necessary.","message":"Implicit Type Conversion Risks: EnvCFG automatically converts environment variable strings to `bool`, `int`, or `float`. This can lead to unexpected values (e.g., '0' becoming `False`, 'false' becoming `False`) if the intended value was a string.","severity":"gotcha","affected_versions":"0.2.0"}],"env_vars":null,"last_verified":"2026-04-17T00:00:00.000Z","next_check":"2026-07-16T00:00:00.000Z","problems":[{"fix":"Use `env.YOUR_UNDEFINED_VARIABLE('default_value')` to provide a fallback, or ensure the environment variable is set before access.","cause":"Attempting to access an environment variable using `env.YOUR_UNDEFINED_VARIABLE` when the variable is not set and no default value is provided.","error":"AttributeError: 'EnvProxy' object has no attribute 'YOUR_UNDEFINED_VARIABLE'"},{"fix":"Ensure the environment variable's value matches the expected type for automatic conversion, or explicitly retrieve it as a string using a string default value: `env.VAR_NAME('abc')` if 'abc' should be a string.","cause":"EnvCFG's automatic type conversion attempted to convert an environment variable string (e.g., 'abc') to an integer, but the string was not a valid representation for the target type.","error":"ValueError: invalid literal for int() with base 10: 'abc' (or similar for float/bool)"}]}