diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e4a49c6..f715e38 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,7 +5,13 @@ version: 2 updates: - - package-ecosystem: "github-actions" # See documentation for possible values - directory: ".github/workflows" # Location of package manifests + - package-ecosystem: "github-actions" + directory: "/" schedule: - interval: "weekly" + interval: "monthly" + groups: + actions: + patterns: + - "*" + labels: + - "no-changelog-entry-needed" diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..9d1e098 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,5 @@ +changelog: + exclude: + authors: + - dependabot + - pre-commit-ci diff --git a/.github/workflows/check_milestone.yml b/.github/workflows/check_milestone.yml new file mode 100644 index 0000000..e302ddc --- /dev/null +++ b/.github/workflows/check_milestone.yml @@ -0,0 +1,34 @@ +name: Check PR milestone + +on: + # So it cannot be skipped. + pull_request_target: + types: [opened, synchronize, milestoned, demilestoned] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + # https://stackoverflow.com/questions/69434370/how-can-i-get-the-latest-pr-data-specifically-milestones-when-running-yaml-jobs + milestone_checker: + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + if: github.repository == 'astropy/sphinx-automodapi' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const { data } = await github.request("GET /repos/{owner}/{repo}/pulls/{pr}", { + owner: context.repo.owner, + repo: context.repo.repo, + pr: context.payload.pull_request.number + }); + if (data.milestone) { + core.info(`This pull request has a milestone set: ${data.milestone.title}`); + } else { + core.setFailed(`A maintainer needs to set the milestone for this pull request.`); + } diff --git a/.github/workflows/ci_workflows.yml b/.github/workflows/ci_workflows.yml index 47100e6..fd4a238 100644 --- a/.github/workflows/ci_workflows.yml +++ b/.github/workflows/ci_workflows.yml @@ -47,15 +47,21 @@ jobs: toxenv: py311-test-sphinx72-cov-clocale - os: ubuntu-latest python-version: '3.12' - toxenv: py312-test-sphinxdev + toxenv: py312-test-sphinx80 + - os: ubuntu-latest + python-version: '3.12' + toxenv: py312-test-sphinx81 + - os: ubuntu-latest + python-version: '3.13' + toxenv: py313-test-sphinxdev # MacOS X - just the stable and dev - - os: macos-latest - python-version: '3.10' - toxenv: py310-test-sphinx72-clocale - os: macos-latest python-version: '3.11' - toxenv: py311-test-sphinxdev + toxenv: py311-test-sphinx81-clocale + - os: macos-latest + python-version: '3.13' + toxenv: py313-test-sphinxdev # Windows - just the oldest, stable, and dev - os: windows-latest @@ -63,19 +69,20 @@ jobs: toxenv: py38-test-sphinx_oldest - os: windows-latest python-version: '3.10' - toxenv: py310-test-sphinx72 + toxenv: py310-test-sphinx81 - os: windows-latest - python-version: '3.11' - toxenv: py311-test-sphinxdev + python-version: '3.13' + toxenv: py313-test-sphinxdev steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true - name: Install graphviz on Linux if: startsWith(matrix.os, 'ubuntu') run: | @@ -95,6 +102,6 @@ jobs: run: tox ${{ matrix.toxargs }} -v -e ${{ matrix.toxenv }} - name: Upload coverage to codecov if: ${{ contains(matrix.toxenv,'-cov') }} - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@18283e04ce6e62d37312384ff67231eb8fd56d24 # v5.4.3 with: file: ./coverage.xml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6d9d91f..aaf879d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,12 +13,12 @@ jobs: if: ((github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) || contains(github.event.pull_request.labels.*.name, 'Build wheels')) steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - - uses: actions/setup-python@v5 + - uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: - python-version: 3.8 + python-version: "3.12" - name: Install dependencies run: | @@ -40,12 +40,12 @@ jobs: cd .. python -m venv testenv testenv/bin/pip install pip -U - testenv/bin/pip install pytest cython sphinx-automodapi/dist/*.whl + testenv/bin/pip install $(ls sphinx-automodapi/dist/*.whl)[test] testenv/bin/pytest sphinx-automodapi/sphinx_automodapi/tests - name: Publish distribution 📦 to PyPI if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1 + uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4 with: user: __token__ password: ${{ secrets.pypi_password }} diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..9371398 --- /dev/null +++ b/.mailmap @@ -0,0 +1,12 @@ +Brigitta Sipőcz +Brigitta Sipőcz +David Pérez-Suárez +E. Madison Bray +E. Madison Bray +Kyle D Fawcett <45832007+kylefawcett@users.noreply.github.com> +Hans Moritz Günther +Marco Rossi +Matt Davis +P. L. Lim <2090236+pllim@users.noreply.github.com> +Simon Conseil +Stuart Mumford \ No newline at end of file diff --git a/.readthedocs.yml b/.readthedocs.yml index c85d6b6..5109e33 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -7,7 +7,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.11" + python: "3.12" jobs: post_checkout: - git fetch --shallow-since=2023-01-01 || true diff --git a/CHANGES.rst b/CHANGES.rst index da9365a..07c5d15 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,26 @@ Changes in sphinx-automodapi ============================ +0.20.0 (unreleased) +------------------- + +- No changes yet + +0.19.0 (2025-04-17) +------------------- + +- Add ``automodsumm_properties_are_attributes`` configuration to control if + class properties are treated with ``autoattribute`` or ``autoproperty``. + [#197] + +- Fixes compatibility with Sphinx 8.2. [#196] + +0.18.0 (2024-09-13) +------------------- + +- Fixed an issue where items defined in ``__all__`` but originally imported + from elsewhere, e.g. a private module, were not documented. [#190] + 0.17.0 (2024-02-22) ------------------- diff --git a/LICENSE.rst b/LICENSE.rst index 4f6e337..ecbe4fc 100644 --- a/LICENSE.rst +++ b/LICENSE.rst @@ -1,4 +1,4 @@ -Copyright (c) 2014-2016, Astropy Developers +Copyright (c) 2014-2025, Astropy Developers All rights reserved. diff --git a/MANIFEST.in b/MANIFEST.in index 6f1d2ae..1637fde 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,6 +3,7 @@ include CHANGES.rst include LICENSE.rst include setup.cfg +include pyproject.toml exclude *.pyc *.o prune build diff --git a/pyproject.toml b/pyproject.toml index e06fcb3..9765e29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [build-system] requires = ["setuptools>=30.3.0", - "setuptools_scm", + "setuptools_scm>=8.0.0", "wheel"] build-backend = 'setuptools.build_meta' [tool.setuptools_scm] -write_to = "sphinx_automodapi/version.py" +version_file = "sphinx_automodapi/version.py" diff --git a/setup.cfg b/setup.cfg index 5a915e6..6f619d9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,7 +8,7 @@ author_email = astropy.team@gmail.com license = BSD 3-Clause License url = https://github.com/astropy/sphinx-automodapi classifiers = - Development Status :: 3 - Alpha + Development Status :: 5 - Production/Stable Intended Audience :: Developers Programming Language :: Python Programming Language :: Python :: 3 @@ -20,6 +20,7 @@ zip_safe = False packages = find: python_requires = >=3.8 install_requires = + packaging sphinx>=4 [options.extras_require] @@ -30,8 +31,6 @@ test = coverage setuptools;python_version>='3.12' rtd = - # https://github.com/readthedocs/sphinx_rtd_theme/issues/1463 - sphinx<7 sphinx-rtd-theme [options.package_data] diff --git a/setup.py b/setup.py deleted file mode 100644 index beda28e..0000000 --- a/setup.py +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env python - -from setuptools import setup - -setup() diff --git a/sphinx_automodapi/autodoc_enhancements.py b/sphinx_automodapi/autodoc_enhancements.py index 7721043..8350638 100644 --- a/sphinx_automodapi/autodoc_enhancements.py +++ b/sphinx_automodapi/autodoc_enhancements.py @@ -1,6 +1,8 @@ """ Miscellaneous enhancements to help autodoc along. """ +import dataclasses + from sphinx.ext.autodoc import AttributeDocumenter __all__ = [] @@ -58,7 +60,14 @@ def type_object_attrgetter(obj, attr, *defargs): return base.__dict__[attr] break - return getattr(obj, attr, *defargs) + try: + return getattr(obj, attr, *defargs) + except AttributeError: + # for dataclasses, get the attribute from the __dataclass_fields__ + if dataclasses.is_dataclass(obj) and attr in obj.__dataclass_fields__: + return obj.__dataclass_fields__[attr].default + else: + raise def setup(app): diff --git a/sphinx_automodapi/automodapi.py b/sphinx_automodapi/automodapi.py index f216bf9..fdb49d5 100644 --- a/sphinx_automodapi/automodapi.py +++ b/sphinx_automodapi/automodapi.py @@ -67,6 +67,11 @@ Propagates the ``noindex`` flag to autodoc. Use it to avoid duplicate objects warnings. + * ``:sort:`` + If the module contains ``__all__``, sort the module's objects + alphabetically (if ``__all__`` is not present, the objects are found + using `dir`, which always gives a sorted list). + This extension also adds five sphinx configuration options: @@ -99,6 +104,11 @@ class are included in the generated documentation. Defaults to ``False``. methods like ``__getitem__`` and ``__setitem__``. Defaults to ``['__init__', '__call__']``. +* ``automodsumm_properties_are_attributes`` + Should be a bool and if ``True`` properties are treated as attributes in the + documentation meaning that no property specific documentation is generated. + Defaults to ``True``. + .. _automodule: http://sphinx-doc.org/latest/ext/autodoc.html?highlight=automodule#directive-automodule """ @@ -250,6 +260,7 @@ def automodapi_replace(sourcestr, app, dotoctree=True, docname=None, allowedpkgnms = [] allowothers = False noindex = False + sort = False # look for actual options unknownops = [] @@ -279,6 +290,8 @@ def automodapi_replace(sourcestr, app, dotoctree=True, docname=None, allowothers = True elif opname == 'noindex': noindex = True + elif opname == 'sort': + sort = True else: unknownops.append(opname) @@ -336,6 +349,8 @@ def automodapi_replace(sourcestr, app, dotoctree=True, docname=None, clsfuncoptions.append(toctreestr) if noindex: clsfuncoptions.append(':noindex:') + if sort: + clsfuncoptions.append(':sort:') if toskip: clsfuncoptions.append(':skip: ' + ','.join(toskip)) if allowedpkgnms: diff --git a/sphinx_automodapi/automodsumm.py b/sphinx_automodapi/automodsumm.py index 323c184..a98bd20 100644 --- a/sphinx_automodapi/automodsumm.py +++ b/sphinx_automodapi/automodsumm.py @@ -46,6 +46,12 @@ in the generated documentation. The flags ``:inherited-members:`` or ``:no-inherited-members:`` allows overrriding this global setting. + * ``:sort:`` + If the module contains ``__all__``, sort the module's objects + alphabetically (if ``__all__`` is not present, the objects are found + using `dir`, which always gives a sorted list). + + This extension also adds three sphinx configuration options: * ``automodsumm_writereprocessed`` @@ -68,6 +74,11 @@ class members that are inherited from a base class. This value can be methods like ``__getitem__`` and ``__setitem__``. Defaults to ``['__init__', '__call__']``. +* ``automodsumm_properties_are_attributes`` + Should be a bool and if ``True`` properties are treated as attributes in the + documentation meaning that no property specific documentation is generated. + Defaults to ``True``. + .. _sphinx.ext.autosummary: http://sphinx-doc.org/latest/ext/autosummary.html .. _autosummary: http://sphinx-doc.org/latest/ext/autosummary.html#directive-autosummary @@ -92,17 +103,21 @@ class members that are inherited from a base class. This value can be import inspect import os import re +import dataclasses +import sphinx +from docutils.parsers.rst.directives import flag +from packaging.version import Version from sphinx.util import logging from sphinx.ext.autosummary import Autosummary from sphinx.ext.inheritance_diagram import InheritanceDiagram, InheritanceGraph, try_import -from docutils.parsers.rst.directives import flag from .utils import find_mod_objs, cleanup_whitespace __all__ = ['Automoddiagram', 'Automodsumm', 'automodsumm_to_autosummary_lines', 'generate_automodsumm_docs', 'process_automodsumm_generation'] logger = logging.getLogger(__name__) +SPHINX_LT_8_2 = Version(sphinx.__version__) < Version("8.2.dev") def _str_list_converter(argument): @@ -130,6 +145,7 @@ class Automodsumm(Autosummary): option_spec['inherited-members'] = flag option_spec['no-inherited-members'] = flag option_spec['noindex'] = flag + option_spec['sort'] = flag def run(self): env = self.state.document.settings.env @@ -138,7 +154,7 @@ def run(self): nodelist = [] try: - localnames, fqns, objs = find_mod_objs(modname) + localnames, fqns, objs = find_mod_objs(modname, sort='sort' in self.options) except ImportError: logger.warning("Couldn't import module " + modname) return [] @@ -260,15 +276,24 @@ def run(self): old_generate_dot = InheritanceGraph.generate_dot - -def patched_generate_dot(self, name, urls={}, env=None, - graph_attrs={}, node_attrs={}, edge_attrs={}): - # Make a new mapping dictionary that uses class full names by importing each - # class documented name - fullname_urls = {self.class_name(try_import(name), 0, None): url - for name, url in urls.items() if try_import(name) is not None} - return old_generate_dot(self, name, urls=fullname_urls, env=env, - graph_attrs=graph_attrs, node_attrs=node_attrs, edge_attrs=edge_attrs) +if SPHINX_LT_8_2: + def patched_generate_dot(self, name, urls={}, env=None, + graph_attrs={}, node_attrs={}, edge_attrs={}): + # Make a new mapping dictionary that uses class full names by importing each + # class documented name + fullname_urls = {self.class_name(try_import(name), 0, None): url + for name, url in urls.items() if try_import(name) is not None} + return old_generate_dot(self, name, urls=fullname_urls, env=env, + graph_attrs=graph_attrs, node_attrs=node_attrs, edge_attrs=edge_attrs) +else: + def patched_generate_dot(self, name, urls={}, config=None, + graph_attrs={}, node_attrs={}, edge_attrs={}): + # Make a new mapping dictionary that uses class full names by importing each + # class documented name + fullname_urls = {self.class_name(try_import(name), 0, None): url + for name, url in urls.items() if try_import(name) is not None} + return old_generate_dot(self, name, urls=fullname_urls, config=config, + graph_attrs=graph_attrs, node_attrs=node_attrs, edge_attrs=edge_attrs) InheritanceGraph.generate_dot = patched_generate_dot @@ -302,7 +327,8 @@ def process_automodsumm_generation(app): lines, sfn, app=app, builder=app.builder, base_path=app.srcdir, inherited_members=app.config.automodsumm_inherited_members, - included_members=app.config.automodsumm_included_members) + included_members=app.config.automodsumm_included_members, + properties_are_attributes=app.config.automodsumm_properties_are_attributes) # _automodsummrex = re.compile(r'^(\s*)\.\. automodsumm::\s*([A-Za-z0-9_.]+)\s*' @@ -380,12 +406,12 @@ def automodsumm_to_autosummary_lines(fn, app): opssecs, remainders)): allindent = i1 + (' ' if i2 is None else i2) - # filter out functions-only, classes-only, and ariables-only + # filter out functions-only, classes-only, variables-only, and sort # options if present. oplines = ops.split('\n') toskip = [] allowedpkgnms = [] - funcsonly = clssonly = varsonly = False + funcsonly = clssonly = varsonly = sort = False for i, ln in reversed(list(enumerate(oplines))): if ':functions-only:' in ln: funcsonly = True @@ -402,6 +428,9 @@ def automodsumm_to_autosummary_lines(fn, app): if ':allowed-package-names:' in ln: allowedpkgnms.extend(_str_list_converter(ln.replace(':allowed-package-names:', ''))) del oplines[i] + if ':sort:' in ln: + sort = True + del oplines[i] if [funcsonly, clssonly, varsonly].count(True) > 1: msg = ('Defined more than one of functions-only, classes-only, ' 'and variables-only. Skipping this directive.') @@ -419,7 +448,7 @@ def automodsumm_to_autosummary_lines(fn, app): newlines.extend(oplines) ols = True if len(allowedpkgnms) == 0 else allowedpkgnms - for nm, fqn, obj in zip(*find_mod_objs(modnm, onlylocals=ols)): + for nm, fqn, obj in zip(*find_mod_objs(modnm, onlylocals=ols, sort=sort)): if nm in toskip: continue if funcsonly and not inspect.isroutine(obj): @@ -440,7 +469,8 @@ def generate_automodsumm_docs(lines, srcfn, app=None, suffix='.rst', base_path=None, builder=None, template_dir=None, inherited_members=False, - included_members=('__init__', '__call__')): + included_members=('__init__', '__call__'), + *, properties_are_attributes=True): """ This function is adapted from `sphinx.ext.autosummary.generate.generate_autosummmary_docs` to @@ -522,9 +552,7 @@ def generate_automodsumm_docs(lines, srcfn, app=None, suffix='.rst', new_files.append(fn) - f = open(fn, 'w', encoding='utf8') - - try: + with open(fn, 'w', encoding='utf8') as f: doc = get_documenter(app, obj, parent) @@ -568,17 +596,28 @@ def get_members_class(obj, typ, include_public=[], else: names = getattr(obj, '__dict__').keys() + # add dataclass_field names for dataclass classes + if dataclasses.is_dataclass(obj): + dataclass_fieldnames = getattr(obj, '__dataclass_fields__').keys() + names = list(set(list(names) + list(dataclass_fieldnames))) + for name in names: try: documenter = get_documenter(app, safe_getattr(obj, name), obj) except AttributeError: - continue + # for dataclasses try to get the attribute from the __dataclass_fields__ + if dataclasses.is_dataclass(obj): + try: + attr = obj.__dataclass_fields__[name] + documenter = get_documenter(app, attr, obj) + except KeyError: + continue if typ is None or documenter.objtype == typ: items.append(name) - elif typ == 'attribute' and documenter.objtype == 'property': - # In Sphinx 2.0 and above, properties have a separate - # objtype, but we treat them the same here. - items.append(name) + # elif typ == 'attribute' and documenter.objtype == 'property': + # # In Sphinx 2.0 and above, properties have a separate + # # objtype, but we treat them the same here. + # items.append(name) public = [x for x in items if x in include_public or not x.startswith('_')] return public, items @@ -609,6 +648,15 @@ def get_members_class(obj, typ, include_public=[], ns['attributes'], ns['all_attributes'] = \ get_members_class(obj, 'attribute', include_base=include_base) + public_properties, all_properties = \ + get_members_class(obj, 'property', + include_base=include_base) + if properties_are_attributes: + ns['attributes'].extend(public_properties) + ns['all_attributes'].extend(all_properties) + else: + ns['properties'] = public_properties + ns['all_properties'] = all_properties ns['methods'].sort() ns['attributes'].sort() @@ -662,8 +710,6 @@ def get_members_class(obj, typ, include_public=[], rendered = template.render(**ns) f.write(cleanup_whitespace(rendered)) - finally: - f.close() def setup(app): @@ -685,6 +731,7 @@ def setup(app): app.add_config_value('automodsumm_inherited_members', False, 'env') app.add_config_value( 'automodsumm_included_members', ['__init__', '__call__'], 'env') + app.add_config_value('automodsumm_properties_are_attributes', True, 'env') return {'parallel_read_safe': True, 'parallel_write_safe': True} diff --git a/sphinx_automodapi/templates/autosummary_core/class.rst b/sphinx_automodapi/templates/autosummary_core/class.rst index 198d04b..0c0c57f 100644 --- a/sphinx_automodapi/templates/autosummary_core/class.rst +++ b/sphinx_automodapi/templates/autosummary_core/class.rst @@ -18,7 +18,7 @@ {% endif %} {% block attributes_summary %} - {% if attributes %} + {% if attributes or properties %} .. rubric:: Attributes Summary @@ -27,6 +27,10 @@ ~{{ name }}.{{ item }} {%- endfor %} + {% for item in properties %} + ~{{ name }}.{{ item }} + {%- endfor %} + {% endif %} {% endblock %} @@ -44,7 +48,7 @@ {% endblock %} {% block attributes_documentation %} - {% if attributes %} + {% if attributes or properties%} .. rubric:: Attributes Documentation @@ -52,6 +56,10 @@ .. autoattribute:: {{ item }} {%- endfor %} + {% for item in properties %} + .. autoproperty:: {{ item }} + {%- endfor %} + {% endif %} {% endblock %} diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst similarity index 100% rename from sphinx_automodapi/tests/cases/abstract_classes/output/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst rename to sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/abstract_classes/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/abstract_classes/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst new file mode 100644 index 0000000..d9ec7cf --- /dev/null +++ b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.abstract_classes.SequenceSubclass.rst @@ -0,0 +1,27 @@ +SequenceSubclass +================ + +.. currentmodule:: sphinx_automodapi.tests.example_module.abstract_classes + +.. autoclass:: SequenceSubclass + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~SequenceSubclass.my_property + + .. rubric:: Methods Summary + + .. autosummary:: + + ~SequenceSubclass.my_method + + .. rubric:: Attributes Documentation + + .. autoproperty:: my_property + + .. rubric:: Methods Documentation + + .. automethod:: my_method diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..4bdc13b --- /dev/null +++ b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module.abstract_classes Module +-------------------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.abstract_classes + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.abstract_classes + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.abstract_classes + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..b280f1d --- /dev/null +++ b/sphinx_automodapi/tests/cases/abstract_classes/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,6 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.abstract_classes + +.. autosummary:: + :toctree: api + + SequenceSubclass diff --git a/sphinx_automodapi/tests/cases/allowed_names/output/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/allowed_names/output/api/sphinx_automodapi.tests.example_module.Egg.rst rename to sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst diff --git a/sphinx_automodapi/tests/cases/allowed_names/output/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/allowed_names/output/api/sphinx_automodapi.tests.example_module.Spam.rst rename to sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst diff --git a/sphinx_automodapi/tests/cases/allowed_names/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/allowed_names/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/allowed_names/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/allowed_names/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/allowed_names/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst new file mode 100644 index 0000000..f8d762a --- /dev/null +++ b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.Spam.rst rename to sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst diff --git a/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..aed3523 --- /dev/null +++ b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,21 @@ + +sphinx_automodapi.tests.example_module Package +---------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :classes-only: + :toctree: api + :allowed-package-names: sphinx_automodapi.tests.example_module.classes + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module + :private-bases: + :parts: 1 + :allowed-package-names: sphinx_automodapi.tests.example_module.classes diff --git a/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..1710307 --- /dev/null +++ b/sphinx_automodapi/tests/cases/allowed_names/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,7 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + Egg + Spam diff --git a/sphinx_automodapi/tests/cases/attribute_class/README.md b/sphinx_automodapi/tests/cases/attribute_class/README.md new file mode 100644 index 0000000..36c45c6 --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/README.md @@ -0,0 +1,2 @@ +This example is to make sure that classes can have attributes and properties +and they can be distiguished if ``automodsumm_properties_are_attributes = False`` diff --git a/sphinx_automodapi/tests/cases/attribute_class/input/index.rst b/sphinx_automodapi/tests/cases/attribute_class/input/index.rst new file mode 100644 index 0000000..aaea6f9 --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/input/index.rst @@ -0,0 +1 @@ +.. automodapi:: sphinx_automodapi.tests.example_module.attribute_class diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst new file mode 100644 index 0000000..45e84a5 --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst @@ -0,0 +1,29 @@ +ClassWithAttribute +================== + +.. currentmodule:: sphinx_automodapi.tests.example_module.attribute_class + +.. autoclass:: ClassWithAttribute + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~ClassWithAttribute.my_attribute + ~ClassWithAttribute.my_property + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ClassWithAttribute.my_method + + .. rubric:: Attributes Documentation + + .. autoattribute:: my_attribute + .. autoattribute:: my_property + + .. rubric:: Methods Documentation + + .. automethod:: my_method diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodapi new file mode 100644 index 0000000..941dcac --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module.attribute_class Module +------------------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.attribute_class + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.attribute_class + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.attribute_class + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodsumm new file mode 100644 index 0000000..9aafd6b --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_attr/index.rst.automodsumm @@ -0,0 +1,6 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.attribute_class + +.. autosummary:: + :toctree: api + + ClassWithAttribute diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst new file mode 100644 index 0000000..3a418d4 --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.attribute_class.ClassWithAttribute.rst @@ -0,0 +1,31 @@ +ClassWithAttribute +================== + +.. currentmodule:: sphinx_automodapi.tests.example_module.attribute_class + +.. autoclass:: ClassWithAttribute + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~ClassWithAttribute.my_attribute + + ~ClassWithAttribute.my_property + + .. rubric:: Methods Summary + + .. autosummary:: + + ~ClassWithAttribute.my_method + + .. rubric:: Attributes Documentation + + .. autoattribute:: my_attribute + + .. autoproperty:: my_property + + .. rubric:: Methods Documentation + + .. automethod:: my_method diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..941dcac --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module.attribute_class Module +------------------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.attribute_class + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.attribute_class + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.attribute_class + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..9aafd6b --- /dev/null +++ b/sphinx_automodapi/tests/cases/attribute_class/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,6 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.attribute_class + +.. autosummary:: + :toctree: api + + ClassWithAttribute diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/classes_no_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst rename to sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/classes_no_inherit/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/classes_no_inherit/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst new file mode 100644 index 0000000..07638af --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..79a2621 --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,21 @@ + +sphinx_automodapi.tests.example_module.classes Module +----------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.classes + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.classes + :classes-only: + :toctree: api + :skip: Spam + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.classes + :private-bases: + :parts: 1 + :skip: Spam diff --git a/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..966572f --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_no_inherit/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,6 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autosummary:: + :toctree: api + + Egg diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/classes_with_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst rename to sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Spam.rst b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/classes_with_inherit/output/api/sphinx_automodapi.tests.example_module.classes.Spam.rst rename to sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/classes_with_inherit/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/classes_with_inherit/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst new file mode 100644 index 0000000..07638af --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst new file mode 100644 index 0000000..b635876 --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..467c878 --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module.classes Module +----------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.classes + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.classes + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.classes + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..22da840 --- /dev/null +++ b/sphinx_automodapi/tests/cases/classes_with_inherit/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,7 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autosummary:: + :toctree: api + + Spam + Egg diff --git a/sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.classes.Egg.rst rename to sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst diff --git a/sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.classes.Spam.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.classes.Spam.rst rename to sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst diff --git a/sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst similarity index 100% rename from sphinx_automodapi/tests/cases/inherited_members/output/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst rename to sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst diff --git a/sphinx_automodapi/tests/cases/inherited_members/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/inherited_members/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/inherited_members/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/inherited_members/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/inherited_members/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst new file mode 100644 index 0000000..07638af --- /dev/null +++ b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst new file mode 100644 index 0000000..e37d6b2 --- /dev/null +++ b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.classes.Spam.rst @@ -0,0 +1,19 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autoclass:: Spam + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Spam.buy + ~Spam.eat + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst new file mode 100644 index 0000000..80e8330 --- /dev/null +++ b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.other_classes.Foo.rst @@ -0,0 +1,17 @@ +Foo +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module.other_classes + +.. autoclass:: Foo + :show-inheritance: + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Foo.hmm + + .. rubric:: Methods Documentation + + .. automethod:: hmm diff --git a/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..dc0e6ff --- /dev/null +++ b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,41 @@ + +sphinx_automodapi.tests.example_module.classes Module +----------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.classes + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.classes + :classes-only: + :toctree: api + :inherited-members: + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.classes + :private-bases: + :parts: 1 + + + +sphinx_automodapi.tests.example_module.other_classes Module +----------------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.other_classes + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.other_classes + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.other_classes + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..51a0974 --- /dev/null +++ b/sphinx_automodapi/tests/cases/inherited_members/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,14 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autosummary:: + :toctree: api + :inherited-members: + + Spam + Egg +.. currentmodule:: sphinx_automodapi.tests.example_module.other_classes + +.. autosummary:: + :toctree: api + + Foo diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.Egg.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.Spam.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.add.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/api/sphinx_automodapi.tests.example_module.multiply.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst new file mode 100644 index 0000000..f8d762a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.Spam.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.add.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.multiply.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..2821ea1 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,26 @@ + +sphinx_automodapi.tests.example_module Package +---------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module + +Functions +^^^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :functions-only: + :toctree: api + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/mixed_toplevel/output_prop_is_not_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.Egg.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst new file mode 100644 index 0000000..6d769e7 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.add.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.multiply.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/index.rst.automodsumm similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output/index.rst.automodsumm rename to sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_attr/index.rst.automodsumm diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst new file mode 100644 index 0000000..f8d762a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst new file mode 100644 index 0000000..11fa366 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.FUNNY_WALK_STEPS.rst @@ -0,0 +1,6 @@ +FUNNY_WALK_STEPS +================ + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autodata:: FUNNY_WALK_STEPS diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst new file mode 100644 index 0000000..f720dbd --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.PARROT_STATE.rst @@ -0,0 +1,6 @@ +PARROT_STATE +============ + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autodata:: PARROT_STATE diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst new file mode 100644 index 0000000..6d769e7 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst new file mode 100644 index 0000000..7b2b01a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst @@ -0,0 +1,6 @@ +add +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: add diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst new file mode 100644 index 0000000..41e5e00 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst @@ -0,0 +1,6 @@ +multiply +======== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: multiply diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..76ea9e4 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,33 @@ + +sphinx_automodapi.tests.example_module Package +---------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module + +Functions +^^^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :functions-only: + :toctree: api + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :classes-only: + :toctree: api + +Variables +^^^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :variables-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..cc706fe --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_all_objects/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,22 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + add + multiply + subtract +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + Egg + Spam +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + FUNNY_WALK_STEPS + PARROT_STATE diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/api/sphinx_automodapi.tests.example_module.Egg.rst rename to sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Egg.rst diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst new file mode 100644 index 0000000..6d769e7 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst new file mode 100644 index 0000000..7b2b01a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.add.rst @@ -0,0 +1,6 @@ +add +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: add diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst new file mode 100644 index 0000000..41e5e00 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/api/sphinx_automodapi.tests.example_module.multiply.rst @@ -0,0 +1,6 @@ +multiply +======== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: multiply diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/index.rst.automodapi similarity index 100% rename from sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output/index.rst.automodapi rename to sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/index.rst.automodapi diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/index.rst.automodsumm new file mode 100644 index 0000000..86235af --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_attr/index.rst.automodsumm @@ -0,0 +1,15 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + add + multiply + subtract +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + Egg + Spam diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst new file mode 100644 index 0000000..f8d762a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Egg.rst @@ -0,0 +1,29 @@ +Egg +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Egg + :show-inheritance: + + .. rubric:: Attributes Summary + + .. autosummary:: + + ~Egg.weight + + .. rubric:: Methods Summary + + .. autosummary:: + + ~Egg.buy + ~Egg.eat + + .. rubric:: Attributes Documentation + + .. autoproperty:: weight + + .. rubric:: Methods Documentation + + .. automethod:: buy + .. automethod:: eat diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst new file mode 100644 index 0000000..6d769e7 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst new file mode 100644 index 0000000..7b2b01a --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.add.rst @@ -0,0 +1,6 @@ +add +=== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: add diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst new file mode 100644 index 0000000..41e5e00 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/api/sphinx_automodapi.tests.example_module.multiply.rst @@ -0,0 +1,6 @@ +multiply +======== + +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autofunction:: multiply diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodapi b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodapi new file mode 100644 index 0000000..f602813 --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module Package +---------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module + +Functions +^^^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :functions-only: + :toctree: api + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module + :classes-only: + :toctree: api diff --git a/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodsumm b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodsumm new file mode 100644 index 0000000..86235af --- /dev/null +++ b/sphinx_automodapi/tests/cases/mixed_toplevel_nodiagram/output_prop_is_not_attr/index.rst.automodsumm @@ -0,0 +1,15 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + add + multiply + subtract +.. currentmodule:: sphinx_automodapi.tests.example_module + +.. autosummary:: + :toctree: api + + Egg + Spam diff --git a/sphinx_automodapi/tests/cases/public_from_private/README.md b/sphinx_automodapi/tests/cases/public_from_private/README.md new file mode 100644 index 0000000..0381ea2 --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/README.md @@ -0,0 +1,2 @@ +Importing a class from a private submodule to a public submodule +at the same level of hierarchy in the module. diff --git a/sphinx_automodapi/tests/cases/public_from_private/input/index.rst b/sphinx_automodapi/tests/cases/public_from_private/input/index.rst new file mode 100644 index 0000000..37d01fa --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/input/index.rst @@ -0,0 +1 @@ +.. automodapi:: sphinx_automodapi.tests.example_module.public diff --git a/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Camelot.rst b/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Camelot.rst new file mode 100644 index 0000000..becaa5a --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Camelot.rst @@ -0,0 +1,7 @@ +Camelot +======= + +.. currentmodule:: sphinx_automodapi.tests.example_module.public + +.. autoclass:: Camelot + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Spam.rst b/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Spam.rst new file mode 100644 index 0000000..bf19304 --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/output/api/sphinx_automodapi.tests.example_module.public.Spam.rst @@ -0,0 +1,7 @@ +Spam +==== + +.. currentmodule:: sphinx_automodapi.tests.example_module.public + +.. autoclass:: Spam + :show-inheritance: diff --git a/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodapi b/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodapi new file mode 100644 index 0000000..d285595 --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodapi @@ -0,0 +1,19 @@ + +sphinx_automodapi.tests.example_module.public Module +---------------------------------------------------- + +.. automodule:: sphinx_automodapi.tests.example_module.public + +Classes +^^^^^^^ + +.. automodsumm:: sphinx_automodapi.tests.example_module.public + :classes-only: + :toctree: api + +Class Inheritance Diagram +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. automod-diagram:: sphinx_automodapi.tests.example_module.public + :private-bases: + :parts: 1 diff --git a/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodsumm b/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodsumm new file mode 100644 index 0000000..7eade32 --- /dev/null +++ b/sphinx_automodapi/tests/cases/public_from_private/output/index.rst.automodsumm @@ -0,0 +1,7 @@ +.. currentmodule:: sphinx_automodapi.tests.example_module.public + +.. autosummary:: + :toctree: api + + Camelot + Spam diff --git a/sphinx_automodapi/tests/example_module/_private.py b/sphinx_automodapi/tests/example_module/_private.py new file mode 100644 index 0000000..d10c9db --- /dev/null +++ b/sphinx_automodapi/tests/example_module/_private.py @@ -0,0 +1,4 @@ +class Camelot: + """ + It's a silly place anyway + """ diff --git a/sphinx_automodapi/tests/example_module/attribute_class.py b/sphinx_automodapi/tests/example_module/attribute_class.py new file mode 100644 index 0000000..cc625f7 --- /dev/null +++ b/sphinx_automodapi/tests/example_module/attribute_class.py @@ -0,0 +1,12 @@ +class ClassWithAttribute(object): + """A class with an attribute.""" + my_attribute = 1 + + def my_method(self): + """A method.""" + pass + + @property + def my_property(self): + """A property.""" + return 1 diff --git a/sphinx_automodapi/tests/example_module/public.py b/sphinx_automodapi/tests/example_module/public.py new file mode 100644 index 0000000..035a9b2 --- /dev/null +++ b/sphinx_automodapi/tests/example_module/public.py @@ -0,0 +1,7 @@ +from ._private import Camelot +from .classes import Spam + +__all__ = [ + 'Camelot', + 'Spam' +] diff --git a/sphinx_automodapi/tests/test_autodoc_enhancements.py b/sphinx_automodapi/tests/test_autodoc_enhancements.py index 5e3f6de..bd1fc36 100644 --- a/sphinx_automodapi/tests/test_autodoc_enhancements.py +++ b/sphinx_automodapi/tests/test_autodoc_enhancements.py @@ -41,3 +41,20 @@ def test_type_attrgetter(): assert type_object_attrgetter(MyClass, 'susy', 'default') == 'default' assert type_object_attrgetter(MyClass, '__dict__') == MyClass.__dict__ + + +def test_type_attrgetter_for_dataclass(): + """ + This tests the attribute getter for non-default dataclass fields + """ + import dataclasses + + @dataclasses.dataclass + class MyDataclass: + foo: int + bar: str = "bar value" + + with pytest.raises(AttributeError): + getattr(MyDataclass, 'foo') + assert type_object_attrgetter(MyDataclass, 'foo') == dataclasses.MISSING + assert getattr(MyDataclass, 'bar') == 'bar value' diff --git a/sphinx_automodapi/tests/test_automodsumm.py b/sphinx_automodapi/tests/test_automodsumm.py index fe14e9f..3922faa 100644 --- a/sphinx_automodapi/tests/test_automodsumm.py +++ b/sphinx_automodapi/tests/test_automodsumm.py @@ -201,3 +201,51 @@ def test_ams_cython(tmpdir, cython_testpackage): # noqa result = f.read() assert result == ams_cython_expected + + +# ============================================================================= + +CLASS_RST = """ +:orphan: + +.. currentmodule:: {mod} + +.. autoclass:: {cls} +""".strip() + +sorted_str = """ +Before + +.. automodsumm:: sphinx_automodapi.tests.example_module.classes + :sort: + +And After +""" + +sorted_expected = """\ +.. currentmodule:: sphinx_automodapi.tests.example_module.classes + +.. autosummary:: + + Egg + Spam + +""" + + +def test_sort(tmpdir): + with open(tmpdir.join("index.rst").strpath, "w") as f: + f.write(sorted_str) + + apidir = tmpdir.mkdir('api') + mod = 'sphinx_automodapi.tests.example_module.classes' + for cls in "Spam", "Egg": + with open(apidir.join(f'{mod}.{cls}.rst').strpath, 'w') as f: + f.write(CLASS_RST.format(mod=mod, cls=cls)) + + run_sphinx_in_tmpdir(tmpdir) + + with open(tmpdir.join("index.rst.automodsumm").strpath) as f: + result = f.read() + + assert result == sorted_expected diff --git a/sphinx_automodapi/tests/test_cases.py b/sphinx_automodapi/tests/test_cases.py index 0ffa4c8..487c904 100644 --- a/sphinx_automodapi/tests/test_cases.py +++ b/sphinx_automodapi/tests/test_cases.py @@ -21,6 +21,7 @@ CASES_DIRS = glob.glob(os.path.join(CASES_ROOT, '*')) PARALLEL = {False, True} +PROP_ATTR = {True, False} intersphinx_mapping = { @@ -58,18 +59,23 @@ def teardown_function(func): roles._roles = func._roles -@pytest.mark.parametrize(('case_dir', 'parallel'), product(CASES_DIRS, PARALLEL)) -def test_run_full_case(tmpdir, case_dir, parallel): +@pytest.mark.parametrize(('case_dir', 'parallel', 'prop_attr'), product(CASES_DIRS, PARALLEL, PROP_ATTR)) +def test_run_full_case(tmpdir, case_dir, parallel, prop_attr): input_dir = os.path.join(case_dir, 'input') - output_dir = os.path.join(case_dir, 'output') + + output_folder = "output_prop_is_attr" if prop_attr else "output_prop_is_not_attr" + output_dir = os.path.join(case_dir, output_folder) + if not os.path.isdir(output_dir): + output_dir = os.path.join(case_dir, 'output') docs_dir = tmpdir.mkdir('docs').strpath conf = deepcopy(DEFAULT_CONF) conf.update({'automodapi_toctreedirnm': 'api', 'automodapi_writereprocessed': True, - 'automodsumm_writereprocessed': True}) + 'automodsumm_writereprocessed': True, + 'automodsumm_properties_are_attributes': prop_attr}) if os.path.basename(case_dir) in ('mixed_toplevel', 'mixed_toplevel_all_objects', diff --git a/sphinx_automodapi/utils.py b/sphinx_automodapi/utils.py index 6934124..38e7be4 100644 --- a/sphinx_automodapi/utils.py +++ b/sphinx_automodapi/utils.py @@ -1,7 +1,7 @@ -import inspect import sys import re import os +from inspect import ismodule from warnings import warn from sphinx.ext.autosummary.generate import find_autosummary_in_docstring @@ -37,7 +37,7 @@ def cleanup_whitespace(text): return text -def find_mod_objs(modname, onlylocals=False): +def find_mod_objs(modname, onlylocals=False, sort=False): """ Returns all the public attributes of a module referenced by name. .. note:: @@ -50,9 +50,11 @@ def find_mod_objs(modname, onlylocals=False): modname : str The name of the module to search. onlylocals : bool or list - If True, only attributes that are either members of `modname` OR one of + If `True`, only attributes that are either members of `modname` OR one of its modules or subpackages will be included. If a list, only members of packages in the list are included. If `False`, selection is done. + This option is ignored if a module defines __all__ - in that case, __all__ + is used to determine whether objects are public. Returns ------- @@ -78,11 +80,14 @@ def find_mod_objs(modname, onlylocals=False): # define their own __getattr__ and __dir__. if hasattr(mod, '__all__'): pkgitems = [(k, getattr(mod, k)) for k in mod.__all__] + # Optionally sort the items alphabetically + if sort: + pkgitems.sort() + onlylocals = False else: - pkgitems = [(k, getattr(mod, k)) for k in dir(mod) if k[0] != '_'] + pkgitems = [(k, getattr(mod, k)) for k in dir(mod) if k[0] != "_"] # filter out modules and pull the names and objs out - ismodule = inspect.ismodule localnames = [k for k, v in pkgitems if not ismodule(v)] objs = [v for k, v in pkgitems if not ismodule(v)] diff --git a/tox.ini b/tox.ini index 12ca6fc..aa8bf3b 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py{38,39,310,311,312}-test-sphinx{_oldest,53,62,70,71,72,dev}{-cov}{-clocale} +envlist = py{38,39,310,311,312,313}-test-sphinx{_oldest,53,62,70,71,72,80,81,dev}{-cov}{-clocale} requires = pip >= 18.0 setuptools >= 30.3.0 isolated_build = true @@ -13,12 +13,14 @@ deps = sphinx70: sphinx==7.0.* sphinx71: sphinx==7.1.* sphinx72: sphinx==7.2.* + sphinx80: sphinx==8.0.* + sphinx81: sphinx==8.1.* sphinxdev: git+https://github.com/sphinx-doc/sphinx.git extras = test: test commands = pip freeze - !cov: pytest --pyargs sphinx_automodapi + !cov: pytest --pyargs sphinx_automodapi {posargs} cov: pytest --pyargs sphinx_automodapi --cov sphinx_automodapi --cov-config={toxinidir}/setup.cfg {posargs} cov: coverage xml -o {toxinidir}/coverage.xml passenv = HOME, WINDIR, LC_ALL, LC_CTYPE, LANG, CC, CI