ufen Sie einen anderen Klickbefehl über einen Klickbefehl au

Ich möchte einige nützliche Funktionen als Befehle verwenden. Dafür teste ich dasclick Bibliothek. Ich habe meine drei ursprünglichen Funktionen definiert und sie dann als @ dekorierclick.command:

import click
import os, sys

@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_name(content, to_stdout=False):
    if not content:
        content = ''.join(sys.stdin.readlines())
    result = content + "\n\tadded name"
    if to_stdout is True:
        sys.stdout.writelines(result)
    return result


@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=True)
def add_surname(content, to_stdout=False):
    if not content:
        content = ''.join(sys.stdin.readlines())
    result = content + "\n\tadded surname"
    if to_stdout is True:
        sys.stdout.writelines(result)
    return result

@click.command()
@click.argument('content', required=False)
@click.option('--to_stdout', default=False)
def add_name_and_surname(content, to_stdout=False):
    result = add_surname(add_name(content))
    if to_stdout is True:
        sys.stdout.writelines(result)
    return result

Auf diese Weise kann ich die drei Befehle erzeugenadd_name, add_surname undadd_name_and_surname Verwendung einersetup.py file undpip install --editable . Dann kann ich pfeifen:

$ echo "original content" | add_name | add_surname 
original content

    added name
    added surname

Jedoch gibt es ein kleines Problem, das ich lösen muss, wenn ich mit verschiedenen Klickbefehlen als Funktionen komponiere:

$echo "original content" | add_name_and_surname 
Usage: add_name_and_surname [OPTIONS] [CONTENT]

Error: Got unexpected extra arguments (r i g i n a l   c o n t e n t 
)

Ich habe keine Ahnung, warum es nicht funktioniert, ich brauche dieseadd_name_and_surname Befehl zum Aufrufen vonadd_name undadd_surname nicht als Befehl, sondern als Funktionen, sonst hat es meinen ursprünglichen Zweck, Funktionen sowohl als Bibliotheksfunktionen als auch als Befehle zu verwenden, verfehlt.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage