# Global State

Unlike Cyclopts or Typer, with `arguably` you directly jump into decorating functions:

    import arguably

    @arguably.command
    def some_function(required, not_required=2, *others: int, option: float = 3.14):
        """
        this function is on the command line!

        Args:
            required: a required argument
            not_required: this one isn't required, since it has a default value
            *others: all the other positional arguments go here
            option: [-x] keyword-only args are options, short name is in brackets
        """
        print(f"{required=}, {not_required=}, {others=}, {option=}")

    if __name__ == "__main__":
        arguably.run()

With Arguably, no application object is created. This immediately becomes an issue if you use a library that uses arguably on import.

Lets consider the following file:

    # library_using_arguably.py
    import arguably

    @arguably.command
    def some_library_function(name):
        print(f"{name=}")

    if __name__ == "__main__":
        arguably.run()

    $ python library_using_arguably.py foo
    name='foo'

So this by itself works fine, but lets create another script that imports this library:

    import arguably
    import library_using_arguably

    @arguably.command
    def my_function(name):
        print(f"{name=}")

    if __name__ == "__main__":
        arguably.run()

Now, lets check the help screen:

    $ python my-script.py --help
    usage: my-script.py [-h] command ...

    positional arguments:
      command
        some-library-function
        my-function

    options:
      -h, --help               show this help message and exit

The two CLI applications got combined into one, making Arguably dangerous for CLIs that are also libraries.