From bcdee3668d6881f24ecac444354e89ec947c3b1c Mon Sep 17 00:00:00 2001 From: Yang Liu Date: Mon, 20 Feb 2023 21:33:05 -0500 Subject: [PATCH] build structure of read-the-docs --- doc/Makefile | 20 +++ doc/make.bat | 35 +++++ doc/source/api.rst | 7 + doc/source/conf.py | 124 ++++++++++++++++++ doc/source/examples/index.rst | 4 + doc/source/genroutineref.py | 3 + doc/source/getting_started/index.rst | 21 +++ doc/source/images/curent.ico | Bin 0 -> 36637 bytes doc/source/index.rst | 106 +++++++++++++++ doc/source/modeling/index.rst | 7 + doc/{ => source/old}/about.md | 0 doc/{ => source/old}/advanced_usage.md | 0 doc/{ => source/old}/basic_usage.md | 0 doc/{ => source/old}/data_and_models.md | 0 doc/{ => source/old}/img/accuracy_039_1.png | Bin doc/{ => source/old}/img/accuracy_039_2.png | Bin doc/{ => source/old}/img/comp_speed_458.png | Bin doc/{ => source/old}/img/comp_time_039.png | Bin doc/{ => source/old}/img/contingency_458.png | Bin doc/{ => source/old}/img/ssa_benchmarking.png | Bin doc/{ => source/old}/index.md | 0 doc/{ => source/old}/installation.md | 0 doc/{ => source/old}/sas_basics.md | 0 doc/source/release-notes.rst | 21 +++ 24 files changed, 348 insertions(+) create mode 100644 doc/Makefile create mode 100644 doc/make.bat create mode 100644 doc/source/api.rst create mode 100644 doc/source/conf.py create mode 100644 doc/source/examples/index.rst create mode 100644 doc/source/genroutineref.py create mode 100644 doc/source/getting_started/index.rst create mode 100644 doc/source/images/curent.ico create mode 100644 doc/source/index.rst create mode 100644 doc/source/modeling/index.rst rename doc/{ => source/old}/about.md (100%) rename doc/{ => source/old}/advanced_usage.md (100%) rename doc/{ => source/old}/basic_usage.md (100%) rename doc/{ => source/old}/data_and_models.md (100%) rename doc/{ => source/old}/img/accuracy_039_1.png (100%) rename doc/{ => source/old}/img/accuracy_039_2.png (100%) rename doc/{ => source/old}/img/comp_speed_458.png (100%) rename doc/{ => source/old}/img/comp_time_039.png (100%) rename doc/{ => source/old}/img/contingency_458.png (100%) rename doc/{ => source/old}/img/ssa_benchmarking.png (100%) rename doc/{ => source/old}/index.md (100%) rename doc/{ => source/old}/installation.md (100%) rename doc/{ => source/old}/sas_basics.md (100%) create mode 100644 doc/source/release-notes.rst diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/doc/Makefile @@ -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) diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 0000000..061f32f --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/doc/source/api.rst b/doc/source/api.rst new file mode 100644 index 0000000..2e05197 --- /dev/null +++ b/doc/source/api.rst @@ -0,0 +1,7 @@ +.. _api_reference: + +============= +API reference +============= + + diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100644 index 0000000..9056741 --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,124 @@ +# 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 + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.githubpages', + 'sphinx.ext.intersphinx', + 'sphinx.ext.mathjax', + 'sphinx.ext.doctest', + 'sphinx.ext.todo', + 'sphinx.ext.viewcode', + 'sphinx_panels', + 'IPython.sphinxext.ipython_directive', + 'IPython.sphinxext.ipython_console_highlighting', + 'matplotlib.sphinxext.plot_directive', + 'numpydoc', + 'sphinx_copybutton', + 'myst_nb', +] + +templates_path = ['_templates'] +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +exclude_patterns = [] + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" + +# General information about the project. +project = 'AMS' +copyright = '2023, Jinning Wang' +author = 'Jinning Wang' +release = '0.4' + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'pydata_sphinx_theme' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + "use_edit_page_button": True, +} + +html_context = { + "github_url": "https://github.com", + "github_user": "jinningwang", + "github_repo": "ams", + "github_version": "master", + "doc_path": "docs/source", +} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = 'ams' + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +# texinfo_documents = [ +# (master_doc, 'andes', 'ANDES Manual', +# author, 'andes', 'Python Software for Symbolic Power System Modeling and Numerical Analysis', +# 'Miscellaneous'), +# ] + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = { + 'python': ('https://docs.python.org/3/', None), + 'numpy': ('https://docs.scipy.org/doc/numpy/', None), + 'scipy': ('https://docs.scipy.org/doc/scipy/reference/', None), + 'pandas': ('https://pandas.pydata.org/pandas-docs/stable', None), + 'matplotlib': ('https://matplotlib.org', None), +} + +# Favorite icon +html_favicon = 'images/curent.ico' + +# Disable smartquotes to display double dashes correctly +smartquotes = False + +# import and execute model reference generation script +exec(open("genroutineref.py").read()) + +# sphinx-panels shouldn't add bootstrap css since the pydata-sphinx-theme +# already loads it +panels_add_bootstrap_css = False diff --git a/doc/source/examples/index.rst b/doc/source/examples/index.rst new file mode 100644 index 0000000..faed285 --- /dev/null +++ b/doc/source/examples/index.rst @@ -0,0 +1,4 @@ +.. _scripting_examples: + +Examples +======== diff --git a/doc/source/genroutineref.py b/doc/source/genroutineref.py new file mode 100644 index 0000000..05cf809 --- /dev/null +++ b/doc/source/genroutineref.py @@ -0,0 +1,3 @@ +""" +This file is used to generate reStructuredText tables for Routine references. +""" \ No newline at end of file diff --git a/doc/source/getting_started/index.rst b/doc/source/getting_started/index.rst new file mode 100644 index 0000000..65fb479 --- /dev/null +++ b/doc/source/getting_started/index.rst @@ -0,0 +1,21 @@ + +.. raw:: html + + +

