volopivoshenko / poetry-plugin-dotenv

⚙️ poetry-plugin-dotenv - is the plugin that automatically loads environment variables from a dotenv file into the environment before poetry commands are run

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

license python pypi release

black isort ruff mypy semantic_release poetry numpydoc

dependabot CI CD CodeQL Dependency Review hooks wheel

coverage codeclimate downloads stars wakatime

issues issues pr pr contributors commit

buymeacoffee standwithukraine standwithukraine

🔮 Overview

poetry-plugin-dotenv - is the plugin that automatically loads environment variables from a dotenv file into the environment before poetry commands are run.

Features

  • 📦 Doesn't require any dependencies
  • 📝 Supports templates, interpolating variables using POSIX variable expansions
  • 🔮 Fully type safe
  • 🥷🏻 100% tests coverage and "A" grade for maintainability

⚙️ Installation

poetry self add poetry-plugin-dotenv

👩🏻‍💻 Usage

By default, plugin will load the .env file from the current working directory or "higher directories".

To prevent poetry from loading the dotenv file, set the POETRY_DONT_LOAD_DOTENV environment variable.

If your dotenv file is located in a different path or has a different name you may set the POETRY_DOTENV_LOCATION environment variable.

logo

# .env
DB__HOST=localhost
DB__DBNAME=prod
DB__USER=admin
DB__PASSWORD=admin
DB__ENGINE=postgresql://${DB__USER}:${DB__PASSWORD}@${DB__HOST}/${DB__DBNAME}
# .env.dev
DB__HOST=localhost
DB__DBNAME=dev
DB__USER=root
DB__PASSWORD=root
DB__ENGINE=postgresql://${DB__USER}:${DB__PASSWORD}@${DB__HOST}/${DB__DBNAME}
# main.py
import os


if __name__ == "__main__":
    try:
        print(f"Host: {os.environ['DB__HOST']!r}")
        print(f"Name: {os.environ['DB__DBNAME']!r}")
        print(f"Username: {os.environ['DB__USER']!r}")
        print(f"Password: {os.environ['DB__PASSWORD']!r}")
        print(f"Engine: {os.environ['DB__ENGINE']!r}")

    except KeyError:
        print("Environment variables not set!")
poetry run -vvv python main.py
# Loading environment variables from '.env'.
# Host: 'localhost'
# Name: 'prod'
# Username: 'admin'
# Password: 'admin'
# Engine 'postgresql://admin:admin@localhost/prod'

export POETRY_DOTENV_LOCATION=.env.dev && poetry run -vvv python main.py
# Loading environment variables from '.env.dev'.
# Host: 'localhost'
# Name: 'dev'
# Username: 'root'
# Password: 'root'
# Engine 'postgresql://root:root@localhost/dev'

export POETRY_DONT_LOAD_DOTENV=1 && poetry run -vvv python main.py
# Not loading environment variables.

About

⚙️ poetry-plugin-dotenv - is the plugin that automatically loads environment variables from a dotenv file into the environment before poetry commands are run

License:MIT License


Languages

Language:Python 100.0%