From 3e827f3a1359153e642727c3e1554328e667a963 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:06:59 +0100 Subject: [PATCH 01/45] add .venv to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3b25b435..4a070da4 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ pytket/extensions/cutensornet/_metadata.py result .direnv .envrc +.venv From c23ae04a4cf29e32561911cb65ab005da5f7f62d Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:08:43 +0100 Subject: [PATCH 02/45] remove legacy docs directory --- .../workflows/docs/Quantinuum_logo_black.png | Bin 18245 -> 0 bytes .../workflows/docs/Quantinuum_logo_white.png | Bin 16704 -> 0 bytes .github/workflows/docs/build-docs | 114 -------------- .github/workflows/docs/check-build-docs | 10 -- .github/workflows/docs/conf.py | 149 ------------------ .github/workflows/docs/requirements.txt | 6 - docs/intro.txt | 33 ---- 7 files changed, 312 deletions(-) delete mode 100644 .github/workflows/docs/Quantinuum_logo_black.png delete mode 100644 .github/workflows/docs/Quantinuum_logo_white.png delete mode 100755 .github/workflows/docs/build-docs delete mode 100755 .github/workflows/docs/check-build-docs delete mode 100644 .github/workflows/docs/conf.py delete mode 100644 .github/workflows/docs/requirements.txt delete mode 100644 docs/intro.txt diff --git a/.github/workflows/docs/Quantinuum_logo_black.png b/.github/workflows/docs/Quantinuum_logo_black.png deleted file mode 100644 index 5569581b8e420f14eee561cbf1bf78ca0c96882f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18245 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 diff --git a/.github/workflows/docs/build-docs b/.github/workflows/docs/build-docs deleted file mode 100755 index 6166e0bd..00000000 --- a/.github/workflows/docs/build-docs +++ /dev/null @@ -1,114 +0,0 @@ -#!/usr/bin/env python - -import argparse -import datetime -from importlib import import_module -from pathlib import Path -import shutil -import subprocess -import sys - -DOCS_DIR = Path(sys.argv[0]).absolute().parent -MODULES_DIR = DOCS_DIR.parent.parent.parent -TKET_EXAMPLES_LINK = "https://tket.quantinuum.com/examples/" -TKET_MANUAL_LINK = "https://tket.quantinuum.com/user-manual/" -TKET_WEBSITE_LINK = "https://tket.quantinuum.com/" -PYTKET_DOCS_LINK = "https://tket.quantinuum.com/api-docs/" -PYTKET_EX_DOCS_LINK = "https://tket.quantinuum.com/api-docs/extensions.html" -PYTKET_QULACS_PYPI_LINK = "https://pypi.org/project/pytket-cutensornet/" -PYTKET_QULACS_GITHUB = "https://github.com/CQCL/pytket-cutensornet" -MODULE = "cutensornet" - -def get_module_version(): - m = import_module(f"pytket.extensions.{MODULE}") - return m._metadata.__extension_version__.split(".") - - -def remove_dir(dirpath): - if dirpath.exists() and dirpath.is_dir(): - shutil.rmtree(dirpath) - - -def fix_links(filepath): - with open(filepath, "r", encoding="utf8") as f: - content = f.read() - content = content.replace("pytket._tket", "pytket") - with open(filepath, "w", encoding="utf8") as f: - f.write(content) - - -def build_module_docs(): - v = get_module_version() - mod_docs = MODULES_DIR / "docs" - mod_build = mod_docs / "build" - conf_copy = mod_docs / "conf.py" - logo_copy_black = mod_docs / "Quantinuum_logo_black.png" - logo_copy_white = mod_docs / "Quantinuum_logo_white.png" - shutil.copy(DOCS_DIR / "conf.py", conf_copy) - shutil.copy(DOCS_DIR / "Quantinuum_logo_black.png", logo_copy_black) - shutil.copy(DOCS_DIR / "Quantinuum_logo_white.png", logo_copy_white) - remove_dir(mod_build) - index_rst = mod_docs / "index.rst" - with open(mod_docs / "intro.txt", "r") as f: - content = f.readlines() - content.append( - "\n.. toctree::\n\t:caption: pytket documentation:\n\t:maxdepth: 1\n\n" - ) - content.append(f"\tpytket API docs <{PYTKET_DOCS_LINK}>\n") - content.append(f"\tpytket extensions <{PYTKET_EX_DOCS_LINK}>\n") - content.append(f"\tManual <{TKET_MANUAL_LINK}>\n") - content.append(f"\tExample notebooks <{TKET_EXAMPLES_LINK}>\n") - content.append(f"\tTKET website <{TKET_WEBSITE_LINK}>\n") - content.append( - "\n.. toctree::\n\t:caption: Links:\n\t:maxdepth: 1\n\n" - ) - content.append(f"\tbug tracker <{PYTKET_QULACS_GITHUB}/issues>\n") - content.append(f"\tGitHub <{PYTKET_QULACS_GITHUB}>\n") - content.append(f"\tPyPi <{PYTKET_QULACS_PYPI_LINK}>\n") - - with open(index_rst, "w") as f: - f.writelines(content) - subprocess.run( - [ - "sphinx-build", - "-b", - "html", - "-D", - f"project=pytket-{MODULE}", - "-D", - f"copyright={datetime.date.today().year} Quantinuum", - "-D", - f"version={'.'.join(v[:2])}", - "-D", - f"release={'.'.join(v)}", - ".", - "build", - ], - cwd=mod_docs, - ) - for htmlfile in mod_build.rglob("*.html"): - fix_links(htmlfile) - fix_links(mod_build / "searchindex.js") - conf_copy.unlink() - logo_copy_black.unlink() - logo_copy_white.unlink() - index_rst.unlink() - - -if __name__ == "__main__": - parser = argparse.ArgumentParser( - description="Build HTML documentation for pytket-cutensornet." - ) - parser.add_argument("-d", "--dest", help="copy artifacts into destination folder") - args = parser.parse_args() - - print("Building docs for modules:", MODULE) - build_module_docs() - - if args.dest is not None: - dest = Path(args.dest) - shutil.copytree( - MODULES_DIR / "docs" / "build", - dest, - dirs_exist_ok=True, - ) \ No newline at end of file diff --git a/.github/workflows/docs/check-build-docs b/.github/workflows/docs/check-build-docs deleted file mode 100755 index e3e19b5e..00000000 --- a/.github/workflows/docs/check-build-docs +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -./.github/workflows/docs/build-docs 1>out.txt 2>err.txt -cat out.txt err.txt -ERRS=$(cat err.txt) -if [ -n "$ERRS" ] -then - echo "Docs build failed." - exit 1 -fi \ No newline at end of file diff --git a/.github/workflows/docs/conf.py b/.github/workflows/docs/conf.py deleted file mode 100644 index 748ab387..00000000 --- a/.github/workflows/docs/conf.py +++ /dev/null @@ -1,149 +0,0 @@ -# -*- coding: utf-8 -*- - -# Configuration file for the Sphinx documentation builder. -# See https://www.sphinx-doc.org/en/master/usage/configuration.html - -import re -from typing import Any, Dict, Optional -from urllib.parse import urljoin - -from docutils import nodes -from docutils.nodes import Element, TextElement -from sphinx.application import Sphinx -from sphinx.environment import BuildEnvironment - -author = "Quantinuum" - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.autosummary", - "sphinx.ext.intersphinx", - "sphinx.ext.mathjax", - "sphinx.ext.napoleon", - "sphinx_copybutton", - "enum_tools.autoenum", -] - -pygments_style = "borland" - -html_theme = "sphinx_book_theme" - -html_theme_options = { - "repository_url": "https://github.com/CQCL/pytket-cutensornet", - "use_repository_button": True, - "use_issues_button": True, - "navigation_with_keys": True, - "logo": { - "image_light": "Quantinuum_logo_black.png", - "image_dark": "Quantinuum_logo_white.png", - }, -} - -html_static_path = ["_static"] - -html_css_files = ["custom.css"] - -# -- Extension configuration ------------------------------------------------- - -pytketdoc_base = "https://tket.quantinuum.com/api-docs/" - -intersphinx_mapping = { - "python": ("https://docs.python.org/3/", None), - "pytketdoc": (pytketdoc_base, None), - "qiskit": ("https://qiskit.org/documentation/", None), - "qulacs": ("http://docs.qulacs.org/en/latest/", None), -} - -autodoc_member_order = "groupwise" - -# The following code is for resolving broken hyperlinks in the doc. - -# Mappings for broken hyperlinks that intersphinx cannot resolve -external_url_mapping = { - "BasePass": urljoin(pytketdoc_base, "passes.html#pytket.passes.BasePass"), - "Predicate": urljoin(pytketdoc_base, "predicates.html#pytket.predicates.Predicate"), - "ResultHandle": urljoin( - pytketdoc_base, - "backends.html#pytket.backends.resulthandle.ResultHandle", - ), - "BackendResult": urljoin( - pytketdoc_base, - "backends.html#pytket.backends.backendresult.BackendResult", - ), - "Circuit": urljoin(pytketdoc_base, "circuit_class.html#pytket.circuit.Circuit"), - "BasisOrder": urljoin(pytketdoc_base, "circuit.html#pytket.circuit.BasisOrder"), - "QubitPauliOperator": urljoin( - pytketdoc_base, "utils.html#pytket.utils.QubitPauliOperator" - ), - "QubitPauliString": urljoin( - pytketdoc_base, "pauli.html#pytket.pauli.QubitPauliString" - ), -} - -# Correct mappings for intersphinx to resolve -custom_internal_mapping = { - "pytket.utils.outcomearray.OutcomeArray": "pytket.utils.OutcomeArray", - "pytket.utils.operators.QubitPauliOperator": "pytket.utils.QubitPauliOperator", - "pytket.backends.backend.Backend": "pytket.backends.Backend", - "qiskit.dagcircuit.dagcircuit.DAGCircuit": "qiskit.dagcircuit.DAGCircuit", - "qiskit.providers.basebackend.BaseBackend": "qiskit.providers.BaseBackend", - "qiskit.qobj.qasm_qobj.QasmQobj": "qiskit.qobj.QasmQobj", - "qiskit.result.result.Result": "qiskit.result.Result", -} - - -def add_reference( - app: Sphinx, env: BuildEnvironment, node: Element, contnode: TextElement -) -> Optional[nodes.reference]: - # Fix references in docstrings that are inherited from the base - # pytket.backends.Backend class. - mapping = app.config.external_url_mapping - if node.astext() in mapping: - newnode = nodes.reference( - "", - "", - internal=False, - refuri=mapping[node.astext()], - reftitle=node.get("reftitle", node.astext()), - ) - newnode.append(contnode) - return newnode - return None - - -def correct_signature( - app: Sphinx, - what: str, - name: str, - obj: Any, - options: Dict, - signature: str, - return_annotation: str, -) -> (str, str): - new_signature = signature - new_return_annotation = return_annotation - for k, v in app.config.custom_internal_mapping.items(): - if signature is not None: - new_signature = new_signature.replace(k, v) - if return_annotation is not None: - new_return_annotation = new_return_annotation.replace(k, v) - # e.g. Replace by CXConfigType.Snake to avoid - # silent failure in later stages. - if new_signature is not None: - enums_signature = re.findall(r"<.+?\: \d+>", new_signature) - for e in enums_signature: - new_signature = new_signature.replace(e, e[1 : e.find(":")]) - - if new_return_annotation is not None: - enums_return = re.findall(r"<.+?\: \d+>", new_return_annotation) - for e in enums_return: - new_return_annotation = new_return_annotation.replace(e, e[1 : e.find(":")]) - - return new_signature, new_return_annotation - - -def setup(app): - app.add_config_value("custom_internal_mapping", {}, "env") - app.add_config_value("external_url_mapping", {}, "env") - app.connect("missing-reference", add_reference) - app.connect("autodoc-process-signature", correct_signature) diff --git a/.github/workflows/docs/requirements.txt b/.github/workflows/docs/requirements.txt deleted file mode 100644 index 96778c80..00000000 --- a/.github/workflows/docs/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -sphinx >= 4.5, <7 -sphinx_autodoc_annotation -sphinx-autodoc-typehints>=1.19.3 -sphinx_book_theme >= 1.0.1, <2.0 -sphinx-copybutton -enum-tools[sphinx] \ No newline at end of file diff --git a/docs/intro.txt b/docs/intro.txt deleted file mode 100644 index e7876948..00000000 --- a/docs/intro.txt +++ /dev/null @@ -1,33 +0,0 @@ -pytket-cutensornet -================== - -``pytket-cutensornet`` is an extension to ``pytket`` that allows ``pytket`` circuits and -expectation values to be simulated using `cuTensorNet `_. - -`cuTensorNet `_ is a -high-performance library for tensor network computations, developed by NVIDIA. -It is part of the `cuQuantum `_ SDK -- -a high-performance library aimed at quantum circuit simulations on the NVIDIA GPU chips. - -We provide two core functionalities: - -* *Full tensor network contraction*: use ``tk_to_tensor_network`` to translate a ``pytket`` circuit to a ``TensorNetwork`` and obtain expectation values and amplitudes via full tensor network contraction using ``cuQuantum``'s optimised contraction path. - -* *Matrix Product State (MPS)*: use ``simulate`` to simulate a ``pytket`` circuit, returning an ``MPS`` representation of the output state, of which you can then ``get_amplitude`` or calculate inner products with other MPS via ``vdot``. - -Currently, only single-GPU calculations are supported, but a multi-GPU execution will be -implemented in the due course using ``mpi4py`` library. - -``pytket-cutensornet`` is available for Python 3.10, 3.11 and 3.12 on Linux. -In order to use it, you need access to a Linux machine with an NVIDIA GPU of Compute Capability +7.0 (check it `here `_) and first install ``cuQuantum Python`` following their installation -`instructions `_. -This will include the necessary dependencies such as CUDA toolkit. Then, to install -``pytket-cutensornet``, run: - -:: - - pip install pytket-cutensornet - -.. toctree:: - api.rst - changelog.rst From a4e30729202bbb885f67478aa1cd0cca0acfd913 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:09:13 +0100 Subject: [PATCH 03/45] rename intro.txt -> index.rst --- docs/index.rst | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/index.rst diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..e7876948 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,33 @@ +pytket-cutensornet +================== + +``pytket-cutensornet`` is an extension to ``pytket`` that allows ``pytket`` circuits and +expectation values to be simulated using `cuTensorNet `_. + +`cuTensorNet `_ is a +high-performance library for tensor network computations, developed by NVIDIA. +It is part of the `cuQuantum `_ SDK -- +a high-performance library aimed at quantum circuit simulations on the NVIDIA GPU chips. + +We provide two core functionalities: + +* *Full tensor network contraction*: use ``tk_to_tensor_network`` to translate a ``pytket`` circuit to a ``TensorNetwork`` and obtain expectation values and amplitudes via full tensor network contraction using ``cuQuantum``'s optimised contraction path. + +* *Matrix Product State (MPS)*: use ``simulate`` to simulate a ``pytket`` circuit, returning an ``MPS`` representation of the output state, of which you can then ``get_amplitude`` or calculate inner products with other MPS via ``vdot``. + +Currently, only single-GPU calculations are supported, but a multi-GPU execution will be +implemented in the due course using ``mpi4py`` library. + +``pytket-cutensornet`` is available for Python 3.10, 3.11 and 3.12 on Linux. +In order to use it, you need access to a Linux machine with an NVIDIA GPU of Compute Capability +7.0 (check it `here `_) and first install ``cuQuantum Python`` following their installation +`instructions `_. +This will include the necessary dependencies such as CUDA toolkit. Then, to install +``pytket-cutensornet``, run: + +:: + + pip install pytket-cutensornet + +.. toctree:: + api.rst + changelog.rst From 59d38161c4b2fe503e56c3fcd8404593d4c083d9 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:12:22 +0100 Subject: [PATCH 04/45] add docs theming submodule --- .gitmodules | 4 ++++ pytket-docs-theming | 1 + 2 files changed, 5 insertions(+) create mode 100644 .gitmodules create mode 160000 pytket-docs-theming diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..ad13a549 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "pytket-docs-theming"] + path = pytket-docs-theming + url = https://github.com/CQCL/pytket-docs-theming.git + branch = main diff --git a/pytket-docs-theming b/pytket-docs-theming new file mode 160000 index 00000000..2d075d5d --- /dev/null +++ b/pytket-docs-theming @@ -0,0 +1 @@ +Subproject commit 2d075d5d4c306c1460a4f16909ee9b57675f77ed From 82cd247e4ae8da301672c223c80ce154ef9f14d5 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:20:40 +0100 Subject: [PATCH 05/45] delete custom.css --- docs/_static/custom.css | 35 ----------------------------------- 1 file changed, 35 deletions(-) delete mode 100644 docs/_static/custom.css diff --git a/docs/_static/custom.css b/docs/_static/custom.css deleted file mode 100644 index 9c8a6ed2..00000000 --- a/docs/_static/custom.css +++ /dev/null @@ -1,35 +0,0 @@ -.wy-side-nav-search, -.wy-nav-top { - background: #5A46BE; -} - -.wy-grid-for-nav, -.wy-body-for-nav, -.wy-nav-side, -.wy-side-scroll, -.wy-menu, -.wy-menu-vertical { - background-color: #FFFFFF; -} - -.wy-menu-vertical a:hover { - background-color: #d9d9d9; -} - -.btn-link:visited, -.btn-link, -a:visited, -.a.reference.external, -.a.reference.internal, -.wy-menu-vertical a, -.wy-menu-vertical li, -.wy-menu-vertical ul, -.span.pre, -.sig-param, -html[data-theme=light] { - --pst-color-inline-code: rgb(199, 37, 78) !important; -} - -.sig-name { - font-size: 1.25rem; -} \ No newline at end of file From bcc950b66b743a8c616fc720f0de71d8ca284c58 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:26:50 +0100 Subject: [PATCH 06/45] use latest submodule commit --- docs/pytket-docs-theming/.gitmodules | 4 + docs/pytket-docs-theming/README.md | 5 ++ .../pytket-docs-theming/_static/nav-config.js | 41 ++++++++++ docs/pytket-docs-theming/conf.py | 74 +++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 docs/pytket-docs-theming/.gitmodules create mode 100644 docs/pytket-docs-theming/README.md create mode 100644 docs/pytket-docs-theming/_static/nav-config.js create mode 100644 docs/pytket-docs-theming/conf.py diff --git a/docs/pytket-docs-theming/.gitmodules b/docs/pytket-docs-theming/.gitmodules new file mode 100644 index 00000000..4c8c5fe0 --- /dev/null +++ b/docs/pytket-docs-theming/.gitmodules @@ -0,0 +1,4 @@ +[submodule "quantinuum-sphinx"] + path = quantinuum-sphinx + url = https://github.com/CQCL/quantinuum-sphinx.git + branch = dist diff --git a/docs/pytket-docs-theming/README.md b/docs/pytket-docs-theming/README.md new file mode 100644 index 00000000..48cb0c1d --- /dev/null +++ b/docs/pytket-docs-theming/README.md @@ -0,0 +1,5 @@ +# pytket-docs-theming + +Docs configuration for https://tket.quantinuum.com/ based on [Quantinuum-sphinx](https://github.com/CQCL/quantinuum-sphinx). + +This repository is intended to be used as a git submodule in documentation source repositories. diff --git a/docs/pytket-docs-theming/_static/nav-config.js b/docs/pytket-docs-theming/_static/nav-config.js new file mode 100644 index 00000000..598544f9 --- /dev/null +++ b/docs/pytket-docs-theming/_static/nav-config.js @@ -0,0 +1,41 @@ +const navConfig = { + + "navTextLinks": [ + { + "title": "API Docs", + "href": "../api-docs", + "pathMatch": "somewhere", + }, + { + "title": "Blog", + "href": "../blog/", + "pathMatch": "somewhere", + }, + { + "title": "User Guide", + "href": "../user-guide", + "pathMatch": "somewhere", + }, + ], + "navProductName": "TKET", + "navIconLinks": [ + { + "title": "TKET Github", + "href": "https://github.com/CQCL/tket", + "pathMatch": "somewhere", + "iconImageURL": "_static/assets/github.svg", + }, + { + "title": "TKET Slack Channel", + "href": "https://tketusers.slack.com/", + "pathMatch": "somewhere", + "iconImageURL": "_static/assets/slack.svg", + }, + { + "title": "TKET Stack Exchange", + "href": "https://quantumcomputing.stackexchange.com/questions/tagged/pytket", + "pathMatch": "somewhere", + "iconImageURL": "_static/assets/stack.svg", + }, + ], +} \ No newline at end of file diff --git a/docs/pytket-docs-theming/conf.py b/docs/pytket-docs-theming/conf.py new file mode 100644 index 00000000..28198dc2 --- /dev/null +++ b/docs/pytket-docs-theming/conf.py @@ -0,0 +1,74 @@ +# Configuration file for the Sphinx documentation builder. +# See https://www.sphinx-doc.org/en/master/usage/configuration.html + +copyright = "2024 Quantinuum" +author = "Quantinuum" + +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx_autodoc_typehints", + "sphinx.ext.autosummary", + "sphinx.ext.viewcode", + "sphinx.ext.intersphinx", + "sphinx.ext.mathjax", + "sphinx_copybutton", + "enum_tools.autoenum", + "sphinx.ext.autosectionlabel", + # "myst_nb", +] + +autosectionlabel_prefix_document = True + +myst_enable_extensions = ["dollarmath", "html_image", "attrs_inline"] + +html_theme_options = {} + +html_theme = "furo" +templates_path = ["quantinuum-sphinx/_templates"] +html_static_path = ["quantinuum-sphinx/_static", "_static"] +html_favicon = "quantinuum-sphinx/_static/assets/quantinuum_favicon.svg" + + +pytketdoc_base = "https://tket.quantinuum.com/api-docs/" + +intersphinx_mapping = { + "python": ("https://docs.python.org/3/", None), + "pytket": (pytketdoc_base, None), + "qiskit": ("https://qiskit.org/documentation/", None), + "qulacs": ("http://docs.qulacs.org/en/latest/", None), + "pytket-qiskit": ("https://tket.quantinuum.com/extensions/pytket-qiskit/", None), + "pytket-quantinuum": ( + "https://tket.quantinuum.com/extensions/pytket-quantinuum/", + None, + ), + "pytket-qujax": ("https://tket.quantinuum.com/extensions/pytket-qujax/", None), + "pytket-cirq": ("https://tket.quantinuum.com/extensions/pytket-cirq/", None), + "sympy": ("https://docs.sympy.org/latest/", None), +} + + +nb_execution_mode = "cache" + +nb_execution_excludepatterns = [ + "examples/backends/Forest_portability_example.ipynb", + "examples/backends/backends_example.ipynb", + "examples/backends/qiskit_integration.ipynb", + "examples/backends/comparing_simulators.ipynb", + "examples/algorithms_and_protocols/expectation_value_example.ipynb", + "examples/algorithms_and_protocols/pytket-qujax_heisenberg_vqe.ipynb", + "examples/algorithms_and_protocols/pytket-qujax-classification.ipynb", + "examples/algorithms_and_protocols/pytket-qujax_qaoa.ipynb", + "examples/algorithms_and_protocols/ucc_vqe.ipynb", + "examples/algorithms_and_protocols/spam_example.ipynb", + "examples/algorithms_and_protocols/entanglement_swapping.ipynb", +] + +exclude_patterns = [ + "jupyter_execute/*", + ".jupyter_cache", + "manual/README.md", + "README.md", +] + +autodoc_member_order = "groupwise" From 7199963c72459084f8f1914f385b5709345ff6dc Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 11:29:17 +0100 Subject: [PATCH 07/45] delete outdated submodule --- .gitmodules | 4 - docs/pytket-docs-theming/.gitmodules | 4 - docs/pytket-docs-theming/README.md | 5 -- .../pytket-docs-theming/_static/nav-config.js | 41 ---------- docs/pytket-docs-theming/conf.py | 74 ------------------- 5 files changed, 128 deletions(-) delete mode 100644 .gitmodules delete mode 100644 docs/pytket-docs-theming/.gitmodules delete mode 100644 docs/pytket-docs-theming/README.md delete mode 100644 docs/pytket-docs-theming/_static/nav-config.js delete mode 100644 docs/pytket-docs-theming/conf.py diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ad13a549..00000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "pytket-docs-theming"] - path = pytket-docs-theming - url = https://github.com/CQCL/pytket-docs-theming.git - branch = main diff --git a/docs/pytket-docs-theming/.gitmodules b/docs/pytket-docs-theming/.gitmodules deleted file mode 100644 index 4c8c5fe0..00000000 --- a/docs/pytket-docs-theming/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "quantinuum-sphinx"] - path = quantinuum-sphinx - url = https://github.com/CQCL/quantinuum-sphinx.git - branch = dist diff --git a/docs/pytket-docs-theming/README.md b/docs/pytket-docs-theming/README.md deleted file mode 100644 index 48cb0c1d..00000000 --- a/docs/pytket-docs-theming/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# pytket-docs-theming - -Docs configuration for https://tket.quantinuum.com/ based on [Quantinuum-sphinx](https://github.com/CQCL/quantinuum-sphinx). - -This repository is intended to be used as a git submodule in documentation source repositories. diff --git a/docs/pytket-docs-theming/_static/nav-config.js b/docs/pytket-docs-theming/_static/nav-config.js deleted file mode 100644 index 598544f9..00000000 --- a/docs/pytket-docs-theming/_static/nav-config.js +++ /dev/null @@ -1,41 +0,0 @@ -const navConfig = { - - "navTextLinks": [ - { - "title": "API Docs", - "href": "../api-docs", - "pathMatch": "somewhere", - }, - { - "title": "Blog", - "href": "../blog/", - "pathMatch": "somewhere", - }, - { - "title": "User Guide", - "href": "../user-guide", - "pathMatch": "somewhere", - }, - ], - "navProductName": "TKET", - "navIconLinks": [ - { - "title": "TKET Github", - "href": "https://github.com/CQCL/tket", - "pathMatch": "somewhere", - "iconImageURL": "_static/assets/github.svg", - }, - { - "title": "TKET Slack Channel", - "href": "https://tketusers.slack.com/", - "pathMatch": "somewhere", - "iconImageURL": "_static/assets/slack.svg", - }, - { - "title": "TKET Stack Exchange", - "href": "https://quantumcomputing.stackexchange.com/questions/tagged/pytket", - "pathMatch": "somewhere", - "iconImageURL": "_static/assets/stack.svg", - }, - ], -} \ No newline at end of file diff --git a/docs/pytket-docs-theming/conf.py b/docs/pytket-docs-theming/conf.py deleted file mode 100644 index 28198dc2..00000000 --- a/docs/pytket-docs-theming/conf.py +++ /dev/null @@ -1,74 +0,0 @@ -# Configuration file for the Sphinx documentation builder. -# See https://www.sphinx-doc.org/en/master/usage/configuration.html - -copyright = "2024 Quantinuum" -author = "Quantinuum" - -extensions = [ - "sphinx.ext.autodoc", - "sphinx.ext.napoleon", - "sphinx_autodoc_typehints", - "sphinx.ext.autosummary", - "sphinx.ext.viewcode", - "sphinx.ext.intersphinx", - "sphinx.ext.mathjax", - "sphinx_copybutton", - "enum_tools.autoenum", - "sphinx.ext.autosectionlabel", - # "myst_nb", -] - -autosectionlabel_prefix_document = True - -myst_enable_extensions = ["dollarmath", "html_image", "attrs_inline"] - -html_theme_options = {} - -html_theme = "furo" -templates_path = ["quantinuum-sphinx/_templates"] -html_static_path = ["quantinuum-sphinx/_static", "_static"] -html_favicon = "quantinuum-sphinx/_static/assets/quantinuum_favicon.svg" - - -pytketdoc_base = "https://tket.quantinuum.com/api-docs/" - -intersphinx_mapping = { - "python": ("https://docs.python.org/3/", None), - "pytket": (pytketdoc_base, None), - "qiskit": ("https://qiskit.org/documentation/", None), - "qulacs": ("http://docs.qulacs.org/en/latest/", None), - "pytket-qiskit": ("https://tket.quantinuum.com/extensions/pytket-qiskit/", None), - "pytket-quantinuum": ( - "https://tket.quantinuum.com/extensions/pytket-quantinuum/", - None, - ), - "pytket-qujax": ("https://tket.quantinuum.com/extensions/pytket-qujax/", None), - "pytket-cirq": ("https://tket.quantinuum.com/extensions/pytket-cirq/", None), - "sympy": ("https://docs.sympy.org/latest/", None), -} - - -nb_execution_mode = "cache" - -nb_execution_excludepatterns = [ - "examples/backends/Forest_portability_example.ipynb", - "examples/backends/backends_example.ipynb", - "examples/backends/qiskit_integration.ipynb", - "examples/backends/comparing_simulators.ipynb", - "examples/algorithms_and_protocols/expectation_value_example.ipynb", - "examples/algorithms_and_protocols/pytket-qujax_heisenberg_vqe.ipynb", - "examples/algorithms_and_protocols/pytket-qujax-classification.ipynb", - "examples/algorithms_and_protocols/pytket-qujax_qaoa.ipynb", - "examples/algorithms_and_protocols/ucc_vqe.ipynb", - "examples/algorithms_and_protocols/spam_example.ipynb", - "examples/algorithms_and_protocols/entanglement_swapping.ipynb", -] - -exclude_patterns = [ - "jupyter_execute/*", - ".jupyter_cache", - "manual/README.md", - "README.md", -] - -autodoc_member_order = "groupwise" From fe7f67ab0ea66f979a82e146f7bc090f4bde8e85 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:24:40 +0100 Subject: [PATCH 08/45] add updated submodule --- .gitmodules | 4 ++++ docs/pytket-docs-theming | 1 + 2 files changed, 5 insertions(+) create mode 100644 .gitmodules create mode 160000 docs/pytket-docs-theming diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..fdc8b037 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "docs/pytket-docs-theming"] + path = docs/pytket-docs-theming + url = https://github.com/CQCL/pytket-docs-theming.git + branch = main diff --git a/docs/pytket-docs-theming b/docs/pytket-docs-theming new file mode 160000 index 00000000..c4cd48ec --- /dev/null +++ b/docs/pytket-docs-theming @@ -0,0 +1 @@ +Subproject commit c4cd48ec5870006508c67d6f7a52bb22229a7994 From 87930b635490212b3b4325f9502729dda8458fa1 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:25:04 +0100 Subject: [PATCH 09/45] add bash script to build the docs --- docs/build-docs.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docs/build-docs.sh diff --git a/docs/build-docs.sh b/docs/build-docs.sh new file mode 100644 index 00000000..82404305 --- /dev/null +++ b/docs/build-docs.sh @@ -0,0 +1,11 @@ +rm -rf build/ + +mv pytket-docs-theming/_static . +mv pytket-docs-theming/quantinuum-sphinx . +mv pytket-docs-theming/conf.py . + +sphinx-build -b html . build + +mv _static pytket-docs-theming +mv quantinuum-sphinx pytket-docs-theming +mv conf.py pytket-docs-theming \ No newline at end of file From 6147e7931f02f3ae5667f27fa7d764dde973b75c Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:40:43 +0100 Subject: [PATCH 10/45] update README --- docs/README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 docs/README.md diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..ff17e033 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,37 @@ +# Building the docs + +1. Firstly ensure you are in the `docs` directory + +```shell +cd docs +``` + +2. Next, update the pytket-docs-theming submodule + +If you are doing this for the first time use the following + +```shell +git submodule add -b main https://github.com/CQCL/pytket-docs-theming.git +``` + +If you are coming back to this repository after some time, ensure that you are using the latest version of the submodule + +```shell +git submodule update --init --recursive +``` + +3. Once you are on the latest version of the submodule, build the docs using the `build-docs.sh` script. + +`TODO:` Decide where dependencies are stored. I, (Callum) would prefer if the sphinx dependencies are stored in `pytket-docs-theming` in a `pyproject.toml` file. These could then be shared in the submodule and installed for the local build. Finally an editable wheel could be installed to build the dev docs. + +```shell +./build-docs.sh +``` + +The html pages will then show up in the `docs/build` directory. + +4. Finally, serve the html locally (OPTIONAL). This allows you to view the navbar in the docs. + +```shell +npx serve build +``` \ No newline at end of file From 5db35ff5db1d2ca8fbe1a8f05f6a4e14702bcd96 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:44:36 +0100 Subject: [PATCH 11/45] update README once more --- docs/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index ff17e033..3f4ee460 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,12 +22,12 @@ git submodule update --init --recursive 3. Once you are on the latest version of the submodule, build the docs using the `build-docs.sh` script. -`TODO:` Decide where dependencies are stored. I, (Callum) would prefer if the sphinx dependencies are stored in `pytket-docs-theming` in a `pyproject.toml` file. These could then be shared in the submodule and installed for the local build. Finally an editable wheel could be installed to build the dev docs. - ```shell -./build-docs.sh +bash ./build-docs.sh ``` +`TODO:` Decide where dependencies are stored. I, (Callum) would prefer if the sphinx dependencies are stored in `pytket-docs-theming` in a `pyproject.toml` file. These could then be shared in the submodule and installed for the local build. Finally an editable wheel could be installed to build the dev docs. + The html pages will then show up in the `docs/build` directory. 4. Finally, serve the html locally (OPTIONAL). This allows you to view the navbar in the docs. From 2eea52a479d63ff318676a26cc6020c99b253381 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 12:59:39 +0100 Subject: [PATCH 12/45] delete duplicate submodule dir --- pytket-docs-theming | 1 - 1 file changed, 1 deletion(-) delete mode 160000 pytket-docs-theming diff --git a/pytket-docs-theming b/pytket-docs-theming deleted file mode 160000 index 2d075d5d..00000000 --- a/pytket-docs-theming +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2d075d5d4c306c1460a4f16909ee9b57675f77ed From e9282fb25288b4bec8c04dcd2f3f51eee86b7863 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 27 Aug 2024 13:13:52 +0100 Subject: [PATCH 13/45] update bash script --- docs/build-docs.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index 82404305..4325c18f 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -1,11 +1,16 @@ +#!/bin/bash rm -rf build/ +# Move theming elements into the docs folder mv pytket-docs-theming/_static . mv pytket-docs-theming/quantinuum-sphinx . mv pytket-docs-theming/conf.py . +# Build the docs sphinx-build -b html . build +# Move the theming elements back after docs are built. mv _static pytket-docs-theming mv quantinuum-sphinx pytket-docs-theming -mv conf.py pytket-docs-theming \ No newline at end of file +mv conf.py pytket-docs-theming +# This helps reproducibility and doesn't clutter source control \ No newline at end of file From 8f4cf4d990e2540596a68e08a84e30fb8ce40b8e Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:47:12 +0100 Subject: [PATCH 14/45] Use updated submodule with extensions_deps --- docs/pytket-docs-theming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pytket-docs-theming b/docs/pytket-docs-theming index c4cd48ec..0b03abb9 160000 --- a/docs/pytket-docs-theming +++ b/docs/pytket-docs-theming @@ -1 +1 @@ -Subproject commit c4cd48ec5870006508c67d6f7a52bb22229a7994 +Subproject commit 0b03abb9459cca9a3d4c0965faf12e18365738e2 From aae823b848b7a0e7598ac2eaefd15e88c6921015 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:47:44 +0100 Subject: [PATCH 15/45] add dependency files to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 4a070da4..f159a181 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ result .direnv .envrc .venv +docs/pyproject.toml +docs/poetry.lock + From 9b0631e24608af0463216aef824287995f8b5e23 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:49:42 +0100 Subject: [PATCH 16/45] add docs install script --- docs/install.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs/install.sh diff --git a/docs/install.sh b/docs/install.sh new file mode 100644 index 00000000..be74e09a --- /dev/null +++ b/docs/install.sh @@ -0,0 +1,4 @@ +mv pytket-docs-theming/extensions_deps/pyproject.toml . +mv pytket-docs-theming/extensions_deps/poetry.lock . + +poetry install \ No newline at end of file From c00bfe0186c99d03f1075ab9d6d86af91de9fc19 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 15:52:01 +0100 Subject: [PATCH 17/45] add install script --- docs/install.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/install.sh b/docs/install.sh index be74e09a..de81e890 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -1,4 +1,5 @@ -mv pytket-docs-theming/extensions_deps/pyproject.toml . -mv pytket-docs-theming/extensions_deps/poetry.lock . +cp pytket-docs-theming/extensions_deps/pyproject.toml . +cp pytket-docs-theming/extensions_deps/poetry.lock . + +poetry install -poetry install \ No newline at end of file From efd4f1399e24b39cef25a5e57c46ef81ed8340d1 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:56:48 +0100 Subject: [PATCH 18/45] update submodule to avoid build warnings --- docs/pytket-docs-theming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pytket-docs-theming b/docs/pytket-docs-theming index 0b03abb9..9fb3522f 160000 --- a/docs/pytket-docs-theming +++ b/docs/pytket-docs-theming @@ -1 +1 @@ -Subproject commit 0b03abb9459cca9a3d4c0965faf12e18365738e2 +Subproject commit 9fb3522f8820c1b347bdd2e39f36ee0f905ffe79 From f92a6fd5af27098eb4e2f06a33d2c89bc58ef3c4 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:29:40 +0100 Subject: [PATCH 19/45] update README --- docs/README.md | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3f4ee460..6971f14d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,16 +1,15 @@ # Building the docs -1. Firstly ensure you are in the `docs` directory +The configuration for the docs build is shared across different repositories by using [pytket-docs-theming](https://github.com/CQCL/pytket-docs-theming) as a submodule. This repository also contains the dependencies for building the docs for the pytket extensions. If you encounter issues related to docs configuration, feel free to open an [issue](https://github.com/CQCL/pytket-docs-theming/issues). -```shell -cd docs -``` +Unfamiliar with submodules? Check out this [github blog post](https://github.blog/open-source/git/working-with-submodules/). -2. Next, update the pytket-docs-theming submodule +1. First, update/initialise the `pytket-docs-theming` submodule. (Make sure you are in the `docs` directory when you do this). -If you are doing this for the first time use the following +If you are doing this time, the submodule can be added as follows ```shell +cd docs git submodule add -b main https://github.com/CQCL/pytket-docs-theming.git ``` @@ -20,18 +19,37 @@ If you are coming back to this repository after some time, ensure that you are u git submodule update --init --recursive ``` -3. Once you are on the latest version of the submodule, build the docs using the `build-docs.sh` script. +2. Once the submodule is updated, install the docs dependencies using the `install.sh` script. ```shell -bash ./build-docs.sh +bash install.sh ``` -`TODO:` Decide where dependencies are stored. I, (Callum) would prefer if the sphinx dependencies are stored in `pytket-docs-theming` in a `pyproject.toml` file. These could then be shared in the submodule and installed for the local build. Finally an editable wheel could be installed to build the dev docs. +This will create a `.venv` folder in the `docs` directory with all of the requirements to build the docs. Note that this does not yet include an editable wheel of the project. -The html pages will then show up in the `docs/build` directory. +3. Next, activate the virtual environment and install the editable wheel from the repository root. -4. Finally, serve the html locally (OPTIONAL). This allows you to view the navbar in the docs. +```shell +poetry shell +cd .. +pip install -e . +``` + +4. Next, run the `build-docs.sh` script from the `docs` directory. + +```shell +cd docs +bash build-docs.sh +``` + +The built html pages will then show up in the `docs/build` directory. + +5. Finally, serve the html locally (OPTIONAL). This allows you to view the navbar in the docs. ```shell npx serve build -``` \ No newline at end of file +``` + +Requirements for step 5. +* [Install nodejs](https://nodejs.org/en/download/package-manager) +* Install npx with `npm i -g npx` \ No newline at end of file From de12ff26db024d72caece9b38cc042109f2d046d Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:33:20 +0100 Subject: [PATCH 20/45] add some comments --- docs/install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/install.sh b/docs/install.sh index de81e890..4ef12572 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -1,5 +1,8 @@ +# Copy over poetry dependencies from theming repository cp pytket-docs-theming/extensions_deps/pyproject.toml . -cp pytket-docs-theming/extensions_deps/poetry.lock . +cp pytket-docs-theming/extensio +# Install the docs dependencies. Creates a .venv directory in docs poetry install +# Editable wheel should be installed separately. \ No newline at end of file From d1990d1c2bf5767eba0a063070c237236c857302 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 18:34:15 +0100 Subject: [PATCH 21/45] add some comments --- docs/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/install.sh b/docs/install.sh index 4ef12572..a3a1ac1e 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -5,4 +5,4 @@ cp pytket-docs-theming/extensio # Install the docs dependencies. Creates a .venv directory in docs poetry install -# Editable wheel should be installed separately. \ No newline at end of file +# NOTE: Editable wheel should be installed separately. \ No newline at end of file From 30fdb76e337458f005b4caec008505ab2949a57d Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 19:59:22 +0100 Subject: [PATCH 22/45] add the correct title of the project --- docs/build-docs.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index 4325c18f..98349bae 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -6,8 +6,9 @@ mv pytket-docs-theming/_static . mv pytket-docs-theming/quantinuum-sphinx . mv pytket-docs-theming/conf.py . -# Build the docs -sphinx-build -b html . build +# Build the docs Setting the correct title +parentdir="$(basename "$(dirname `pwd`)")" +sphinx-build -b html -D html_title="$parentdir" . build # Move the theming elements back after docs are built. mv _static pytket-docs-theming From 73d2a40cc0f511aa9ebd19075aed2f4815044d22 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 20:00:06 +0100 Subject: [PATCH 23/45] update comment --- docs/build-docs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index 98349bae..30efb340 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -14,4 +14,4 @@ sphinx-build -b html -D html_title="$parentdir" . build mv _static pytket-docs-theming mv quantinuum-sphinx pytket-docs-theming mv conf.py pytket-docs-theming -# This helps reproducibility and doesn't clutter source control \ No newline at end of file +# This ensures reusability and doesn't clutter source control \ No newline at end of file From 7836974ca5590cb91e6c258a2f02cde2b85f6bc9 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 20:01:35 +0100 Subject: [PATCH 24/45] minor cleanup --- docs/build-docs.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index 30efb340..cff68ef8 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -6,12 +6,14 @@ mv pytket-docs-theming/_static . mv pytket-docs-theming/quantinuum-sphinx . mv pytket-docs-theming/conf.py . -# Build the docs Setting the correct title +# Get the name of the project parentdir="$(basename "$(dirname `pwd`)")" + +# Build the docs sphinx-build -b html -D html_title="$parentdir" . build # Move the theming elements back after docs are built. mv _static pytket-docs-theming mv quantinuum-sphinx pytket-docs-theming mv conf.py pytket-docs-theming -# This ensures reusability and doesn't clutter source control \ No newline at end of file +# This ensures reusability and doesn't clutter source control. \ No newline at end of file From 704ee3fb1a347c854e7bfe9a2827d83c86a62ac0 Mon Sep 17 00:00:00 2001 From: Callum Macpherson <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 28 Aug 2024 20:25:58 +0100 Subject: [PATCH 25/45] Fix typo in bash script --- docs/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install.sh b/docs/install.sh index a3a1ac1e..a0d311e8 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -1,8 +1,8 @@ # Copy over poetry dependencies from theming repository cp pytket-docs-theming/extensions_deps/pyproject.toml . -cp pytket-docs-theming/extensio +cp pytket-docs-theming/extensions_deps/poetry.lock . # Install the docs dependencies. Creates a .venv directory in docs poetry install -# NOTE: Editable wheel should be installed separately. \ No newline at end of file +# NOTE: Editable wheel should be installed separately. From 0cf0c205d1395398a356ef99bf6466861bbeadd8 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:35:04 +0100 Subject: [PATCH 26/45] remove instructions from README, link to theming repo --- docs/README.md | 54 ++------------------------------------------------ 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/docs/README.md b/docs/README.md index 6971f14d..ebfe2861 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,55 +1,5 @@ # Building the docs -The configuration for the docs build is shared across different repositories by using [pytket-docs-theming](https://github.com/CQCL/pytket-docs-theming) as a submodule. This repository also contains the dependencies for building the docs for the pytket extensions. If you encounter issues related to docs configuration, feel free to open an [issue](https://github.com/CQCL/pytket-docs-theming/issues). +The docs are built by using the [pytket-docs-theming](https://github.com/CQCL/pytket-docs-theming/) repository as a git submodule. If there are issues with the docs build, feel free to open an issue or pull request there. -Unfamiliar with submodules? Check out this [github blog post](https://github.blog/open-source/git/working-with-submodules/). - -1. First, update/initialise the `pytket-docs-theming` submodule. (Make sure you are in the `docs` directory when you do this). - -If you are doing this time, the submodule can be added as follows - -```shell -cd docs -git submodule add -b main https://github.com/CQCL/pytket-docs-theming.git -``` - -If you are coming back to this repository after some time, ensure that you are using the latest version of the submodule - -```shell -git submodule update --init --recursive -``` - -2. Once the submodule is updated, install the docs dependencies using the `install.sh` script. - -```shell -bash install.sh -``` - -This will create a `.venv` folder in the `docs` directory with all of the requirements to build the docs. Note that this does not yet include an editable wheel of the project. - -3. Next, activate the virtual environment and install the editable wheel from the repository root. - -```shell -poetry shell -cd .. -pip install -e . -``` - -4. Next, run the `build-docs.sh` script from the `docs` directory. - -```shell -cd docs -bash build-docs.sh -``` - -The built html pages will then show up in the `docs/build` directory. - -5. Finally, serve the html locally (OPTIONAL). This allows you to view the navbar in the docs. - -```shell -npx serve build -``` - -Requirements for step 5. -* [Install nodejs](https://nodejs.org/en/download/package-manager) -* Install npx with `npm i -g npx` \ No newline at end of file +For instructions on how to build the docs, take a look at the [extensions README](https://github.com/CQCL/pytket-docs-theming/blob/main/extensions_deps/README.md). \ No newline at end of file From 2bca1a60f2be5896c2105ebfd9c49f182b180fda Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:35:57 +0100 Subject: [PATCH 27/45] rename extensions_deps to extensions --- docs/README.md | 2 +- docs/install.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index ebfe2861..6882e8a3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,4 +2,4 @@ The docs are built by using the [pytket-docs-theming](https://github.com/CQCL/pytket-docs-theming/) repository as a git submodule. If there are issues with the docs build, feel free to open an issue or pull request there. -For instructions on how to build the docs, take a look at the [extensions README](https://github.com/CQCL/pytket-docs-theming/blob/main/extensions_deps/README.md). \ No newline at end of file +For instructions on how to build the docs, take a look at the [extensions README](https://github.com/CQCL/pytket-docs-theming/blob/main/extensions/README.md). \ No newline at end of file diff --git a/docs/install.sh b/docs/install.sh index a0d311e8..939fe5a7 100644 --- a/docs/install.sh +++ b/docs/install.sh @@ -1,6 +1,6 @@ # Copy over poetry dependencies from theming repository -cp pytket-docs-theming/extensions_deps/pyproject.toml . -cp pytket-docs-theming/extensions_deps/poetry.lock . +cp pytket-docs-theming/extensions/pyproject.toml . +cp pytket-docs-theming/extensions/poetry.lock . # Install the docs dependencies. Creates a .venv directory in docs poetry install From 40580bd0bac767dca0c032b419a77e9610caec59 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:40:54 +0100 Subject: [PATCH 28/45] update theming submodule --- docs/pytket-docs-theming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pytket-docs-theming b/docs/pytket-docs-theming index 9fb3522f..3c19f69c 160000 --- a/docs/pytket-docs-theming +++ b/docs/pytket-docs-theming @@ -1 +1 @@ -Subproject commit 9fb3522f8820c1b347bdd2e39f36ee0f905ffe79 +Subproject commit 3c19f69caf59ed99e8d06b2ba61356ccfc3f4bc2 From 52c7d63909bc0cd71ebe25f2d3c9427fb29e1e77 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 3 Sep 2024 23:45:07 +0100 Subject: [PATCH 29/45] add link to instructions --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 6882e8a3..d401a96b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,4 +2,4 @@ The docs are built by using the [pytket-docs-theming](https://github.com/CQCL/pytket-docs-theming/) repository as a git submodule. If there are issues with the docs build, feel free to open an issue or pull request there. -For instructions on how to build the docs, take a look at the [extensions README](https://github.com/CQCL/pytket-docs-theming/blob/main/extensions/README.md). \ No newline at end of file +For instructions on how to build the docs, take a look at the [extensions README](https://github.com/CQCL/pytket-docs-theming/blob/main/extensions/README.md). \ No newline at end of file From 14ffb0c6065fd76fbced6c76b1b0cdb28ea86e65 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 4 Sep 2024 01:02:00 +0100 Subject: [PATCH 30/45] fix github link in navbar --- docs/build-docs.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index cff68ef8..9569d959 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -7,10 +7,14 @@ mv pytket-docs-theming/quantinuum-sphinx . mv pytket-docs-theming/conf.py . # Get the name of the project -parentdir="$(basename "$(dirname `pwd`)")" +EXTENSION_NAME="$(basename "$(dirname `pwd`)")" # Build the docs -sphinx-build -b html -D html_title="$parentdir" . build +sphinx-build -b html -D html_title="$EXTENSION_NAME" . build + +# Correct github link in navbar +sed 's#CQCL/tket#CQCL/'$EXTENSION_NAME'#' _static/nav-config.js + # Move the theming elements back after docs are built. mv _static pytket-docs-theming From 2d4e5880c740a65c4b784aeb982f3733293efdf4 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 4 Sep 2024 01:03:14 +0100 Subject: [PATCH 31/45] update comment --- docs/build-docs.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index 9569d959..bdaac6a3 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -9,13 +9,12 @@ mv pytket-docs-theming/conf.py . # Get the name of the project EXTENSION_NAME="$(basename "$(dirname `pwd`)")" -# Build the docs +# Build the docs. Ensure we have the correct project title. sphinx-build -b html -D html_title="$EXTENSION_NAME" . build # Correct github link in navbar sed 's#CQCL/tket#CQCL/'$EXTENSION_NAME'#' _static/nav-config.js - # Move the theming elements back after docs are built. mv _static pytket-docs-theming mv quantinuum-sphinx pytket-docs-theming From caa1fe0a660d7bed7184026686f9bfc10d1e7fd0 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 4 Sep 2024 01:20:06 +0100 Subject: [PATCH 32/45] improve build-docs.sh script --- docs/build-docs.sh | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/docs/build-docs.sh b/docs/build-docs.sh index bdaac6a3..211c70a9 100644 --- a/docs/build-docs.sh +++ b/docs/build-docs.sh @@ -2,21 +2,20 @@ rm -rf build/ # Move theming elements into the docs folder -mv pytket-docs-theming/_static . -mv pytket-docs-theming/quantinuum-sphinx . -mv pytket-docs-theming/conf.py . +cp -R pytket-docs-theming/_static . +cp -R pytket-docs-theming/quantinuum-sphinx . +cp pytket-docs-theming/conf.py . # Get the name of the project EXTENSION_NAME="$(basename "$(dirname `pwd`)")" +# Correct github link in navbar +sed -i '' 's#CQCL/tket#CQCL/'$EXTENSION_NAME'#' _static/nav-config.js + # Build the docs. Ensure we have the correct project title. sphinx-build -b html -D html_title="$EXTENSION_NAME" . build -# Correct github link in navbar -sed 's#CQCL/tket#CQCL/'$EXTENSION_NAME'#' _static/nav-config.js - -# Move the theming elements back after docs are built. -mv _static pytket-docs-theming -mv quantinuum-sphinx pytket-docs-theming -mv conf.py pytket-docs-theming -# This ensures reusability and doesn't clutter source control. \ No newline at end of file +# Remove copied files. This ensures reusability. +rm -r _static +rm -r quantinuum-sphinx +rm conf.py \ No newline at end of file From be6456a64f8c1cdbc9830993f2dc813dbe2029c0 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 4 Sep 2024 01:27:10 +0100 Subject: [PATCH 33/45] add left sidebar links --- docs/index.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/index.rst b/docs/index.rst index e7876948..f1c9fab3 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -31,3 +31,9 @@ This will include the necessary dependencies such as CUDA toolkit. Then, to inst .. toctree:: api.rst changelog.rst + +.. toctree:: + :caption: Useful links + + Issue tracker + PyPi From b76e5a0efae153b5b2eb967d99cc64e861636be1 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:32:49 +0100 Subject: [PATCH 34/45] update docs.yml --- .github/workflows/docs.yml | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1f624bb6..3e13b861 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,5 +1,7 @@ name: Pytket cuTensorNet Docs +name: Build Docs + on: push: branches: @@ -7,30 +9,27 @@ on: schedule: # 04:00 every Tuesday morning - cron: '0 4 * * 2' + jobs: docs: name: build docs runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - - name: Set up Python 3.10 + with: + submodules: true + - name: Set up Python 3.11 uses: actions/setup-python@v5 with: - python-version: '3.10' - - name: Upgrade pip and install wheel - run: pip install --upgrade pip wheel - - name: Install pytket-cutensornet - run: pip install . + python-version: '3.11' + - name: install poetry + run: pip install poetry - name: Install docs dependencies - run: | - pip install -r .github/workflows/docs/requirements.txt + run: cd docs && bash install.sh + - name: Install pytket cutensornet + run: cd docs && poetry run pip install ../. - name: Test building docs - timeout-minutes: 20 + timeout-minutes: 10 run: | - cd .github/workflows/docs - mkdir extensions - ./build-docs -d ${GITHUB_WORKSPACE}/.github/workflows/docs/extensions - - uses: actions/upload-artifact@v4 - with: - name: pytket-extension-docs - path: .github/workflows/docs/extensions/ \ No newline at end of file + cd docs + poetry run bash build-docs.sh \ No newline at end of file From 14ce84f99c9122e14e99b742e9484d8eddf5528f Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:37:08 +0100 Subject: [PATCH 35/45] update docs build in build_and_test.yml --- .github/workflows/build_and_test.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index b9ec7211..0dede539 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -73,8 +73,7 @@ jobs: - name: Build docs if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) timeout-minutes: 20 - run: | - ./.github/workflows/docs/check-build-docs + run: cd docs && poetry run bash ./build-docs.sh publish_to_pypi: @@ -111,6 +110,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: '0' + submodules: true - name: Set up Python 3.10 uses: actions/setup-python@v5 with: @@ -123,9 +123,12 @@ jobs: run: pip install -U pip wheel - name: Install extension run: for w in `find wheelhouse/ -type f -name "*.whl"` ; do pip install $w ; done + - name: Install poetry + run: pip install poetry - name: Install docs dependencies run: | - pip install -r .github/workflows/docs/requirements.txt + cd docs && bash ./install.sh + for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Build docs timeout-minutes: 20 run: | From 1b4e53c794820e749f7b30bb004464edd7526308 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:40:14 +0100 Subject: [PATCH 36/45] fix installation of docs dependencies --- .github/workflows/build_and_test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 0dede539..3a3eec62 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -69,7 +69,8 @@ jobs: - name: Install docs dependencies if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) run: | - pip install -r .github/workflows/docs/requirements.txt + cd docs + bash ./install.sh - name: Build docs if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) timeout-minutes: 20 From 265ee7174de5017fdf8e7c9f55e8c80e932eefa0 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:41:13 +0100 Subject: [PATCH 37/45] remove duplicate name --- .github/workflows/docs.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3e13b861..56f1a015 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,7 +1,5 @@ name: Pytket cuTensorNet Docs -name: Build Docs - on: push: branches: From 0e4540a1f5890752d78e987ec9e79988be4dbea2 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:44:19 +0100 Subject: [PATCH 38/45] try to fix poetry issue --- .github/workflows/build_and_test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 3a3eec62..d455126b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -66,6 +66,8 @@ jobs: with: name: artefact-${{ matrix.os }} path: wheelhouse/ + - name: install poetry + run: pip install poetry - name: Install docs dependencies if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) run: | From 11c7f35f62066dee5e5be48458e6ea5228cdec7e Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:50:59 +0100 Subject: [PATCH 39/45] try another way to fix poetry issue --- .github/workflows/build_and_test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index d455126b..db69cf37 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -124,10 +124,10 @@ jobs: path: wheelhouse - name: Install pip, wheel run: pip install -U pip wheel - - name: Install extension - run: for w in `find wheelhouse/ -type f -name "*.whl"` ; do pip install $w ; done - name: Install poetry run: pip install poetry + - name: Install extension + run: for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Install docs dependencies run: | cd docs && bash ./install.sh From 71a3097703ea55ae11764f74d1f5211df1a218a0 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 18:53:41 +0100 Subject: [PATCH 40/45] another attempt --- .github/workflows/build_and_test.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index db69cf37..30cfc15c 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -126,8 +126,6 @@ jobs: run: pip install -U pip wheel - name: Install poetry run: pip install poetry - - name: Install extension - run: for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Install docs dependencies run: | cd docs && bash ./install.sh From 084c3ab3f350782c8607f1dc5a659bfad0a9f3a3 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 19:02:39 +0100 Subject: [PATCH 41/45] try again to fix docs build --- .github/workflows/build_and_test.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 30cfc15c..1bfb332d 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -114,10 +114,10 @@ jobs: with: fetch-depth: '0' submodules: true - - name: Set up Python 3.10 + - name: Set up Python 3.11 uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.11' - name: Download all wheels uses: actions/download-artifact@v4 with: @@ -126,13 +126,14 @@ jobs: run: pip install -U pip wheel - name: Install poetry run: pip install poetry + - name: Install extension + run: for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Install docs dependencies run: | - cd docs && bash ./install.sh - for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done + cd docs + poetry install - name: Build docs timeout-minutes: 20 run: | - cd .github/workflows/docs - mkdir extensions - ./build-docs -d ${GITHUB_WORKSPACE}/.github/workflows/docs/extensions/api \ No newline at end of file + cd docs + poetry run bash ./build-docs.sh \ No newline at end of file From 2e650d55c160f005a6c7ce4a59601e0b6c8121c7 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 19:10:42 +0100 Subject: [PATCH 42/45] use latest docs theming --- docs/pytket-docs-theming | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pytket-docs-theming b/docs/pytket-docs-theming index 3c19f69c..cfbe34c4 160000 --- a/docs/pytket-docs-theming +++ b/docs/pytket-docs-theming @@ -1 +1 @@ -Subproject commit 3c19f69caf59ed99e8d06b2ba61356ccfc3f4bc2 +Subproject commit cfbe34c48f88c56085b8ef65f640d0108b8a9fa6 From 1190705c0c8583fecc6afdacb199c800b2ec7596 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 19:11:00 +0100 Subject: [PATCH 43/45] update install docs dependencies once again --- .github/workflows/build_and_test.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 1bfb332d..45663514 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -71,8 +71,8 @@ jobs: - name: Install docs dependencies if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) run: | - cd docs - bash ./install.sh + cd docs && bash ./install.sh + for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Build docs if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) timeout-minutes: 20 @@ -131,7 +131,7 @@ jobs: - name: Install docs dependencies run: | cd docs - poetry install + bash ./install.sh - name: Build docs timeout-minutes: 20 run: | From 586ac2ef80e9837b4ad2fde144412ea68b92597b Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Tue, 1 Oct 2024 19:15:32 +0100 Subject: [PATCH 44/45] try yet again --- .github/workflows/build_and_test.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 45663514..73bdd02b 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -71,12 +71,15 @@ jobs: - name: Install docs dependencies if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) run: | - cd docs && bash ./install.sh + cd docs + bash ./install.sh for w in `find wheelhouse/ -type f -name "*.whl"` ; do poetry install $w ; done - name: Build docs if: (matrix.os == 'ubuntu-22.04') && (github.event_name == 'pull_request' || github.event_name == 'schedule' ) timeout-minutes: 20 - run: cd docs && poetry run bash ./build-docs.sh + run: | + cd docs + poetry run bash ./build-docs.sh publish_to_pypi: From 6f9e3e64c14920c2306f7834e2265e30e2268c63 Mon Sep 17 00:00:00 2001 From: CalMacCQ <93673602+CalMacCQ@users.noreply.github.com> Date: Wed, 2 Oct 2024 10:41:32 +0100 Subject: [PATCH 45/45] try using submodules: true --- .github/workflows/build_and_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 73bdd02b..23dece74 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -28,6 +28,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: '0' + submodules: true - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* +refs/heads/*:refs/remotes/origin/* - name: Set up Python 3.10 uses: actions/setup-python@v5