Skip to content

Commit

Permalink
update doc
Browse files Browse the repository at this point in the history
  • Loading branch information
statmlben committed Sep 3, 2024
1 parent 66e495e commit d97c52a
Show file tree
Hide file tree
Showing 13 changed files with 720 additions and 52 deletions.
10 changes: 0 additions & 10 deletions doc/_templates/autoapi/index.rst

This file was deleted.

16 changes: 16 additions & 0 deletions doc/source/_static/css/label.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
.summarylabel {
background-color: var(--color-foreground-secondary);
color: var(--color-background-secondary);
font-size: 70%;
padding-left: 2px;
padding-right: 2px;
border-radius: 3px;
vertical-align: 15%;
padding-bottom: 2px;
filter: opacity(40%);
}


table.summarytable {
width: 100%;
}
12 changes: 12 additions & 0 deletions doc/source/_templates/autoapi/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
API Reference
=============

This page contains auto-generated API reference documentation.

.. toctree::
:titlesonly:

{% for page in pages %}
{{ page.include_path }}
{% endfor %}

68 changes: 68 additions & 0 deletions doc/source/_templates/autoapi/macros.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{# AutoApiSummary replacement macro #}
{#
The intent of this macro is to replace the autoapisummary directive with the following
improvements:
1) Method signature is generated without typing annotation regardless of the value of
`autodoc_typehints`
2) Properties are treated like attribute (but labelled as properties).
3) Label are added as summary prefix to indicate if the member is a property, class
method, or static method.

Copyright: Antoine Beyeler, 2022
License: MIT
#}

{# Renders an object's name with a proper reference and optional signature.

The signature is re-generated from obj.obj.args, which is undocumented but is the
only way to have a type-less signature if `autodoc_typehints` is `signature` or
`both`. #}
{% macro _render_item_name(obj, sig=False) -%}
:py:obj:`{{ obj.name }} <{{ obj.id }}>`
{%- if sig -%}
\ (
{%- for arg in obj.obj.args -%}
{%- if arg[0] %}{{ arg[0]|replace('*', '\*') }}{% endif -%}{{ arg[1] -}}
{%- if not loop.last %}, {% endif -%}
{%- endfor -%}
){%- endif -%}
{%- endmacro %}


{# Generates a single object optionally with a signature and a labe. #}
{% macro _item(obj, sig=False, label='') %}
* - {{ _render_item_name(obj, sig) }}
- {% if label %}:summarylabel:`{{ label }}` {% endif %}{% if obj.summary %}{{ obj.summary }}{% else %}\-{% endif +%}
{% endmacro %}



{# Generate an autosummary-like table with the provided members. #}
{% macro auto_summary(objs, title='') -%}

.. list-table:: {{ title }}
:header-rows: 0
:widths: auto
:class: summarytable {#- apply CSS class to customize styling +#}

{% for obj in objs -%}
{#- should the full signature be used? -#}
{%- set sig = (obj.type in ['method', 'function'] and not 'property' in obj.properties) -%}

{#- compute label -#}
{%- if 'property' in obj.properties -%}
{%- set label = 'prop' -%}
{%- elif 'classmethod' in obj.properties -%}
{%- set label = 'class' -%}
{%- elif 'abstractmethod' in obj.properties -%}
{%- set label = 'abc' -%}
{%- elif 'staticmethod' in obj.properties -%}
{%- set label = 'static' -%}
{%- else -%}
{%- set label = '' -%}
{%- endif -%}

{{- _item(obj, sig=sig, label=label) -}}
{%- endfor -%}

{% endmacro %}
71 changes: 71 additions & 0 deletions doc/source/_templates/autoapi/python/class.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
{% import 'macros.rst' as macros %}

{% if obj.display %}
.. py:{{ obj.type }}:: {{ obj.short_name }}{% if obj.args %}({{ obj.args }}){% endif %}
{% for (args, return_annotation) in obj.overloads %}
{{ " " * (obj.type | length) }} {{ obj.short_name }}{% if args %}({{ args }}){% endif %}
{% endfor %}


{% if obj.bases %}
{% if "show-inheritance" in autoapi_options %}
Bases: {% for base in obj.bases %}{{ base|link_objs }}{% if not loop.last %}, {% endif %}{% endfor %}
{% endif %}


{% if "show-inheritance-diagram" in autoapi_options and obj.bases != ["object"] %}
.. autoapi-inheritance-diagram:: {{ obj.obj["full_name"] }}
:parts: 1
{% if "private-members" in autoapi_options %}
:private-bases:
{% endif %}

{% endif %}
{% endif %}
{% if obj.docstring %}
{{ obj.docstring|indent(3) }}
{% endif %}
{% if "inherited-members" in autoapi_options %}
{% set visible_classes = obj.classes|selectattr("display")|list %}
{% else %}
{% set visible_classes = obj.classes|rejectattr("inherited")|selectattr("display")|list %}
{% endif %}
{% for klass in visible_classes %}
{{ klass.render()|indent(3) }}
{% endfor %}
{% if "inherited-members" in autoapi_options %}
{% set visible_attributes = obj.attributes|selectattr("display")|list %}
{% else %}
{% set visible_attributes = obj.attributes|rejectattr("inherited")|selectattr("display")|list %}
{% endif %}
{% if "inherited-members" in autoapi_options %}
{% set visible_methods = obj.methods|selectattr("display")|list %}
{% else %}
{% set visible_methods = obj.methods|rejectattr("inherited")|selectattr("display")|list %}
{% endif %}

{% if visible_methods or visible_attributes %}
Overview
========

{% set summary_methods = visible_methods|rejectattr("properties", "contains", "property")|list %}
{% set summary_attributes = visible_attributes + visible_methods|selectattr("properties", "contains", "property")|list %}
{% if summary_attributes %}
{{ macros.auto_summary(summary_attributes, title="Attributes")|indent(3) }}
{% endif %}

{% if summary_methods %}
{{ macros.auto_summary(summary_methods, title="Methods")|indent(3) }}
{% endif %}

Members
=======

{% for attribute in visible_attributes %}
{{ attribute.render()|indent(3) }}
{% endfor %}
{% for method in visible_methods %}
{{ method.render()|indent(3) }}
{% endfor %}
{% endif %}
{% endif %}
112 changes: 112 additions & 0 deletions doc/source/_templates/autoapi/python/module.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
{% import 'macros.rst' as macros %}

{% if not obj.display %}
:orphan:

{% endif %}
{{ obj.name }}
{{ "=" * obj.name|length }}

.. py:module:: {{ obj.name }}
{% if obj.docstring %}
.. autoapi-nested-parse::

{{ obj.docstring|indent(3) }}

{% endif %}

{% block subpackages %}
{% set visible_subpackages = obj.subpackages|selectattr("display")|list %}
{% if visible_subpackages %}
Subpackages
-----------
.. toctree::
:titlesonly:
:maxdepth: 3

{% for subpackage in visible_subpackages %}
{{ subpackage.short_name }}/index.rst
{% endfor %}


{% endif %}
{% endblock %}
{% block submodules %}
{% set visible_submodules = obj.submodules|selectattr("display")|list %}
{% if visible_submodules %}
Submodules
----------
.. toctree::
:titlesonly:
:maxdepth: 1

{% for submodule in visible_submodules %}
{{ submodule.short_name }}/index.rst
{% endfor %}


{% endif %}
{% endblock %}
{% block content %}
{% if obj.all is not none %}
{% set visible_children = obj.children|selectattr("display")|selectattr("short_name", "in", obj.all)|list %}
{% elif obj.type is equalto("package") %}
{% set visible_children = obj.children|selectattr("display")|list %}
{% else %}
{% set visible_children = obj.children|selectattr("display")|rejectattr("imported")|list %}
{% endif %}
{% if visible_children %}
Overview
--------

{% set visible_classes = visible_children|selectattr("type", "equalto", "class")|list %}
{% set visible_functions = visible_children|selectattr("type", "equalto", "function")|list %}
{% set visible_attributes = visible_children|selectattr("type", "equalto", "data")|list %}
{% if "show-module-summary" in autoapi_options and (visible_classes or visible_functions) %}
{% block classes scoped %}
{% if visible_classes %}
{{ macros.auto_summary(visible_classes, title="Classes") }}
{% endif %}
{% endblock %}

{% block functions scoped %}
{% if visible_functions %}
{{ macros.auto_summary(visible_functions, title="Function") }}
{% endif %}
{% endblock %}

{% block attributes scoped %}
{% if visible_attributes %}
{{ macros.auto_summary(visible_attributes, title="Attributes") }}
{% endif %}
{% endblock %}
{% endif %}

{% if visible_classes %}
Classes
-------
{% for obj_item in visible_classes %}
{{ obj_item.render()|indent(0) }}
{% endfor %}
{% endif %}

{% if visible_functions %}
Functions
---------
{% for obj_item in visible_functions %}
{{ obj_item.render()|indent(0) }}
{% endfor %}
{% endif %}

{% if visible_attributes %}
Attributes
----------
{% for obj_item in visible_attributes %}
{{ obj_item.render()|indent(0) }}
{% endfor %}
{% endif %}


{% endif %}
{% endblock %}
9 changes: 9 additions & 0 deletions doc/source/autoapi/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
API Reference
=============

This page contains auto-generated API reference documentation.

.. toctree::
:titlesonly:

/autoapi/rehline/index
Loading

0 comments on commit d97c52a

Please sign in to comment.