py2403homework.commands 源代码

"""
面向行,解析和运行命令。

*Orienting towards line, parse and run commands.*

.. hint::
   
   这个模块只提供解析和执行命令的接口。要在命令行中调用,请使用 ``python -m py2403homework`` 以运行 ``__main__.py``。
   
   This module only provides interfaces for parsing and executing commands. To invoke in command line, use ``python -m py2403homework`` to run ``__main__.py``.

使用样例
--------

Sample

.. code-block:: console
   
   python -m py2403homework -u Event

选项
----

Options

.. option:: -u <util>, --use <util>, --util=<util>
   
   选择一个事件类型。``<util>`` 必须存在于 :mod:`py2403homework.utils` 中,否则将引发 :exc:`ValueError`。
   
   Select an event type, which must exist in :mod:`py2403homework.utils`, or a :exc:`ValueError` will be raised.
"""

from argparse import ArgumentParser
try:
    from . import utils
except ImportError:
    import utils


#: 用于解析命令行参数。:func:`run` 的默认值。
#:
#: Used to parse command line parameters. The default value of :func:`run`. 
parser: ArgumentParser = ArgumentParser(
    # prog='python -m py2403homework',
    description = 'A tool to generate reST content for homework',
)
parser.add_argument('-u', '--use', '--util', default='Homework', help='event type')

[文档] def run(args=None, parser: ArgumentParser = parser): r""" 运行指定的命令。 Run specified command. :arg args: 待解析的命令行参数,调用时将作为 ``parser`` 的 :meth:`argparse.ArgumentParser.parse_args` 方法中的 ``args`` 参数。可以是一个由字符串组成的序列,或是一个字符串;若 ``args`` 为空,则使用 :data:`sys.argv` (详见 :mod:`argparse` 文档) command line parameters to be parased, which will be as argument ``args`` of method :meth:`argparse.ArgumentParser.parse_args` of ``parser``. It could be a sequence consists of strings, or a simply a string; if it's ``None``, :data:`sys.argv` will be used instead (To learn more, visit :mod:`argparse`\ 's documentation) :type args: collections.abc.Sequence[str] or str or None :arg parser: 用于解析 ``args`` 的 :class:`argparse.ArgumentParser` 对象,一般使用默认值即可 :class:`argparse.ArgumentParser` object to parse ``args``. Generally, using the default values is sufficient """ namespace = parser.parse_args(args) try: event_type = getattr(utils, namespace.type) except AttributeError: raise ValueError(f'event type "{namespace.type}" not found') ...