Skip to main content

Miscellaneous utilities for nbdev projects.

Project description

cjm-nbdev-utils

Install

pip install cjm_nbdev_utils

Project Structure

nbs/
└── env_gen.ipynb # Generate an environment.yml from an nbdev-style settings.ini

Total: 1 notebook

Module Dependencies

graph LR
    env_gen[env_gen<br/>env_gen]

No cross-module dependencies detected.

CLI Reference

gen_env_from_settings Command

usage: gen_env_from_settings [-h] [--settings SETTINGS] [--name NAME]
                             [--extras EXTRAS] [--no-editable]
                             [--include-pip-reqs] [--no-include-pip-reqs]
                             [--out OUT] [--stdout]

Generate environment.yml from nbdev settings.ini

options:
  -h, --help            show this help message and exit
  --settings SETTINGS   Path to settings.ini
  --name NAME           Environment name override
  --extras EXTRAS       Editable pip extras to install, e.g. 'dev' or
                        'dev,docs'. Use '' to install no extras.
  --no-editable         Do not include editable install (-e .).
  --include-pip-reqs    Also include 'requirements' and 'dev_requirements'
                        from settings.ini in pip section.
  --no-include-pip-reqs
                        Do not include pip requirements from settings.ini
                        (default).
  --out OUT             Output file path.
  --stdout              Write YAML to stdout instead of a file.

For detailed help on any command, use gen_env_from_settings <command> --help.

Module Overview

Detailed documentation for each module in the project:

env_gen (env_gen.ipynb)

Generate an environment.yml from an nbdev-style settings.ini

Import

from cjm_nbdev_utils.env_gen import (
    DEFAULT_ENV_NAME,
    DEFAULT_CHANNELS,
    read_settings,
    get_section,
    split_list,
    normalize_python_spec,
    collect_values,
    emit_yaml,
    main
)

Functions

def read_settings(
    path: str  # Path to settings.ini file
) -> configparser.ConfigParser:  # Configured ConfigParser object
    "Read settings.ini file with percent-style interpolation."
def get_section(
    cp: configparser.ConfigParser  # ConfigParser object
)
    "Get configuration section from ConfigParser. nbdev puts keys at top-level (DEFAULT). Falls back to first section if present."
def split_list(
    val: str | None  # String value to split (can be None)
) -> List[str]:  # List of unique, non-empty strings preserving order
    "Split space- and/or comma-separated lists while respecting quotes."
def normalize_python_spec(
    min_py: str=None  # Minimum Python version string
) -> str:  # Normalized Python specification string or None
    "Normalize Python version specification for conda. Accepts ">=3.10", "3.10", "3.9.*", etc. If bare like "3.10", makes it ">=3.10"."
def collect_values(
    cfg    # Configuration section dictionary - TODO: Add type hint
) -> Tuple[str, List[str], List[str], List[str], List[str]]:  # Tuple of (env_name, channels, conda_reqs, pip_reqs, dev_pip_reqs)
    "Collect configuration values from settings."
def emit_yaml(
    name: str,    # Environment name
    channels: List[str],    # List of conda channels
    conda_deps: List[str],    # List of conda dependencies
    pip_lines: List[str],    # List of pip packages
) -> str:  # YAML formatted string
    "Generate environment.yml content. Manual YAML emitter to avoid extra dependencies."
def main()
    """
    Generate environment.yml from nbdev settings.ini.
    
    Reads: lib_name, min_python, conda_channels, conda_requirements,
           requirements, dev_requirements (all optional).
    Writes: environment.yml (or stdout).
    Adds an editable pip install (-e ".[EXTRAS]") by default.
    
    Examples:
        python gen_env_from_settings.py
        python gen_env_from_settings.py --name myproj-dev --extras dev,docs --out env.yml
        python gen_env_from_settings.py --no-editable --stdout
        python gen_env_from_settings.py --no-include-pip-reqs
    """

Variables

DEFAULT_ENV_NAME = 'nbdev-env'
DEFAULT_CHANNELS = [1 items]

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

cjm_nbdev_utils-0.0.2.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

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

cjm_nbdev_utils-0.0.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

Details for the file cjm_nbdev_utils-0.0.2.tar.gz.

File metadata

  • Download URL: cjm_nbdev_utils-0.0.2.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.13

File hashes

Hashes for cjm_nbdev_utils-0.0.2.tar.gz
Algorithm Hash digest
SHA256 366e858f89043df8d134e7be3dfe4576cafaae5a814deb8decf047502f0a53fa
MD5 2ae749fdaa1d2f550cfcd09a43c5f700
BLAKE2b-256 6e7a71fca7dcc551a9d358315d087d86ebba604cdd29890dbd89bb9f983af26e

See more details on using hashes here.

File details

Details for the file cjm_nbdev_utils-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cjm_nbdev_utils-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 88a9854a192842050c6bd037bdba1fec8eba1170c13d28089375dc7c9cf778d5
MD5 0452759a39b47eb6832772b4d3156fa6
BLAKE2b-256 69aca5a62763bed760ab30ec317cdff930cba9e05881692d94b460d5f2e61f58

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