Name | envo JSON |
Version |
1.5.2
JSON |
| download |
home_page | None |
Summary | Smart Environments handling - Define command hooks, file hooks and env variables in python and activate hot reloaded shells. |
upload_time | 2024-04-07 11:51:42 |
maintainer | None |
docs_url | None |
author | Damian Krystkiewicz |
requires_python | <4.0,>=3.8 |
license | Apache 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"
}