Skip to main content

Smart Environments handling - Define command hooks, file hooks and env variables in python and activate hot reloaded shells.

Project description

Define environmental variables in python and activate hot reloaded shells for them.

Features

  • Initialisation of variables in a given directory (creates common variables file too)

user@pc:/project$ envo local --init  # creates local environment python files
  • Easy and dynamic handling in .py files (See documentation to learn more)

  • Provides addons like handling virtual environments

user@pc:/project$ envo local --init=venv  # will add .venv to PATH
  • Automatic env variables generation based on defined python variables

  • Hot reload. Activated shell will reload environmental variables when files change.

  • Activating shells for a given environment

user@pc:/project$ envo local
🐣(project)user@pc:/project$
🐣(project)user@pc:/project$ exit
user@pc:/project$ envo prod
🔥(project)user@pc:/project$
  • Saving variables to a regular .env file

user@pc:/project$ envo local --save
  • Printing variables (handy for non interactive CLIs like CI or docker)

user@pc:/project$ envo local --dry-run
  • Detects undefined variables.

  • Perfect for switching kubernetes contexts and devops tasks

Example

Initialising environment

user@pc:/project$ envo local --init

Will create env_comm.py and env_local.py

# env_comm.py
@dataclass
class ProjectEnvComm(Env):
    @dataclass
    class Python(BaseEnv):
        version: str

    class Meta:
        raw = ["kubeconfig"]  # disable namespacing

    python: Python
    number: int
    kubeconfig: Path
    # Add more variables here

    def __init__(self) -> None:
        super().__init__(root=Path(os.path.realpath(__file__)).parent)
        self.name = "proj"
        self.python = self.Python(version="3.8.2")
        self.kubeconfig = self.root / f"{self.stage}/kubeconfig.yaml"

# env_local.py
@dataclass
class ProjectEnv(ProjectEnvComm):
    def __init__(self) -> None:
        self.stage = "test"
        self.emoji = "🛠️"
        super().__init__()

        self.number = 12

Env = ProjectEnv

Example usage:

user@pc:/project$ envo  # short for "envo local"
🐣(project)user@pc:/project$ echo $PROJ_PYTHON_VERSION
3.8.2
🐣(project)user@pc:/project$echo $PROJ_NUMBER
12

TODO: Major: * Refactor start_in * Add file hooks * Add bootstrap (versioning etc) * add error line number

Minor: * Shell should highlight envo commands on green * Unnecessary prompt rendered again aftet Ctr-d (only on xonsh?) * work on public/private fields and methods * add examples * print hooks for repr * Add reload command

Bugs: * exiting while env loading yields Attribute Error

Improvements: * type checking ?

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

envo-0.9.9.5.tar.gz (27.0 kB view details)

Uploaded Source

Built Distribution

envo-0.9.9.5-py3-none-any.whl (30.6 kB view details)

Uploaded Python 3

File details

Details for the file envo-0.9.9.5.tar.gz.

File metadata

  • Download URL: envo-0.9.9.5.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.6.13 Linux/4.15.0-1103-aws

File hashes

Hashes for envo-0.9.9.5.tar.gz
Algorithm Hash digest
SHA256 90a6c62f56050e7615b7b97405c7cda812f178fcd9d56a489676cd5eb0ee4e06
MD5 876ae647eb88948c2a5caf29ceecd4ee
BLAKE2b-256 e17ad90ce895f31c8db19dc5c699ea085e6b6998539078af96838a3f549e67c1

See more details on using hashes here.

File details

Details for the file envo-0.9.9.5-py3-none-any.whl.

File metadata

  • Download URL: envo-0.9.9.5-py3-none-any.whl
  • Upload date:
  • Size: 30.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.10 CPython/3.6.13 Linux/4.15.0-1103-aws

File hashes

Hashes for envo-0.9.9.5-py3-none-any.whl
Algorithm Hash digest
SHA256 031bc1f01f7ee46900394805ea7cacc4e7803d8121ecd0eec949c0b8952a44f9
MD5 2b22a25ddcac9b8c177d4d475937f076
BLAKE2b-256 b392ce61b4e4693d9baab24eee0f4d6f8f3aa2549c7d60ece158a2694ae70f26

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page