# yapenv
## Alpha
WARNING: This repo is still in alpha development phase and structure is subject to change.
Yet Another Python Environment manager (with less options).
### Features
1. Easy configuration via YAML files with optional inheritance.
1. Named environments with per-environment configuration (test, dev, beta, prod, etc...).
1. CLI interface with easy initialization.
NOTE: `yapenv` uses the package [bole](https://github.com/LamaAni/bole) to handle configuration and logging
## Install
```shell
pip install yapenv
```
Run in your project directory
```
yapenv init
```
## Configuration
By default `yapenv` uses the following configuration file names.
- `.yapenv.yaml`
- `.yapenv.yml`
- `.yapenv`
- `.yapenv.json`
### Core Configuration
```yaml
python_version: "3.9" # Python version to use
python_executable: null # Path to python executable (overrides python_version)
venv_directory: .venv # Path to created virtualenv directory
pip_config_path: null # Path to the pip.conf file
inherit: false # Boolean, if true inherit parent directory's yapenv configuration
environments: [] # Optional environments, see environment configs
# These values are inherited from and overwritten by environment configuration
env_file: .env # Env file to load when running commands
pip_install_args: [] # List of arguments for pip install command
virtualenv_args: [] # list of arguments for virtualenv command
requirements: [] # List of requirements (see requirement configuration)
```
### Environment Configuration
Enabled by using `--env <environment_name>` argument.
```yaml
environments:
dev: # Environment name
env_file: .env # Env file to load when running commands
pip_install_args: [] # List of arguments for pip install command
virtualenv_args: [] # list of arguments for virtualenv command
requirements: [] # List of requirements (see requirement configuration)
```
### Requirement Configuration
```yaml
requirements:
- package: mypackage # Pip package name string
- myotherpackage==0.0.1 # Pip package name string
- import: requirements.txt # Path to requirements.txt to import
```
### Environment Variables
- `YAPENV_ENV_FILE`: Env file to load when running commands (default=`.env`).
- `YAPENV_FULL_ERRORS`: Boolean that tells `yapenv` to dump full traceback (default=`"false"`).
- `YAPENV_CONFIG_FILES`: Array of yapenv config file names (default=`".yapenv.yaml .yapenv.yml .yapenv .yapenv.json"`).
- `NO_COLOR`: Boolean that disables colorized logging output (default="`false`")
- `VIRTUAL_ENV`: File path of python virtualenv (default=`None`)
### Example Configurations
#### Requirements File Method
```
python_version: "3.9"
venv_directory: .venv
environments:
dev:
requirements:
- import: requirements.dev.txt
requirements:
- import: requirements.txt
```
#### Package List Method
```
python_version: "3.10"
venv_directory: .venv
environments:
dev:
requirements:
- package: flake8
- package: black
requirements:
- package: celery==5.2.6
- Flask>=2.1.2
```
## Extra config and reading configuration values
yapenv allows extra configuration values to be embedded in its config file. e.g.
```yaml
python_version: "3.10"
venv_directory: .venv
requirements:
- black
- flake8
my_custom_config:
a_list:
- a_key: "my_custom_value"
```
Note: extra configuration values follow yapenv config inheritance rules.
You can read your configuration value by,
```shell
yapenv config "my_custom_config.a_list[0].a_key"
```
That should output `my_custom_value`
Or a yaml block (see format options in the command),
```shell
yapenv config "my_custom_config.a_list"
```
Should output,
```yaml
- a_key: "my_custom_value"
```
# Contribution
Feel free to ping me in issues or directly on LinkedIn to contribute.
# Future implementation
We plan to support multiple python version per environment.
Looking for help on this subject.
# License
Copyright ©
`Zav Shotan` and other [contributors](graphs/contributors).
It is free software, released under the MIT licence, and may be redistributed under the terms specified in `LICENSE`.
Raw data
{
"_id": null,
"home_page": "https://github.com/LamaAni/yapenv",
"name": "yapenv",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "environment, venv, virtualenv, pyenv, poetry",
"author": "Zav Shotan",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/21/a5/0cc2916a3218579cea0f985a2f5d78c252402b78e7e9d1e31d8056c3a3f4/yapenv-0.4.7.tar.gz",
"platform": null,
"description": "# yapenv\n\n## Alpha\n\nWARNING: This repo is still in alpha development phase and structure is subject to change.\n\nYet Another Python Environment manager (with less options).\n\n### Features\n\n1. Easy configuration via YAML files with optional inheritance.\n1. Named environments with per-environment configuration (test, dev, beta, prod, etc...).\n1. CLI interface with easy initialization.\n\nNOTE: `yapenv` uses the package [bole](https://github.com/LamaAni/bole) to handle configuration and logging\n\n## Install\n\n```shell\npip install yapenv\n```\n\nRun in your project directory\n\n```\nyapenv init\n```\n\n## Configuration\n\nBy default `yapenv` uses the following configuration file names.\n\n- `.yapenv.yaml`\n- `.yapenv.yml`\n- `.yapenv`\n- `.yapenv.json`\n\n### Core Configuration\n\n```yaml\npython_version: \"3.9\" # Python version to use\npython_executable: null # Path to python executable (overrides python_version)\nvenv_directory: .venv # Path to created virtualenv directory\npip_config_path: null # Path to the pip.conf file\ninherit: false # Boolean, if true inherit parent directory's yapenv configuration\nenvironments: [] # Optional environments, see environment configs\n\n# These values are inherited from and overwritten by environment configuration\nenv_file: .env # Env file to load when running commands\npip_install_args: [] # List of arguments for pip install command\nvirtualenv_args: [] # list of arguments for virtualenv command\nrequirements: [] # List of requirements (see requirement configuration)\n```\n### Environment Configuration\n\nEnabled by using `--env <environment_name>` argument.\n\n```yaml\nenvironments:\n dev: # Environment name\n env_file: .env # Env file to load when running commands\n pip_install_args: [] # List of arguments for pip install command\n virtualenv_args: [] # list of arguments for virtualenv command\n requirements: [] # List of requirements (see requirement configuration)\n```\n\n### Requirement Configuration\n\n```yaml\nrequirements:\n- package: mypackage # Pip package name string\n- myotherpackage==0.0.1 # Pip package name string\n- import: requirements.txt # Path to requirements.txt to import\n```\n\n### Environment Variables\n\n- `YAPENV_ENV_FILE`: Env file to load when running commands (default=`.env`).\n- `YAPENV_FULL_ERRORS`: Boolean that tells `yapenv` to dump full traceback (default=`\"false\"`).\n- `YAPENV_CONFIG_FILES`: Array of yapenv config file names (default=`\".yapenv.yaml .yapenv.yml .yapenv .yapenv.json\"`).\n- `NO_COLOR`: Boolean that disables colorized logging output (default=\"`false`\")\n- `VIRTUAL_ENV`: File path of python virtualenv (default=`None`)\n\n### Example Configurations\n\n#### Requirements File Method\n```\npython_version: \"3.9\"\nvenv_directory: .venv\nenvironments:\n dev:\n requirements:\n - import: requirements.dev.txt\nrequirements:\n- import: requirements.txt\n```\n\n#### Package List Method\n```\npython_version: \"3.10\"\nvenv_directory: .venv\nenvironments:\n dev:\n requirements:\n - package: flake8\n - package: black\nrequirements:\n- package: celery==5.2.6\n- Flask>=2.1.2\n```\n\n## Extra config and reading configuration values\n\nyapenv allows extra configuration values to be embedded in its config file. e.g.\n\n```yaml\npython_version: \"3.10\"\nvenv_directory: .venv\nrequirements:\n - black\n - flake8\n\nmy_custom_config:\n a_list: \n - a_key: \"my_custom_value\"\n```\n\nNote: extra configuration values follow yapenv config inheritance rules.\n\nYou can read your configuration value by,\n```shell\nyapenv config \"my_custom_config.a_list[0].a_key\"\n```\nThat should output `my_custom_value`\n\nOr a yaml block (see format options in the command),\n```shell\nyapenv config \"my_custom_config.a_list\"\n```\nShould output,\n```yaml\n- a_key: \"my_custom_value\"\n```\n\n# Contribution\n\nFeel free to ping me in issues or directly on LinkedIn to contribute.\n\n# Future implementation\n\nWe plan to support multiple python version per environment.\n\nLooking for help on this subject.\n\n# License\n\nCopyright \u00a9\n`Zav Shotan` and other [contributors](graphs/contributors).\nIt is free software, released under the MIT licence, and may be redistributed under the terms specified in `LICENSE`.\n",
"bugtrack_url": null,
"license": null,
"summary": "Yet another python environment",
"version": "0.4.7",
"project_urls": {
"Homepage": "https://github.com/LamaAni/yapenv",
"Source": "https://github.com/LamaAni/yapenv"
},
"split_keywords": [
"environment",
" venv",
" virtualenv",
" pyenv",
" poetry"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "40c69b579f95a609059be862ebd810082f3acfb09c7cc0d66ceb207ba9a26d49",
"md5": "04efa883fb7ff4a7fd0ca3134efc6f8f",
"sha256": "929b68355847eec089fc132bdf919d5a02fd77b6daf3dd3aed6dbc7d5ed3db76"
},
"downloads": -1,
"filename": "yapenv-0.4.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "04efa883fb7ff4a7fd0ca3134efc6f8f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 23137,
"upload_time": "2024-06-19T20:31:14",
"upload_time_iso_8601": "2024-06-19T20:31:14.342283Z",
"url": "https://files.pythonhosted.org/packages/40/c6/9b579f95a609059be862ebd810082f3acfb09c7cc0d66ceb207ba9a26d49/yapenv-0.4.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "21a50cc2916a3218579cea0f985a2f5d78c252402b78e7e9d1e31d8056c3a3f4",
"md5": "e6a9615f432822ec01d35e4889970cc6",
"sha256": "d8fdbd969eb2f7083c26314583fb202d2e51557fb5303f8116bf8dc258e83c52"
},
"downloads": -1,
"filename": "yapenv-0.4.7.tar.gz",
"has_sig": false,
"md5_digest": "e6a9615f432822ec01d35e4889970cc6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17931,
"upload_time": "2024-06-19T20:31:17",
"upload_time_iso_8601": "2024-06-19T20:31:17.186185Z",
"url": "https://files.pythonhosted.org/packages/21/a5/0cc2916a3218579cea0f985a2f5d78c252402b78e7e9d1e31d8056c3a3f4/yapenv-0.4.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-19 20:31:17",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "LamaAni",
"github_project": "yapenv",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "yapenv"
}