diff --git a/deepmd/entrypoints/main.py b/deepmd/entrypoints/main.py index e35cc1086f..949797ea8b 100644 --- a/deepmd/entrypoints/main.py +++ b/deepmd/entrypoints/main.py @@ -20,7 +20,7 @@ ) from deepmd.loggers import set_log_handles -__all__ = ["main", "parse_args", "get_ll"] +__all__ = ["main", "parse_args", "get_ll", "main_parser"] def get_ll(log_level: str) -> int: @@ -44,14 +44,13 @@ def get_ll(log_level: str) -> int: return int_level -def parse_args(args: Optional[List[str]] = None): +def main_parser() -> argparse.ArgumentParser: """DeePMD-Kit commandline options argument parser. - Parameters - ---------- - args: List[str] - list of command line arguments, main purpose is testing default option None - takes arguments from sys.argv + Returns + ------- + argparse.ArgumentParser + main parser of DeePMD-kit """ parser = argparse.ArgumentParser( description="DeePMD-kit: A deep learning package for many-body potential energy" @@ -440,7 +439,24 @@ def parse_args(args: Optional[List[str]] = None): # --version parser.add_argument('--version', action='version', version='DeePMD-kit v%s' % __version__) + return parser + + +def parse_args(args: Optional[List[str]] = None) -> argparse.Namespace: + """Parse arguments and convert argument strings to objects. + Parameters + ---------- + args: List[str] + list of command line arguments, main purpose is testing default option None + takes arguments from sys.argv + + Returns + ------- + argparse.Namespace + the populated namespace + """ + parser = main_parser() parsed_args = parser.parse_args(args=args) if parsed_args.command is None: parser.print_help() diff --git a/doc/cli.rst b/doc/cli.rst new file mode 100644 index 0000000000..4c52a9ede8 --- /dev/null +++ b/doc/cli.rst @@ -0,0 +1,7 @@ +Command line interface +====================== + +.. argparse:: + :module: deepmd.entrypoints.main + :func: main_parser + :prog: dp diff --git a/doc/conf.py b/doc/conf.py index a3f4011edd..5df63bdacb 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -171,6 +171,7 @@ def setup(app): 'sphinx.ext.mathjax', 'sphinx.ext.viewcode', 'sphinx.ext.intersphinx', + 'sphinxarg.ext', 'numpydoc', 'breathe', 'exhale' diff --git a/doc/index.rst b/doc/index.rst index 2b6cf74fbf..5ba11a764a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -33,6 +33,7 @@ DeePMD-kit is a package written in Python/C++, designed to minimize the effort r freeze/index test/index inference/index + cli third-party/index troubleshooting/index diff --git a/setup.py b/setup.py index 8d169a7e7e..56363b818f 100644 --- a/setup.py +++ b/setup.py @@ -127,7 +127,7 @@ cmake_minimum_required_version="3.0", extras_require={ "test": ["dpdata>=0.1.9", "ase", "pytest", "pytest-cov", "pytest-sugar"], - "docs": ["sphinx>=3.1.1", "recommonmark", "sphinx_rtd_theme>=1.0.0rc1", "sphinx_markdown_tables", "myst-parser", "breathe", "exhale", "numpydoc", "ase", "deepmodeling-sphinx", "dargs>=0.3.1"], + "docs": ["sphinx>=3.1.1", "recommonmark", "sphinx_rtd_theme>=1.0.0rc1", "sphinx_markdown_tables", "myst-parser", "breathe", "exhale", "numpydoc", "ase", "deepmodeling-sphinx", "dargs>=0.3.1", "sphinx-argparse"], **extras_require, }, entry_points={"console_scripts": ["dp = deepmd.entrypoints.main:main"]},