Git Product home page Git Product logo

cliconf's Introduction

PyPI PyPI - License Documentation Tests Run on Ubuntu Python Versions Tests Run on Macos Python Versions Github Repo

py-cli-conf

Overview

Framework that lets you write CLIs with Typer that can also be configured via py-app-conf

Getting Started

Install py-cli-conf:

pip install py-cli-conf

A simple example:

import pycliconf

# Do something with pycliconf

See a more in-depth tutorial here.

Development Status

This project is currently in early-stage development. There may be breaking changes often. While the major version is 0, minor version upgrades will often have breaking changes.

Developing

First ensure that you have pipx installed, if not, install it with pip install pipx.

Then clone the repo and run npm install and pipenv sync. Run pipenv shell to use the virtual environment. Make your changes and then run nox to run formatting, linting, and tests.

Develop documentation by running nox -s docs to start up a dev server.

To run tests only, run nox -s test. You can pass additional arguments to pytest by adding them after --, e.g. nox -s test -- -k test_something.

Author

Created by Nick DeRobertis. MIT License.

Links

See the documentation here.

cliconf's People

Contributors

nickderobertis avatar

Watchers

 avatar

cliconf's Issues

Add typing for configured commands

Add typing for configured commands

# TODO: Add typing for configured commands

    to inspect the passed arguments and load from config.
    """
    command = typer_get_command(typer_instance)
    # Add an option to generate the pyappconf config file, optionally providing a format
    # TODO: I don't think this approach will work for command groups, need to add test case
    # TODO: Add typing for configured commands
    pyappconf_settings: AppConfig = command.callback.pyappconf_settings  # type: ignore
    cliconf_settings: CLIConfSettings = command.callback.cliconf_settings  # type: ignore
    model_cls: Type[BaseConfig] = command.callback.model_cls  # type: ignore
    command.params.append(
        create_generate_config_option(
            pyappconf_settings.supported_formats,
            pyappconf_settings.default_format,
            model_cls,
            command.callback,
            cliconf_settings.generate_config_option_name,
        )
    )

    # Override the main function to load config
    command.main = types.MethodType(_cli_conf_main, command)
    return command

f5e9a5c8efe55a48653822d815e94e67313b7009

I don't think this approach will work for command groups, need to add test case

I don't think this approach will work for command groups, need to add test case

# TODO: I don't think this approach will work for command groups, need to add test case

    to inspect the passed arguments and load from config.
    """
    command = typer_get_command(typer_instance)
    # Add an option to generate the pyappconf config file, optionally providing a format
    # TODO: I don't think this approach will work for command groups, need to add test case
    # TODO: Add typing for configured commands
    pyappconf_settings: AppConfig = command.callback.pyappconf_settings  # type: ignore
    cliconf_settings: CLIConfSettings = command.callback.cliconf_settings  # type: ignore
    model_cls: Type[BaseConfig] = command.callback.model_cls  # type: ignore
    command.params.append(
        create_generate_config_option(
            pyappconf_settings.supported_formats,
            pyappconf_settings.default_format,
            model_cls,
            command.callback,
            cliconf_settings.generate_config_option_name,
        )
    )

    # Override the main function to load config
    command.main = types.MethodType(_cli_conf_main, command)
    return command

f122d29f92369cae3cbcae25873a4d1ef9730c4b

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.