Import Upstream version 1.0.1
This commit is contained in:
commit
23972d2dff
|
@ -0,0 +1,20 @@
|
|||
1.0.1
|
||||
-----
|
||||
|
||||
Released 2019-07-05
|
||||
|
||||
- Fix old-style class issue in Python 2. :pr:`1`
|
||||
- Account for a ".x" suffix on the project version. "1.1.x" will
|
||||
be seen as "1.1" for hiding old log entries. :pr:`5`
|
||||
- Fix error when log entries are at the very top of a page before any
|
||||
other content. :issue:`3`
|
||||
- Config is prefixed with ``log_cabinet_`` instead of ``changelog_``.
|
||||
The old names are deprecated. :pr:`7`
|
||||
|
||||
|
||||
1.0.0
|
||||
-----
|
||||
|
||||
Released 2017-05-05
|
||||
|
||||
- Initial release
|
|
@ -0,0 +1,28 @@
|
|||
Copyright 2017 David Lord
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1 @@
|
|||
include CHANGES.rst
|
|
@ -0,0 +1,48 @@
|
|||
Metadata-Version: 1.1
|
||||
Name: sphinxcontrib-log-cabinet
|
||||
Version: 1.0.1
|
||||
Summary: Organize changelog directives in Sphinx docs.
|
||||
Home-page: https://github.com/davidism/sphinxcontrib-log-cabinet
|
||||
Author: David Lord
|
||||
Author-email: davidism@gmail.com
|
||||
License: BSD-3-Clause
|
||||
Description: sphinxcontrib-log-cabinet
|
||||
=========================
|
||||
|
||||
Organize changelogs generated by ``versionadded``, ``versionchanged``,
|
||||
``deprecated`` directives. The log will be sorted by newest to oldest
|
||||
version. For HTML docs, older versions will be collapsed by default.
|
||||
|
||||
Install:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ pip install sphinxcontrib-log-cabinet
|
||||
|
||||
Enable:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
extensions = [
|
||||
...,
|
||||
"sphinxcontrib.log_cabinet",
|
||||
...,
|
||||
]
|
||||
|
||||
Configure:
|
||||
|
||||
``log_cabinet_collapse_all``
|
||||
|
||||
By default, current changes and deprecations are not collapsed. Set
|
||||
this to ``True`` to collapse all changes.
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Topic :: Documentation
|
||||
Classifier: Topic :: Documentation :: Sphinx
|
|
@ -0,0 +1,29 @@
|
|||
sphinxcontrib-log-cabinet
|
||||
=========================
|
||||
|
||||
Organize changelogs generated by ``versionadded``, ``versionchanged``,
|
||||
``deprecated`` directives. The log will be sorted by newest to oldest
|
||||
version. For HTML docs, older versions will be collapsed by default.
|
||||
|
||||
Install:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ pip install sphinxcontrib-log-cabinet
|
||||
|
||||
Enable:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
extensions = [
|
||||
...,
|
||||
"sphinxcontrib.log_cabinet",
|
||||
...,
|
||||
]
|
||||
|
||||
Configure:
|
||||
|
||||
``log_cabinet_collapse_all``
|
||||
|
||||
By default, current changes and deprecations are not collapsed. Set
|
||||
this to ``True`` to collapse all changes.
|
|
@ -0,0 +1,51 @@
|
|||
[metadata]
|
||||
name = sphinxcontrib-log-cabinet
|
||||
version = 1.0.1
|
||||
url = https://github.com/davidism/sphinxcontrib-log-cabinet
|
||||
license = BSD-3-Clause
|
||||
license_file = LICENSE.rst
|
||||
author = David Lord
|
||||
author_email = davidism@gmail.com
|
||||
description = Organize changelog directives in Sphinx docs.
|
||||
long_description = file: README.rst
|
||||
classifiers =
|
||||
Development Status :: 5 - Production/Stable
|
||||
Intended Audience :: Developers
|
||||
License :: OSI Approved :: BSD License
|
||||
Operating System :: OS Independent
|
||||
Programming Language :: Python
|
||||
Programming Language :: Python :: 2
|
||||
Programming Language :: Python :: 3
|
||||
Topic :: Documentation
|
||||
Topic :: Documentation :: Sphinx
|
||||
|
||||
[options]
|
||||
include_package_data = true
|
||||
packages = find:
|
||||
package_dir =
|
||||
= src
|
||||
namespace_packages =
|
||||
sphinxcontrib
|
||||
install_requires =
|
||||
Sphinx
|
||||
|
||||
[options.packages.find]
|
||||
where = src
|
||||
|
||||
[bdist_wheel]
|
||||
universal = true
|
||||
|
||||
[flake8]
|
||||
select = B, E, F, W, B9
|
||||
ignore =
|
||||
E203
|
||||
E402
|
||||
E501
|
||||
E722
|
||||
W503
|
||||
max-line-length = 80
|
||||
|
||||
[egg_info]
|
||||
tag_build =
|
||||
tag_date = 0
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
from setuptools import setup
|
||||
|
||||
setup()
|
|
@ -0,0 +1 @@
|
|||
__import__("pkg_resources").declare_namespace(__name__)
|
|
@ -0,0 +1,132 @@
|
|||
from itertools import groupby
|
||||
|
||||
from docutils import nodes
|
||||
from packaging.version import parse as parse_version
|
||||
from sphinx.addnodes import versionmodified
|
||||
from sphinx.util import logging
|
||||
|
||||
__version__ = "1.0.1"
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_config_value("log_cabinet_collapse_all", False, "html")
|
||||
app.connect("doctree-resolved", handle_doctree_resolved)
|
||||
app.add_node(
|
||||
CollapsedLog,
|
||||
html=(html_visit_CollapsedLog, html_depart_CollapsedLog),
|
||||
latex=(visit_nop, visit_nop),
|
||||
text=(visit_nop, visit_nop),
|
||||
man=(visit_nop, visit_nop),
|
||||
texinfo=(visit_nop, visit_nop),
|
||||
)
|
||||
app.add_config_value("changelog_collapse_all", None, "")
|
||||
app.connect("config-inited", check_deprecated_config)
|
||||
return {"version": __version__}
|
||||
|
||||
|
||||
def check_deprecated_config(app, config):
|
||||
if config.changelog_collapse_all is not None:
|
||||
logger.warning(
|
||||
"The 'changelog_collapse_all' config has been renamed to"
|
||||
" 'log_cabinet_collapse_all'. The old name will be removed"
|
||||
" in version 1.1.0."
|
||||
)
|
||||
|
||||
|
||||
def _parse_placeholder_version(value, placeholder="x"):
|
||||
"""Strip version suffix (1.1.x to 1.1) before parsing version.
|
||||
|
||||
:param value: Version string to parse.
|
||||
:param placeholder: Suffix to strip from the version string.
|
||||
"""
|
||||
if value.endswith(".{}".format(placeholder)):
|
||||
value = value[: -(len(placeholder) + 1)]
|
||||
|
||||
return parse_version(value)
|
||||
|
||||
|
||||
def handle_doctree_resolved(app, doctree, docname):
|
||||
visitor = ChangelogVisitor(doctree, app)
|
||||
doctree.walk(visitor)
|
||||
collapse_all = app.config.changelog_collapse_all
|
||||
version = _parse_placeholder_version(app.config.version)
|
||||
|
||||
for after, log in visitor.logs:
|
||||
if after is None:
|
||||
# log was the first element of a page
|
||||
after = log[0]
|
||||
index = 0
|
||||
else:
|
||||
# log came after other nodes on the page
|
||||
index = after.parent.index(after) + 1
|
||||
|
||||
del after.parent[index : index + len(log)]
|
||||
|
||||
if not collapse_all:
|
||||
visible = []
|
||||
hidden = []
|
||||
|
||||
for n in log:
|
||||
if parse_version(n["version"]) >= version or n["type"] == "deprecated":
|
||||
visible.append(n)
|
||||
else:
|
||||
hidden.append(n)
|
||||
|
||||
if visible:
|
||||
after.parent.insert(index, visible)
|
||||
index += len(visible)
|
||||
log = hidden
|
||||
|
||||
if log:
|
||||
collapsed = CollapsedLog()
|
||||
collapsed.extend(log)
|
||||
after.parent.insert(index, collapsed)
|
||||
|
||||
|
||||
class ChangelogVisitor(nodes.GenericNodeVisitor):
|
||||
def __init__(self, document, app):
|
||||
nodes.GenericNodeVisitor.__init__(self, document)
|
||||
self.logs = []
|
||||
|
||||
def default_visit(self, node):
|
||||
after = None
|
||||
|
||||
for key, group in groupby(
|
||||
node.children, key=lambda n: isinstance(n, versionmodified)
|
||||
):
|
||||
if not key:
|
||||
after = list(group)[-1]
|
||||
continue
|
||||
|
||||
self.logs.append(
|
||||
(
|
||||
after,
|
||||
sorted(
|
||||
group, key=lambda n: parse_version(n["version"]), reverse=True
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
def default_departure(self, node):
|
||||
pass
|
||||
|
||||
unknown_visit = default_visit
|
||||
unknown_departure = default_departure
|
||||
|
||||
|
||||
class CollapsedLog(nodes.General, nodes.Element):
|
||||
pass
|
||||
|
||||
|
||||
def html_visit_CollapsedLog(self, node):
|
||||
self.body.append(self.starttag(node, "details", CLASS="changelog"))
|
||||
self.body.append("<summary>Changelog</summary>")
|
||||
|
||||
|
||||
def html_depart_CollapsedLog(self, node):
|
||||
self.body.append("</details>")
|
||||
|
||||
|
||||
def visit_nop(self, node):
|
||||
pass
|
|
@ -0,0 +1,48 @@
|
|||
Metadata-Version: 1.1
|
||||
Name: sphinxcontrib-log-cabinet
|
||||
Version: 1.0.1
|
||||
Summary: Organize changelog directives in Sphinx docs.
|
||||
Home-page: https://github.com/davidism/sphinxcontrib-log-cabinet
|
||||
Author: David Lord
|
||||
Author-email: davidism@gmail.com
|
||||
License: BSD-3-Clause
|
||||
Description: sphinxcontrib-log-cabinet
|
||||
=========================
|
||||
|
||||
Organize changelogs generated by ``versionadded``, ``versionchanged``,
|
||||
``deprecated`` directives. The log will be sorted by newest to oldest
|
||||
version. For HTML docs, older versions will be collapsed by default.
|
||||
|
||||
Install:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ pip install sphinxcontrib-log-cabinet
|
||||
|
||||
Enable:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
extensions = [
|
||||
...,
|
||||
"sphinxcontrib.log_cabinet",
|
||||
...,
|
||||
]
|
||||
|
||||
Configure:
|
||||
|
||||
``log_cabinet_collapse_all``
|
||||
|
||||
By default, current changes and deprecations are not collapsed. Set
|
||||
this to ``True`` to collapse all changes.
|
||||
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Topic :: Documentation
|
||||
Classifier: Topic :: Documentation :: Sphinx
|
|
@ -0,0 +1,14 @@
|
|||
CHANGES.rst
|
||||
LICENSE.rst
|
||||
MANIFEST.in
|
||||
README.rst
|
||||
setup.cfg
|
||||
setup.py
|
||||
src/sphinxcontrib/__init__.py
|
||||
src/sphinxcontrib/log_cabinet.py
|
||||
src/sphinxcontrib_log_cabinet.egg-info/PKG-INFO
|
||||
src/sphinxcontrib_log_cabinet.egg-info/SOURCES.txt
|
||||
src/sphinxcontrib_log_cabinet.egg-info/dependency_links.txt
|
||||
src/sphinxcontrib_log_cabinet.egg-info/namespace_packages.txt
|
||||
src/sphinxcontrib_log_cabinet.egg-info/requires.txt
|
||||
src/sphinxcontrib_log_cabinet.egg-info/top_level.txt
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1 @@
|
|||
sphinxcontrib
|
|
@ -0,0 +1 @@
|
|||
Sphinx
|
|
@ -0,0 +1 @@
|
|||
sphinxcontrib
|
Loading…
Reference in New Issue