typer icon indicating copy to clipboard operation
typer copied to clipboard

Ignoring an argument for typer command

Open lvijnck opened this issue 2 years ago • 5 comments

First Check

  • [X] I added a very descriptive title to this issue.
  • [X] I used the GitHub search to find a similar issue and didn't find it.
  • [X] I searched the Typer documentation, with the integrated search.
  • [X] I already searched in Google "How to X in Typer" and didn't find any information.
  • [X] I already read and followed all the tutorial in the docs and didn't find an answer.
  • [X] I already checked if it is not related to Typer but to Click.

Commit to Help

  • [X] I commit to help with one of those options 👆

Example Code

def serialize_dfs(func):
    """Decorator function to automatically (de)-serialize input and output
    dataframes for the function. It leverages the `df_path` and `df_output_path`
    kwargs to serialize input and output dataframes respectively.

    Args:
        func: function to decorate
    Returns:
        List of deduplicated column names
    """
    def wrapper(
        *args,
        dataframe: Optional[pd.DataFrame] = None,
        df_path: Optional[str] = None,
        df_output_path: Optional[str] = None,
        **kwargs
    ):
        # When df path specified, load it and pass it into the function
        if df_path:
            dataframe = pd.read_csv(df_path)

        # Invoke original function
        result: pd.DataFrame = func(*args, dataframe=dataframe, **kwargs)

        # When output path specified, serialize it into output
        if df_output_path:
            result.to_csv(df_output_path, index=False)

        return result

    return wrapper

@app.command()
@serialize_dfs
def expand_columns(
    dataframe: pd.DataFrame = typer.Argument(lazy=True, default=None, formats=[""], hidden=True, expose_value=False),
    keys_col: str = "metadata_name",
    values_col: str = "metadata_value",
    col_format: str = "{column_name}{num}",
) -> pd.DataFrame:
   # ... logic here

Description

I have a few functions that I want to type that handle dataframes (both as input and output). I do have a decorator that allows for specifying the dataframes as paths (as opposed to the objects).

Out of this decorator, I now wish to construct a Typer command. Though I keep getting the following error:

RuntimeError: Type not yet supported.

Is there an option to completely ignore an argument to the Typer CLI? I tried:

  • Hidden=True
  • Default=None
  • Expose_value=False
  • Lazy=True

Operating System

macOS

Operating System Details

No response

Typer Version

typer==0.6.1

Python Version

3.9

Additional Context

No response

lvijnck avatar Nov 17 '22 13:11 lvijnck