Skip to main content

Yet another python environment

Project description

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.
  2. Named environments with per-environment configuration (test, dev, beta, prod, etc...).
  3. CLI interface with easy initialization.

Install

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

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.

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

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.

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,

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),

yapenv config "my_custom_config.a_list"

Should output,

- 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.

Licence

Copyright © Zav Shotan, Patrick Huber, and other contributors. It is free software, released under the MIT licence, and may be redistributed under the terms specified in LICENSE.

Project details


Download files

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

Source Distribution

yapenv-0.3.2.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yapenv-0.3.2-py3-none-any.whl (25.1 kB view details)

Uploaded Python 3

File details

Details for the file yapenv-0.3.2.tar.gz.

File metadata

  • Download URL: yapenv-0.3.2.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for yapenv-0.3.2.tar.gz
Algorithm Hash digest
SHA256 a56d5cd13625ce8d40e1649e9257e7a11f01f08137de87591719fe5969cfbe6e
MD5 886f9ff1a1e3ab7ebe1fde747e99aaec
BLAKE2b-256 0caee81091a24c0565716b5f6b433507e914be24e5a39986c9717819064ca7dd

See more details on using hashes here.

File details

Details for the file yapenv-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: yapenv-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 25.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for yapenv-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 390e5ee84aece589068bba822505c4c92aee7b15afc858f38a232daec0bde9bd
MD5 5bced30d4f8eec130e4b8ddb086b2078
BLAKE2b-256 bc67c31fadba91ae26674f6fbb2b7c31be4397187995d5785c3fc2b8a6193795

See more details on using hashes here.

Supported by

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