AMS

+ +

+ Python Library for Power System Dispatch Modeling and Dispatch-Dynamic Co-Simulation

+ + +.. _getting-started: + +=============== +Getting started +=============== + +.. toctree:: + :maxdepth: 3 + :hidden: diff --git a/doc/source/images/curent.ico b/doc/source/images/curent.ico new file mode 100644 index 0000000000000000000000000000000000000000..cd5da4930c1047696fd2f62f0e102b917596952e GIT binary patch literal 36637 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 Iy&e+#f1BN+nE(I) literal 0 HcmV?d00001 diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 0000000..da4bc7a --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,106 @@ +.. AMS documentation master file, created by + sphinx-quickstart on Thu Jan 26 15:32:32 2023. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +================== +AMS documentation +================== +**Useful Links**: `Source Repository`_ | `Report Issues`_ | `Q&A`_ + +.. _`Source Repository`: https://github.com/jinningwang/ams +.. _`Report Issues`: https://github.com/jinningwang/ams/issues +.. _`Q&A`: https://github.com/jinningwang/ams/discussions +.. _`LTB Repository`: https://github.com/CURENT/ltb2 + +AMS is still under DEVELOPMENT, stay tuned! + +AMS is an open-source packages for dispatch modeling and co-simulation with dynanic. + +AMS is the dispatch simulation engine for the CURENT Largescale Testbed (LTB). +More information about CURENT LTB can be found at the `LTB Repository`_. + +.. panels:: + :card: + intro-card text-center + :column: col-lg-6 col-md-6 col-sm-6 col-xs-12 d-flex + + --- + + Getting started + ^^^^^^^^^^^^^^^ + + New to AMS? Check out the getting started guides. + + +++ + + .. link-button:: getting-started + :type: ref + :text: To the getting started guides + :classes: btn-block btn-secondary stretched-link + + --- + + Examples + ^^^^^^^^ + + The examples of using AMS for power system dispatch study. + + +++ + + .. link-button:: scripting_examples + :type: ref + :text: To the examples + :classes: btn-block btn-secondary stretched-link + + --- + + Model development guide + ^^^^^^^^^^^^^^^^^^^^^^^ + + New dispatch modeling in AMS. + + +++ + + .. link-button:: development + :type: ref + :text: To the development guide + :classes: btn-block btn-secondary stretched-link + --- + + API reference + ^^^^^^^^^^^^^ + + The API reference of AMS. + + +++ + + .. link-button:: api_reference + :type: ref + :text: To the API reference + :classes: btn-block btn-secondary stretched-link + + --- + :column: col-12 p-3 + + Using AMS for Research? + ^^^^^^^^^^^^^^^^^^^^^^^^^ + Please cite our paper [Cui2021]_ if AMS is used in your research for + publication. + + +.. [Cui2021] H. Cui, F. Li and K. Tomsovic, "Hybrid Symbolic-Numeric Framework + for Power System Modeling and Analysis," in IEEE Transactions on Power + Systems, vol. 36, no. 2, pp. 1373-1384, March 2021, doi: + 10.1109/TPWRS.2020.3017019. + + +.. toctree:: + :maxdepth: 3 + :caption: AMS Manual + :hidden: + + getting_started/index + examples/index + modeling/index + release-notes + api diff --git a/doc/source/modeling/index.rst b/doc/source/modeling/index.rst new file mode 100644 index 0000000..7cf3934 --- /dev/null +++ b/doc/source/modeling/index.rst @@ -0,0 +1,7 @@ +.. _development: + +=========== +Development +=========== + +Modeling guide for AMS. \ No newline at end of file diff --git a/doc/about.md b/doc/source/old/about.md similarity index 100% rename from doc/about.md rename to doc/source/old/about.md diff --git a/doc/advanced_usage.md b/doc/source/old/advanced_usage.md similarity index 100% rename from doc/advanced_usage.md rename to doc/source/old/advanced_usage.md diff --git a/doc/basic_usage.md b/doc/source/old/basic_usage.md similarity index 100% rename from doc/basic_usage.md rename to doc/source/old/basic_usage.md diff --git a/doc/data_and_models.md b/doc/source/old/data_and_models.md similarity index 100% rename from doc/data_and_models.md rename to doc/source/old/data_and_models.md diff --git a/doc/img/accuracy_039_1.png b/doc/source/old/img/accuracy_039_1.png similarity index 100% rename from doc/img/accuracy_039_1.png rename to doc/source/old/img/accuracy_039_1.png diff --git a/doc/img/accuracy_039_2.png b/doc/source/old/img/accuracy_039_2.png similarity index 100% rename from doc/img/accuracy_039_2.png rename to doc/source/old/img/accuracy_039_2.png diff --git a/doc/img/comp_speed_458.png b/doc/source/old/img/comp_speed_458.png similarity index 100% rename from doc/img/comp_speed_458.png rename to doc/source/old/img/comp_speed_458.png diff --git a/doc/img/comp_time_039.png b/doc/source/old/img/comp_time_039.png similarity index 100% rename from doc/img/comp_time_039.png rename to doc/source/old/img/comp_time_039.png diff --git a/doc/img/contingency_458.png b/doc/source/old/img/contingency_458.png similarity index 100% rename from doc/img/contingency_458.png rename to doc/source/old/img/contingency_458.png diff --git a/doc/img/ssa_benchmarking.png b/doc/source/old/img/ssa_benchmarking.png similarity index 100% rename from doc/img/ssa_benchmarking.png rename to doc/source/old/img/ssa_benchmarking.png diff --git a/doc/index.md b/doc/source/old/index.md similarity index 100% rename from doc/index.md rename to doc/source/old/index.md diff --git a/doc/installation.md b/doc/source/old/installation.md similarity index 100% rename from doc/installation.md rename to doc/source/old/installation.md diff --git a/doc/sas_basics.md b/doc/source/old/sas_basics.md similarity index 100% rename from doc/sas_basics.md rename to doc/source/old/sas_basics.md diff --git a/doc/source/release-notes.rst b/doc/source/release-notes.rst new file mode 100644 index 0000000..12a4e54 --- /dev/null +++ b/doc/source/release-notes.rst @@ -0,0 +1,21 @@ +.. _ReleaseNotes: + +============= +Release notes +============= + +The APIs before v3.0.0 are in beta and may change without prior notice. + +Pre-v1.0.0 +========== + +v0.5 (2023-02-17) +------------------- + +- Base System setup +- Development preparation + +v0.4 (2023-01) +------------------- + +This release outlines the package. \ No newline at end of file