Skip to main content

优雅的命令行解析

项目描述

柯基

优雅的 Python 命令行解析。

Corgy 允许您在 Python 中创建命令行界面,而无需担心样板代码。这会产生更清晰、更模块化的代码。

from typing import Annotated, Optional, Sequence
from corgy import Corgy
from corgy.types import KeyValuePairs

class ArgGroup(Corgy):
    arg1: Annotated[Optional[int], "optional number"]
    arg2: Annotated[bool, "a boolean"]

class MyArgs(Corgy):
    arg1: Annotated[int, "a number"] = 1
    arg2: Annotated[Sequence[float], "at least one float"]
    arg3: Annotated[KeyValuePairs[str, int], "str to int map"]
    grp1: Annotated[ArgGroup, "group 1"]

args = MyArgs.parse_from_cmdline()

将此与使用 argparse 的等效代码进行比较:

from argparse import ArgumentParser, ArgumentTypeError, BooleanOptionalAction

def map_type(s):
    kvs = {}
    try:
        for kv in s.split(","):
            k, v = kv.split("=")
            kvs[k] = int(v)
    except Exception as e:
        raise ArgumentTypeError(e) from None
    return kvs

parser = ArgumentParser()
parser.add_argument("--arg1", type=int, help="a number", default=1)
parser.add_argument("--arg2", type=float, nargs="+", help="at least one float", required=True)
parser.add_argument("--arg3", type=map_type, help="str to int map", required=True)

grp_parser = parser.add_argument_group("group 1")
grp_parser.add_argument("--grp1:arg1", type=int, help="optional number")
grp_parser.add_argument("--grp1:arg2", help="a boolean", action=BooleanOptionalAction)

args = parser.parse_args()

Corgy 还为来自 的更多信息帮助消息argparse和彩色输出提供支持。相比:

带和不带 Corgy 的样本输出

安装

corgy在 PyPI 上可用,并且可以使用 pip 安装:

pip install corgy

对彩色输出的支持需要crayons包,也可以在 PyPI 上使用。corgy您可以通过安装colors额外的内容将其作为依赖项拉取:

pip install corgy[colors]

用法

有关使用的文档,请参阅 docs/index.md。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

corgy-4.7.0.tar.gz (57.5 kB 查看哈希)

已上传 source

内置分布

corgy-4.7.0-py3-none-any.whl (33.1 kB 查看哈希)

已上传 py3