Version

All CLI applications should have the basic ability to check the installed version; i.e.:

$ my-application --version
7.5.8

By default, Cyclopts adds a command, --version:, that does exactly this. Cyclopts try's to reasonably figure out your package's version by itself. The resolution order for determining the version string is as follows:

  1. An explicitly supplied version string or callable to the root Cyclopts application:

    from cyclopts import App
    
    app = App(version="7.5.8")
    
    app()
    

    If a callable is provided, it will be invoked when running the --version command:

    from cyclopts import App
    
    def get_my_application_version() -> str:
        return "7.5.8"
    
    app = App(version=get_my_application_version)
    app()
    
  2. The invoking-package's Distribution Package's Version Number via importlib.metadata.version. Cyclopts attempts to derive the package module that instantiated the App object by traversing the call stack.

  3. The invoking-package's defacto PEP8 standard __version__ string. Cyclopts attempts to derive the package module that instantiated the App object by traversing the call stack.

    # mypackage/__init__.py
    __version__ = "7.5.8"
    
    # mypackage/__main__.py
    # ``App`` will use ``mypackage.__version__``.
    app = cyclopts.App()
    
  4. The default version string "0.0.0" will be displayed.

In short, if your CLI application is a properly structured python package, Cyclopts will automatically derive the correct version.

The --version flag can be changed to a different name(s) via the version_flags parameter.

app = cyclopts.App(version_flags="--show-version")
app = cyclopts.App(version_flags=["--version", "-v"])

To disable the --version flag, set version_flags to an empty string or iterable.

app = cyclopts.App(version_flags="")
app = cyclopts.App(version_flags=[])