diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml
index 6ace7a6..8e7c9c0 100644
--- a/.github/workflows/documentation.yml
+++ b/.github/workflows/documentation.yml
@@ -16,12 +16,12 @@ jobs:
pip install sphinx sphinx_rtd_theme myst_parser
- name: Sphinx build
run: |
- sphinx-build doc _build
+ sphinx-build docs docs/_build
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
with:
publish_branch: gh-pages
github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: _build/
- force_orphan: true
\ No newline at end of file
+ publish_dir: docs/_build/html/
+ force_orphan: true
diff --git a/.gitignore b/.gitignore
index 2afde06..268c176 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,9 +3,11 @@
.DS_Store
dist/
build/
+_build/
+docs/_build/
.mypy_cache/
.ropeproject/
.vscode/
venv/
test.py
-*.egg-info
\ No newline at end of file
+*.egg-info
diff --git a/docs/Makefile b/docs/Makefile
index 430f5d6..7a269e3 100644
--- a/docs/Makefile
+++ b/docs/Makefile
@@ -5,7 +5,7 @@
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
-BUILDDIR = _build
+BUILDDIR = docs/_build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
diff --git a/docs/README.rst b/docs/README.rst
index 08a07b4..0f9f765 100644
--- a/docs/README.rst
+++ b/docs/README.rst
@@ -26,10 +26,9 @@ Getting started
from monday import MondayClient
-
monday = MondayClient('your token')
- monday.items.create_item(board_id='12345678', group_id='today', item_name='Do a thing')
+ monday.items.create_item(board_id='12345678', group_id='today', item_name='Do a thing')
Available methods
^^^^^^^^^^^^^^^^^
@@ -119,12 +118,21 @@ Boards Resource (monday.boards)
as their ids, types, and settings. Accepts a comma separated list of
board ids.
-- ``fetch_items_by_board_id([board_ids], **kwargs)`` - Get all items on
- a board(s). Accepts a comma separated list of board ids.
+- ``fetch_items_by_board_id([board_ids], **kwargs)`` - Get items on
+ a board(s) with manual pagination. Accepts a comma separated list of
+ board ids.
- - ``limit`` - The number of rows returned (*int*. no default).
+ - ``limit`` - The number of rows returned (*int*. default 500).
- ``page`` - The page number returned, should you implement
- pagination(*int*. no default).
+ pagination (*int*. no default).
+ - ``cursor`` - Token that can be used for pagination to ask for
+ next page.
+
+- ``fetch_all_items_by_board_id([board_ids], **kwargs)`` - Get all items on
+ a board(s) without manual pagination. Accepts a comma separated list of
+ board ids.
+
+ - ``limit`` - The number of rows returned (*int*. default 500).
- ``create_board(board_name, board_kind, workspace_id)`` - Create board
with the given name and kind by (and optional) workspace id.
diff --git a/docs/_build/doctrees/README.doctree b/docs/_build/doctrees/README.doctree
deleted file mode 100644
index e071c45..0000000
Binary files a/docs/_build/doctrees/README.doctree and /dev/null differ
diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
deleted file mode 100644
index 4b67a17..0000000
Binary files a/docs/_build/doctrees/environment.pickle and /dev/null differ
diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
deleted file mode 100644
index 08f9522..0000000
Binary files a/docs/_build/doctrees/index.doctree and /dev/null differ
diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo
deleted file mode 100644
index e2524f2..0000000
--- a/docs/_build/html/.buildinfo
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: b2a67ff9dd4e04f2139d366f3d4d4e28
-tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/_build/html/.buildinfo.bak b/docs/_build/html/.buildinfo.bak
deleted file mode 100644
index 58accb9..0000000
--- a/docs/_build/html/.buildinfo.bak
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sphinx build info version 1
-# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 69b590b155518f82f13020d8dcdeae58
-tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/_build/html/.doctrees/README.doctree b/docs/_build/html/.doctrees/README.doctree
deleted file mode 100644
index 8413010..0000000
Binary files a/docs/_build/html/.doctrees/README.doctree and /dev/null differ
diff --git a/docs/_build/html/.doctrees/environment.pickle b/docs/_build/html/.doctrees/environment.pickle
deleted file mode 100644
index 3dede57..0000000
Binary files a/docs/_build/html/.doctrees/environment.pickle and /dev/null differ
diff --git a/docs/_build/html/.doctrees/index.doctree b/docs/_build/html/.doctrees/index.doctree
deleted file mode 100644
index 36b81b3..0000000
Binary files a/docs/_build/html/.doctrees/index.doctree and /dev/null differ
diff --git a/docs/_build/html/README.html b/docs/_build/html/README.html
deleted file mode 100644
index f5e8ef7..0000000
--- a/docs/_build/html/README.html
+++ /dev/null
@@ -1,308 +0,0 @@
-
-
-
-
-
-
-
- monday — monday documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-monday
- A monday.com Python Client Library
-For an overview of the Monday API, click
-here .
-
-
-Getting started
-pip install monday
-monday is very simple to use – take a look at the below example:
-from monday import MondayClient
-
-
-monday = MondayClient ( 'your token' )
-
-monday . items . create_item ( board_id = '12345678' , group_id = 'today' , item_name = 'Do a thing' )
-
-
-
-
-
-Items Resource (monday.items)
-
-create_item(board_id, group_id, item_name, column_values=None, create_labels_if_missing=False)
-- Create an item on a board in the given group with name item_name.
-create_subitem(parent_item_id, subitem_name, column_values=None, create_labels_if_missing=False)
-- Create a subitem underneath a given parent item. Monday API will
-return an error if the board you’re trying to add to does not have a
-subitems column/at least one subitem created.
-fetch_items_by_column_value(board_id, column_id, value) - Fetch
-items on a board by column value. The value argument accepts a list.
-fetch_items_by_id(board_id, [ids]) - Fetch items from any board
-by ids, passed in as an array of integers.
-change_item_value(board_id, item_id, column_id, value) - Change
-column values for item on a board. Check Monday’s API for which
-columns are supported.
-change_multiple_column_values(board_id, item_id, column_values, create_labels_if_missing=False)
-- Change multiple column values for item on a board. Column values
-should be passed in as JSON. Check Monday’s API for which columns are
-supported.
-add_file_to_column(item_id, column_id, file) - Upload a file to a
-file type column specified by column_id. Monday limits uploads to
-500MB in size.
-move_item_to_group(item_id, group_id) - Move the item to a group
-within the same board.
-archive_item_by_id(item_id) - Archive the item by item_id.
-delete_item_by_id(item_id) - Delete the item by item_id.
-
-
-
-Updates Resource (monday.updates)
-
-create_update(item_id, update_body) - Create an update attached
-to a given item.
-fetch_updates(limit, page=None) - Fetch a certain number of
-updates, starting from the given page. Default is 1
-fetch_updates_for_item(board_id, item_id, limit) - Fetch all
-updates for a certain item on a certain board up to a certain limit,
-set by you. Default is 100 updates
-
-
-
-
-Boards Resource (monday.boards)
-
-fetch_boards(**kwargs) - Fetch boards associated with an account.
-Returns boards and their groups, tags, and columns. Accepts keyword
-arguments:
-
-limit - The number of boards returned (int . Default is 25).
-page - The page number returned, should you implement
-pagination(int . Starts at 1).
-ids - A list of the unique board identifier(s) (List[int] ).
-board_kind - The board’s kind (BoardKind . public / private /
-share).
-state - The state of the board (BoardState . all / active /
-archived / deleted. Default is active).
-order_by - The order in which to retrieve your boards
-(BoardsOrderBy . created_at / used_at).
-
-
-fetch_boards_by_id([board_ids]) - Since Monday does not allow
-querying boards by name, you can use fetch_boards to get a list
-of boards, and then fetch_boards_by_id to get more detailed info
-about the groups and columns on that board. Accepts a comma separated
-list of board ids.
-fetch_columns_by_board_id([board_ids]) - Get all columns, as well
-as their ids, types, and settings. Accepts a comma separated list of
-board ids.
-fetch_items_by_board_id([board_ids], **kwargs) - Get all items on
-a board(s). Accepts a comma separated list of board ids.
-
-limit - The number of rows returned (int . no default).
-page - The page number returned, should you implement
-pagination(int . no default).
-
-
-create_board(board_name, board_kind, workspace_id) - Create board
-with the given name and kind by (and optional) workspace id.
-
-
-
-Users Resource (monday.users)
-
-
-
-Workspaces Resource (monday.workspaces)
-
-get_workspaces() - Get all workspaces.
-create_workspace(name, kind, description) - Create workspace with
-the given name, kind and description.
-add_users_to_workspace(workspace_id, [user_ids], kind) - Add
-given users of the given kind to the given workspace.
-delete_users_from_workspace(workspace_id, [user_ids]) - Delete
-given users from the given workspace.
-add_teams_to_workspace(workspace_id, [team_ids]) - Add given
-teams to the given workspace.
-delete_teams_from_workspace(workspace_id, [team_ids]) - Delete
-given teams from the given workspace.
-
-
-
-Groups Resource (monday.groups)
-
-get_groups_by_board([board_ids]) - Get all groups associated with
-a certain board or boards. Accepts a single id or a comma separated
-list of ids.
-get_items_by_group(board_id, group_id) - Get all items that are
-members of a given group.
-create_group(board_id, group_name) - Create a group on a given
-board.
-duplicate_group(board_id, group_id) - Duplicate a group and all
-its items on a given board.
-archive_group(board_id, group_id) - Archive a group on a given
-board.
-delete_group(board_id, group_id) - Delete a group on a given
-board.
-
-
-
-Notifications Resource (monday.notifications)
-
-create_notification(user_id, target_id, text, target_type) - The
-create_notification mutation allows to trigger a notification within
-the platform (will also send out an email if the recipient’s email
-preferences are set up accordingly). ### Additional Resources and
-Code Samples
-Read and format all of the items on a
-board
-
-
-Contributors
-Lemi Boyce💻 🐛 🚧
-Tony Morello💻
-chdastolfo💻 🐛 📖 🚧
-Lucio Mitsuru Seki💻
-YOGESH NILE💻
-spencersamuel7💻
-Alb. C💻
-pevner-p2💻
-Taylor Cochran💻
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/_build/html/_sources/README.rst.txt b/docs/_build/html/_sources/README.rst.txt
deleted file mode 100644
index 08a07b4..0000000
--- a/docs/_build/html/_sources/README.rst.txt
+++ /dev/null
@@ -1,369 +0,0 @@
-monday
-======
-
-.. raw:: html
-
-
-
-|All Contributors| A monday.com Python Client Library
-
-For an overview of the Monday API, `click
-here `__.
-
-Requirements
-^^^^^^^^^^^^
-
-- Python >= 3.11
-
-Getting started
-^^^^^^^^^^^^^^^
-
-``pip install monday``
-
-``monday`` is very simple to use – take a look at the below example:
-
-.. code:: python
-
- from monday import MondayClient
-
-
- monday = MondayClient('your token')
-
- monday.items.create_item(board_id='12345678', group_id='today', item_name='Do a thing')
-
-Available methods
-^^^^^^^^^^^^^^^^^
-
-Items Resource (monday.items)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``create_item(board_id, group_id, item_name, column_values=None, create_labels_if_missing=False)``
- - Create an item on a board in the given group with name item_name.
-
-- ``create_subitem(parent_item_id, subitem_name, column_values=None, create_labels_if_missing=False)``
- - Create a subitem underneath a given parent item. Monday API will
- return an error if the board you’re trying to add to does not have a
- subitems column/at least one subitem created.
-
-- ``fetch_items_by_column_value(board_id, column_id, value)`` - Fetch
- items on a board by column value. The value argument accepts a list.
-
-- ``fetch_items_by_id(board_id, [ids])`` - Fetch items from any board
- by ids, passed in as an array of integers.
-
-- ``change_item_value(board_id, item_id, column_id, value)`` - Change
- column values for item on a board. Check Monday’s API for which
- columns are supported.
-
-- ``change_multiple_column_values(board_id, item_id, column_values, create_labels_if_missing=False)``
- - Change multiple column values for item on a board. Column values
- should be passed in as JSON. Check Monday’s API for which columns are
- supported.
-
-- ``add_file_to_column(item_id, column_id, file)`` - Upload a file to a
- file type column specified by column_id. Monday limits uploads to
- 500MB in size.
-
-- ``move_item_to_group(item_id, group_id)`` - Move the item to a group
- within the same board.
-
-- ``archive_item_by_id(item_id)`` - Archive the item by item_id.
-
-- ``delete_item_by_id(item_id)`` - Delete the item by item_id.
-
-Updates Resource (monday.updates)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``create_update(item_id, update_body)`` - Create an update attached
- to a given item.
-
-- ``fetch_updates(limit, page=None)`` - Fetch a certain number of
- updates, starting from the given page. Default is 1
-
-- ``fetch_updates_for_item(board_id, item_id, limit)`` - Fetch all
- updates for a certain item on a certain board up to a certain limit,
- set by you. Default is 100 updates
-
-Tags Resource (monday.tags)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``fetch_tags(tag_ids=None)`` - Fetch all tags associated with an
- account. Optionally takes a list containing tag ids (if you know
- them). Returns IDs, names, and colors.
-
-Boards Resource (monday.boards)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``fetch_boards(**kwargs)`` - Fetch boards associated with an account.
- Returns boards and their groups, tags, and columns. Accepts keyword
- arguments:
-
- - ``limit`` - The number of boards returned (*int*. Default is 25).
- - ``page`` - The page number returned, should you implement
- pagination(*int*. Starts at 1).
- - ``ids`` - A list of the unique board identifier(s) (*List[int]*).
- - ``board_kind`` - The board’s kind (*BoardKind*. public / private /
- share).
- - ``state`` - The state of the board (*BoardState*. all / active /
- archived / deleted. Default is active).
- - ``order_by`` - The order in which to retrieve your boards
- (*BoardsOrderBy*. created_at / used_at).
-
-- ``fetch_boards_by_id([board_ids])`` - Since Monday does not allow
- querying boards by name, you can use ``fetch_boards`` to get a list
- of boards, and then ``fetch_boards_by_id`` to get more detailed info
- about the groups and columns on that board. Accepts a comma separated
- list of board ids.
-
-- ``fetch_columns_by_board_id([board_ids])`` - Get all columns, as well
- as their ids, types, and settings. Accepts a comma separated list of
- board ids.
-
-- ``fetch_items_by_board_id([board_ids], **kwargs)`` - Get all items on
- a board(s). Accepts a comma separated list of board ids.
-
- - ``limit`` - The number of rows returned (*int*. no default).
- - ``page`` - The page number returned, should you implement
- pagination(*int*. no default).
-
-- ``create_board(board_name, board_kind, workspace_id)`` - Create board
- with the given name and kind by (and optional) workspace id.
-
-Users Resource (monday.users)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``fetch_users(**kwargs)`` - Fetch user information associated with an
- account. See Monday API docs for a list of accepted keyword
- arguments.
-
-Workspaces Resource (monday.workspaces)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``get_workspaces()`` - Get all workspaces.
-
-- ``create_workspace(name, kind, description)`` - Create workspace with
- the given name, kind and description.
-
-- ``add_users_to_workspace(workspace_id, [user_ids], kind)`` - Add
- given users of the given kind to the given workspace.
-
-- ``delete_users_from_workspace(workspace_id, [user_ids])`` - Delete
- given users from the given workspace.
-
-- ``add_teams_to_workspace(workspace_id, [team_ids])`` - Add given
- teams to the given workspace.
-
-- ``delete_teams_from_workspace(workspace_id, [team_ids])`` - Delete
- given teams from the given workspace.
-
-Groups Resource (monday.groups)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``get_groups_by_board([board_ids])`` - Get all groups associated with
- a certain board or boards. Accepts a single id or a comma separated
- list of ids.
-
-- ``get_items_by_group(board_id, group_id)`` - Get all items that are
- members of a given group.
-
-- ``create_group(board_id, group_name)`` - Create a group on a given
- board.
-
-- ``duplicate_group(board_id, group_id)`` - Duplicate a group and all
- its items on a given board.
-
-- ``archive_group(board_id, group_id)`` - Archive a group on a given
- board.
-
-- ``delete_group(board_id, group_id)`` - Delete a group on a given
- board.
-
-Notifications Resource (monday.notifications)
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-- ``create_notification(user_id, target_id, text, target_type)`` - The
- create_notification mutation allows to trigger a notification within
- the platform (will also send out an email if the recipient’s email
- preferences are set up accordingly). ### Additional Resources and
- Code Samples
-
-- `Read and format all of the items on a
- board `__
-
-Contributors
-------------
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Lemi Boyce💻 🐛 🚧
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Tony Morello💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-chdastolfo💻 🐛 📖 🚧
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Lucio Mitsuru Seki💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-YOGESH NILE💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-spencersamuel7💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Alb. C💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-pevner-p2💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Taylor Cochran💻
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-.. raw:: html
-
-
-
-Bug Reports
-~~~~~~~~~~~
-
-TBD
-
-.. |All Contributors| image:: https://img.shields.io/badge/all_contributors-9-orange.svg?style=flat-square
- :target: #contributors-
-
diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt
deleted file mode 100644
index baef355..0000000
--- a/docs/_build/html/_sources/index.rst.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-.. monday documentation master file, created by
- sphinx-quickstart on Fri Jan 6 11:43:09 2023.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-Welcome to monday's documentation!
-==================================
-
-.. toctree::
- :maxdepth: 4
- :caption: Contents:
-
- README
-
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
\ No newline at end of file
diff --git a/docs/_build/html/_static/alabaster.css b/docs/_build/html/_static/alabaster.css
deleted file mode 100644
index 7e75bf8..0000000
--- a/docs/_build/html/_static/alabaster.css
+++ /dev/null
@@ -1,663 +0,0 @@
-/* -- page layout ----------------------------------------------------------- */
-
-body {
- font-family: Georgia, serif;
- font-size: 17px;
- background-color: #fff;
- color: #000;
- margin: 0;
- padding: 0;
-}
-
-
-div.document {
- width: 940px;
- margin: 30px auto 0 auto;
-}
-
-div.documentwrapper {
- float: left;
- width: 100%;
-}
-
-div.bodywrapper {
- margin: 0 0 0 220px;
-}
-
-div.sphinxsidebar {
- width: 220px;
- font-size: 14px;
- line-height: 1.5;
-}
-
-hr {
- border: 1px solid #B1B4B6;
-}
-
-div.body {
- background-color: #fff;
- color: #3E4349;
- padding: 0 30px 0 30px;
-}
-
-div.body > .section {
- text-align: left;
-}
-
-div.footer {
- width: 940px;
- margin: 20px auto 30px auto;
- font-size: 14px;
- color: #888;
- text-align: right;
-}
-
-div.footer a {
- color: #888;
-}
-
-p.caption {
- font-family: inherit;
- font-size: inherit;
-}
-
-
-div.relations {
- display: none;
-}
-
-
-div.sphinxsidebar {
- max-height: 100%;
- overflow-y: auto;
-}
-
-div.sphinxsidebar a {
- color: #444;
- text-decoration: none;
- border-bottom: 1px dotted #999;
-}
-
-div.sphinxsidebar a:hover {
- border-bottom: 1px solid #999;
-}
-
-div.sphinxsidebarwrapper {
- padding: 18px 10px;
-}
-
-div.sphinxsidebarwrapper p.logo {
- padding: 0;
- margin: -10px 0 0 0px;
- text-align: center;
-}
-
-div.sphinxsidebarwrapper h1.logo {
- margin-top: -10px;
- text-align: center;
- margin-bottom: 5px;
- text-align: left;
-}
-
-div.sphinxsidebarwrapper h1.logo-name {
- margin-top: 0px;
-}
-
-div.sphinxsidebarwrapper p.blurb {
- margin-top: 0;
- font-style: normal;
-}
-
-div.sphinxsidebar h3,
-div.sphinxsidebar h4 {
- font-family: Georgia, serif;
- color: #444;
- font-size: 24px;
- font-weight: normal;
- margin: 0 0 5px 0;
- padding: 0;
-}
-
-div.sphinxsidebar h4 {
- font-size: 20px;
-}
-
-div.sphinxsidebar h3 a {
- color: #444;
-}
-
-div.sphinxsidebar p.logo a,
-div.sphinxsidebar h3 a,
-div.sphinxsidebar p.logo a:hover,
-div.sphinxsidebar h3 a:hover {
- border: none;
-}
-
-div.sphinxsidebar p {
- color: #555;
- margin: 10px 0;
-}
-
-div.sphinxsidebar ul {
- margin: 10px 0;
- padding: 0;
- color: #000;
-}
-
-div.sphinxsidebar ul li.toctree-l1 > a {
- font-size: 120%;
-}
-
-div.sphinxsidebar ul li.toctree-l2 > a {
- font-size: 110%;
-}
-
-div.sphinxsidebar input {
- border: 1px solid #CCC;
- font-family: Georgia, serif;
- font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox {
- margin: 1em 0;
-}
-
-div.sphinxsidebar .search > div {
- display: table-cell;
-}
-
-div.sphinxsidebar hr {
- border: none;
- height: 1px;
- color: #AAA;
- background: #AAA;
-
- text-align: left;
- margin-left: 0;
- width: 50%;
-}
-
-div.sphinxsidebar .badge {
- border-bottom: none;
-}
-
-div.sphinxsidebar .badge:hover {
- border-bottom: none;
-}
-
-/* To address an issue with donation coming after search */
-div.sphinxsidebar h3.donation {
- margin-top: 10px;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-a {
- color: #004B6B;
- text-decoration: underline;
-}
-
-a:hover {
- color: #6D4100;
- text-decoration: underline;
-}
-
-div.body h1,
-div.body h2,
-div.body h3,
-div.body h4,
-div.body h5,
-div.body h6 {
- font-family: Georgia, serif;
- font-weight: normal;
- margin: 30px 0px 10px 0px;
- padding: 0;
-}
-
-div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
-div.body h2 { font-size: 180%; }
-div.body h3 { font-size: 150%; }
-div.body h4 { font-size: 130%; }
-div.body h5 { font-size: 100%; }
-div.body h6 { font-size: 100%; }
-
-a.headerlink {
- color: #DDD;
- padding: 0 4px;
- text-decoration: none;
-}
-
-a.headerlink:hover {
- color: #444;
- background: #EAEAEA;
-}
-
-div.body p, div.body dd, div.body li {
- line-height: 1.4em;
-}
-
-div.admonition {
- margin: 20px 0px;
- padding: 10px 30px;
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
- background-color: #FBFBFB;
- border-bottom: 1px solid #fafafa;
-}
-
-div.admonition p.admonition-title {
- font-family: Georgia, serif;
- font-weight: normal;
- font-size: 24px;
- margin: 0 0 10px 0;
- padding: 0;
- line-height: 1;
-}
-
-div.admonition p.last {
- margin-bottom: 0;
-}
-
-dt:target, .highlight {
- background: #FAF3E8;
-}
-
-div.warning {
- background-color: #FCC;
- border: 1px solid #FAA;
-}
-
-div.danger {
- background-color: #FCC;
- border: 1px solid #FAA;
- -moz-box-shadow: 2px 2px 4px #D52C2C;
- -webkit-box-shadow: 2px 2px 4px #D52C2C;
- box-shadow: 2px 2px 4px #D52C2C;
-}
-
-div.error {
- background-color: #FCC;
- border: 1px solid #FAA;
- -moz-box-shadow: 2px 2px 4px #D52C2C;
- -webkit-box-shadow: 2px 2px 4px #D52C2C;
- box-shadow: 2px 2px 4px #D52C2C;
-}
-
-div.caution {
- background-color: #FCC;
- border: 1px solid #FAA;
-}
-
-div.attention {
- background-color: #FCC;
- border: 1px solid #FAA;
-}
-
-div.important {
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.note {
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.tip {
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.hint {
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.seealso {
- background-color: #EEE;
- border: 1px solid #CCC;
-}
-
-div.topic {
- background-color: #EEE;
-}
-
-p.admonition-title {
- display: inline;
-}
-
-p.admonition-title:after {
- content: ":";
-}
-
-pre, tt, code {
- font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
- font-size: 0.9em;
-}
-
-.hll {
- background-color: #FFC;
- margin: 0 -12px;
- padding: 0 12px;
- display: block;
-}
-
-img.screenshot {
-}
-
-tt.descname, tt.descclassname, code.descname, code.descclassname {
- font-size: 0.95em;
-}
-
-tt.descname, code.descname {
- padding-right: 0.08em;
-}
-
-img.screenshot {
- -moz-box-shadow: 2px 2px 4px #EEE;
- -webkit-box-shadow: 2px 2px 4px #EEE;
- box-shadow: 2px 2px 4px #EEE;
-}
-
-table.docutils {
- border: 1px solid #888;
- -moz-box-shadow: 2px 2px 4px #EEE;
- -webkit-box-shadow: 2px 2px 4px #EEE;
- box-shadow: 2px 2px 4px #EEE;
-}
-
-table.docutils td, table.docutils th {
- border: 1px solid #888;
- padding: 0.25em 0.7em;
-}
-
-table.field-list, table.footnote {
- border: none;
- -moz-box-shadow: none;
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-
-table.footnote {
- margin: 15px 0;
- width: 100%;
- border: 1px solid #EEE;
- background: #FDFDFD;
- font-size: 0.9em;
-}
-
-table.footnote + table.footnote {
- margin-top: -15px;
- border-top: none;
-}
-
-table.field-list th {
- padding: 0 0.8em 0 0;
-}
-
-table.field-list td {
- padding: 0;
-}
-
-table.field-list p {
- margin-bottom: 0.8em;
-}
-
-/* Cloned from
- * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
- */
-.field-name {
- -moz-hyphens: manual;
- -ms-hyphens: manual;
- -webkit-hyphens: manual;
- hyphens: manual;
-}
-
-table.footnote td.label {
- width: .1px;
- padding: 0.3em 0 0.3em 0.5em;
-}
-
-table.footnote td {
- padding: 0.3em 0.5em;
-}
-
-dl {
- margin-left: 0;
- margin-right: 0;
- margin-top: 0;
- padding: 0;
-}
-
-dl dd {
- margin-left: 30px;
-}
-
-blockquote {
- margin: 0 0 0 30px;
- padding: 0;
-}
-
-ul, ol {
- /* Matches the 30px from the narrow-screen "li > ul" selector below */
- margin: 10px 0 10px 30px;
- padding: 0;
-}
-
-pre {
- background: unset;
- padding: 7px 30px;
- margin: 15px 0px;
- line-height: 1.3em;
-}
-
-div.viewcode-block:target {
- background: #ffd;
-}
-
-dl pre, blockquote pre, li pre {
- margin-left: 0;
- padding-left: 30px;
-}
-
-tt, code {
- background-color: #ecf0f3;
- color: #222;
- /* padding: 1px 2px; */
-}
-
-tt.xref, code.xref, a tt {
- background-color: #FBFBFB;
- border-bottom: 1px solid #fff;
-}
-
-a.reference {
- text-decoration: none;
- border-bottom: 1px dotted #004B6B;
-}
-
-a.reference:hover {
- border-bottom: 1px solid #6D4100;
-}
-
-/* Don't put an underline on images */
-a.image-reference, a.image-reference:hover {
- border-bottom: none;
-}
-
-a.footnote-reference {
- text-decoration: none;
- font-size: 0.7em;
- vertical-align: top;
- border-bottom: 1px dotted #004B6B;
-}
-
-a.footnote-reference:hover {
- border-bottom: 1px solid #6D4100;
-}
-
-a:hover tt, a:hover code {
- background: #EEE;
-}
-
-@media screen and (max-width: 940px) {
-
- body {
- margin: 0;
- padding: 20px 30px;
- }
-
- div.documentwrapper {
- float: none;
- background: #fff;
- margin-left: 0;
- margin-top: 0;
- margin-right: 0;
- margin-bottom: 0;
- }
-
- div.sphinxsidebar {
- display: block;
- float: none;
- width: unset;
- margin: 50px -30px -20px -30px;
- padding: 10px 20px;
- background: #333;
- color: #FFF;
- }
-
- div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
- div.sphinxsidebar h3 a {
- color: #fff;
- }
-
- div.sphinxsidebar a {
- color: #AAA;
- }
-
- div.sphinxsidebar p.logo {
- display: none;
- }
-
- div.document {
- width: 100%;
- margin: 0;
- }
-
- div.footer {
- display: none;
- }
-
- div.bodywrapper {
- margin: 0;
- }
-
- div.body {
- min-height: 0;
- min-width: auto; /* fixes width on small screens, breaks .hll */
- padding: 0;
- }
-
- .hll {
- /* "fixes" the breakage */
- width: max-content;
- }
-
- .rtd_doc_footer {
- display: none;
- }
-
- .document {
- width: auto;
- }
-
- .footer {
- width: auto;
- }
-
- .github {
- display: none;
- }
-
- ul {
- margin-left: 0;
- }
-
- li > ul {
- /* Matches the 30px from the "ul, ol" selector above */
- margin-left: 30px;
- }
-}
-
-
-/* misc. */
-
-.revsys-inline {
- display: none!important;
-}
-
-/* Hide ugly table cell borders in ..bibliography:: directive output */
-table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
- border: none;
- /* Below needed in some edge cases; if not applied, bottom shadows appear */
- -moz-box-shadow: none;
- -webkit-box-shadow: none;
- box-shadow: none;
-}
-
-
-/* relbar */
-
-.related {
- line-height: 30px;
- width: 100%;
- font-size: 0.9rem;
-}
-
-.related.top {
- border-bottom: 1px solid #EEE;
- margin-bottom: 20px;
-}
-
-.related.bottom {
- border-top: 1px solid #EEE;
-}
-
-.related ul {
- padding: 0;
- margin: 0;
- list-style: none;
-}
-
-.related li {
- display: inline;
-}
-
-nav#rellinks {
- float: right;
-}
-
-nav#rellinks li+li:before {
- content: "|";
-}
-
-nav#breadcrumbs li+li:before {
- content: "\00BB";
-}
-
-/* Hide certain items when printing */
-@media print {
- div.related {
- display: none;
- }
-}
-
-img.github {
- position: absolute;
- top: 0;
- border: 0;
- right: 0;
-}
\ No newline at end of file
diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css
deleted file mode 100644
index 0028826..0000000
--- a/docs/_build/html/_static/basic.css
+++ /dev/null
@@ -1,906 +0,0 @@
-/*
- * Sphinx stylesheet -- basic theme.
- */
-
-/* -- main layout ----------------------------------------------------------- */
-
-div.clearer {
- clear: both;
-}
-
-div.section::after {
- display: block;
- content: '';
- clear: left;
-}
-
-/* -- relbar ---------------------------------------------------------------- */
-
-div.related {
- width: 100%;
- font-size: 90%;
-}
-
-div.related h3 {
- display: none;
-}
-
-div.related ul {
- margin: 0;
- padding: 0 0 0 10px;
- list-style: none;
-}
-
-div.related li {
- display: inline;
-}
-
-div.related li.right {
- float: right;
- margin-right: 5px;
-}
-
-/* -- sidebar --------------------------------------------------------------- */
-
-div.sphinxsidebarwrapper {
- padding: 10px 5px 0 10px;
-}
-
-div.sphinxsidebar {
- float: left;
- width: 230px;
- margin-left: -100%;
- font-size: 90%;
- word-wrap: break-word;
- overflow-wrap : break-word;
-}
-
-div.sphinxsidebar ul {
- list-style: none;
-}
-
-div.sphinxsidebar ul ul,
-div.sphinxsidebar ul.want-points {
- margin-left: 20px;
- list-style: square;
-}
-
-div.sphinxsidebar ul ul {
- margin-top: 0;
- margin-bottom: 0;
-}
-
-div.sphinxsidebar form {
- margin-top: 10px;
-}
-
-div.sphinxsidebar input {
- border: 1px solid #98dbcc;
- font-family: sans-serif;
- font-size: 1em;
-}
-
-div.sphinxsidebar #searchbox form.search {
- overflow: hidden;
-}
-
-div.sphinxsidebar #searchbox input[type="text"] {
- float: left;
- width: 80%;
- padding: 0.25em;
- box-sizing: border-box;
-}
-
-div.sphinxsidebar #searchbox input[type="submit"] {
- float: left;
- width: 20%;
- border-left: none;
- padding: 0.25em;
- box-sizing: border-box;
-}
-
-
-img {
- border: 0;
- max-width: 100%;
-}
-
-/* -- search page ----------------------------------------------------------- */
-
-ul.search {
- margin-top: 10px;
-}
-
-ul.search li {
- padding: 5px 0;
-}
-
-ul.search li a {
- font-weight: bold;
-}
-
-ul.search li p.context {
- color: #888;
- margin: 2px 0 0 30px;
- text-align: left;
-}
-
-ul.keywordmatches li.goodmatch a {
- font-weight: bold;
-}
-
-/* -- index page ------------------------------------------------------------ */
-
-table.contentstable {
- width: 90%;
- margin-left: auto;
- margin-right: auto;
-}
-
-table.contentstable p.biglink {
- line-height: 150%;
-}
-
-a.biglink {
- font-size: 1.3em;
-}
-
-span.linkdescr {
- font-style: italic;
- padding-top: 5px;
- font-size: 90%;
-}
-
-/* -- general index --------------------------------------------------------- */
-
-table.indextable {
- width: 100%;
-}
-
-table.indextable td {
- text-align: left;
- vertical-align: top;
-}
-
-table.indextable ul {
- margin-top: 0;
- margin-bottom: 0;
- list-style-type: none;
-}
-
-table.indextable > tbody > tr > td > ul {
- padding-left: 0em;
-}
-
-table.indextable tr.pcap {
- height: 10px;
-}
-
-table.indextable tr.cap {
- margin-top: 10px;
- background-color: #f2f2f2;
-}
-
-img.toggler {
- margin-right: 3px;
- margin-top: 3px;
- cursor: pointer;
-}
-
-div.modindex-jumpbox {
- border-top: 1px solid #ddd;
- border-bottom: 1px solid #ddd;
- margin: 1em 0 1em 0;
- padding: 0.4em;
-}
-
-div.genindex-jumpbox {
- border-top: 1px solid #ddd;
- border-bottom: 1px solid #ddd;
- margin: 1em 0 1em 0;
- padding: 0.4em;
-}
-
-/* -- domain module index --------------------------------------------------- */
-
-table.modindextable td {
- padding: 2px;
- border-collapse: collapse;
-}
-
-/* -- general body styles --------------------------------------------------- */
-
-div.body {
- min-width: inherit;
- max-width: 800px;
-}
-
-div.body p, div.body dd, div.body li, div.body blockquote {
- -moz-hyphens: auto;
- -ms-hyphens: auto;
- -webkit-hyphens: auto;
- hyphens: auto;
-}
-
-a.headerlink {
- visibility: hidden;
-}
-
-a:visited {
- color: #551A8B;
-}
-
-h1:hover > a.headerlink,
-h2:hover > a.headerlink,
-h3:hover > a.headerlink,
-h4:hover > a.headerlink,
-h5:hover > a.headerlink,
-h6:hover > a.headerlink,
-dt:hover > a.headerlink,
-caption:hover > a.headerlink,
-p.caption:hover > a.headerlink,
-div.code-block-caption:hover > a.headerlink {
- visibility: visible;
-}
-
-div.body p.caption {
- text-align: inherit;
-}
-
-div.body td {
- text-align: left;
-}
-
-.first {
- margin-top: 0 !important;
-}
-
-p.rubric {
- margin-top: 30px;
- font-weight: bold;
-}
-
-img.align-left, figure.align-left, .figure.align-left, object.align-left {
- clear: left;
- float: left;
- margin-right: 1em;
-}
-
-img.align-right, figure.align-right, .figure.align-right, object.align-right {
- clear: right;
- float: right;
- margin-left: 1em;
-}
-
-img.align-center, figure.align-center, .figure.align-center, object.align-center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-img.align-default, figure.align-default, .figure.align-default {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.align-left {
- text-align: left;
-}
-
-.align-center {
- text-align: center;
-}
-
-.align-default {
- text-align: center;
-}
-
-.align-right {
- text-align: right;
-}
-
-/* -- sidebars -------------------------------------------------------------- */
-
-div.sidebar,
-aside.sidebar {
- margin: 0 0 0.5em 1em;
- border: 1px solid #ddb;
- padding: 7px;
- background-color: #ffe;
- width: 40%;
- float: right;
- clear: right;
- overflow-x: auto;
-}
-
-p.sidebar-title {
- font-weight: bold;
-}
-
-nav.contents,
-aside.topic,
-div.admonition, div.topic, blockquote {
- clear: left;
-}
-
-/* -- topics ---------------------------------------------------------------- */
-
-nav.contents,
-aside.topic,
-div.topic {
- border: 1px solid #ccc;
- padding: 7px;
- margin: 10px 0 10px 0;
-}
-
-p.topic-title {
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 10px;
-}
-
-/* -- admonitions ----------------------------------------------------------- */
-
-div.admonition {
- margin-top: 10px;
- margin-bottom: 10px;
- padding: 7px;
-}
-
-div.admonition dt {
- font-weight: bold;
-}
-
-p.admonition-title {
- margin: 0px 10px 5px 0px;
- font-weight: bold;
-}
-
-div.body p.centered {
- text-align: center;
- margin-top: 25px;
-}
-
-/* -- content of sidebars/topics/admonitions -------------------------------- */
-
-div.sidebar > :last-child,
-aside.sidebar > :last-child,
-nav.contents > :last-child,
-aside.topic > :last-child,
-div.topic > :last-child,
-div.admonition > :last-child {
- margin-bottom: 0;
-}
-
-div.sidebar::after,
-aside.sidebar::after,
-nav.contents::after,
-aside.topic::after,
-div.topic::after,
-div.admonition::after,
-blockquote::after {
- display: block;
- content: '';
- clear: both;
-}
-
-/* -- tables ---------------------------------------------------------------- */
-
-table.docutils {
- margin-top: 10px;
- margin-bottom: 10px;
- border: 0;
- border-collapse: collapse;
-}
-
-table.align-center {
- margin-left: auto;
- margin-right: auto;
-}
-
-table.align-default {
- margin-left: auto;
- margin-right: auto;
-}
-
-table caption span.caption-number {
- font-style: italic;
-}
-
-table caption span.caption-text {
-}
-
-table.docutils td, table.docutils th {
- padding: 1px 8px 1px 5px;
- border-top: 0;
- border-left: 0;
- border-right: 0;
- border-bottom: 1px solid #aaa;
-}
-
-th {
- text-align: left;
- padding-right: 5px;
-}
-
-table.citation {
- border-left: solid 1px gray;
- margin-left: 1px;
-}
-
-table.citation td {
- border-bottom: none;
-}
-
-th > :first-child,
-td > :first-child {
- margin-top: 0px;
-}
-
-th > :last-child,
-td > :last-child {
- margin-bottom: 0px;
-}
-
-/* -- figures --------------------------------------------------------------- */
-
-div.figure, figure {
- margin: 0.5em;
- padding: 0.5em;
-}
-
-div.figure p.caption, figcaption {
- padding: 0.3em;
-}
-
-div.figure p.caption span.caption-number,
-figcaption span.caption-number {
- font-style: italic;
-}
-
-div.figure p.caption span.caption-text,
-figcaption span.caption-text {
-}
-
-/* -- field list styles ----------------------------------------------------- */
-
-table.field-list td, table.field-list th {
- border: 0 !important;
-}
-
-.field-list ul {
- margin: 0;
- padding-left: 1em;
-}
-
-.field-list p {
- margin: 0;
-}
-
-.field-name {
- -moz-hyphens: manual;
- -ms-hyphens: manual;
- -webkit-hyphens: manual;
- hyphens: manual;
-}
-
-/* -- hlist styles ---------------------------------------------------------- */
-
-table.hlist {
- margin: 1em 0;
-}
-
-table.hlist td {
- vertical-align: top;
-}
-
-/* -- object description styles --------------------------------------------- */
-
-.sig {
- font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
-}
-
-.sig-name, code.descname {
- background-color: transparent;
- font-weight: bold;
-}
-
-.sig-name {
- font-size: 1.1em;
-}
-
-code.descname {
- font-size: 1.2em;
-}
-
-.sig-prename, code.descclassname {
- background-color: transparent;
-}
-
-.optional {
- font-size: 1.3em;
-}
-
-.sig-paren {
- font-size: larger;
-}
-
-.sig-param.n {
- font-style: italic;
-}
-
-/* C++ specific styling */
-
-.sig-inline.c-texpr,
-.sig-inline.cpp-texpr {
- font-family: unset;
-}
-
-.sig.c .k, .sig.c .kt,
-.sig.cpp .k, .sig.cpp .kt {
- color: #0033B3;
-}
-
-.sig.c .m,
-.sig.cpp .m {
- color: #1750EB;
-}
-
-.sig.c .s, .sig.c .sc,
-.sig.cpp .s, .sig.cpp .sc {
- color: #067D17;
-}
-
-
-/* -- other body styles ----------------------------------------------------- */
-
-ol.arabic {
- list-style: decimal;
-}
-
-ol.loweralpha {
- list-style: lower-alpha;
-}
-
-ol.upperalpha {
- list-style: upper-alpha;
-}
-
-ol.lowerroman {
- list-style: lower-roman;
-}
-
-ol.upperroman {
- list-style: upper-roman;
-}
-
-:not(li) > ol > li:first-child > :first-child,
-:not(li) > ul > li:first-child > :first-child {
- margin-top: 0px;
-}
-
-:not(li) > ol > li:last-child > :last-child,
-:not(li) > ul > li:last-child > :last-child {
- margin-bottom: 0px;
-}
-
-ol.simple ol p,
-ol.simple ul p,
-ul.simple ol p,
-ul.simple ul p {
- margin-top: 0;
-}
-
-ol.simple > li:not(:first-child) > p,
-ul.simple > li:not(:first-child) > p {
- margin-top: 0;
-}
-
-ol.simple p,
-ul.simple p {
- margin-bottom: 0;
-}
-
-aside.footnote > span,
-div.citation > span {
- float: left;
-}
-aside.footnote > span:last-of-type,
-div.citation > span:last-of-type {
- padding-right: 0.5em;
-}
-aside.footnote > p {
- margin-left: 2em;
-}
-div.citation > p {
- margin-left: 4em;
-}
-aside.footnote > p:last-of-type,
-div.citation > p:last-of-type {
- margin-bottom: 0em;
-}
-aside.footnote > p:last-of-type:after,
-div.citation > p:last-of-type:after {
- content: "";
- clear: both;
-}
-
-dl.field-list {
- display: grid;
- grid-template-columns: fit-content(30%) auto;
-}
-
-dl.field-list > dt {
- font-weight: bold;
- word-break: break-word;
- padding-left: 0.5em;
- padding-right: 5px;
-}
-
-dl.field-list > dd {
- padding-left: 0.5em;
- margin-top: 0em;
- margin-left: 0em;
- margin-bottom: 0em;
-}
-
-dl {
- margin-bottom: 15px;
-}
-
-dd > :first-child {
- margin-top: 0px;
-}
-
-dd ul, dd table {
- margin-bottom: 10px;
-}
-
-dd {
- margin-top: 3px;
- margin-bottom: 10px;
- margin-left: 30px;
-}
-
-.sig dd {
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-.sig dl {
- margin-top: 0px;
- margin-bottom: 0px;
-}
-
-dl > dd:last-child,
-dl > dd:last-child > :last-child {
- margin-bottom: 0;
-}
-
-dt:target, span.highlighted {
- background-color: #fbe54e;
-}
-
-rect.highlighted {
- fill: #fbe54e;
-}
-
-dl.glossary dt {
- font-weight: bold;
- font-size: 1.1em;
-}
-
-.versionmodified {
- font-style: italic;
-}
-
-.system-message {
- background-color: #fda;
- padding: 5px;
- border: 3px solid red;
-}
-
-.footnote:target {
- background-color: #ffa;
-}
-
-.line-block {
- display: block;
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-.line-block .line-block {
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 1.5em;
-}
-
-.guilabel, .menuselection {
- font-family: sans-serif;
-}
-
-.accelerator {
- text-decoration: underline;
-}
-
-.classifier {
- font-style: oblique;
-}
-
-.classifier:before {
- font-style: normal;
- margin: 0 0.5em;
- content: ":";
- display: inline-block;
-}
-
-abbr, acronym {
- border-bottom: dotted 1px;
- cursor: help;
-}
-
-/* -- code displays --------------------------------------------------------- */
-
-pre {
- overflow: auto;
- overflow-y: hidden; /* fixes display issues on Chrome browsers */
-}
-
-pre, div[class*="highlight-"] {
- clear: both;
-}
-
-span.pre {
- -moz-hyphens: none;
- -ms-hyphens: none;
- -webkit-hyphens: none;
- hyphens: none;
- white-space: nowrap;
-}
-
-div[class*="highlight-"] {
- margin: 1em 0;
-}
-
-td.linenos pre {
- border: 0;
- background-color: transparent;
- color: #aaa;
-}
-
-table.highlighttable {
- display: block;
-}
-
-table.highlighttable tbody {
- display: block;
-}
-
-table.highlighttable tr {
- display: flex;
-}
-
-table.highlighttable td {
- margin: 0;
- padding: 0;
-}
-
-table.highlighttable td.linenos {
- padding-right: 0.5em;
-}
-
-table.highlighttable td.code {
- flex: 1;
- overflow: hidden;
-}
-
-.highlight .hll {
- display: block;
-}
-
-div.highlight pre,
-table.highlighttable pre {
- margin: 0;
-}
-
-div.code-block-caption + div {
- margin-top: 0;
-}
-
-div.code-block-caption {
- margin-top: 1em;
- padding: 2px 5px;
- font-size: small;
-}
-
-div.code-block-caption code {
- background-color: transparent;
-}
-
-table.highlighttable td.linenos,
-span.linenos,
-div.highlight span.gp { /* gp: Generic.Prompt */
- user-select: none;
- -webkit-user-select: text; /* Safari fallback only */
- -webkit-user-select: none; /* Chrome/Safari */
- -moz-user-select: none; /* Firefox */
- -ms-user-select: none; /* IE10+ */
-}
-
-div.code-block-caption span.caption-number {
- padding: 0.1em 0.3em;
- font-style: italic;
-}
-
-div.code-block-caption span.caption-text {
-}
-
-div.literal-block-wrapper {
- margin: 1em 0;
-}
-
-code.xref, a code {
- background-color: transparent;
- font-weight: bold;
-}
-
-h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
- background-color: transparent;
-}
-
-.viewcode-link {
- float: right;
-}
-
-.viewcode-back {
- float: right;
- font-family: sans-serif;
-}
-
-div.viewcode-block:target {
- margin: -1px -10px;
- padding: 0 10px;
-}
-
-/* -- math display ---------------------------------------------------------- */
-
-img.math {
- vertical-align: middle;
-}
-
-div.body div.math p {
- text-align: center;
-}
-
-span.eqno {
- float: right;
-}
-
-span.eqno a.headerlink {
- position: absolute;
- z-index: 1;
-}
-
-div.math:hover a.headerlink {
- visibility: visible;
-}
-
-/* -- printout stylesheet --------------------------------------------------- */
-
-@media print {
- div.document,
- div.documentwrapper,
- div.bodywrapper {
- margin: 0 !important;
- width: 100%;
- }
-
- div.sphinxsidebar,
- div.related,
- div.footer,
- #top-link {
- display: none;
- }
-}
\ No newline at end of file
diff --git a/docs/_build/html/_static/custom.css b/docs/_build/html/_static/custom.css
deleted file mode 100644
index 2a924f1..0000000
--- a/docs/_build/html/_static/custom.css
+++ /dev/null
@@ -1 +0,0 @@
-/* This file intentionally left blank. */
diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js
deleted file mode 100644
index 0398ebb..0000000
--- a/docs/_build/html/_static/doctools.js
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Base JavaScript utilities for all Sphinx HTML documentation.
- */
-"use strict";
-
-const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
- "TEXTAREA",
- "INPUT",
- "SELECT",
- "BUTTON",
-]);
-
-const _ready = (callback) => {
- if (document.readyState !== "loading") {
- callback();
- } else {
- document.addEventListener("DOMContentLoaded", callback);
- }
-};
-
-/**
- * Small JavaScript module for the documentation.
- */
-const Documentation = {
- init: () => {
- Documentation.initDomainIndexTable();
- Documentation.initOnKeyListeners();
- },
-
- /**
- * i18n support
- */
- TRANSLATIONS: {},
- PLURAL_EXPR: (n) => (n === 1 ? 0 : 1),
- LOCALE: "unknown",
-
- // gettext and ngettext don't access this so that the functions
- // can safely bound to a different name (_ = Documentation.gettext)
- gettext: (string) => {
- const translated = Documentation.TRANSLATIONS[string];
- switch (typeof translated) {
- case "undefined":
- return string; // no translation
- case "string":
- return translated; // translation exists
- default:
- return translated[0]; // (singular, plural) translation tuple exists
- }
- },
-
- ngettext: (singular, plural, n) => {
- const translated = Documentation.TRANSLATIONS[singular];
- if (typeof translated !== "undefined")
- return translated[Documentation.PLURAL_EXPR(n)];
- return n === 1 ? singular : plural;
- },
-
- addTranslations: (catalog) => {
- Object.assign(Documentation.TRANSLATIONS, catalog.messages);
- Documentation.PLURAL_EXPR = new Function(
- "n",
- `return (${catalog.plural_expr})`
- );
- Documentation.LOCALE = catalog.locale;
- },
-
- /**
- * helper function to focus on search bar
- */
- focusSearchBar: () => {
- document.querySelectorAll("input[name=q]")[0]?.focus();
- },
-
- /**
- * Initialise the domain index toggle buttons
- */
- initDomainIndexTable: () => {
- const toggler = (el) => {
- const idNumber = el.id.substr(7);
- const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`);
- if (el.src.substr(-9) === "minus.png") {
- el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`;
- toggledRows.forEach((el) => (el.style.display = "none"));
- } else {
- el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`;
- toggledRows.forEach((el) => (el.style.display = ""));
- }
- };
-
- const togglerElements = document.querySelectorAll("img.toggler");
- togglerElements.forEach((el) =>
- el.addEventListener("click", (event) => toggler(event.currentTarget))
- );
- togglerElements.forEach((el) => (el.style.display = ""));
- if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler);
- },
-
- initOnKeyListeners: () => {
- // only install a listener if it is really needed
- if (
- !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
- !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS
- )
- return;
-
- document.addEventListener("keydown", (event) => {
- // bail for input elements
- if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
- // bail with special keys
- if (event.altKey || event.ctrlKey || event.metaKey) return;
-
- if (!event.shiftKey) {
- switch (event.key) {
- case "ArrowLeft":
- if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
-
- const prevLink = document.querySelector('link[rel="prev"]');
- if (prevLink && prevLink.href) {
- window.location.href = prevLink.href;
- event.preventDefault();
- }
- break;
- case "ArrowRight":
- if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break;
-
- const nextLink = document.querySelector('link[rel="next"]');
- if (nextLink && nextLink.href) {
- window.location.href = nextLink.href;
- event.preventDefault();
- }
- break;
- }
- }
-
- // some keyboard layouts may need Shift to get /
- switch (event.key) {
- case "/":
- if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
- Documentation.focusSearchBar();
- event.preventDefault();
- }
- });
- },
-};
-
-// quick alias for translations
-const _ = Documentation.gettext;
-
-_ready(Documentation.init);
diff --git a/docs/_build/html/_static/documentation_options.js b/docs/_build/html/_static/documentation_options.js
deleted file mode 100644
index 7e4c114..0000000
--- a/docs/_build/html/_static/documentation_options.js
+++ /dev/null
@@ -1,13 +0,0 @@
-const DOCUMENTATION_OPTIONS = {
- VERSION: '',
- LANGUAGE: 'en',
- COLLAPSE_INDEX: false,
- BUILDER: 'html',
- FILE_SUFFIX: '.html',
- LINK_SUFFIX: '.html',
- HAS_SOURCE: true,
- SOURCELINK_SUFFIX: '.txt',
- NAVIGATION_WITH_KEYS: false,
- SHOW_SEARCH_SUMMARY: true,
- ENABLE_SEARCH_SHORTCUTS: true,
-};
\ No newline at end of file
diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png
deleted file mode 100644
index a858a41..0000000
Binary files a/docs/_build/html/_static/file.png and /dev/null differ
diff --git a/docs/_build/html/_static/github-banner.svg b/docs/_build/html/_static/github-banner.svg
deleted file mode 100644
index c47d9dc..0000000
--- a/docs/_build/html/_static/github-banner.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/docs/_build/html/_static/language_data.js b/docs/_build/html/_static/language_data.js
deleted file mode 100644
index c7fe6c6..0000000
--- a/docs/_build/html/_static/language_data.js
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * This script contains the language-specific data used by searchtools.js,
- * namely the list of stopwords, stemmer, scorer and splitter.
- */
-
-var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
-
-
-/* Non-minified version is copied as a separate JS file, if available */
-
-/**
- * Porter Stemmer
- */
-var Stemmer = function() {
-
- var step2list = {
- ational: 'ate',
- tional: 'tion',
- enci: 'ence',
- anci: 'ance',
- izer: 'ize',
- bli: 'ble',
- alli: 'al',
- entli: 'ent',
- eli: 'e',
- ousli: 'ous',
- ization: 'ize',
- ation: 'ate',
- ator: 'ate',
- alism: 'al',
- iveness: 'ive',
- fulness: 'ful',
- ousness: 'ous',
- aliti: 'al',
- iviti: 'ive',
- biliti: 'ble',
- logi: 'log'
- };
-
- var step3list = {
- icate: 'ic',
- ative: '',
- alize: 'al',
- iciti: 'ic',
- ical: 'ic',
- ful: '',
- ness: ''
- };
-
- var c = "[^aeiou]"; // consonant
- var v = "[aeiouy]"; // vowel
- var C = c + "[^aeiouy]*"; // consonant sequence
- var V = v + "[aeiou]*"; // vowel sequence
-
- var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
- var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
- var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
- var s_v = "^(" + C + ")?" + v; // vowel in stem
-
- this.stemWord = function (w) {
- var stem;
- var suffix;
- var firstch;
- var origword = w;
-
- if (w.length < 3)
- return w;
-
- var re;
- var re2;
- var re3;
- var re4;
-
- firstch = w.substr(0,1);
- if (firstch == "y")
- w = firstch.toUpperCase() + w.substr(1);
-
- // Step 1a
- re = /^(.+?)(ss|i)es$/;
- re2 = /^(.+?)([^s])s$/;
-
- if (re.test(w))
- w = w.replace(re,"$1$2");
- else if (re2.test(w))
- w = w.replace(re2,"$1$2");
-
- // Step 1b
- re = /^(.+?)eed$/;
- re2 = /^(.+?)(ed|ing)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- re = new RegExp(mgr0);
- if (re.test(fp[1])) {
- re = /.$/;
- w = w.replace(re,"");
- }
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1];
- re2 = new RegExp(s_v);
- if (re2.test(stem)) {
- w = stem;
- re2 = /(at|bl|iz)$/;
- re3 = new RegExp("([^aeiouylsz])\\1$");
- re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re2.test(w))
- w = w + "e";
- else if (re3.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
- else if (re4.test(w))
- w = w + "e";
- }
- }
-
- // Step 1c
- re = /^(.+?)y$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(s_v);
- if (re.test(stem))
- w = stem + "i";
- }
-
- // Step 2
- re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step2list[suffix];
- }
-
- // Step 3
- re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- suffix = fp[2];
- re = new RegExp(mgr0);
- if (re.test(stem))
- w = stem + step3list[suffix];
- }
-
- // Step 4
- re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
- re2 = /^(.+?)(s|t)(ion)$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- if (re.test(stem))
- w = stem;
- }
- else if (re2.test(w)) {
- var fp = re2.exec(w);
- stem = fp[1] + fp[2];
- re2 = new RegExp(mgr1);
- if (re2.test(stem))
- w = stem;
- }
-
- // Step 5
- re = /^(.+?)e$/;
- if (re.test(w)) {
- var fp = re.exec(w);
- stem = fp[1];
- re = new RegExp(mgr1);
- re2 = new RegExp(meq1);
- re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
- if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
- w = stem;
- }
- re = /ll$/;
- re2 = new RegExp(mgr1);
- if (re.test(w) && re2.test(w)) {
- re = /.$/;
- w = w.replace(re,"");
- }
-
- // and turn initial Y back to y
- if (firstch == "y")
- w = firstch.toLowerCase() + w.substr(1);
- return w;
- }
-}
-
diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png
deleted file mode 100644
index d96755f..0000000
Binary files a/docs/_build/html/_static/minus.png and /dev/null differ
diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png
deleted file mode 100644
index 7107cec..0000000
Binary files a/docs/_build/html/_static/plus.png and /dev/null differ
diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css
deleted file mode 100644
index 9392ddc..0000000
--- a/docs/_build/html/_static/pygments.css
+++ /dev/null
@@ -1,84 +0,0 @@
-pre { line-height: 125%; }
-td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
-td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
-.highlight .hll { background-color: #ffffcc }
-.highlight { background: #f8f8f8; }
-.highlight .c { color: #8F5902; font-style: italic } /* Comment */
-.highlight .err { color: #A40000; border: 1px solid #EF2929 } /* Error */
-.highlight .g { color: #000 } /* Generic */
-.highlight .k { color: #004461; font-weight: bold } /* Keyword */
-.highlight .l { color: #000 } /* Literal */
-.highlight .n { color: #000 } /* Name */
-.highlight .o { color: #582800 } /* Operator */
-.highlight .x { color: #000 } /* Other */
-.highlight .p { color: #000; font-weight: bold } /* Punctuation */
-.highlight .ch { color: #8F5902; font-style: italic } /* Comment.Hashbang */
-.highlight .cm { color: #8F5902; font-style: italic } /* Comment.Multiline */
-.highlight .cp { color: #8F5902 } /* Comment.Preproc */
-.highlight .cpf { color: #8F5902; font-style: italic } /* Comment.PreprocFile */
-.highlight .c1 { color: #8F5902; font-style: italic } /* Comment.Single */
-.highlight .cs { color: #8F5902; font-style: italic } /* Comment.Special */
-.highlight .gd { color: #A40000 } /* Generic.Deleted */
-.highlight .ge { color: #000; font-style: italic } /* Generic.Emph */
-.highlight .ges { color: #000 } /* Generic.EmphStrong */
-.highlight .gr { color: #EF2929 } /* Generic.Error */
-.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
-.highlight .gi { color: #00A000 } /* Generic.Inserted */
-.highlight .go { color: #888 } /* Generic.Output */
-.highlight .gp { color: #745334 } /* Generic.Prompt */
-.highlight .gs { color: #000; font-weight: bold } /* Generic.Strong */
-.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
-.highlight .gt { color: #A40000; font-weight: bold } /* Generic.Traceback */
-.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
-.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
-.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
-.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
-.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
-.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
-.highlight .ld { color: #000 } /* Literal.Date */
-.highlight .m { color: #900 } /* Literal.Number */
-.highlight .s { color: #4E9A06 } /* Literal.String */
-.highlight .na { color: #C4A000 } /* Name.Attribute */
-.highlight .nb { color: #004461 } /* Name.Builtin */
-.highlight .nc { color: #000 } /* Name.Class */
-.highlight .no { color: #000 } /* Name.Constant */
-.highlight .nd { color: #888 } /* Name.Decorator */
-.highlight .ni { color: #CE5C00 } /* Name.Entity */
-.highlight .ne { color: #C00; font-weight: bold } /* Name.Exception */
-.highlight .nf { color: #000 } /* Name.Function */
-.highlight .nl { color: #F57900 } /* Name.Label */
-.highlight .nn { color: #000 } /* Name.Namespace */
-.highlight .nx { color: #000 } /* Name.Other */
-.highlight .py { color: #000 } /* Name.Property */
-.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
-.highlight .nv { color: #000 } /* Name.Variable */
-.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
-.highlight .pm { color: #000; font-weight: bold } /* Punctuation.Marker */
-.highlight .w { color: #F8F8F8 } /* Text.Whitespace */
-.highlight .mb { color: #900 } /* Literal.Number.Bin */
-.highlight .mf { color: #900 } /* Literal.Number.Float */
-.highlight .mh { color: #900 } /* Literal.Number.Hex */
-.highlight .mi { color: #900 } /* Literal.Number.Integer */
-.highlight .mo { color: #900 } /* Literal.Number.Oct */
-.highlight .sa { color: #4E9A06 } /* Literal.String.Affix */
-.highlight .sb { color: #4E9A06 } /* Literal.String.Backtick */
-.highlight .sc { color: #4E9A06 } /* Literal.String.Char */
-.highlight .dl { color: #4E9A06 } /* Literal.String.Delimiter */
-.highlight .sd { color: #8F5902; font-style: italic } /* Literal.String.Doc */
-.highlight .s2 { color: #4E9A06 } /* Literal.String.Double */
-.highlight .se { color: #4E9A06 } /* Literal.String.Escape */
-.highlight .sh { color: #4E9A06 } /* Literal.String.Heredoc */
-.highlight .si { color: #4E9A06 } /* Literal.String.Interpol */
-.highlight .sx { color: #4E9A06 } /* Literal.String.Other */
-.highlight .sr { color: #4E9A06 } /* Literal.String.Regex */
-.highlight .s1 { color: #4E9A06 } /* Literal.String.Single */
-.highlight .ss { color: #4E9A06 } /* Literal.String.Symbol */
-.highlight .bp { color: #3465A4 } /* Name.Builtin.Pseudo */
-.highlight .fm { color: #000 } /* Name.Function.Magic */
-.highlight .vc { color: #000 } /* Name.Variable.Class */
-.highlight .vg { color: #000 } /* Name.Variable.Global */
-.highlight .vi { color: #000 } /* Name.Variable.Instance */
-.highlight .vm { color: #000 } /* Name.Variable.Magic */
-.highlight .il { color: #900 } /* Literal.Number.Integer.Long */
\ No newline at end of file
diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js
deleted file mode 100644
index 91f4be5..0000000
--- a/docs/_build/html/_static/searchtools.js
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- * Sphinx JavaScript utilities for the full-text search.
- */
-"use strict";
-
-/**
- * Simple result scoring code.
- */
-if (typeof Scorer === "undefined") {
- var Scorer = {
- // Implement the following function to further tweak the score for each result
- // The function takes a result array [docname, title, anchor, descr, score, filename]
- // and returns the new score.
- /*
- score: result => {
- const [docname, title, anchor, descr, score, filename, kind] = result
- return score
- },
- */
-
- // query matches the full name of an object
- objNameMatch: 11,
- // or matches in the last dotted part of the object name
- objPartialMatch: 6,
- // Additive scores depending on the priority of the object
- objPrio: {
- 0: 15, // used to be importantResults
- 1: 5, // used to be objectResults
- 2: -5, // used to be unimportantResults
- },
- // Used when the priority is not in the mapping.
- objPrioDefault: 0,
-
- // query found in title
- title: 15,
- partialTitle: 7,
- // query found in terms
- term: 5,
- partialTerm: 2,
- };
-}
-
-// Global search result kind enum, used by themes to style search results.
-class SearchResultKind {
- static get index() { return "index"; }
- static get object() { return "object"; }
- static get text() { return "text"; }
- static get title() { return "title"; }
-}
-
-const _removeChildren = (element) => {
- while (element && element.lastChild) element.removeChild(element.lastChild);
-};
-
-/**
- * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
- */
-const _escapeRegExp = (string) =>
- string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
-
-const _displayItem = (item, searchTerms, highlightTerms) => {
- const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
- const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
- const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
- const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
- const contentRoot = document.documentElement.dataset.content_root;
-
- const [docName, title, anchor, descr, score, _filename, kind] = item;
-
- let listItem = document.createElement("li");
- // Add a class representing the item's type:
- // can be used by a theme's CSS selector for styling
- // See SearchResultKind for the class names.
- listItem.classList.add(`kind-${kind}`);
- let requestUrl;
- let linkUrl;
- if (docBuilder === "dirhtml") {
- // dirhtml builder
- let dirname = docName + "/";
- if (dirname.match(/\/index\/$/))
- dirname = dirname.substring(0, dirname.length - 6);
- else if (dirname === "index/") dirname = "";
- requestUrl = contentRoot + dirname;
- linkUrl = requestUrl;
- } else {
- // normal html builders
- requestUrl = contentRoot + docName + docFileSuffix;
- linkUrl = docName + docLinkSuffix;
- }
- let linkEl = listItem.appendChild(document.createElement("a"));
- linkEl.href = linkUrl + anchor;
- linkEl.dataset.score = score;
- linkEl.innerHTML = title;
- if (descr) {
- listItem.appendChild(document.createElement("span")).innerHTML =
- " (" + descr + ")";
- // highlight search terms in the description
- if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
- highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
- }
- else if (showSearchSummary)
- fetch(requestUrl)
- .then((responseData) => responseData.text())
- .then((data) => {
- if (data)
- listItem.appendChild(
- Search.makeSearchSummary(data, searchTerms, anchor)
- );
- // highlight search terms in the summary
- if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
- highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
- });
- Search.output.appendChild(listItem);
-};
-const _finishSearch = (resultCount) => {
- Search.stopPulse();
- Search.title.innerText = _("Search Results");
- if (!resultCount)
- Search.status.innerText = Documentation.gettext(
- "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
- );
- else
- Search.status.innerText = Documentation.ngettext(
- "Search finished, found one page matching the search query.",
- "Search finished, found ${resultCount} pages matching the search query.",
- resultCount,
- ).replace('${resultCount}', resultCount);
-};
-const _displayNextItem = (
- results,
- resultCount,
- searchTerms,
- highlightTerms,
-) => {
- // results left, load the summary and display it
- // this is intended to be dynamic (don't sub resultsCount)
- if (results.length) {
- _displayItem(results.pop(), searchTerms, highlightTerms);
- setTimeout(
- () => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
- 5
- );
- }
- // search finished, update title and status message
- else _finishSearch(resultCount);
-};
-// Helper function used by query() to order search results.
-// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
-// Order the results by score (in opposite order of appearance, since the
-// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
-const _orderResultsByScoreThenName = (a, b) => {
- const leftScore = a[4];
- const rightScore = b[4];
- if (leftScore === rightScore) {
- // same score: sort alphabetically
- const leftTitle = a[1].toLowerCase();
- const rightTitle = b[1].toLowerCase();
- if (leftTitle === rightTitle) return 0;
- return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
- }
- return leftScore > rightScore ? 1 : -1;
-};
-
-/**
- * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
- * custom function per language.
- *
- * The regular expression works by splitting the string on consecutive characters
- * that are not Unicode letters, numbers, underscores, or emoji characters.
- * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
- */
-if (typeof splitQuery === "undefined") {
- var splitQuery = (query) => query
- .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
- .filter(term => term) // remove remaining empty strings
-}
-
-/**
- * Search Module
- */
-const Search = {
- _index: null,
- _queued_query: null,
- _pulse_status: -1,
-
- htmlToText: (htmlString, anchor) => {
- const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
- for (const removalQuery of [".headerlink", "script", "style"]) {
- htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
- }
- if (anchor) {
- const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
- if (anchorContent) return anchorContent.textContent;
-
- console.warn(
- `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
- );
- }
-
- // if anchor not specified or not found, fall back to main content
- const docContent = htmlElement.querySelector('[role="main"]');
- if (docContent) return docContent.textContent;
-
- console.warn(
- "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
- );
- return "";
- },
-
- init: () => {
- const query = new URLSearchParams(window.location.search).get("q");
- document
- .querySelectorAll('input[name="q"]')
- .forEach((el) => (el.value = query));
- if (query) Search.performSearch(query);
- },
-
- loadIndex: (url) =>
- (document.body.appendChild(document.createElement("script")).src = url),
-
- setIndex: (index) => {
- Search._index = index;
- if (Search._queued_query !== null) {
- const query = Search._queued_query;
- Search._queued_query = null;
- Search.query(query);
- }
- },
-
- hasIndex: () => Search._index !== null,
-
- deferQuery: (query) => (Search._queued_query = query),
-
- stopPulse: () => (Search._pulse_status = -1),
-
- startPulse: () => {
- if (Search._pulse_status >= 0) return;
-
- const pulse = () => {
- Search._pulse_status = (Search._pulse_status + 1) % 4;
- Search.dots.innerText = ".".repeat(Search._pulse_status);
- if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
- };
- pulse();
- },
-
- /**
- * perform a search for something (or wait until index is loaded)
- */
- performSearch: (query) => {
- // create the required interface elements
- const searchText = document.createElement("h2");
- searchText.textContent = _("Searching");
- const searchSummary = document.createElement("p");
- searchSummary.classList.add("search-summary");
- searchSummary.innerText = "";
- const searchList = document.createElement("ul");
- searchList.setAttribute("role", "list");
- searchList.classList.add("search");
-
- const out = document.getElementById("search-results");
- Search.title = out.appendChild(searchText);
- Search.dots = Search.title.appendChild(document.createElement("span"));
- Search.status = out.appendChild(searchSummary);
- Search.output = out.appendChild(searchList);
-
- const searchProgress = document.getElementById("search-progress");
- // Some themes don't use the search progress node
- if (searchProgress) {
- searchProgress.innerText = _("Preparing search...");
- }
- Search.startPulse();
-
- // index already loaded, the browser was quick!
- if (Search.hasIndex()) Search.query(query);
- else Search.deferQuery(query);
- },
-
- _parseQuery: (query) => {
- // stem the search terms and add them to the correct list
- const stemmer = new Stemmer();
- const searchTerms = new Set();
- const excludedTerms = new Set();
- const highlightTerms = new Set();
- const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
- splitQuery(query.trim()).forEach((queryTerm) => {
- const queryTermLower = queryTerm.toLowerCase();
-
- // maybe skip this "word"
- // stopwords array is from language_data.js
- if (
- stopwords.indexOf(queryTermLower) !== -1 ||
- queryTerm.match(/^\d+$/)
- )
- return;
-
- // stem the word
- let word = stemmer.stemWord(queryTermLower);
- // select the correct list
- if (word[0] === "-") excludedTerms.add(word.substr(1));
- else {
- searchTerms.add(word);
- highlightTerms.add(queryTermLower);
- }
- });
-
- if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
- localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
- }
-
- // console.debug("SEARCH: searching for:");
- // console.info("required: ", [...searchTerms]);
- // console.info("excluded: ", [...excludedTerms]);
-
- return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
- },
-
- /**
- * execute search (requires search index to be loaded)
- */
- _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
- const filenames = Search._index.filenames;
- const docNames = Search._index.docnames;
- const titles = Search._index.titles;
- const allTitles = Search._index.alltitles;
- const indexEntries = Search._index.indexentries;
-
- // Collect multiple result groups to be sorted separately and then ordered.
- // Each is an array of [docname, title, anchor, descr, score, filename, kind].
- const normalResults = [];
- const nonMainIndexResults = [];
-
- _removeChildren(document.getElementById("search-progress"));
-
- const queryLower = query.toLowerCase().trim();
- for (const [title, foundTitles] of Object.entries(allTitles)) {
- if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
- for (const [file, id] of foundTitles) {
- const score = Math.round(Scorer.title * queryLower.length / title.length);
- const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
- normalResults.push([
- docNames[file],
- titles[file] !== title ? `${titles[file]} > ${title}` : title,
- id !== null ? "#" + id : "",
- null,
- score + boost,
- filenames[file],
- SearchResultKind.title,
- ]);
- }
- }
- }
-
- // search for explicit entries in index directives
- for (const [entry, foundEntries] of Object.entries(indexEntries)) {
- if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
- for (const [file, id, isMain] of foundEntries) {
- const score = Math.round(100 * queryLower.length / entry.length);
- const result = [
- docNames[file],
- titles[file],
- id ? "#" + id : "",
- null,
- score,
- filenames[file],
- SearchResultKind.index,
- ];
- if (isMain) {
- normalResults.push(result);
- } else {
- nonMainIndexResults.push(result);
- }
- }
- }
- }
-
- // lookup as object
- objectTerms.forEach((term) =>
- normalResults.push(...Search.performObjectSearch(term, objectTerms))
- );
-
- // lookup as search terms in fulltext
- normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
-
- // let the scorer override scores with a custom scoring function
- if (Scorer.score) {
- normalResults.forEach((item) => (item[4] = Scorer.score(item)));
- nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
- }
-
- // Sort each group of results by score and then alphabetically by name.
- normalResults.sort(_orderResultsByScoreThenName);
- nonMainIndexResults.sort(_orderResultsByScoreThenName);
-
- // Combine the result groups in (reverse) order.
- // Non-main index entries are typically arbitrary cross-references,
- // so display them after other results.
- let results = [...nonMainIndexResults, ...normalResults];
-
- // remove duplicate search results
- // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
- let seen = new Set();
- results = results.reverse().reduce((acc, result) => {
- let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
- if (!seen.has(resultStr)) {
- acc.push(result);
- seen.add(resultStr);
- }
- return acc;
- }, []);
-
- return results.reverse();
- },
-
- query: (query) => {
- const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
- const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
-
- // for debugging
- //Search.lastresults = results.slice(); // a copy
- // console.info("search results:", Search.lastresults);
-
- // print the results
- _displayNextItem(results, results.length, searchTerms, highlightTerms);
- },
-
- /**
- * search for object names
- */
- performObjectSearch: (object, objectTerms) => {
- const filenames = Search._index.filenames;
- const docNames = Search._index.docnames;
- const objects = Search._index.objects;
- const objNames = Search._index.objnames;
- const titles = Search._index.titles;
-
- const results = [];
-
- const objectSearchCallback = (prefix, match) => {
- const name = match[4]
- const fullname = (prefix ? prefix + "." : "") + name;
- const fullnameLower = fullname.toLowerCase();
- if (fullnameLower.indexOf(object) < 0) return;
-
- let score = 0;
- const parts = fullnameLower.split(".");
-
- // check for different match types: exact matches of full name or
- // "last name" (i.e. last dotted part)
- if (fullnameLower === object || parts.slice(-1)[0] === object)
- score += Scorer.objNameMatch;
- else if (parts.slice(-1)[0].indexOf(object) > -1)
- score += Scorer.objPartialMatch; // matches in last name
-
- const objName = objNames[match[1]][2];
- const title = titles[match[0]];
-
- // If more than one term searched for, we require other words to be
- // found in the name/title/description
- const otherTerms = new Set(objectTerms);
- otherTerms.delete(object);
- if (otherTerms.size > 0) {
- const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
- if (
- [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
- )
- return;
- }
-
- let anchor = match[3];
- if (anchor === "") anchor = fullname;
- else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
-
- const descr = objName + _(", in ") + title;
-
- // add custom score for some objects according to scorer
- if (Scorer.objPrio.hasOwnProperty(match[2]))
- score += Scorer.objPrio[match[2]];
- else score += Scorer.objPrioDefault;
-
- results.push([
- docNames[match[0]],
- fullname,
- "#" + anchor,
- descr,
- score,
- filenames[match[0]],
- SearchResultKind.object,
- ]);
- };
- Object.keys(objects).forEach((prefix) =>
- objects[prefix].forEach((array) =>
- objectSearchCallback(prefix, array)
- )
- );
- return results;
- },
-
- /**
- * search for full-text terms in the index
- */
- performTermsSearch: (searchTerms, excludedTerms) => {
- // prepare search
- const terms = Search._index.terms;
- const titleTerms = Search._index.titleterms;
- const filenames = Search._index.filenames;
- const docNames = Search._index.docnames;
- const titles = Search._index.titles;
-
- const scoreMap = new Map();
- const fileMap = new Map();
-
- // perform the search on the required terms
- searchTerms.forEach((word) => {
- const files = [];
- // find documents, if any, containing the query word in their text/title term indices
- // use Object.hasOwnProperty to avoid mismatching against prototype properties
- const arr = [
- { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term },
- { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title },
- ];
- // add support for partial matches
- if (word.length > 2) {
- const escapedWord = _escapeRegExp(word);
- if (!terms.hasOwnProperty(word)) {
- Object.keys(terms).forEach((term) => {
- if (term.match(escapedWord))
- arr.push({ files: terms[term], score: Scorer.partialTerm });
- });
- }
- if (!titleTerms.hasOwnProperty(word)) {
- Object.keys(titleTerms).forEach((term) => {
- if (term.match(escapedWord))
- arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
- });
- }
- }
-
- // no match but word was a required one
- if (arr.every((record) => record.files === undefined)) return;
-
- // found search word in contents
- arr.forEach((record) => {
- if (record.files === undefined) return;
-
- let recordFiles = record.files;
- if (recordFiles.length === undefined) recordFiles = [recordFiles];
- files.push(...recordFiles);
-
- // set score for the word in each file
- recordFiles.forEach((file) => {
- if (!scoreMap.has(file)) scoreMap.set(file, new Map());
- const fileScores = scoreMap.get(file);
- fileScores.set(word, record.score);
- });
- });
-
- // create the mapping
- files.forEach((file) => {
- if (!fileMap.has(file)) fileMap.set(file, [word]);
- else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
- });
- });
-
- // now check if the files don't contain excluded terms
- const results = [];
- for (const [file, wordList] of fileMap) {
- // check if all requirements are matched
-
- // as search terms with length < 3 are discarded
- const filteredTermCount = [...searchTerms].filter(
- (term) => term.length > 2
- ).length;
- if (
- wordList.length !== searchTerms.size &&
- wordList.length !== filteredTermCount
- )
- continue;
-
- // ensure that none of the excluded terms is in the search result
- if (
- [...excludedTerms].some(
- (term) =>
- terms[term] === file ||
- titleTerms[term] === file ||
- (terms[term] || []).includes(file) ||
- (titleTerms[term] || []).includes(file)
- )
- )
- break;
-
- // select one (max) score for the file.
- const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w)));
- // add result to the result list
- results.push([
- docNames[file],
- titles[file],
- "",
- null,
- score,
- filenames[file],
- SearchResultKind.text,
- ]);
- }
- return results;
- },
-
- /**
- * helper function to return a node containing the
- * search summary for a given text. keywords is a list
- * of stemmed words.
- */
- makeSearchSummary: (htmlText, keywords, anchor) => {
- const text = Search.htmlToText(htmlText, anchor);
- if (text === "") return null;
-
- const textLower = text.toLowerCase();
- const actualStartPosition = [...keywords]
- .map((k) => textLower.indexOf(k.toLowerCase()))
- .filter((i) => i > -1)
- .slice(-1)[0];
- const startWithContext = Math.max(actualStartPosition - 120, 0);
-
- const top = startWithContext === 0 ? "" : "...";
- const tail = startWithContext + 240 < text.length ? "..." : "";
-
- let summary = document.createElement("p");
- summary.classList.add("context");
- summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
-
- return summary;
- },
-};
-
-_ready(Search.init);
diff --git a/docs/_build/html/_static/sphinx_highlight.js b/docs/_build/html/_static/sphinx_highlight.js
deleted file mode 100644
index 8a96c69..0000000
--- a/docs/_build/html/_static/sphinx_highlight.js
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Highlighting utilities for Sphinx HTML documentation. */
-"use strict";
-
-const SPHINX_HIGHLIGHT_ENABLED = true
-
-/**
- * highlight a given string on a node by wrapping it in
- * span elements with the given class name.
- */
-const _highlight = (node, addItems, text, className) => {
- if (node.nodeType === Node.TEXT_NODE) {
- const val = node.nodeValue;
- const parent = node.parentNode;
- const pos = val.toLowerCase().indexOf(text);
- if (
- pos >= 0 &&
- !parent.classList.contains(className) &&
- !parent.classList.contains("nohighlight")
- ) {
- let span;
-
- const closestNode = parent.closest("body, svg, foreignObject");
- const isInSVG = closestNode && closestNode.matches("svg");
- if (isInSVG) {
- span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
- } else {
- span = document.createElement("span");
- span.classList.add(className);
- }
-
- span.appendChild(document.createTextNode(val.substr(pos, text.length)));
- const rest = document.createTextNode(val.substr(pos + text.length));
- parent.insertBefore(
- span,
- parent.insertBefore(
- rest,
- node.nextSibling
- )
- );
- node.nodeValue = val.substr(0, pos);
- /* There may be more occurrences of search term in this node. So call this
- * function recursively on the remaining fragment.
- */
- _highlight(rest, addItems, text, className);
-
- if (isInSVG) {
- const rect = document.createElementNS(
- "http://www.w3.org/2000/svg",
- "rect"
- );
- const bbox = parent.getBBox();
- rect.x.baseVal.value = bbox.x;
- rect.y.baseVal.value = bbox.y;
- rect.width.baseVal.value = bbox.width;
- rect.height.baseVal.value = bbox.height;
- rect.setAttribute("class", className);
- addItems.push({ parent: parent, target: rect });
- }
- }
- } else if (node.matches && !node.matches("button, select, textarea")) {
- node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
- }
-};
-const _highlightText = (thisNode, text, className) => {
- let addItems = [];
- _highlight(thisNode, addItems, text, className);
- addItems.forEach((obj) =>
- obj.parent.insertAdjacentElement("beforebegin", obj.target)
- );
-};
-
-/**
- * Small JavaScript module for the documentation.
- */
-const SphinxHighlight = {
-
- /**
- * highlight the search words provided in localstorage in the text
- */
- highlightSearchWords: () => {
- if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight
-
- // get and clear terms from localstorage
- const url = new URL(window.location);
- const highlight =
- localStorage.getItem("sphinx_highlight_terms")
- || url.searchParams.get("highlight")
- || "";
- localStorage.removeItem("sphinx_highlight_terms")
- url.searchParams.delete("highlight");
- window.history.replaceState({}, "", url);
-
- // get individual terms from highlight string
- const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
- if (terms.length === 0) return; // nothing to do
-
- // There should never be more than one element matching "div.body"
- const divBody = document.querySelectorAll("div.body");
- const body = divBody.length ? divBody[0] : document.querySelector("body");
- window.setTimeout(() => {
- terms.forEach((term) => _highlightText(body, term, "highlighted"));
- }, 10);
-
- const searchBox = document.getElementById("searchbox");
- if (searchBox === null) return;
- searchBox.appendChild(
- document
- .createRange()
- .createContextualFragment(
- '' +
- '' +
- _("Hide Search Matches") +
- "
"
- )
- );
- },
-
- /**
- * helper function to hide the search marks again
- */
- hideSearchWords: () => {
- document
- .querySelectorAll("#searchbox .highlight-link")
- .forEach((el) => el.remove());
- document
- .querySelectorAll("span.highlighted")
- .forEach((el) => el.classList.remove("highlighted"));
- localStorage.removeItem("sphinx_highlight_terms")
- },
-
- initEscapeListener: () => {
- // only install a listener if it is really needed
- if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return;
-
- document.addEventListener("keydown", (event) => {
- // bail for input elements
- if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
- // bail with special keys
- if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return;
- if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) {
- SphinxHighlight.hideSearchWords();
- event.preventDefault();
- }
- });
- },
-};
-
-_ready(() => {
- /* Do not call highlightSearchWords() when we are on the search page.
- * It will highlight words from the *previous* search query.
- */
- if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
- SphinxHighlight.initEscapeListener();
-});
diff --git a/docs/_build/html/genindex.html b/docs/_build/html/genindex.html
deleted file mode 100644
index cdf61c6..0000000
--- a/docs/_build/html/genindex.html
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
- Index — monday documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
deleted file mode 100644
index 712e984..0000000
--- a/docs/_build/html/index.html
+++ /dev/null
@@ -1,139 +0,0 @@
-
-
-
-
-
-
-
- Welcome to monday’s documentation! — monday documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Welcome to monday’s documentation!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
deleted file mode 100644
index 794c94a..0000000
Binary files a/docs/_build/html/objects.inv and /dev/null differ
diff --git a/docs/_build/html/search.html b/docs/_build/html/search.html
deleted file mode 100644
index 58a6e25..0000000
--- a/docs/_build/html/search.html
+++ /dev/null
@@ -1,121 +0,0 @@
-
-
-
-
-
-
- Search — monday documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Search
-
-
-
-
- Please activate JavaScript to enable the search
- functionality.
-
-
-
-
-
-
- Searching for multiple words only shows matches that contain
- all words.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
deleted file mode 100644
index 1b6275c..0000000
--- a/docs/_build/html/searchindex.js
+++ /dev/null
@@ -1 +0,0 @@
-Search.setIndex({"alltitles":{"Available methods":[[0,"available-methods"]],"Boards Resource (monday.boards)":[[0,"boards-resource-monday-boards"]],"Bug Reports":[[0,"bug-reports"]],"Contents:":[[1,null]],"Contributors":[[0,"contributors"]],"Getting started":[[0,"getting-started"]],"Groups Resource (monday.groups)":[[0,"groups-resource-monday-groups"]],"Indices and tables":[[1,"indices-and-tables"]],"Items Resource (monday.items)":[[0,"items-resource-monday-items"]],"Notifications Resource (monday.notifications)":[[0,"notifications-resource-monday-notifications"]],"Requirements":[[0,"requirements"]],"Tags Resource (monday.tags)":[[0,"tags-resource-monday-tags"]],"Updates Resource (monday.updates)":[[0,"updates-resource-monday-updates"]],"Users Resource (monday.users)":[[0,"users-resource-monday-users"]],"Welcome to monday\u2019s documentation!":[[1,null]],"Workspaces Resource (monday.workspaces)":[[0,"workspaces-resource-monday-workspaces"]],"monday":[[0,null]]},"docnames":["README","index"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2},"filenames":["README.rst","index.rst"],"indexentries":{},"objects":{},"objnames":{},"objtypes":{},"terms":{"":0,"1":0,"100":0,"11":0,"12345678":0,"25":0,"3":0,"500mb":0,"A":0,"For":0,"The":0,"about":0,"accept":0,"accordingli":0,"account":0,"activ":0,"add":0,"add_file_to_column":0,"add_teams_to_workspac":0,"add_users_to_workspac":0,"addit":0,"alb":0,"all":0,"allow":0,"also":0,"an":0,"ani":0,"api":0,"ar":0,"archiv":0,"archive_group":0,"archive_item_by_id":0,"argument":0,"arrai":0,"associ":0,"attach":0,"avail":1,"below":0,"board":1,"board_id":0,"board_kind":0,"board_nam":0,"boardkind":0,"boardsorderbi":0,"boardstat":0,"boyc":0,"bug":1,"c":0,"can":0,"certain":0,"chang":0,"change_item_valu":0,"change_multiple_column_valu":0,"chdastolfo":0,"check":0,"click":0,"client":0,"cochran":0,"code":0,"color":0,"column":0,"column_id":0,"column_valu":0,"com":0,"comma":0,"contain":0,"contributor":1,"creat":0,"create_board":0,"create_group":0,"create_item":0,"create_labels_if_miss":0,"create_notif":0,"create_subitem":0,"create_upd":0,"create_workspac":0,"created_at":0,"default":0,"delet":0,"delete_group":0,"delete_item_by_id":0,"delete_teams_from_workspac":0,"delete_users_from_workspac":0,"descript":0,"detail":0,"do":0,"doc":0,"doe":0,"duplic":0,"duplicate_group":0,"email":0,"error":0,"exampl":0,"fals":0,"fetch":0,"fetch_board":0,"fetch_boards_by_id":0,"fetch_columns_by_board_id":0,"fetch_items_by_board_id":0,"fetch_items_by_column_valu":0,"fetch_items_by_id":0,"fetch_tag":0,"fetch_upd":0,"fetch_updates_for_item":0,"fetch_us":0,"file":0,"format":0,"from":0,"get":1,"get_groups_by_board":0,"get_items_by_group":0,"get_workspac":0,"given":0,"group":1,"group_id":0,"group_nam":0,"have":0,"here":0,"i":0,"id":0,"identifi":0,"implement":0,"import":0,"index":1,"info":0,"inform":0,"instal":0,"int":0,"integ":0,"item":1,"item_id":0,"item_nam":0,"its":0,"json":0,"keyword":0,"kind":0,"know":0,"kwarg":0,"least":0,"lemi":0,"librari":0,"limit":0,"list":0,"look":0,"lucio":0,"member":0,"method":1,"mitsuru":0,"modul":1,"mondaycli":0,"more":0,"morello":0,"move":0,"move_item_to_group":0,"multipl":0,"mutat":0,"name":0,"nile":0,"none":0,"notif":1,"number":0,"one":0,"option":0,"order":0,"order_bi":0,"out":0,"overview":0,"p2":0,"page":[0,1],"pagin":0,"parent":0,"parent_item_id":0,"pass":0,"pevner":0,"pip":0,"platform":0,"prefer":0,"privat":0,"public":0,"python":0,"queri":0,"re":0,"read":0,"recipi":0,"report":1,"requir":1,"resourc":1,"retriev":0,"return":0,"row":0,"same":0,"sampl":0,"search":1,"see":0,"seki":0,"send":0,"separ":0,"set":0,"share":0,"should":0,"simpl":0,"sinc":0,"singl":0,"size":0,"specifi":0,"spencersamuel7":0,"start":1,"state":0,"subitem":0,"subitem_nam":0,"support":0,"tag":1,"tag_id":0,"take":0,"target_id":0,"target_typ":0,"taylor":0,"tbd":0,"team":0,"team_id":0,"text":0,"them":0,"thing":0,"todai":0,"token":0,"toni":0,"trigger":0,"try":0,"type":0,"underneath":0,"uniqu":0,"up":0,"updat":1,"update_bodi":0,"upload":0,"us":0,"used_at":0,"user":1,"user_id":0,"valu":0,"veri":0,"well":0,"which":0,"within":0,"workspac":1,"workspace_id":0,"yogesh":0,"you":0,"your":0},"titles":["monday","Welcome to monday\u2019s documentation!"],"titleterms":{"":1,"avail":0,"board":0,"bug":0,"content":1,"contributor":0,"document":1,"get":0,"group":0,"indic":1,"item":0,"method":0,"mondai":[0,1],"notif":0,"report":0,"requir":0,"resourc":0,"start":0,"tabl":1,"tag":0,"updat":0,"user":0,"welcom":1,"workspac":0}})
\ No newline at end of file
diff --git a/docs/make.bat b/docs/make.bat
index 32bb245..65e2800 100644
--- a/docs/make.bat
+++ b/docs/make.bat
@@ -8,7 +8,7 @@ if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=.
-set BUILDDIR=_build
+set BUILDDIR=docs/_build
%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
diff --git a/monday/graphqlclient/client.py b/monday/graphqlclient/client.py
index 9a811fa..6d58197 100644
--- a/monday/graphqlclient/client.py
+++ b/monday/graphqlclient/client.py
@@ -1,5 +1,4 @@
import json
-
import requests
from monday.exceptions import MondayQueryError
@@ -8,6 +7,9 @@
DEFAULT_TIMEOUT = 60
+DEFAULT_PAGE_LIMIT_ITEMS = 500
+
+
class GraphQLClient:
def __init__(self, endpoint, timeout=DEFAULT_TIMEOUT):
self.endpoint = endpoint
diff --git a/monday/query_joins.py b/monday/query_joins.py
index aaa44b5..445ed4a 100644
--- a/monday/query_joins.py
+++ b/monday/query_joins.py
@@ -290,7 +290,7 @@ def delete_update_query(item_id):
def get_updates_for_item_query(item, limit):
query = '''query{
- items(ids: %s){
+ items(ids: %s) {
updates (limit: %s) {
id,
body,
@@ -365,8 +365,8 @@ def get_board_items_query(board_id: Union[str, int], query_params: Optional[Mapp
items_page_params = gather_params(raw_params, excluded_params=["board_id"])
wrapped_params = f"({items_page_params})" if items_page_params else ""
- query = '''query{
- boards(ids: %s){
+ query = '''query {
+ boards(ids: %s) {
name
items_page %s {
cursor
@@ -391,6 +391,30 @@ def get_board_items_query(board_id: Union[str, int], query_params: Optional[Mapp
return query
+def get_next_items_query(limit: Optional[int] = None, cursor: Optional[str] = None) -> str:
+ query = '''query {
+ next_items_page (limit: %s, cursor: "%s") {
+ cursor
+ items {
+ group {
+ id
+ title
+ }
+ id
+ name
+ column_values {
+ id
+ text
+ type
+ value
+ }
+ }
+ }
+ }''' % (limit, cursor)
+
+ return query
+
+
def get_boards_query(limit: int = None, page: int = None, ids: List[int] = None, board_kind: BoardKind = None,
state: BoardState = None, order_by: BoardsOrderBy = None, workspace_ids: List[int] = None):
parameters = locals().items()
diff --git a/monday/resources/boards.py b/monday/resources/boards.py
index 46b293b..33ff941 100644
--- a/monday/resources/boards.py
+++ b/monday/resources/boards.py
@@ -1,9 +1,11 @@
from typing import List, Optional, Union, Any, Mapping
from monday.query_joins import get_boards_query, get_boards_by_id_query, get_board_items_query, \
- get_columns_by_board_query, create_board_by_workspace_query, duplicate_board_query
+ get_next_items_query, get_columns_by_board_query, create_board_by_workspace_query, \
+ duplicate_board_query
from monday.resources.base import BaseResource
from monday.resources.types import BoardKind, BoardState, BoardsOrderBy, DuplicateType
+from monday.graphqlclient.client import DEFAULT_PAGE_LIMIT_ITEMS
class BoardResource(BaseResource):
@@ -18,10 +20,36 @@ def fetch_boards_by_id(self, board_ids: Union[int, str]):
return self.client.execute(query)
def fetch_items_by_board_id(self, board_ids: Union[int, str], query_params: Optional[Mapping[str, Any]] = None,
- limit: Optional[int] = None, cursor: Optional[str] = None):
+ limit: Optional[int] = DEFAULT_PAGE_LIMIT_ITEMS, cursor: Optional[str] = None):
query = get_board_items_query(board_ids, query_params=query_params, limit=limit, cursor=cursor)
return self.client.execute(query)
+ def fetch_next_items_by_cursor(self, cursor: str, limit: Optional[int] = None):
+ query = get_next_items_query(limit=limit, cursor=cursor)
+ return self.client.execute(query)
+
+ def fetch_all_items_by_board_id(self, board_ids: Union[int, str], query_params: Optional[Mapping[str, Any]] = None,
+ limit: Optional[int] = DEFAULT_PAGE_LIMIT_ITEMS) -> List[dict]:
+ items: List[dict] = []
+ cursor: Optional[str] = None
+
+ while True:
+ if cursor:
+ response = self.fetch_next_items_by_cursor(cursor=cursor, limit=limit)
+ items_page = response["data"]["next_items_page"]
+ else:
+ response = self.fetch_items_by_board_id(board_ids, query_params=query_params,
+ limit=limit, cursor=cursor)
+ items_page = response["data"]["boards"][0]["items_page"]
+
+ items.extend(items_page.get("items", []))
+ cursor = items_page.get("cursor")
+
+ if not cursor:
+ break
+
+ return items
+
def fetch_columns_by_board_id(self, board_ids: Union[int, str]):
query = get_columns_by_board_query(board_ids)
return self.client.execute(query)
diff --git a/monday/tests/test_board_resource.py b/monday/tests/test_board_resource.py
index a822a42..86c86e8 100644
--- a/monday/tests/test_board_resource.py
+++ b/monday/tests/test_board_resource.py
@@ -1,5 +1,5 @@
from monday.query_joins import duplicate_board_query, create_board_by_workspace_query, get_boards_query, \
- get_boards_by_id_query, get_board_items_query, get_columns_by_board_query
+ get_boards_by_id_query, get_board_items_query, get_next_items_query, get_columns_by_board_query
from monday.resources.types import ItemsQueryRuleOperator
from monday.tests.test_case_resource import BaseTestCase
@@ -42,6 +42,13 @@ def test_get_board_items_query(self):
items_line = 'items'
self.assertIn(items_line, query)
+ def test_get_next_items_query(self):
+ limit = 100
+ cursor = 'MSw0NTc5ODYzMTkyLFRWX2ljOWt2MVpnT...'
+ query = get_next_items_query(limit=limit, cursor=cursor)
+ items_page_line = f'next_items_page (limit: {limit}, cursor: "{cursor}")'
+ self.assertIn(items_page_line, query)
+
def test_get_board_items_query_with_limit_and_cursor(self):
limit = 100
cursor = 'MSw0NTc5ODYzMTkyLFRWX2ljOWt2MVpnT...'
diff --git a/setup.cfg b/setup.cfg
index 224a779..08aedd7 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,2 @@
[metadata]
-description-file = README.md
\ No newline at end of file
+description_file = README.md