envo


Nameenvo JSON
Version 1.5.2 PyPI version JSON
download
home_pageNone
SummarySmart Environments handling - Define command hooks, file hooks and env variables in python and activate hot reloaded shells.
upload_time2024-04-07 11:51:42
maintainerNone
docs_urlNone
authorDamian Krystkiewicz
requires_python<4.0,>=3.8
licenseApache 2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ===========================================
envo - smart environment variables handling
===========================================

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)

.. code-block::

    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

.. code-block::

    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

.. code-block::

    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

.. code-block::

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

* Printing variables (handy for non interactive CLIs like CI or docker)

.. code-block::

    user@pc:/project$ envo local --dry-run

* Detects undefined variables.
* Perfect for switching kubernetes contexts and devops tasks


Example
#######
Initialising environment

.. code-block::

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


Will create :code:`env_comm.py` and :code:`env_local.py`

.. code-block:: python

    # 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:

.. code-block::

    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 ?

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "envo",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Damian Krystkiewicz",
    "author_email": "damian.krystkiewicz@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/b2/ff/6481bd3780eeea5ccb7dde0e1e39696ce364a544392830fb23ec518dd9f1/envo-1.5.2.tar.gz",
    "platform": null,
    "description": "===========================================\nenvo - smart environment variables handling\n===========================================\n\nDefine environmental variables in python and activate hot reloaded shells for them.\n\nFeatures\n--------\n* Initialisation of variables in a given directory (creates common variables file too)\n\n.. code-block::\n\n    user@pc:/project$ envo local --init  # creates local environment python files\n\n* Easy and dynamic handling in .py files (See documentation to learn more)\n* Provides addons like handling virtual environments\n\n.. code-block::\n\n    user@pc:/project$ envo local --init=venv  # will add .venv to PATH\n\n* Automatic env variables generation based on defined python variables\n* Hot reload. Activated shell will reload environmental variables when files change.\n* Activating shells for a given environment\n\n.. code-block::\n\n    user@pc:/project$ envo local\n    \ud83d\udc23(project)user@pc:/project$\n    \ud83d\udc23(project)user@pc:/project$ exit\n    user@pc:/project$ envo prod\n    \ud83d\udd25(project)user@pc:/project$\n\n\n* Saving variables to a regular .env file\n\n.. code-block::\n\n    user@pc:/project$ envo local --save\n\n* Printing variables (handy for non interactive CLIs like CI or docker)\n\n.. code-block::\n\n    user@pc:/project$ envo local --dry-run\n\n* Detects undefined variables.\n* Perfect for switching kubernetes contexts and devops tasks\n\n\nExample\n#######\nInitialising environment\n\n.. code-block::\n\n    user@pc:/project$ envo local --init\n\n\nWill create :code:`env_comm.py` and :code:`env_local.py`\n\n.. code-block:: python\n\n    # env_comm.py\n    @dataclass\n    class ProjectEnvComm(Env):\n        @dataclass\n        class Python(BaseEnv):\n            version: str\n\n        class Meta:\n            raw = [\"kubeconfig\"]  # disable namespacing\n\n        python: Python\n        number: int\n        kubeconfig: Path\n        # Add more variables here\n\n        def __init__(self) -> None:\n            super().__init__(root=Path(os.path.realpath(__file__)).parent)\n            self.name = \"proj\"\n            self.python = self.Python(version=\"3.8.2\")\n            self.kubeconfig = self.root / f\"{self.stage}/kubeconfig.yaml\"\n\n    # env_local.py\n    @dataclass\n    class ProjectEnv(ProjectEnvComm):\n        def __init__(self) -> None:\n            self.stage = \"test\"\n            self.emoji = \"\ud83d\udee0\ufe0f\"\n            super().__init__()\n\n            self.number = 12\n\n    Env = ProjectEnv\n\nExample usage:\n\n.. code-block::\n\n    user@pc:/project$ envo  # short for \"envo local\"\n    \ud83d\udc23(project)user@pc:/project$ echo $PROJ_PYTHON_VERSION\n    3.8.2\n    \ud83d\udc23(project)user@pc:/project$echo $PROJ_NUMBER\n    12\n\n\nTODO:\nMajor:\n* Refactor start_in\n* Add file hooks\n* Add bootstrap (versioning etc)\n* add error line number\n\nMinor:\n* Shell should highlight envo commands on green\n* Unnecessary prompt rendered again aftet Ctr-d (only on xonsh?)\n* work on public/private fields and methods\n* add examples\n* print hooks for repr\n* Add reload command\n\nBugs:\n* exiting while env loading yields Attribute Error\n\nImprovements:\n* type checking ?\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "Smart Environments handling - Define command hooks, file hooks and env variables in python and activate hot reloaded shells.",
    "version": "1.5.2",
    "project_urls": {
        "homepage": "https://gitlab.com/plasma-opensource/envo"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "28ea3ff1c2be4aea423a567f14f82405a3c1b500058e9a8d5c0846d465ae9cff",
                "md5": "013e416d2a230a1d4a3d45312e9573ce",
                "sha256": "0f6f0cbd4f94d70c1948b2e013cd469ace22ffed9c90d5aaf6ce80f6e5f4d4f7"
            },
            "downloads": -1,
            "filename": "envo-1.5.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "013e416d2a230a1d4a3d45312e9573ce",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 33268,
            "upload_time": "2024-04-07T11:51:40",
            "upload_time_iso_8601": "2024-04-07T11:51:40.029467Z",
            "url": "https://files.pythonhosted.org/packages/28/ea/3ff1c2be4aea423a567f14f82405a3c1b500058e9a8d5c0846d465ae9cff/envo-1.5.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b2ff6481bd3780eeea5ccb7dde0e1e39696ce364a544392830fb23ec518dd9f1",
                "md5": "ccbdb033a5fa4385c026019113a81c0e",
                "sha256": "8ce7a298c7e306d320e6047fa14388b8bd9833d22eaf606ae479e509f5f6c261"
            },
            "downloads": -1,
            "filename": "envo-1.5.2.tar.gz",
            "has_sig": false,
            "md5_digest": "ccbdb033a5fa4385c026019113a81c0e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 27739,
            "upload_time": "2024-04-07T11:51:42",
            "upload_time_iso_8601": "2024-04-07T11:51:42.587580Z",
            "url": "https://files.pythonhosted.org/packages/b2/ff/6481bd3780eeea5ccb7dde0e1e39696ce364a544392830fb23ec518dd9f1/envo-1.5.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-07 11:51:42",
    "github": false,
    "gitlab": true,
    "bitbucket": false,
    "codeberg": false,
    "gitlab_user": "plasma-opensource",
    "gitlab_project": "envo",
    "lcname": "envo"
}
        
Elapsed time: 0.27018s