Llame a otro comando de clic desde un comando de clic

Quiero usar algunas funciones útiles como comandos. Para eso estoy probando elclick biblioteca. Definí mis tres funciones originales y luego las decoré comoclick.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

De esta manera puedo generar los tres comandosadd_name, add_surname yadd_name_and_surname usando unsetup.py archivo ypip install --editable . Entonces puedo canalizar:

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

    added name
    added surname

Sin embargo, hay un pequeño problema que debo resolver al componer con diferentes comandos de clic como funciones:

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

No tengo idea de por qué no funciona, necesito estoadd_name_and_surname comando para llamaradd_name yadd_surname no como comando sino como funciones, de lo contrario, anula mi propósito original de usar funciones como funciones y comandos de la biblioteca.

Respuestas a la pregunta(2)

Su respuesta a la pregunta