Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-sphinx-click for
openSUSE:Factory checked in at 2022-11-01 13:42:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sphinx-click (Old)
and /work/SRC/openSUSE:Factory/.python-sphinx-click.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sphinx-click"
Tue Nov 1 13:42:06 2022 rev:2 rq:1032478 version:4.3.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sphinx-click/python-sphinx-click.changes
2022-04-13 21:06:49.456668041 +0200
+++
/work/SRC/openSUSE:Factory/.python-sphinx-click.new.2275/python-sphinx-click.changes
2022-11-01 13:42:14.719793018 +0100
@@ -1,0 +2,42 @@
+Fri Oct 7 16:22:14 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to version 4.3.0
+ * Fix typo
+ * Add release note for auto_envvar_prefix support
+ * add functionality to also render env-variables that are created via the
???auto_envvar_prefix??? option
+
+- Update to version 4.2.0
+ * Extend pre-wrapped text support to options
+ * tests: Use Command tests, not Group tests
+ * tests: Add test for boolean options
+
+- Update to version 4.1.0
+ * docs: Don???t recommend using ???setup.py???
+ * docs: Indicate support for asyncclick
+ * asyncclick target
+ * docs: Remove ???language??? configuration
+ * docs: Add root directory to PATH for docs build
+ * docs: Remove noise from conf.py
+ * tox: Enable nitpicky mode for docs builds
+
+- Update to version 4.0.3
+ * Correct ???get_command??? argument type error
+
+- Update to version 4.0.2
+ * Correctly ignore empty ???commands??? parameter
+
+- Update to version 4.0.1
+ * docs: Correct typo
+ * Configure mypy
+ * Add typing hints
+ * Pass Context, not self, to MultiCommand
+ * Add test for truncation
+
+- Update to version 4.0.0
+ * Add Python 3.10 support, drop Python 3.6 support
+ * Uncap coverage, remove test-requirements.txt
+ * Update pre-commit hooks
+ * Add support for click 8.1.x
+ * setup: Update URL
+
+-------------------------------------------------------------------
Old:
----
sphinx-click-3.1.0.tar.gz
New:
----
sphinx-click-4.3.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sphinx-click.spec ++++++
--- /var/tmp/diff_new_pack.iU9Nbd/_old 2022-11-01 13:42:15.175795443 +0100
+++ /var/tmp/diff_new_pack.iU9Nbd/_new 2022-11-01 13:42:15.183795486 +0100
@@ -18,18 +18,18 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-sphinx-click
-Version: 3.1.0
+Version: 4.3.0
Release: 0
Summary: Sphinx extension that automatically documents click
applications
License: MIT
URL: https://github.com/stephenfin/sphinx-click
Source:
https://files.pythonhosted.org/packages/source/s/sphinx_click/sphinx-click-%{version}.tar.gz
-BuildRequires: python-rpm-macros
-BuildRequires: %{python_module setuptools}
+BuildRequires: %{python_module pbr}
BuildRequires: %{python_module pip}
+BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module wheel}
-BuildRequires: %{python_module pbr}
BuildRequires: fdupes
+BuildRequires: python-rpm-macros
BuildArch: noarch
BuildRequires: python-rpm-generators
%{?python_enable_dependency_generator}
++++++ sphinx-click-3.1.0.tar.gz -> sphinx-click-4.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/.github/workflows/ci.yaml
new/sphinx-click-4.3.0/.github/workflows/ci.yaml
--- old/sphinx-click-3.1.0/.github/workflows/ci.yaml 2022-02-02
13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/.github/workflows/ci.yaml 2022-07-04
13:00:24.000000000 +0200
@@ -10,10 +10,10 @@
steps:
- name: Checkout source code
uses: actions/checkout@v2
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
uses: actions/setup-python@v2
with:
- python-version: 3.9
+ python-version: "3.10"
- name: Install dependencies
run: python -m pip install tox
- name: Run tox
@@ -23,7 +23,7 @@
runs-on: ubuntu-latest
strategy:
matrix:
- python: [3.6, 3.7, 3.8, 3.9]
+ python: ["3.7", "3.8", "3.9", "3.10"]
steps:
- name: Checkout source code
uses: actions/checkout@v2
@@ -44,10 +44,10 @@
uses: actions/checkout@v2
with:
fetch-depth: 0
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
uses: actions/setup-python@v2
with:
- python-version: 3.9
+ python-version: "3.10"
- name: Install dependencies
run: python -m pip install tox
- name: Build docs (via tox)
@@ -68,10 +68,10 @@
uses: actions/checkout@v2
with:
fetch-depth: 0
- - name: Set up Python 3.9
+ - name: Set up Python 3.10
uses: actions/setup-python@v2
with:
- python-version: 3.9
+ python-version: "3.10"
- name: Install dependencies
run: python -m pip install build
- name: Build a binary wheel and a source tarball
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/.pre-commit-config.yaml
new/sphinx-click-4.3.0/.pre-commit-config.yaml
--- old/sphinx-click-3.1.0/.pre-commit-config.yaml 2022-02-02
13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/.pre-commit-config.yaml 2022-07-04
13:00:24.000000000 +0200
@@ -6,11 +6,11 @@
python: python3
repos:
- repo: https://github.com/ambv/black
- rev: 21.10b0
+ rev: 22.3.0
hooks:
- id: black
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.0.1
+ rev: v4.2.0
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/AUTHORS
new/sphinx-click-4.3.0/AUTHORS
--- old/sphinx-click-3.1.0/AUTHORS 2022-02-02 13:23:20.000000000 +0100
+++ new/sphinx-click-4.3.0/AUTHORS 2022-07-04 13:00:34.000000000 +0200
@@ -12,10 +12,13 @@
JeremyB <[email protected]>
Jiri Kuncar <[email protected]>
Jos?? S??nchez-Gallego <[email protected]>
+Lev Gorodetskiy <[email protected]>
Maarten ter Huurne <[email protected]>
Miro Hron??ok <[email protected]>
Omer Cohen <[email protected]>
+Patrik.Hlobil <[email protected]>
Phillip Smyth <[email protected]>
+R??gis Behmo <[email protected]>
Stephen Finucane <[email protected]>
Tim Abramson <[email protected]>
William Jamir Silva <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/ChangeLog
new/sphinx-click-4.3.0/ChangeLog
--- old/sphinx-click-3.1.0/ChangeLog 2022-02-02 13:23:20.000000000 +0100
+++ new/sphinx-click-4.3.0/ChangeLog 2022-07-04 13:00:34.000000000 +0200
@@ -1,6 +1,59 @@
CHANGES
=======
+4.3.0
+-----
+
+* Fix typo
+* Add release note for auto\_envvar\_prefix support
+* add functionality to also render env-variables that are created via the
'auto\_envvar\_prefix' option
+
+4.2.0
+-----
+
+* Extend pre-wrapped text support to options
+* tests: Use Command tests, not Group tests
+* tests: Add test for boolean options
+
+4.1.0
+-----
+
+* docs: Don't recommend using 'setup.py'
+* docs: Indicate support for asyncclick
+* asyncclick target
+* docs: Remove 'language' configuration
+* docs: Add root directory to PATH for docs build
+* docs: Remove noise from conf.py
+* tox: Enable nitpicky mode for docs builds
+
+4.0.3
+-----
+
+* Correct 'get\_command' argument type error
+
+4.0.2
+-----
+
+* Correctly ignore empty 'commands' parameter
+
+4.0.1
+-----
+
+* docs: Correct typo
+* Configure mypy
+* Add typing hints
+* Pass Context, not self, to MultiCommand
+* Add test for truncation
+
+4.0.0
+-----
+
+* Add Python 3.10 support, drop Python 3.6 support
+* Uncap coverage, remove test-requirements.txt
+* Update pre-commit hooks
+* Add support for click 8.1.x
+* setup: Update URL
+
3.1.0
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/PKG-INFO
new/sphinx-click-4.3.0/PKG-INFO
--- old/sphinx-click-3.1.0/PKG-INFO 2022-02-02 13:23:20.146028000 +0100
+++ new/sphinx-click-4.3.0/PKG-INFO 2022-07-04 13:00:34.414166000 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 2.1
Name: sphinx-click
-Version: 3.1.0
+Version: 4.3.0
Summary: Sphinx extension that automatically documents click applications
-Home-page: https://github.com/stephenfin/sphinx-click
+Home-page: https://github.com/click-contrib/sphinx-click
Author: Stephen Finucane
Author-email: [email protected]
License: MIT License
@@ -10,7 +10,6 @@
Project-URL: Documentation, https://sphinx-click.readthedocs.io/en/latest
Project-URL: Source Code, https://github.com/click-contrib/sphinx-click
Keywords: sphinx
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
@@ -20,7 +19,7 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.6
+Requires-Python: >=3.7
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: LICENSE
@@ -51,12 +50,12 @@
$ pip install sphinx-click
-Alternatively, install from source by cloning this repo then running
-`setup.py`:
+Alternatively, install from source by cloning this repo then running `pip`
+locally:
.. code-block:: shell
- $ python setup.py install
+ $ pip install .
Usage
-----
@@ -84,5 +83,3 @@
Detailed information on the various options available is provided in the
`documentation <https://sphinx-click.readthedocs.io>`_.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/README.rst
new/sphinx-click-4.3.0/README.rst
--- old/sphinx-click-3.1.0/README.rst 2022-02-02 13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/README.rst 2022-07-04 13:00:24.000000000 +0200
@@ -25,12 +25,12 @@
$ pip install sphinx-click
-Alternatively, install from source by cloning this repo then running
-`setup.py`:
+Alternatively, install from source by cloning this repo then running `pip`
+locally:
.. code-block:: shell
- $ python setup.py install
+ $ pip install .
Usage
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/docs/conf.py
new/sphinx-click-4.3.0/docs/conf.py
--- old/sphinx-click-3.1.0/docs/conf.py 2022-02-02 13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/docs/conf.py 2022-07-04 13:00:24.000000000 +0200
@@ -2,20 +2,22 @@
#
# sphinx-click documentation build configuration file
-# import os
-# import sys
-# sys.path.insert(0, os.path.abspath('.'))
+import os
+import sys
+
+sys.path.insert(0, os.path.abspath('..'))
+sys.path.insert(0, os.path.abspath('../examples'))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
-needs_sphinx = '1.5'
+needs_sphinx = '2.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
-extensions = ["sphinx_click"]
+extensions = ['sphinx_click']
# Add any paths that contain templates here, relative to this directory.
templates_path = []
@@ -30,25 +32,18 @@
master_doc = 'index'
# General information about the project.
-project = u'sphinx-click'
-copyright = u'2017, Stephen Finucane'
-author = u'Stephen Finucane'
+project = 'sphinx-click'
+copyright = '2017-, Stephen Finucane'
+author = 'Stephen Finucane'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = u''
+version = ''
# The full version, including alpha/beta/rc tags.
-release = u''
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#
-# This is also used if you do content translation via gettext catalogs.
-# Usually you set "language" from the command line for these cases.
-language = None
+release = ''
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
@@ -69,17 +64,6 @@
#
html_theme = 'alabaster'
-# Theme options are theme-specific and customize the look and feel of a theme
-# further. For a list of options available for each theme, see the
-# documentation.
-#
-# html_theme_options = {}
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = []
-
# -- Options for manual page output ---------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/docs/index.rst
new/sphinx-click-4.3.0/docs/index.rst
--- old/sphinx-click-3.1.0/docs/index.rst 2022-02-02 13:23:10.000000000
+0100
+++ new/sphinx-click-4.3.0/docs/index.rst 2022-07-04 13:00:24.000000000
+0200
@@ -1,9 +1,9 @@
sphinx-click
============
-:mod:`sphinx-click <sphinx_click>` is a `Sphinx`__ plugin that allows you to
-automatically extract documentation from a `click-based`__ application and
-include it in your docs.
+``sphinx-click`` is a `Sphinx`__ plugin that allows you to automatically
+extract documentation from a `click-based`__ application and include it in
+your docs.
__ http://www.sphinx-doc.org/
__ http://click.pocoo.org/
@@ -19,9 +19,9 @@
.. seealso::
- Module :mod:`click`
- This extension assumes you are using :mod:`click` to create your command
+ Module ``click``
+ This extension assumes you are using ``click`` to create your command
line application.
- Module :mod:`sphinxcontrib.autoprogram`
- An equivalent library for use with :mod:`argparse`.
+ Module ``sphinxcontrib.autoprogram``
+ An equivalent library for use with ``argparse``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/docs/installation.rst
new/sphinx-click-4.3.0/docs/installation.rst
--- old/sphinx-click-3.1.0/docs/installation.rst 2022-02-02
13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/docs/installation.rst 2022-07-04
13:00:24.000000000 +0200
@@ -7,14 +7,20 @@
$ pip install sphinx-click
-Alternatively, install from source by cloning this repo then running
-`setup.py`:
+Alternatively, install from source by cloning this repo then running `pip`
+locally:
.. code-block:: shell
- $ python setup.py install
+ $ pip install .
+
+*sphinx-click* supports both `click`__ and `asyncclick`__. If *asyncclick* is
+found, it will be preferred.
.. important::
Both the package you're referencing and any dependencies **must be
installed**.
+
+.. __: https://pypi.org/project/click/
+.. __: https://pypi.org/project/asyncclick/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/docs/usage.rst
new/sphinx-click-4.3.0/docs/usage.rst
--- old/sphinx-click-3.1.0/docs/usage.rst 2022-02-02 13:23:10.000000000
+0100
+++ new/sphinx-click-4.3.0/docs/usage.rst 2022-07-04 13:00:24.000000000
+0200
@@ -245,9 +245,9 @@
.. _CommandCollection:
https://click.palletsprojects.com/en/7.x/api/#click.CommandCollection
.. |program directive| replace:: ``program``
.. _program directive:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#directive-program
-.. |option directive| replace:: ``program``
+.. |option directive| replace:: ``option``
.. _option directive:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#directive-option
-.. |envvar directive| replace:: ``program``
+.. |envvar directive| replace:: ``envvar``
.. _envvar directive:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#directive-envvar
.. |option role| replace:: ``:option:``
.. _option role:
https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-option
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/sphinx-click-3.1.0/releasenotes/notes/add-auto_envvar_prefix-support-a08e68aba792ee26.yaml
new/sphinx-click-4.3.0/releasenotes/notes/add-auto_envvar_prefix-support-a08e68aba792ee26.yaml
---
old/sphinx-click-3.1.0/releasenotes/notes/add-auto_envvar_prefix-support-a08e68aba792ee26.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/sphinx-click-4.3.0/releasenotes/notes/add-auto_envvar_prefix-support-a08e68aba792ee26.yaml
2022-07-04 13:00:24.000000000 +0200
@@ -0,0 +1,8 @@
+---
+features:
+ - |
+ The ``auto_envvar_prefix`` parameter, which enables automatic environment
+ variables for all parameters in a click application, is now supported. For
+ more information on this feature, refer to the `click documentation`__.
+
+ .. __:
https://click.palletsprojects.com/en/8.1.x/options/#values-from-environment-variables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/setup.cfg
new/sphinx-click-4.3.0/setup.cfg
--- old/sphinx-click-3.1.0/setup.cfg 2022-02-02 13:23:20.146028000 +0100
+++ new/sphinx-click-4.3.0/setup.cfg 2022-07-04 13:00:34.418166000 +0200
@@ -5,7 +5,7 @@
description_content_type = text/x-rst; charset=UTF-8
author = Stephen Finucane
author_email = [email protected]
-url = https://github.com/stephenfin/sphinx-click
+url = https://github.com/click-contrib/sphinx-click
project_urls =
Bug Tracker = https://github.com/click-contrib/sphinx-click/issues
Documentation = https://sphinx-click.readthedocs.io/en/latest
@@ -21,7 +21,7 @@
Programming Language :: Python
Programming Language :: Python :: 3
Programming Language :: Python :: 3 :: Only
-python_requires = >=3.6
+python_requires = >=3.7
keywords = sphinx
[files]
@@ -32,6 +32,19 @@
max-line-length = 88
ignore = E203,E501,E741,W503
+[mypy]
+disallow_untyped_defs = true
+disallow_incomplete_defs = true
+no_implicit_optional = true
+show_column_numbers = true
+show_error_context = true
+ignore_missing_imports = true
+follow_imports = skip
+check_untyped_defs = true
+warn_unused_ignores = true
+warn_return_any = true
+strict_optional = false
+
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/sphinx_click/ext.py
new/sphinx-click-4.3.0/sphinx_click/ext.py
--- old/sphinx-click-3.1.0/sphinx_click/ext.py 2022-02-02 13:23:10.000000000
+0100
+++ new/sphinx-click-4.3.0/sphinx_click/ext.py 2022-07-04 13:00:24.000000000
+0200
@@ -1,12 +1,18 @@
+import inspect
import re
import traceback
+import typing as ty
import warnings
-import click
+try:
+ import asyncclick as click
+except ImportError:
+ import click
from docutils import nodes
from docutils.parsers import rst
from docutils.parsers.rst import directives
from docutils import statemachine
+from sphinx import application
from sphinx.util import logging
from sphinx.util import nodes as sphinx_nodes
@@ -19,25 +25,25 @@
ANSI_ESC_SEQ_RE = re.compile(r'\x1B\[\d+(;\d+){0,2}m', flags=re.MULTILINE)
-def _indent(text, level=1):
+def _indent(text: str, level: int = 1) -> str:
prefix = ' ' * (4 * level)
- def prefixed_lines():
+ def prefixed_lines() -> ty.Generator[str, None, None]:
for line in text.splitlines(True):
yield (prefix + line if line.strip() else line)
return ''.join(prefixed_lines())
-def _get_usage(ctx):
+def _get_usage(ctx: click.Context) -> str:
"""Alternative, non-prefixed version of 'get_usage'."""
formatter = ctx.make_formatter()
pieces = ctx.command.collect_usage_pieces(ctx)
formatter.write_usage(ctx.command_path, ' '.join(pieces), prefix='')
- return formatter.getvalue().rstrip('\n')
+ return formatter.getvalue().rstrip('\n') # type: ignore
-def _get_help_record(opt):
+def _get_help_record(opt: click.Option) -> ty.Tuple[str, str]:
"""Re-implementation of click.Opt.get_help_record.
The variant of 'get_help_record' found in Click makes uses of slashes to
@@ -48,14 +54,14 @@
[1] http://www.sphinx-doc.org/en/stable/domains.html#directive-option
"""
- def _write_opts(opts):
+ def _write_opts(opts: ty.List[str]) -> str:
rv, _ = click.formatting.join_options(opts)
if not opt.is_flag and not opt.count:
name = opt.name
if opt.metavar:
name = opt.metavar.lstrip('<[{($').rstrip('>]})$')
rv += ' <{}>'.format(name)
- return rv
+ return rv # type: ignore
rv = [_write_opts(opt.opts)]
if opt.secondary_opts:
@@ -100,8 +106,8 @@
return ', '.join(rv), '\n'.join(out)
-def _format_help(help_string):
- help_string = ANSI_ESC_SEQ_RE.sub('', help_string)
+def _format_help(help_string: str) -> ty.Generator[str, None, None]:
+ help_string = inspect.cleandoc(ANSI_ESC_SEQ_RE.sub('', help_string))
bar_enabled = False
for line in statemachine.string2lines(
@@ -117,7 +123,7 @@
yield ''
-def _format_description(ctx):
+def _format_description(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format the description for a given `click.Command`.
We parse this as reStructuredText, allowing users to embed rich
@@ -128,7 +134,7 @@
yield from _format_help(help_string)
-def _format_usage(ctx):
+def _format_usage(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format the usage for a `click.Command`."""
yield '.. code-block:: shell'
yield ''
@@ -137,20 +143,27 @@
yield ''
-def _format_option(opt):
+def _format_option(opt: click.Option) -> ty.Generator[str, None, None]:
"""Format the output for a `click.Option`."""
- opt = _get_help_record(opt)
+ opt_help = _get_help_record(opt)
- yield '.. option:: {}'.format(opt[0])
- if opt[1]:
+ yield '.. option:: {}'.format(opt_help[0])
+ if opt_help[1]:
yield ''
+ bar_enabled = False
for line in statemachine.string2lines(
- ANSI_ESC_SEQ_RE.sub('', opt[1]), tab_width=4,
convert_whitespace=True
+ ANSI_ESC_SEQ_RE.sub('', opt_help[1]), tab_width=4,
convert_whitespace=True
):
+ if line == '\b':
+ bar_enabled = True
+ continue
+ if line == '':
+ bar_enabled = False
+ line = '| ' + line if bar_enabled else line
yield _indent(line)
-def _format_options(ctx):
+def _format_options(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format all `click.Option` for a `click.Command`."""
# the hidden attribute is part of click 7.x only hence use of getattr
params = [
@@ -165,7 +178,7 @@
yield ''
-def _format_argument(arg):
+def _format_argument(arg: click.Argument) -> ty.Generator[str, None, None]:
"""Format the output of a `click.Argument`."""
yield '.. option:: {}'.format(arg.human_readable_name)
yield ''
@@ -176,7 +189,7 @@
)
-def _format_arguments(ctx):
+def _format_arguments(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format all `click.Argument` for a `click.Command`."""
params = [x for x in ctx.command.params if isinstance(x, click.Argument)]
@@ -186,7 +199,9 @@
yield ''
-def _format_envvar(param):
+def _format_envvar(
+ param: ty.Union[click.Option, click.Argument]
+) -> ty.Generator[str, None, None]:
"""Format the envvars of a `click.Option` or `click.Argument`."""
yield '.. envvar:: {}'.format(param.envvar)
yield ' :noindex:'
@@ -201,9 +216,18 @@
yield _indent('Provide a default for :option:`{}`'.format(param_ref))
-def _format_envvars(ctx):
+def _format_envvars(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format all envvars for a `click.Command`."""
- params = [x for x in ctx.command.params if getattr(x, 'envvar')]
+
+ auto_envvar_prefix = ctx.auto_envvar_prefix
+ if auto_envvar_prefix is not None:
+ params = []
+ for param in ctx.command.params:
+ if not param.envvar:
+ param.envvar = f"{auto_envvar_prefix}_{param.name.upper()}"
+ params.append(param)
+ else:
+ params = [x for x in ctx.command.params if x.envvar]
for param in params:
yield '.. _{command_name}-{param_name}-{envvar}:'.format(
@@ -217,7 +241,7 @@
yield ''
-def _format_subcommand(command):
+def _format_subcommand(command: click.Command) -> ty.Generator[str, None,
None]:
"""Format a sub-command of a `click.Command` or `click.Group`."""
yield '.. object:: {}'.format(command.name)
@@ -231,7 +255,7 @@
yield _indent(line)
-def _format_epilog(ctx):
+def _format_epilog(ctx: click.Context) -> ty.Generator[str, None, None]:
"""Format the epilog for a given `click.Command`.
We parse this as reStructuredText, allowing users to embed rich
@@ -241,31 +265,37 @@
yield from _format_help(ctx.command.epilog)
-def _get_lazyload_commands(multicommand):
+def _get_lazyload_commands(ctx: click.Context) -> ty.Dict[str, click.Command]:
commands = {}
- for command in multicommand.list_commands(multicommand):
- commands[command] = multicommand.get_command(multicommand, command)
+ for command in ctx.command.list_commands(ctx):
+ commands[command] = ctx.command.get_command(ctx, command)
return commands
-def _filter_commands(ctx, commands=None):
+def _filter_commands(
+ ctx: click.Context,
+ commands: ty.Optional[ty.List[str]] = None,
+) -> ty.List[click.Command]:
"""Return list of used commands."""
lookup = getattr(ctx.command, 'commands', {})
if not lookup and isinstance(ctx.command, click.MultiCommand):
- lookup = _get_lazyload_commands(ctx.command)
+ lookup = _get_lazyload_commands(ctx)
if commands is None:
return sorted(lookup.values(), key=lambda item: item.name)
- names = [name.strip() for name in commands.split(',')]
- return [lookup[name] for name in names if name in lookup]
+ return [lookup[command] for command in commands if command in lookup]
-def _format_command(ctx, nested, commands=None):
+def _format_command(
+ ctx: click.Context,
+ nested: str,
+ commands: ty.Optional[ty.List[str]] = None,
+) -> ty.Generator[str, None, None]:
"""Format the output of `click.Command`."""
if ctx.command.hidden:
- return
+ return None
# description
@@ -320,26 +350,24 @@
if nested in (NESTED_FULL, NESTED_NONE):
return
- commands = _filter_commands(ctx, commands)
+ command_objs = _filter_commands(ctx, commands)
- if commands:
+ if command_objs:
yield '.. rubric:: Commands'
yield ''
- for command in commands:
+ for command_obj in command_objs:
# Don't show hidden subcommands
- if command.hidden:
+ if command_obj.hidden:
continue
- for line in _format_subcommand(command):
+ for line in _format_subcommand(command_obj):
yield line
yield ''
-def nested(argument):
- values = (NESTED_FULL, NESTED_SHORT, NESTED_NONE)
- if not argument:
- return None
+def nested(argument: ty.Optional[str]) -> ty.Optional[str]:
+ values = (NESTED_FULL, NESTED_SHORT, NESTED_NONE, None)
if argument not in values:
raise ValueError(
@@ -361,11 +389,8 @@
'show-nested': directives.flag,
}
- def _load_module(self, module_path):
+ def _load_module(self, module_path: str) -> ty.Union[click.Command,
click.Group]:
"""Load the module."""
- # __import__ will fail on unicode,
- # so we ensure module path is a string here.
- module_path = str(module_path)
try:
module_name, attr_name = module_path.split(':', 1)
@@ -394,16 +419,22 @@
parser = getattr(mod, attr_name)
- if not isinstance(parser, click.BaseCommand):
+ if not isinstance(parser, (click.Command, click.Group)):
raise self.error(
- '"{}" of type "{}" is not derived from '
+ '"{}" of type "{}" is not click.Command or click.Group.'
'"click.BaseCommand"'.format(type(parser), module_path)
)
return parser
def _generate_nodes(
- self, name, command, parent, nested, commands=None,
semantic_group=False
- ):
+ self,
+ name: str,
+ command: click.Command,
+ parent: ty.Optional[click.Context],
+ nested: str,
+ commands: ty.Optional[ty.List[str]] = None,
+ semantic_group: bool = False,
+ ) -> ty.List[nodes.section]:
"""Generate the relevant Sphinx nodes.
Format a `click.Group` or `click.Command`.
@@ -415,7 +446,7 @@
:param commands: Display only listed commands or skip the section if
empty
:param semantic_group: Display command as title and description for
- CommandCollection.
+ `click.CommandCollection`.
:returns: A list of nested docutil nodes
"""
ctx = click.Context(command, info_name=name, parent=parent)
@@ -473,7 +504,7 @@
return [section]
- def run(self):
+ def run(self) -> ty.Iterable[nodes.section]:
self.env = self.state.document.settings.env
command = self._load_module(self.arguments[0])
@@ -497,12 +528,16 @@
)
nested = NESTED_FULL if show_nested else NESTED_SHORT
- commands = self.options.get('commands')
+ commands = None
+ if self.options.get('commands'):
+ commands = [
+ command.strip() for command in
self.options.get('commands').split(',')
+ ]
return self._generate_nodes(prog_name, command, None, nested, commands)
-def setup(app):
+def setup(app: application.Sphinx) -> ty.Dict[str, ty.Any]:
app.add_directive('click', ClickDirective)
return {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/sphinx_click.egg-info/PKG-INFO
new/sphinx-click-4.3.0/sphinx_click.egg-info/PKG-INFO
--- old/sphinx-click-3.1.0/sphinx_click.egg-info/PKG-INFO 2022-02-02
13:23:20.000000000 +0100
+++ new/sphinx-click-4.3.0/sphinx_click.egg-info/PKG-INFO 2022-07-04
13:00:34.000000000 +0200
@@ -1,8 +1,8 @@
Metadata-Version: 2.1
Name: sphinx-click
-Version: 3.1.0
+Version: 4.3.0
Summary: Sphinx extension that automatically documents click applications
-Home-page: https://github.com/stephenfin/sphinx-click
+Home-page: https://github.com/click-contrib/sphinx-click
Author: Stephen Finucane
Author-email: [email protected]
License: MIT License
@@ -10,7 +10,6 @@
Project-URL: Documentation, https://sphinx-click.readthedocs.io/en/latest
Project-URL: Source Code, https://github.com/click-contrib/sphinx-click
Keywords: sphinx
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
@@ -20,7 +19,7 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
-Requires-Python: >=3.6
+Requires-Python: >=3.7
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: LICENSE
@@ -51,12 +50,12 @@
$ pip install sphinx-click
-Alternatively, install from source by cloning this repo then running
-`setup.py`:
+Alternatively, install from source by cloning this repo then running `pip`
+locally:
.. code-block:: shell
- $ python setup.py install
+ $ pip install .
Usage
-----
@@ -84,5 +83,3 @@
Detailed information on the various options available is provided in the
`documentation <https://sphinx-click.readthedocs.io>`_.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/sphinx_click.egg-info/SOURCES.txt
new/sphinx-click-4.3.0/sphinx_click.egg-info/SOURCES.txt
--- old/sphinx-click-3.1.0/sphinx_click.egg-info/SOURCES.txt 2022-02-02
13:23:20.000000000 +0100
+++ new/sphinx-click-4.3.0/sphinx_click.egg-info/SOURCES.txt 2022-07-04
13:00:34.000000000 +0200
@@ -8,7 +8,6 @@
requirements.txt
setup.cfg
setup.py
-test-requirements.txt
tox.ini
.github/workflows/ci.yaml
docs/changelog.rst
@@ -22,12 +21,14 @@
examples/setup.py
examples/commandcollections/__init__.py
examples/commandcollections/cli.py
+releasenotes/notes/add-auto_envvar_prefix-support-a08e68aba792ee26.yaml
sphinx_click/__init__.py
sphinx_click/ext.py
sphinx_click.egg-info/PKG-INFO
sphinx_click.egg-info/SOURCES.txt
sphinx_click.egg-info/dependency_links.txt
sphinx_click.egg-info/not-zip-safe
+sphinx_click.egg-info/pbr.json
sphinx_click.egg-info/requires.txt
sphinx_click.egg-info/top_level.txt
tests/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/sphinx_click.egg-info/pbr.json
new/sphinx-click-4.3.0/sphinx_click.egg-info/pbr.json
--- old/sphinx-click-3.1.0/sphinx_click.egg-info/pbr.json 1970-01-01
01:00:00.000000000 +0100
+++ new/sphinx-click-4.3.0/sphinx_click.egg-info/pbr.json 2022-07-04
13:00:34.000000000 +0200
@@ -0,0 +1 @@
+{"git_version": "3ff77a7", "is_release": false}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/test-requirements.txt
new/sphinx-click-4.3.0/test-requirements.txt
--- old/sphinx-click-3.1.0/test-requirements.txt 2022-02-02
13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/test-requirements.txt 1970-01-01
01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-click>=5.0,<8.0
-coverage>4.3,<5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/tests/test_formatter.py
new/sphinx-click-4.3.0/tests/test_formatter.py
--- old/sphinx-click-3.1.0/tests/test_formatter.py 2022-02-02
13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/tests/test_formatter.py 2022-07-04
13:00:24.000000000 +0200
@@ -4,6 +4,8 @@
import click
from sphinx_click import ext
+CLICK_VERSION = tuple(int(x) for x in click.__version__.split('.')[0:2])
+
class CommandTestCase(unittest.TestCase):
"""Validate basic ``click.Command`` instances."""
@@ -60,6 +62,11 @@
help='A sample option with numeric choices',
type=click.Choice([1, 2, 3]),
)
+ @click.option(
+ '--flag',
+ is_flag=True,
+ help='A boolean flag',
+ )
@click.argument('ARG', envvar='ARG')
def foobar(bar):
"""A sample command."""
@@ -100,6 +107,10 @@
:options: 1 | 2 | 3
+ .. option:: --flag
+
+ A boolean flag
+
.. rubric:: Arguments
.. option:: ARG
@@ -345,8 +356,60 @@
'\n'.join(output),
)
- def test_no_line_wrapping_epilog(self):
- r"""Validate behavior of the \b character in an epilog."""
+ @unittest.skipIf(
+ CLICK_VERSION < (8, 1), 'Click < 8.1.0 stores the modified help string'
+ )
+ def test_no_truncation(self):
+ r"""Validate behavior when a \f character is present.
+
+
https://click.palletsprojects.com/en/8.1.x/documentation/#truncating-help-texts
+ """
+
+ @click.command()
+ def cli():
+ """First paragraph.
+
+ This is a very long second
+ paragraph and not correctly
+ wrapped but it will be rewrapped.
+ \f
+
+ :param click.core.Context ctx: Click context.
+ """
+ pass
+
+ ctx = click.Context(cli, info_name='cli')
+ output = list(ext._format_command(ctx, nested='short'))
+
+ # note that we have an extra newline because we're using
+ # docutils.statemachine.string2lines under the hood, which is
+ # converting the form feed to a newline
+ self.assertEqual(
+ textwrap.dedent(
+ """
+ First paragraph.
+
+ This is a very long second
+ paragraph and not correctly
+ wrapped but it will be rewrapped.
+
+
+ :param click.core.Context ctx: Click context.
+
+ .. program:: cli
+ .. code-block:: shell
+
+ cli [OPTIONS]
+ """
+ ).lstrip(),
+ '\n'.join(output),
+ )
+
+ def test_no_line_wrapping(self):
+ r"""Validate behavior when a \b character is present.
+
+
https://click.palletsprojects.com/en/8.1.x/documentation/#preventing-rewrapping
+ """
@click.command(
epilog="""
@@ -361,22 +424,64 @@
that will be rewrapped again.
"""
)
- def foobar():
- """A sample command."""
+ @click.option(
+ '--param',
+ help="""An option containing pre-wrapped text.
- ctx = click.Context(foobar, info_name='foobar')
+ \b
+ This is
+ a paragraph
+ without rewrapping.
+
+ And this is a paragraph
+ that will be rewrapped again.
+ """,
+ )
+ def cli():
+ """A command containing pre-wrapped text.
+
+ \b
+ This is
+ a paragraph
+ without rewrapping.
+
+ And this is a paragraph
+ that will be rewrapped again.
+ """
+ pass
+
+ ctx = click.Context(cli, info_name='cli')
output = list(ext._format_command(ctx, nested='short'))
self.assertEqual(
textwrap.dedent(
"""
- A sample command.
+ A command containing pre-wrapped text.
- .. program:: foobar
+ | This is
+ | a paragraph
+ | without rewrapping.
+
+ And this is a paragraph
+ that will be rewrapped again.
+
+ .. program:: cli
.. code-block:: shell
- foobar [OPTIONS]
+ cli [OPTIONS]
+ .. rubric:: Options
+
+ .. option:: --param <param>
+
+ An option containing pre-wrapped text.
+
+ | This is
+ | a paragraph
+ | without rewrapping.
+
+ And this is a paragraph
+ that will be rewrapped again.
An epilog containing pre-wrapped text.
@@ -483,50 +588,6 @@
'\n'.join(output),
)
- def test_no_line_wrapping(self):
- r"""Validate behavior when a \b character is present.
-
-
https://click.palletsprojects.com/en/7.x/documentation/#preventing-rewrapping
- """
-
- @click.group()
- def cli():
- """A sample command group.
-
- \b
- This is
- a paragraph
- without rewrapping.
-
- And this is a paragraph
- that will be rewrapped again.
- """
- pass
-
- ctx = click.Context(cli, info_name='cli')
- output = list(ext._format_command(ctx, nested='short'))
-
- self.assertEqual(
- textwrap.dedent(
- """
- A sample command group.
-
- | This is
- | a paragraph
- | without rewrapping.
-
- And this is a paragraph
- that will be rewrapped again.
-
- .. program:: cli
- .. code-block:: shell
-
- cli [OPTIONS] COMMAND [ARGS]...
- """
- ).lstrip(),
- '\n'.join(output),
- )
-
class NestedCommandsTestCase(unittest.TestCase):
"""Validate ``click.Command`` instances inside ``click.Group``
instances."""
@@ -645,7 +706,7 @@
"""Validate an empty command group."""
ctx = self._get_ctx()
- output = list(ext._format_command(ctx, nested='short', commands=''))
+ output = list(ext._format_command(ctx, nested='short', commands=[]))
self.assertEqual(
textwrap.dedent(
@@ -665,7 +726,9 @@
"""Validate the order of commands."""
ctx = self._get_ctx()
- output = list(ext._format_command(ctx, nested='short',
commands='world, hello'))
+ output = list(
+ ext._format_command(ctx, nested='short', commands=['world',
'hello'])
+ )
self.assertEqual(
textwrap.dedent(
@@ -876,4 +939,79 @@
"""
).lstrip(),
'\n'.join(output),
+ )
+
+
+class AutoEnvvarPrefixTestCase(unittest.TestCase):
+ """Validate ``click auto_envvar_prefix``-setup instances."""
+
+ def test_basics(self):
+ """Validate a click application with ``auto_envvar_prefix`` option
enabled."""
+
+ @click.command(
+ context_settings={"auto_envvar_prefix": "PREFIX"},
+ )
+ @click.option('--param', help='Help for param')
+ @click.option('--other-param', help='Help for other-param')
+ @click.option(
+ '--param-with-explicit-envvar',
+ help='Help for param-with-explicit-envvar',
+ envvar="EXPLICIT_ENVVAR",
+ )
+ def cli_with_auto_envvars():
+ """A simple CLI with auto-env vars ."""
+
+ cli = cli_with_auto_envvars
+ ctx = click.Context(cli, info_name='cli', auto_envvar_prefix="PREFIX")
+ output = list(ext._format_command(ctx, nested='full'))
+
+ self.assertEqual(
+ textwrap.dedent(
+ """
+ A simple CLI with auto-env vars .
+
+ .. program:: cli
+ .. code-block:: shell
+
+ cli [OPTIONS]
+
+ .. rubric:: Options
+
+ .. option:: --param <param>
+
+ Help for param
+
+ .. option:: --other-param <other_param>
+
+ Help for other-param
+
+ .. option:: --param-with-explicit-envvar <param_with_explicit_envvar>
+
+ Help for param-with-explicit-envvar
+
+ .. rubric:: Environment variables
+
+ .. _cli-param-PREFIX_PARAM:
+
+ .. envvar:: PREFIX_PARAM
+ :noindex:
+
+ Provide a default for :option:`--param`
+
+ .. _cli-other_param-PREFIX_OTHER_PARAM:
+
+ .. envvar:: PREFIX_OTHER_PARAM
+ :noindex:
+
+ Provide a default for :option:`--other-param`
+
+ .. _cli-param_with_explicit_envvar-EXPLICIT_ENVVAR:
+
+ .. envvar:: EXPLICIT_ENVVAR
+ :noindex:
+
+ Provide a default for :option:`--param-with-explicit-envvar`
+ """
+ ).lstrip(),
+ '\n'.join(output),
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sphinx-click-3.1.0/tox.ini
new/sphinx-click-4.3.0/tox.ini
--- old/sphinx-click-3.1.0/tox.ini 2022-02-02 13:23:10.000000000 +0100
+++ new/sphinx-click-4.3.0/tox.ini 2022-07-04 13:00:24.000000000 +0200
@@ -1,12 +1,13 @@
[tox]
minversion = 2.0
-envlist = py{36,37,38,39}-click{7,8},style,docs
+envlist = py{37,38,39}-click{7,8,8-async},py{310}-click{8,8-async},style,docs
[testenv]
deps =
- coverage>4.3,<5.0
+ coverage
click7: click>=7.0,<8.0
click8: click>=8.0,<9.0
+ click8-async: asyncclick>=8.0,<9.0
commands =
coverage run --source={toxinidir}/sphinx_click -m unittest {posargs}
coverage report
@@ -24,10 +25,16 @@
commands =
flake8 {toxinidir}/sphinx_click/
-[coverage:run]
-branch = True
+[testenv:mypy]
+deps =
+ mypy
+ types-docutils
+commands =
+ mypy sphinx_click
[testenv:docs]
commands =
- pip install -e {toxinidir}/examples/
- sphinx-build -W -b html -d docs/_build/doctrees docs docs/_build/html
+ sphinx-build -Wn -b html -d docs/_build/doctrees docs docs/_build/html
+
+[coverage:run]
+branch = True