Skip to content

Display parameters of the parent class #295

Open
@anth2o

Description

@anth2o

I would like to build objects that I can instantiate and call directly from a CLI. But I want to have a base class, that I can inherit from for other classes to add new arguments. Here is a minimal example:

import fire


class A:

    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name


class B(A):

    def __init__(self, number, **kwargs):
        super().__init__(**kwargs)
        self.number = number

    def __call__(self):
        print(f"{self.name} + {self.number}")


if __name__ == "__main__":
    fire.Fire(B)

I can use this file to do python3 myfile.py --name foo --number 10 and this prints me in my terminal foo + 10. But, I would like to display the help of the CLI in a terminal, and when I do that, only the parameters of class B are displayed, and not the one from class A:

$ python3 myfile.py
NAME
    myfile.py

SYNOPSIS
    myfile.py --number=NUMBER <flags>

ARGUMENTS
    NUMBER

FLAGS
    Flags are accepted.

Do you know if I can bring slight modifications to my program so that the help displayed looks like:

$ python3 myfile.py
NAME
    myfile.py

SYNOPSIS
    myfile.py --number=NUMBER --name=NAME <flags>

ARGUMENTS
    NUMBER
    NAME

FLAGS
    Flags are accepted.

Thanks !

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions