Merge pull request 'Add documentation by Sphinx' (#1) from docs into main

Reviewed-on: #1
This commit is contained in:
Jonathan Harker 2024-10-02 08:29:57 +13:00
commit b0e0fe94ee
9 changed files with 157 additions and 1 deletions

3
.gitignore vendored
View file

@ -18,3 +18,6 @@ __pycache__
# Virtual environments
/venv/
/.venv/
# Documentation
/docs/build

20
docs/Makefile Normal file
View file

@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = source
BUILDDIR = build
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

71
docs/source/conf.py Normal file
View file

@ -0,0 +1,71 @@
"""
Configuration file for the Sphinx documentation builder.
For the full list of built-in configuration values, see the
[documentation](https://www.sphinx-doc.org/en/master/usage/configuration.html).
"""
import sys
import sphinx_rtd_theme
from pathlib import Path
project_root = Path(__file__).resolve().parent.parent
source_root = project_root / 'setclass'
doc_root = project_root / 'docs' / 'source'
sys.path.insert(0, source_root)
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = 'Setclass'
copyright = '2024, Jonathan Harker'
author = 'Jonathan Harker'
release = '0.1'
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.todo',
'sphinx.ext.viewcode',
'sphinx.ext.intersphinx',
'sphinx.ext.mathjax',
'sphinx_rtd_theme',
'myst_parser',
]
intersphinx_mapping = {
'python': ('https://docs.python.org/3.12', None),
}
templates_path = ['_templates']
exclude_patterns = [
'_build',
'.DS_Store',
'.pytest_cache',
'.tox',
'.venv',
]
source_suffix = {
'.rst': 'restructuredtext',
'.md': 'markdown',
'.txt': 'markdown',
}
# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
html_theme_options = {
'display_version': False,
'navigation_depth': 2,
'prev_next_buttons_location': 'None'
}
html_static_path = ['_static']

27
docs/source/index.rst Normal file
View file

@ -0,0 +1,27 @@
.. Setclass documentation master file, created by
sphinx-quickstart on Sat Sep 21 12:30:24 2024.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Setclass documentation
======================
.. include:: readme.md
.. contents::
:depth: 2
:local:
.. toctree::
:maxdepth: 2
:includehidden:
modules.rst
setclass.rst
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

7
docs/source/modules.rst Normal file
View file

@ -0,0 +1,7 @@
setclass
========
.. toctree::
:maxdepth: 4
setclass

4
docs/source/readme.md Normal file
View file

@ -0,0 +1,4 @@
README:
```{include} ../../README.md
```

18
docs/source/setclass.rst Normal file
View file

@ -0,0 +1,18 @@
setclass package
================
setclass module
---------------
.. automodule:: setclass.setclass
:members:
:undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: setclass
:members:
:undoc-members:
:show-inheritance:

View file

@ -11,3 +11,8 @@ pre-commit
pytest
pytest-cov
tox
# Documentation
sphinx
sphinx_rtd_theme
myst-parser

View file

@ -11,6 +11,7 @@ class cache_property:
def __init__(self, function):
self.function = function
self.name = function.__name__
self.__doc__ = function.__doc__
def __get__(self, obj, type=None) -> object:
obj.__dict__[self.name] = self.function(obj)
@ -98,7 +99,7 @@ class SetClass(list):
@cache_property
def z_relations(self) -> list:
"""
Return all distinct set classes with the same interval vector (Allan Forte: "Z-related").
Return all distinct set classes with the same interval vector (Allen Forte: "Z-related").
For example, Forte 4-Z15 {0,1,4,6} and Forte 4-Z29 {0,1,3,7} both have iv1,1,1,1,1,1 but
are not inversions, complements, or transpositions (rotations) of each other.
"""