├── .github └── workflows │ └── python-publish.yml ├── .gitignore ├── .travis.yml ├── README.md ├── clickupython ├── __init__.py ├── client.py ├── exceptions.py ├── helpers │ ├── __init__.py │ ├── formatting.py │ └── timefuncs.py └── models.py ├── docs ├── _build │ ├── doctrees │ │ ├── clickupy.doctree │ │ ├── clickupy.helpers.doctree │ │ ├── environment.pickle │ │ ├── functions.doctree │ │ ├── index.doctree │ │ ├── lists.doctree │ │ ├── modules.doctree │ │ └── tasks.doctree │ └── html │ │ ├── .buildinfo │ │ ├── _sources │ │ ├── clickupy.helpers.rst.txt │ │ ├── clickupy.rst.txt │ │ ├── functions.rst.txt │ │ ├── index.rst.txt │ │ ├── lists.rst.txt │ │ ├── modules.rst.txt │ │ └── tasks.rst.txt │ │ ├── _static │ │ ├── basic.css │ │ ├── css │ │ │ ├── badge_only.css │ │ │ ├── fonts │ │ │ │ ├── Roboto-Slab-Bold.woff │ │ │ │ ├── Roboto-Slab-Bold.woff2 │ │ │ │ ├── Roboto-Slab-Regular.woff │ │ │ │ ├── Roboto-Slab-Regular.woff2 │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ ├── fontawesome-webfont.woff2 │ │ │ │ ├── lato-bold-italic.woff │ │ │ │ ├── lato-bold-italic.woff2 │ │ │ │ ├── lato-bold.woff │ │ │ │ ├── lato-bold.woff2 │ │ │ │ ├── lato-normal-italic.woff │ │ │ │ ├── lato-normal-italic.woff2 │ │ │ │ ├── lato-normal.woff │ │ │ │ └── lato-normal.woff2 │ │ │ └── theme.css │ │ ├── doctools.js │ │ ├── documentation_options.js │ │ ├── file.png │ │ ├── jquery-3.5.1.js │ │ ├── jquery.js │ │ ├── js │ │ │ ├── badge_only.js │ │ │ ├── html5shiv-printshiv.min.js │ │ │ ├── html5shiv.min.js │ │ │ └── theme.js │ │ ├── language_data.js │ │ ├── minus.png │ │ ├── plus.png │ │ ├── pygments.css │ │ ├── searchtools.js │ │ ├── underscore-1.13.1.js │ │ └── underscore.js │ │ ├── clickupy.helpers.html │ │ ├── clickupy.html │ │ ├── functions.html │ │ ├── genindex.html │ │ ├── index.html │ │ ├── lists.html │ │ ├── modules.html │ │ ├── objects.inv │ │ ├── py-modindex.html │ │ ├── search.html │ │ ├── searchindex.js │ │ └── tasks.html ├── clickupy.helpers.rst ├── clickupy.rst ├── conf.py ├── functions.rst ├── index.rst ├── lists.rst ├── modules.rst └── tasks.rst ├── examples └── examples.py ├── requirements.txt ├── setup.cfg ├── setup.py └── tests ├── .coverage ├── __init__.py ├── assets ├── Repositories _ Documentation _ Poetry - Python dependency management and packaging made easy.html ├── Repositories _ Documentation _ Poetry - Python dependency management and packaging made easy_files │ ├── app.832c9ab312fdf367c5fc9e258801465a7476c6db8a105d0192646ef055ce77e8.js.download │ ├── app.d4300324a0faa0dcb73ea4433398584b1f99ab832dcdb573950152bde033078d.css │ ├── logo-origami.svg │ └── plausible.js.download └── test-image.png ├── test_client.py └── test_timefuncs.py /.github/workflows/python-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will upload a Python Package using Twine when a release is created 2 | # For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries 3 | 4 | # This workflow uses actions that are not certified by GitHub. 5 | # They are provided by a third-party and are governed by 6 | # separate terms of service, privacy policy, and support 7 | # documentation. 8 | 9 | name: Upload Python Package 10 | 11 | on: 12 | release: 13 | types: [published] 14 | 15 | jobs: 16 | deploy: 17 | 18 | runs-on: ubuntu-latest 19 | 20 | steps: 21 | - uses: actions/checkout@v2 22 | - name: Set up Python 23 | uses: actions/setup-python@v2 24 | with: 25 | python-version: '3.x' 26 | - name: Install dependencies 27 | run: | 28 | python -m pip install --upgrade pip 29 | pip install build 30 | - name: Build package 31 | run: python -m build 32 | - name: Publish package 33 | uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29 34 | with: 35 | user: __token__ 36 | password: ${{ secrets.PYPI_API_TOKEN }} 37 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Distribution / packaging 2 | .Python 3 | develop-eggs/ 4 | dist/ 5 | downloads/ 6 | eggs/ 7 | .eggs/ 8 | lib/ 9 | lib64/ 10 | parts/ 11 | sdist/ 12 | var/ 13 | wheels/ 14 | *.egg-info/ 15 | .installed.cfg 16 | *.egg 17 | 18 | ### Python 19 | # Byte-compiled / optimized / DLL files 20 | __pycache__/ 21 | *.py[cod] 22 | *$py.class 23 | 24 | # PyInstaller 25 | # Usually these files are written by a python script from a template 26 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 27 | *.manifest 28 | *.spec 29 | 30 | # Installer logs 31 | pip-log.txt 32 | pip-delete-this-directory.txt 33 | 34 | # Environments 35 | .env 36 | .venv 37 | env/ 38 | venv/ 39 | ENV/ 40 | env.bak/ 41 | venv.bak/ 42 | 43 | ### Vim 44 | # swap 45 | .sw[a-p] 46 | .*.sw[a-p] 47 | # session 48 | Session.vim 49 | # temporary 50 | .netrwhist 51 | *~ 52 | # auto-generated tag files 53 | tags 54 | 55 | ### PyCharm 56 | .idea 57 | 58 | ### MacOS FS 59 | .DS_Store 60 | 61 | ### VisualStudioCode ### 62 | .vscode/* 63 | !.vscode/settings.json 64 | !.vscode/tasks.json 65 | !.vscode/launch.json 66 | !.vscode/extensions.json 67 | 68 | ### PyTest ### 69 | .pytest_cache 70 | make.bat 71 | Makefile 72 | _source 73 | test.py 74 | pyvenv.cfg 75 | Include 76 | Scripts 77 | preflight.py 78 | build 79 | .vscode -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | 3 | python: 4 | - "3.9" 5 | - "3.8" 6 | - "3.7" 7 | 8 | install: 9 | - pip install setuptools 10 | - pip install -r requirements.txt 11 | - pip install pytest-cov 12 | - pip install coveralls 13 | - pip install -e . 14 | 15 | 16 | script: 17 | - pytest 18 | 19 | script: pytest --cov=clickupython tests/ 20 | 21 | after_success: 22 | - coveralls -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Update: I just want to clarify that I do not activley maintain this code and am not associated with Clickup. Things may change over time but this should cover all the main endpoints. Feel free to clone and change this code in any way, shape or form. 2 | 3 | [![Documentation Status](https://readthedocs.org/projects/clickupython/badge/?version=latest)](https://clickupython.readthedocs.io/en/latest/?badge=latest) 4 | [![CodeFactor](https://www.codefactor.io/repository/github/imzachjohnson/clickupython/badge)](https://www.codefactor.io/repository/github/imzachjohnson/clickupython) 5 | [![Build Status](https://app.travis-ci.com/Imzachjohnson/clickupython.svg?branch=main)](https://app.travis-ci.com/Imzachjohnson/clickupython) 6 | [![Coverage Status](https://coveralls.io/repos/github/Imzachjohnson/clickupython/badge.svg?branch=main)](https://coveralls.io/github/Imzachjohnson/clickupython?branch=main) 7 | [![Code style:black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) 8 | 9 | # clickupython 10 | 11 | A client for working with the ClickUp API V2. It can be used to interact with the ClickUp API in your projects. 12 | 13 | Documentation (WIP) and examples can be found here: [clickupython documentation](https://clickupython.readthedocs.io/en/latest/) 14 | 15 | ## Instructions 16 | 17 | ### 1) Installing 18 | 19 | `pip install clickupython` 20 | 21 | ### 2) Library Usage 22 | 23 | Using clickupython in your application takes just a couple quick steps. 24 | 25 | To use the client for a personal account context (no actions on behalf of another user) 26 | 27 | ```python 28 | 29 | from clickupython import client 30 | 31 | API_KEY = 'YOUR API KEY' 32 | 33 | c = client.ClickUpClient(API_KEY) 34 | 35 | # Example request 36 | 37 | c = client.ClickUpClient(API_KEY) 38 | t = c.create_task("list_id", name="Test task", due_date="march 2 2021") 39 | 40 | print(t.name) 41 | 42 | ``` 43 | 44 | _For more examples, please refer to the [Documentation](https://clickupython.readthedocs.io/en/latest/)_ 45 | 46 | ## Current ClickUpClient Functions 47 | 48 | ### Task 49 | 50 | - `get_task(task_id)` 51 | - `get_tasks(list_id, archived, page, order_by, reverse, subtasks, statuses, include_closed, assignees, due_date_gt, due_date_lt, date_created_gt, date_created_lt, date_updated_gt, date_updated_lt)` 52 | - `create_task(list_id, name, description, priority, assignees, tags, status, due_date, start_date, notify_all)` 53 | - `update_task(task_id, name, description, status, priority, time_estimate, archived, add_assignees,remove_assignees` 54 | 55 | ### List 56 | 57 | - `get_list(list_id)` 58 | - `get_lists(folder_id)` 59 | - `create_list(folder_id, name, content, due_date, priority, status)` 60 | - `create_folderless_list(space_id, name, content, due_date, priority, assignee, status)` 61 | - `update_list(list_id, name, content, due_date, due_date_time, priority, assignee, unset_status)` 62 | - `delete_list(list_id)` 63 | - `add_task_to_list(task_id, list_id)` 64 | - `remove_task_from_list(task_id, list_id)` 65 | 66 | ### Folder 67 | 68 | - `get_folder(folder_id)` 69 | - `get_folders(space_id)` 70 | - `create_folder(space_id, name)` 71 | - `update_folder(folder_id, name)` 72 | - `delete_folder(folder_id)` 73 | 74 | ### Attachments 75 | 76 | `upload_attachment(task_id, file_path)` 77 | 78 | ### Comments 79 | 80 | - `get_task_comments(task_id)` 81 | - `get_list_comments(list_id)` 82 | - `get_chat_comments(view_id)` 83 | - `update_comment(comment_id)` 84 | - `delete_comment(comment_id)` 85 | - `create_task_comment(task_id)` 86 | 87 | ### Teams 88 | 89 | - `get_teams()` 90 | 91 | ### Checklists 92 | 93 | - `create_checklist(task_id, name)` 94 | - `create_checklist_item(checklist_id, name, assignee)` 95 | - `delete_checklist_item(checklist_id, checklist_item_id)` 96 | - `update_checklist_item(checklist_id, checklist_item_id, name, resolved, parent)` 97 | 98 | ### Goals 99 | 100 | - `create_goal(team_id, name, due_date, description, multiple_owners, owners, color)` 101 | - `update_goal(goal_id, name, due_date, description, rem_owners, add_owners, color)` 102 | - `delete_goal(goal_id)` 103 | - `get_goal(goal_id)` 104 | - `get_goals(team_id, include_completed)` 105 | 106 | ### Members 107 | 108 | - `get_task_members(task_id)` 109 | - `get_list_members(list_id)` 110 | 111 | ### Tags 112 | 113 | - `get_space_tags(space_id)` 114 | - `create_space_tag(space_id, name)` 115 | - `update_tag(space_id, name, new_name)` 116 | - `tag_task(task_id, tag_name)` 117 | - `untag_task(task_id, tag_name)` 118 | 119 | ### Spaces 120 | 121 | - `create_space(team_id, name, features)` 122 | - `delete_space(space_id)` 123 | - `get_space(space_id)` 124 | - `get_spaces( team_id, archived)` 125 | 126 | ### Time Tracking 127 | 128 | - `get_time_entries_in_range(team_id, start_date, end_date, assignees)` 129 | - `get_single_time_entry(team_id, timer_id)` 130 | - `start_timer(team_id, timer_id)` 131 | - `stop_timer(team_id)` 132 | 133 | ## Contact 134 | 135 | Zach Johnson & Robert Mullis 136 | 137 | Email: imzachjohnson@gmail.com, phoenix.scooter@gmail.com 138 | 139 | ### Acknowledgements 140 | 141 | - [timefhuman](https://github.com/alvinwan/timefhuman) 142 | - [word2number](https://github.com/akshaynagpal/w2n) 143 | 144 | ## License 145 | 146 | Distributed under the GNU General Public License v3.0. See `LICENSE` for more information. 147 | -------------------------------------------------------------------------------- /clickupython/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/clickupython/__init__.py -------------------------------------------------------------------------------- /clickupython/exceptions.py: -------------------------------------------------------------------------------- 1 | class ClickupClientError(Exception): 2 | def __init__(self, error_message, status_code=None): 3 | self.status_code = status_code 4 | self.error_message = error_message 5 | 6 | def __str__(self): 7 | if self.status_code: 8 | return "(%s) %s" % (self.status_code, self.error_message) 9 | else: 10 | return self.error_message 11 | -------------------------------------------------------------------------------- /clickupython/helpers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/clickupython/helpers/__init__.py -------------------------------------------------------------------------------- /clickupython/helpers/formatting.py: -------------------------------------------------------------------------------- 1 | import urllib 2 | from urllib.parse import urlparse 3 | import posixpath 4 | 5 | 6 | def url_join(host, model, *additional_path): 7 | return urllib.parse.urljoin(host, posixpath.join(model, *additional_path)) -------------------------------------------------------------------------------- /clickupython/helpers/timefuncs.py: -------------------------------------------------------------------------------- 1 | from word2number import w2n 2 | from timefhuman import timefhuman 3 | from datetime import datetime 4 | from clickupython import exceptions 5 | import pendulum as time 6 | 7 | SCALES = { 8 | "min": 60, 9 | "mins": 60, 10 | "minute": 60, 11 | "minutes": 60, 12 | "hour": 3600, 13 | "hours": 3600, 14 | "day": 86400, 15 | "days": 86400, 16 | "week": 604800, 17 | "weeks": 604800, 18 | "month": 2419200, 19 | "months": 2419200, 20 | "year": 31536000, 21 | "years": 31536000, 22 | } 23 | 24 | 25 | def fuzzy_time_to_unix(text: str): 26 | """ 27 | Converts a human readable time and date to a Unix timestamp 28 | 29 | Args: text - a human readable date in string form 30 | 31 | Returns: a Unix timestamp 32 | """ 33 | try: 34 | now = time.now() 35 | timestamp = datetime.timestamp(timefhuman(text, now)) 36 | return str(int(timestamp * 1000)) 37 | except BaseException: 38 | print("\n") 39 | raise exceptions.ClickupClientError( 40 | "The date you entered was not convertable to a Unix timestamp. Check the format and spelling.", 41 | "Time conversion error", 42 | ) 43 | 44 | 45 | def fuzzy_time_to_seconds(text: any) -> int: 46 | """ 47 | Converts a human readable duration of time into seconds 48 | 49 | Args: text - a human readable period of time 50 | 51 | Returns: seconds of the duration as an int 52 | """ 53 | 54 | # Check if the input is a timestamp 55 | try: 56 | return str(int(text)) 57 | 58 | # Not a timestamp, so let's interpret the fuzzy string 59 | except ValueError: 60 | text = text.lower() 61 | pairs = [] 62 | for word in text.split(): 63 | if word in SCALES: 64 | value = text[: text.find(word)] 65 | try: 66 | pairs.append((int(value), SCALES[word])) 67 | except ValueError: 68 | pairs.append((w2n.word_to_num(value), SCALES[word])) 69 | text = text[text.find(word) :] 70 | 71 | return sum(pair[0] * pair[1] for pair in pairs) 72 | 73 | 74 | if __name__ == "__main__": 75 | print(fuzzy_time_to_seconds("36 hours")) 76 | print(fuzzy_time_to_unix("december 1st")) 77 | print(fuzzy_time_to_seconds("3333029384")) 78 | -------------------------------------------------------------------------------- /docs/_build/doctrees/clickupy.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/clickupy.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/clickupy.helpers.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/clickupy.helpers.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/environment.pickle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/environment.pickle -------------------------------------------------------------------------------- /docs/_build/doctrees/functions.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/functions.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/index.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/index.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/lists.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/lists.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/modules.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/modules.doctree -------------------------------------------------------------------------------- /docs/_build/doctrees/tasks.doctree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/doctrees/tasks.doctree -------------------------------------------------------------------------------- /docs/_build/html/.buildinfo: -------------------------------------------------------------------------------- 1 | # Sphinx build info version 1 2 | # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. 3 | config: 5b08078aabaae6ff8764c3d702f29a50 4 | tags: 645f666f9bcd5a90fca523b33c5a78b7 5 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/clickupy.helpers.rst.txt: -------------------------------------------------------------------------------- 1 | clickupython.helpers package 2 | ======================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | clickupython.helpers.formatting module 8 | ---------------------------------- 9 | 10 | .. automodule:: clickupython.helpers.formatting 11 | :members: 12 | :undoc-members: 13 | :show-inheritance: 14 | 15 | clickupython.helpers.timefuncs module 16 | --------------------------------- 17 | 18 | .. automodule:: clickupython.helpers.timefuncs 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | Module contents 24 | --------------- 25 | 26 | .. automodule:: clickupython.helpers 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/clickupy.rst.txt: -------------------------------------------------------------------------------- 1 | clickupython package 2 | ================ 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 4 9 | 10 | clickupython.helpers 11 | 12 | Submodules 13 | ---------- 14 | 15 | clickupython.client module 16 | ---------------------- 17 | 18 | .. automodule:: clickupython.client 19 | :members: 20 | :undoc-members: 21 | :show-inheritance: 22 | 23 | clickupython.exceptions module 24 | -------------------------- 25 | 26 | .. automodule:: clickupython.exceptions 27 | :members: 28 | :undoc-members: 29 | :show-inheritance: 30 | 31 | clickupython.models module 32 | ---------------------- 33 | 34 | .. automodule:: clickupython.models 35 | :members: 36 | :undoc-members: 37 | :show-inheritance: 38 | 39 | Module contents 40 | --------------- 41 | 42 | .. automodule:: clickupython 43 | :members: 44 | :undoc-members: 45 | :show-inheritance: 46 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/functions.rst.txt: -------------------------------------------------------------------------------- 1 | Functions 2 | ==================================== 3 | clickupython is a Python client for the ClickUp API and can be used to interact with the ClickUp API in your projects. ClickUp's API exposes the entire ClickUp infrastructure via a standardized programmatic interface. Using ClickUp's API, you can do just about anything you can do on clickup.com. 4 | 5 | 6 | ================ ============================================================ 7 | Directive Name Description (Docutils version added to, in [brackets]) 8 | ================ ============================================================ 9 | ``get_task(task_id)`` Specific admonition; also "caution", "danger", 10 | admonition Generic titled admonition: ``.. admonition:: By The Way`` 11 | image ``.. image:: picture.png``; many options possible 12 | figure Like "image", but with optional caption and legend 13 | topic ``.. topic:: Title``; like a mini section 14 | sidebar ``.. sidebar:: Title``; like a mini parallel document 15 | parsed-literal A literal block with parsed inline markup 16 | rubric ``.. rubric:: Informal Heading`` 17 | epigraph Block quote with class="epigraph" 18 | highlights Block quote with class="highlights" 19 | pull-quote Block quote with class="pull-quote" 20 | compound Compound paragraphs [0.3.6] 21 | container Generic block-level container element [0.3.10] 22 | table Create a titled table [0.3.1] 23 | list-table Create a table from a uniform two-level bullet list [0.3.8] 24 | csv-table Create a table from CSV data [0.3.4] 25 | contents Generate a table of contents 26 | sectnum Automatically number sections, subsections, etc. 27 | header, footer Create document decorations [0.3.8] 28 | target-notes Create an explicit footnote for each external target 29 | math Mathematical notation (input in LaTeX format) 30 | meta HTML-specific metadata 31 | include Read an external reST file as if it were inline 32 | raw Non-reST data passed untouched to the Writer 33 | replace Replacement text for substitution definitions 34 | unicode Unicode character code conversion for substitution defs 35 | date Generates today's date; for substitution defs 36 | class Set a "class" attribute on the next element 37 | role Create a custom interpreted text role [0.3.2] 38 | default-role Set the default interpreted text role [0.3.10] 39 | title Set the metadata document title [0.3.10] 40 | ================ ============================================================ -------------------------------------------------------------------------------- /docs/_build/html/_sources/index.rst.txt: -------------------------------------------------------------------------------- 1 | .. clickupython documentation master file, created by 2 | sphinx-quickstart on Thu Sep 16 19:12:54 2021. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | .. clickupython documentation master file, created by 7 | sphinx-quickstart on Thu Sep 9 17:56:55 2021. 8 | You can adapt this file completely to your liking, but it should at least 9 | contain the root `toctree` directive. 10 | 11 | clickupython 12 | ==================================== 13 | clickupython is a Python client for the ClickUp API and can be used to interact with the ClickUp API in your projects. ClickUp's API exposes the entire ClickUp infrastructure via a standardized programmatic interface. Using ClickUp's API, you can do just about anything you can do on clickup.com. 14 | 15 | 16 | Getting started 17 | ***** 18 | To start, install clickupython via pip. 19 | 20 | :: 21 | 22 | $ pip install clickupython 23 | 24 | 25 | Authentication 26 | ***** 27 | There are two ways to authenticate with ClickUp API 2.0, with a personal token or creating an application and authenticating with an OAuth2 flow. 28 | 29 | .. note:: IMPORTANT - If you are creating an application for other's to use, it is 30 | highly recommended that you use the OAuth2 flow. 31 | 32 | Method 1: API Key (Fastest) 33 | --------------- 34 | Sign in to ClickUp and navigate to Settings > Apps. 35 | There you will see a an API token. Copy this and save it. You will use this to authenticate the clickupython client with ClickUp's API. 36 | 37 | :: 38 | 39 | $ from clickupython import ClickUpClient 40 | 41 | API_KEY = 'YOUR API KEY' 42 | client = ClickUpClient(API_KEY) 43 | 44 | # Example request | Creating a task in a list 45 | c = client.ClickUpClient(API_KEY) 46 | task = c.create_task("list_id", name="Test task", due_date="march 2 2021") 47 | 48 | if task: 49 | print(task.id) 50 | 51 | 52 | 53 | 54 | .. toctree:: 55 | :maxdepth: 2 56 | :caption: Contents: 57 | 58 | index 59 | tasks 60 | lists 61 | 62 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/lists.rst.txt: -------------------------------------------------------------------------------- 1 | Lists 2 | ==================================== 3 | 4 | .. autoclass:: clickupython.models.SingleList 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | | 9 | | 10 | .. raw:: html 11 | 12 |
13 | 14 | Creating a List 15 | --------------- 16 | Here's how to create a new ClickupClient instance and validate a personal API key with the ClickUp API and create a new task with a 17 | due date. When creating a new task, the only required arguments are list_id and name. Name will be the title of your list on ClickUp. 18 | 19 | Example:: 20 | 21 | c = client.ClickUpClient("YOUR_API_KEY") 22 | t = c.create_task("LIST_ID", name="Test Task", due_date="march 2 2021") 23 | 24 | 25 | Fetching a Single Task 26 | --------------- 27 | Example: Lookup via ClickUpClient:: 28 | 29 | c = client.ClickUpClient("YOUR_API_KEY") 30 | task = c.get_task(task_id) 31 | 32 | print(task.name) 33 | 34 | 35 | Fetching all Tasks from a List 36 | --------------- 37 | You can quickly get all tasks for a given list via the list id: 38 | 39 | Example:: 40 | 41 | c = client.ClickUpClient("YOUR_API_KEY") 42 | tasks = c.get_tasks("list_id") 43 | 44 | 45 | 46 | Filtering Tasks 47 | --------------- 48 | Example:: 49 | 50 | c = client.ClickUpClient("YOUR_API_KEY") 51 | tasks = c.get_tasks("list_id", date_updated_gt="august 1 2021", 52 | assignees=["4523","4562","5871"], include_closed=True) 53 | 54 | 55 | This example will return all tasks that have been updated after August 1st, 2021 and are assigned to users with the ids of 4523, 4562, and 5871. 56 | This request will also include tasks that have been marked as "closed." 57 | 58 | Example:: 59 | 60 | c = client.ClickUpClient("YOUR_API_KEY") 61 | tasks = c.get_tasks("list_id", subtasks=True, 62 | statuses=["todo", "in progress"]) 63 | 64 | This example will return all tasks and subtasks that are marked as "Todo" and "In Progress". These values can be changed depending on the statuses you have available in your list. 65 | 66 | You can extend the calls above by passing any of the arguments to the ``get_tasks`` method. You can use as many or as few as you would like. 67 | 68 | 69 | 70 | Working With Tasks 71 | --------------- 72 | Now that you have a list of ``Task`` objects you can access the attributes of each task in a number of ways: 73 | 74 | Example: Loop:: 75 | 76 | c = client.ClickUpClient("YOUR_API_KEY") 77 | tasks = c.get_tasks(list_id) 78 | 79 | for task in tasks: 80 | print(task.name) 81 | 82 | 83 | Example: Direct Access via an Index:: 84 | 85 | c = client.ClickUpClient("YOUR_API_KEY") 86 | tasks = c.get_tasks(list_id) 87 | 88 | print(tasks[0].name]) 89 | 90 | 91 | Getting Tasks Associated with a List Object 92 | --------------- 93 | Certain calls can be made directly from a parent object. We can access a single ``Task`` or all ``Tasks`` associated with a ``List`` with the following 94 | methods. 95 | 96 | .. note:: IMPORTANT - When calling a method from a parent object you must pass in a reference to the ClickUpClient object as the first argument. 97 | 98 | Example: Lookup Tasks via a List Object:: 99 | 100 | c = client.ClickUpClient("YOUR_API_KEY") 101 | list = c.get_list(list_id) 102 | tasks = list.get_tasks(c) 103 | filtered_tasks = list.get_tasks(c, subtasks=True, statuses=["todo", "in progress"]) 104 | task = list.get_task(c, task_id) 105 | | 106 | | 107 | 108 | .. raw:: html 109 | 110 |
111 | 112 | 113 | List Methods 114 | --------------- 115 | 116 | get_list() 117 | ++++++++++++ 118 | .. automethod:: clickupython.client.ClickUpClient.get_list 119 | | 120 | | 121 | .. raw:: html 122 | 123 |
124 | get_lists() 125 | ++++++++++++ 126 | .. automethod:: clickupython.client.ClickUpClient.get_lists 127 | | 128 | | 129 | .. raw:: html 130 | 131 |
132 | create_list() 133 | ++++++++++++ 134 | .. automethod:: clickupython.client.ClickUpClient.create_list 135 | | 136 | | 137 | .. raw:: html 138 | 139 |
140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/modules.rst.txt: -------------------------------------------------------------------------------- 1 | clickupython Overview 2 | ======== 3 | 4 | .. toctree:: 5 | :maxdepth: 4 6 | 7 | clickupython 8 | -------------------------------------------------------------------------------- /docs/_build/html/_sources/tasks.rst.txt: -------------------------------------------------------------------------------- 1 | Tasks 2 | ==================================== 3 | 4 | .. autoclass:: clickupython.models.Task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | | 9 | | 10 | .. raw:: html 11 | 12 |
13 | 14 | Creating a Task 15 | --------------- 16 | Here's how to create a new ClickupClient instance and validate a personal API key with the ClickUp API and create a new task with a 17 | due date. When creating a new task, the only required arguments are list_id and name. Name will be the title of your list on ClickUp. 18 | 19 | Example:: 20 | 21 | c = client.ClickUpClient("YOUR_API_KEY") 22 | t = c.create_task("LIST_ID", name="Test Task", due_date="march 2 2021") 23 | 24 | 25 | Fetching a Single Task 26 | --------------- 27 | Example: Lookup via ClickUpClient:: 28 | 29 | c = client.ClickUpClient("YOUR_API_KEY") 30 | task = c.get_task(task_id) 31 | 32 | print(task.name) 33 | 34 | 35 | Fetching all Tasks from a List 36 | --------------- 37 | You can quickly get all tasks for a given list via the list id: 38 | 39 | Example:: 40 | 41 | c = client.ClickUpClient("YOUR_API_KEY") 42 | tasks = c.get_tasks("list_id") 43 | 44 | 45 | 46 | Filtering Tasks 47 | --------------- 48 | Example:: 49 | 50 | c = client.ClickUpClient("YOUR_API_KEY") 51 | tasks = c.get_tasks("list_id", date_updated_gt="august 1 2021", 52 | assignees=["4523","4562","5871"], include_closed=True) 53 | 54 | 55 | This example will return all tasks that have been updated after August 1st, 2021 and are assigned to users with the ids of 4523, 4562, and 5871. 56 | This request will also include tasks that have been marked as "closed." 57 | 58 | Example:: 59 | 60 | c = client.ClickUpClient("YOUR_API_KEY") 61 | tasks = c.get_tasks("list_id", subtasks=True, 62 | statuses=["todo", "in progress"]) 63 | 64 | This example will return all tasks and subtasks that are marked as "Todo" and "In Progress". These values can be changed depending on the statuses you have available in your list. 65 | 66 | You can extend the calls above by passing any of the arguments to the ``get_tasks`` method. You can use as many or as few as you would like. 67 | 68 | 69 | 70 | Working With Tasks 71 | --------------- 72 | Now that you have a list of ``Task`` objects you can access the attributes of each task in a number of ways: 73 | 74 | Example: Loop:: 75 | 76 | c = client.ClickUpClient("YOUR_API_KEY") 77 | tasks = c.get_tasks(list_id) 78 | 79 | for task in tasks: 80 | print(task.name) 81 | 82 | 83 | Example: Direct Access via an Index:: 84 | 85 | c = client.ClickUpClient("YOUR_API_KEY") 86 | tasks = c.get_tasks(list_id) 87 | 88 | print(tasks[0].name]) 89 | 90 | 91 | Getting Tasks Associated with a List Object 92 | --------------- 93 | Certain calls can be made directly from a parent object. We can access a single ``Task`` or all ``Tasks`` associated with a ``List`` with the following 94 | methods. 95 | 96 | .. note:: IMPORTANT - When calling a method from a parent object you must pass in a reference to the ClickUpClient object as the first argument. 97 | 98 | Example: Lookup Tasks via a List Object:: 99 | 100 | c = client.ClickUpClient("YOUR_API_KEY") 101 | list = c.get_list(list_id) 102 | tasks = list.get_tasks(c) 103 | filtered_tasks = list.get_tasks(c, subtasks=True, statuses=["todo", "in progress"]) 104 | task = list.get_task(c, task_id) 105 | | 106 | | 107 | 108 | .. raw:: html 109 | 110 |
111 | 112 | Task Methods 113 | --------------- 114 | 115 | get_tasks() 116 | ++++++++++++ 117 | .. automethod:: clickupython.client.ClickUpClient.get_tasks 118 | | 119 | | 120 | 121 | .. raw:: html 122 | 123 |
124 | get_task() 125 | ++++++++++++ 126 | .. automethod:: clickupython.client.ClickUpClient.get_task 127 | | 128 | 129 | .. raw:: html 130 | 131 |
132 | create_task() 133 | ++++++++++++ 134 | .. automethod:: clickupython.client.ClickUpClient.create_task 135 | | 136 | | 137 | .. raw:: html 138 | 139 |
140 | update_task() 141 | ++++++++++++ 142 | .. automethod:: clickupython.client.ClickUpClient.update_task 143 | | 144 | | 145 | .. raw:: html 146 | 147 |
148 | 149 | delete_task() 150 | ++++++++++++ 151 | .. automethod:: clickupython.client.ClickUpClient.delete_task 152 | | 153 | | 154 | .. raw:: html 155 | 156 |
157 | 158 | get_task_comments() 159 | ++++++++++++ 160 | .. automethod:: clickupython.client.ClickUpClient.get_task_comments 161 | | 162 | | 163 | .. raw:: html 164 | 165 |
166 | 167 | 168 | -------------------------------------------------------------------------------- /docs/_build/html/_static/basic.css: -------------------------------------------------------------------------------- 1 | /* 2 | * basic.css 3 | * ~~~~~~~~~ 4 | * 5 | * Sphinx stylesheet -- basic theme. 6 | * 7 | * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /* -- main layout ----------------------------------------------------------- */ 13 | 14 | div.clearer { 15 | clear: both; 16 | } 17 | 18 | div.section::after { 19 | display: block; 20 | content: ''; 21 | clear: left; 22 | } 23 | 24 | /* -- relbar ---------------------------------------------------------------- */ 25 | 26 | div.related { 27 | width: 100%; 28 | font-size: 90%; 29 | } 30 | 31 | div.related h3 { 32 | display: none; 33 | } 34 | 35 | div.related ul { 36 | margin: 0; 37 | padding: 0 0 0 10px; 38 | list-style: none; 39 | } 40 | 41 | div.related li { 42 | display: inline; 43 | } 44 | 45 | div.related li.right { 46 | float: right; 47 | margin-right: 5px; 48 | } 49 | 50 | /* -- sidebar --------------------------------------------------------------- */ 51 | 52 | div.sphinxsidebarwrapper { 53 | padding: 10px 5px 0 10px; 54 | } 55 | 56 | div.sphinxsidebar { 57 | float: left; 58 | width: 230px; 59 | margin-left: -100%; 60 | font-size: 90%; 61 | word-wrap: break-word; 62 | overflow-wrap : break-word; 63 | } 64 | 65 | div.sphinxsidebar ul { 66 | list-style: none; 67 | } 68 | 69 | div.sphinxsidebar ul ul, 70 | div.sphinxsidebar ul.want-points { 71 | margin-left: 20px; 72 | list-style: square; 73 | } 74 | 75 | div.sphinxsidebar ul ul { 76 | margin-top: 0; 77 | margin-bottom: 0; 78 | } 79 | 80 | div.sphinxsidebar form { 81 | margin-top: 10px; 82 | } 83 | 84 | div.sphinxsidebar input { 85 | border: 1px solid #98dbcc; 86 | font-family: sans-serif; 87 | font-size: 1em; 88 | } 89 | 90 | div.sphinxsidebar #searchbox form.search { 91 | overflow: hidden; 92 | } 93 | 94 | div.sphinxsidebar #searchbox input[type="text"] { 95 | float: left; 96 | width: 80%; 97 | padding: 0.25em; 98 | box-sizing: border-box; 99 | } 100 | 101 | div.sphinxsidebar #searchbox input[type="submit"] { 102 | float: left; 103 | width: 20%; 104 | border-left: none; 105 | padding: 0.25em; 106 | box-sizing: border-box; 107 | } 108 | 109 | 110 | img { 111 | border: 0; 112 | max-width: 100%; 113 | } 114 | 115 | /* -- search page ----------------------------------------------------------- */ 116 | 117 | ul.search { 118 | margin: 10px 0 0 20px; 119 | padding: 0; 120 | } 121 | 122 | ul.search li { 123 | padding: 5px 0 5px 20px; 124 | background-image: url(file.png); 125 | background-repeat: no-repeat; 126 | background-position: 0 7px; 127 | } 128 | 129 | ul.search li a { 130 | font-weight: bold; 131 | } 132 | 133 | ul.search li p.context { 134 | color: #888; 135 | margin: 2px 0 0 30px; 136 | text-align: left; 137 | } 138 | 139 | ul.keywordmatches li.goodmatch a { 140 | font-weight: bold; 141 | } 142 | 143 | /* -- index page ------------------------------------------------------------ */ 144 | 145 | table.contentstable { 146 | width: 90%; 147 | margin-left: auto; 148 | margin-right: auto; 149 | } 150 | 151 | table.contentstable p.biglink { 152 | line-height: 150%; 153 | } 154 | 155 | a.biglink { 156 | font-size: 1.3em; 157 | } 158 | 159 | span.linkdescr { 160 | font-style: italic; 161 | padding-top: 5px; 162 | font-size: 90%; 163 | } 164 | 165 | /* -- general index --------------------------------------------------------- */ 166 | 167 | table.indextable { 168 | width: 100%; 169 | } 170 | 171 | table.indextable td { 172 | text-align: left; 173 | vertical-align: top; 174 | } 175 | 176 | table.indextable ul { 177 | margin-top: 0; 178 | margin-bottom: 0; 179 | list-style-type: none; 180 | } 181 | 182 | table.indextable > tbody > tr > td > ul { 183 | padding-left: 0em; 184 | } 185 | 186 | table.indextable tr.pcap { 187 | height: 10px; 188 | } 189 | 190 | table.indextable tr.cap { 191 | margin-top: 10px; 192 | background-color: #f2f2f2; 193 | } 194 | 195 | img.toggler { 196 | margin-right: 3px; 197 | margin-top: 3px; 198 | cursor: pointer; 199 | } 200 | 201 | div.modindex-jumpbox { 202 | border-top: 1px solid #ddd; 203 | border-bottom: 1px solid #ddd; 204 | margin: 1em 0 1em 0; 205 | padding: 0.4em; 206 | } 207 | 208 | div.genindex-jumpbox { 209 | border-top: 1px solid #ddd; 210 | border-bottom: 1px solid #ddd; 211 | margin: 1em 0 1em 0; 212 | padding: 0.4em; 213 | } 214 | 215 | /* -- domain module index --------------------------------------------------- */ 216 | 217 | table.modindextable td { 218 | padding: 2px; 219 | border-collapse: collapse; 220 | } 221 | 222 | /* -- general body styles --------------------------------------------------- */ 223 | 224 | div.body { 225 | min-width: 450px; 226 | max-width: 800px; 227 | } 228 | 229 | div.body p, div.body dd, div.body li, div.body blockquote { 230 | -moz-hyphens: auto; 231 | -ms-hyphens: auto; 232 | -webkit-hyphens: auto; 233 | hyphens: auto; 234 | } 235 | 236 | a.headerlink { 237 | visibility: hidden; 238 | } 239 | 240 | a.brackets:before, 241 | span.brackets > a:before{ 242 | content: "["; 243 | } 244 | 245 | a.brackets:after, 246 | span.brackets > a:after { 247 | content: "]"; 248 | } 249 | 250 | h1:hover > a.headerlink, 251 | h2:hover > a.headerlink, 252 | h3:hover > a.headerlink, 253 | h4:hover > a.headerlink, 254 | h5:hover > a.headerlink, 255 | h6:hover > a.headerlink, 256 | dt:hover > a.headerlink, 257 | caption:hover > a.headerlink, 258 | p.caption:hover > a.headerlink, 259 | div.code-block-caption:hover > a.headerlink { 260 | visibility: visible; 261 | } 262 | 263 | div.body p.caption { 264 | text-align: inherit; 265 | } 266 | 267 | div.body td { 268 | text-align: left; 269 | } 270 | 271 | .first { 272 | margin-top: 0 !important; 273 | } 274 | 275 | p.rubric { 276 | margin-top: 30px; 277 | font-weight: bold; 278 | } 279 | 280 | img.align-left, figure.align-left, .figure.align-left, object.align-left { 281 | clear: left; 282 | float: left; 283 | margin-right: 1em; 284 | } 285 | 286 | img.align-right, figure.align-right, .figure.align-right, object.align-right { 287 | clear: right; 288 | float: right; 289 | margin-left: 1em; 290 | } 291 | 292 | img.align-center, figure.align-center, .figure.align-center, object.align-center { 293 | display: block; 294 | margin-left: auto; 295 | margin-right: auto; 296 | } 297 | 298 | img.align-default, figure.align-default, .figure.align-default { 299 | display: block; 300 | margin-left: auto; 301 | margin-right: auto; 302 | } 303 | 304 | .align-left { 305 | text-align: left; 306 | } 307 | 308 | .align-center { 309 | text-align: center; 310 | } 311 | 312 | .align-default { 313 | text-align: center; 314 | } 315 | 316 | .align-right { 317 | text-align: right; 318 | } 319 | 320 | /* -- sidebars -------------------------------------------------------------- */ 321 | 322 | div.sidebar, 323 | aside.sidebar { 324 | margin: 0 0 0.5em 1em; 325 | border: 1px solid #ddb; 326 | padding: 7px; 327 | background-color: #ffe; 328 | width: 40%; 329 | float: right; 330 | clear: right; 331 | overflow-x: auto; 332 | } 333 | 334 | p.sidebar-title { 335 | font-weight: bold; 336 | } 337 | 338 | div.admonition, div.topic, blockquote { 339 | clear: left; 340 | } 341 | 342 | /* -- topics ---------------------------------------------------------------- */ 343 | 344 | div.topic { 345 | border: 1px solid #ccc; 346 | padding: 7px; 347 | margin: 10px 0 10px 0; 348 | } 349 | 350 | p.topic-title { 351 | font-size: 1.1em; 352 | font-weight: bold; 353 | margin-top: 10px; 354 | } 355 | 356 | /* -- admonitions ----------------------------------------------------------- */ 357 | 358 | div.admonition { 359 | margin-top: 10px; 360 | margin-bottom: 10px; 361 | padding: 7px; 362 | } 363 | 364 | div.admonition dt { 365 | font-weight: bold; 366 | } 367 | 368 | p.admonition-title { 369 | margin: 0px 10px 5px 0px; 370 | font-weight: bold; 371 | } 372 | 373 | div.body p.centered { 374 | text-align: center; 375 | margin-top: 25px; 376 | } 377 | 378 | /* -- content of sidebars/topics/admonitions -------------------------------- */ 379 | 380 | div.sidebar > :last-child, 381 | aside.sidebar > :last-child, 382 | div.topic > :last-child, 383 | div.admonition > :last-child { 384 | margin-bottom: 0; 385 | } 386 | 387 | div.sidebar::after, 388 | aside.sidebar::after, 389 | div.topic::after, 390 | div.admonition::after, 391 | blockquote::after { 392 | display: block; 393 | content: ''; 394 | clear: both; 395 | } 396 | 397 | /* -- tables ---------------------------------------------------------------- */ 398 | 399 | table.docutils { 400 | margin-top: 10px; 401 | margin-bottom: 10px; 402 | border: 0; 403 | border-collapse: collapse; 404 | } 405 | 406 | table.align-center { 407 | margin-left: auto; 408 | margin-right: auto; 409 | } 410 | 411 | table.align-default { 412 | margin-left: auto; 413 | margin-right: auto; 414 | } 415 | 416 | table caption span.caption-number { 417 | font-style: italic; 418 | } 419 | 420 | table caption span.caption-text { 421 | } 422 | 423 | table.docutils td, table.docutils th { 424 | padding: 1px 8px 1px 5px; 425 | border-top: 0; 426 | border-left: 0; 427 | border-right: 0; 428 | border-bottom: 1px solid #aaa; 429 | } 430 | 431 | table.footnote td, table.footnote th { 432 | border: 0 !important; 433 | } 434 | 435 | th { 436 | text-align: left; 437 | padding-right: 5px; 438 | } 439 | 440 | table.citation { 441 | border-left: solid 1px gray; 442 | margin-left: 1px; 443 | } 444 | 445 | table.citation td { 446 | border-bottom: none; 447 | } 448 | 449 | th > :first-child, 450 | td > :first-child { 451 | margin-top: 0px; 452 | } 453 | 454 | th > :last-child, 455 | td > :last-child { 456 | margin-bottom: 0px; 457 | } 458 | 459 | /* -- figures --------------------------------------------------------------- */ 460 | 461 | div.figure, figure { 462 | margin: 0.5em; 463 | padding: 0.5em; 464 | } 465 | 466 | div.figure p.caption, figcaption { 467 | padding: 0.3em; 468 | } 469 | 470 | div.figure p.caption span.caption-number, 471 | figcaption span.caption-number { 472 | font-style: italic; 473 | } 474 | 475 | div.figure p.caption span.caption-text, 476 | figcaption span.caption-text { 477 | } 478 | 479 | /* -- field list styles ----------------------------------------------------- */ 480 | 481 | table.field-list td, table.field-list th { 482 | border: 0 !important; 483 | } 484 | 485 | .field-list ul { 486 | margin: 0; 487 | padding-left: 1em; 488 | } 489 | 490 | .field-list p { 491 | margin: 0; 492 | } 493 | 494 | .field-name { 495 | -moz-hyphens: manual; 496 | -ms-hyphens: manual; 497 | -webkit-hyphens: manual; 498 | hyphens: manual; 499 | } 500 | 501 | /* -- hlist styles ---------------------------------------------------------- */ 502 | 503 | table.hlist { 504 | margin: 1em 0; 505 | } 506 | 507 | table.hlist td { 508 | vertical-align: top; 509 | } 510 | 511 | /* -- object description styles --------------------------------------------- */ 512 | 513 | .sig { 514 | font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; 515 | } 516 | 517 | .sig-name, code.descname { 518 | background-color: transparent; 519 | font-weight: bold; 520 | } 521 | 522 | .sig-name { 523 | font-size: 1.1em; 524 | } 525 | 526 | code.descname { 527 | font-size: 1.2em; 528 | } 529 | 530 | .sig-prename, code.descclassname { 531 | background-color: transparent; 532 | } 533 | 534 | .optional { 535 | font-size: 1.3em; 536 | } 537 | 538 | .sig-paren { 539 | font-size: larger; 540 | } 541 | 542 | .sig-param.n { 543 | font-style: italic; 544 | } 545 | 546 | /* C++ specific styling */ 547 | 548 | .sig-inline.c-texpr, 549 | .sig-inline.cpp-texpr { 550 | font-family: unset; 551 | } 552 | 553 | .sig.c .k, .sig.c .kt, 554 | .sig.cpp .k, .sig.cpp .kt { 555 | color: #0033B3; 556 | } 557 | 558 | .sig.c .m, 559 | .sig.cpp .m { 560 | color: #1750EB; 561 | } 562 | 563 | .sig.c .s, .sig.c .sc, 564 | .sig.cpp .s, .sig.cpp .sc { 565 | color: #067D17; 566 | } 567 | 568 | 569 | /* -- other body styles ----------------------------------------------------- */ 570 | 571 | ol.arabic { 572 | list-style: decimal; 573 | } 574 | 575 | ol.loweralpha { 576 | list-style: lower-alpha; 577 | } 578 | 579 | ol.upperalpha { 580 | list-style: upper-alpha; 581 | } 582 | 583 | ol.lowerroman { 584 | list-style: lower-roman; 585 | } 586 | 587 | ol.upperroman { 588 | list-style: upper-roman; 589 | } 590 | 591 | :not(li) > ol > li:first-child > :first-child, 592 | :not(li) > ul > li:first-child > :first-child { 593 | margin-top: 0px; 594 | } 595 | 596 | :not(li) > ol > li:last-child > :last-child, 597 | :not(li) > ul > li:last-child > :last-child { 598 | margin-bottom: 0px; 599 | } 600 | 601 | ol.simple ol p, 602 | ol.simple ul p, 603 | ul.simple ol p, 604 | ul.simple ul p { 605 | margin-top: 0; 606 | } 607 | 608 | ol.simple > li:not(:first-child) > p, 609 | ul.simple > li:not(:first-child) > p { 610 | margin-top: 0; 611 | } 612 | 613 | ol.simple p, 614 | ul.simple p { 615 | margin-bottom: 0; 616 | } 617 | 618 | dl.footnote > dt, 619 | dl.citation > dt { 620 | float: left; 621 | margin-right: 0.5em; 622 | } 623 | 624 | dl.footnote > dd, 625 | dl.citation > dd { 626 | margin-bottom: 0em; 627 | } 628 | 629 | dl.footnote > dd:after, 630 | dl.citation > dd:after { 631 | content: ""; 632 | clear: both; 633 | } 634 | 635 | dl.field-list { 636 | display: grid; 637 | grid-template-columns: fit-content(30%) auto; 638 | } 639 | 640 | dl.field-list > dt { 641 | font-weight: bold; 642 | word-break: break-word; 643 | padding-left: 0.5em; 644 | padding-right: 5px; 645 | } 646 | 647 | dl.field-list > dt:after { 648 | content: ":"; 649 | } 650 | 651 | dl.field-list > dd { 652 | padding-left: 0.5em; 653 | margin-top: 0em; 654 | margin-left: 0em; 655 | margin-bottom: 0em; 656 | } 657 | 658 | dl { 659 | margin-bottom: 15px; 660 | } 661 | 662 | dd > :first-child { 663 | margin-top: 0px; 664 | } 665 | 666 | dd ul, dd table { 667 | margin-bottom: 10px; 668 | } 669 | 670 | dd { 671 | margin-top: 3px; 672 | margin-bottom: 10px; 673 | margin-left: 30px; 674 | } 675 | 676 | dl > dd:last-child, 677 | dl > dd:last-child > :last-child { 678 | margin-bottom: 0; 679 | } 680 | 681 | dt:target, span.highlighted { 682 | background-color: #fbe54e; 683 | } 684 | 685 | rect.highlighted { 686 | fill: #fbe54e; 687 | } 688 | 689 | dl.glossary dt { 690 | font-weight: bold; 691 | font-size: 1.1em; 692 | } 693 | 694 | .versionmodified { 695 | font-style: italic; 696 | } 697 | 698 | .system-message { 699 | background-color: #fda; 700 | padding: 5px; 701 | border: 3px solid red; 702 | } 703 | 704 | .footnote:target { 705 | background-color: #ffa; 706 | } 707 | 708 | .line-block { 709 | display: block; 710 | margin-top: 1em; 711 | margin-bottom: 1em; 712 | } 713 | 714 | .line-block .line-block { 715 | margin-top: 0; 716 | margin-bottom: 0; 717 | margin-left: 1.5em; 718 | } 719 | 720 | .guilabel, .menuselection { 721 | font-family: sans-serif; 722 | } 723 | 724 | .accelerator { 725 | text-decoration: underline; 726 | } 727 | 728 | .classifier { 729 | font-style: oblique; 730 | } 731 | 732 | .classifier:before { 733 | font-style: normal; 734 | margin: 0.5em; 735 | content: ":"; 736 | } 737 | 738 | abbr, acronym { 739 | border-bottom: dotted 1px; 740 | cursor: help; 741 | } 742 | 743 | /* -- code displays --------------------------------------------------------- */ 744 | 745 | pre { 746 | overflow: auto; 747 | overflow-y: hidden; /* fixes display issues on Chrome browsers */ 748 | } 749 | 750 | pre, div[class*="highlight-"] { 751 | clear: both; 752 | } 753 | 754 | span.pre { 755 | -moz-hyphens: none; 756 | -ms-hyphens: none; 757 | -webkit-hyphens: none; 758 | hyphens: none; 759 | } 760 | 761 | div[class*="highlight-"] { 762 | margin: 1em 0; 763 | } 764 | 765 | td.linenos pre { 766 | border: 0; 767 | background-color: transparent; 768 | color: #aaa; 769 | } 770 | 771 | table.highlighttable { 772 | display: block; 773 | } 774 | 775 | table.highlighttable tbody { 776 | display: block; 777 | } 778 | 779 | table.highlighttable tr { 780 | display: flex; 781 | } 782 | 783 | table.highlighttable td { 784 | margin: 0; 785 | padding: 0; 786 | } 787 | 788 | table.highlighttable td.linenos { 789 | padding-right: 0.5em; 790 | } 791 | 792 | table.highlighttable td.code { 793 | flex: 1; 794 | overflow: hidden; 795 | } 796 | 797 | .highlight .hll { 798 | display: block; 799 | } 800 | 801 | div.highlight pre, 802 | table.highlighttable pre { 803 | margin: 0; 804 | } 805 | 806 | div.code-block-caption + div { 807 | margin-top: 0; 808 | } 809 | 810 | div.code-block-caption { 811 | margin-top: 1em; 812 | padding: 2px 5px; 813 | font-size: small; 814 | } 815 | 816 | div.code-block-caption code { 817 | background-color: transparent; 818 | } 819 | 820 | table.highlighttable td.linenos, 821 | span.linenos, 822 | div.highlight span.gp { /* gp: Generic.Prompt */ 823 | user-select: none; 824 | -webkit-user-select: text; /* Safari fallback only */ 825 | -webkit-user-select: none; /* Chrome/Safari */ 826 | -moz-user-select: none; /* Firefox */ 827 | -ms-user-select: none; /* IE10+ */ 828 | } 829 | 830 | div.code-block-caption span.caption-number { 831 | padding: 0.1em 0.3em; 832 | font-style: italic; 833 | } 834 | 835 | div.code-block-caption span.caption-text { 836 | } 837 | 838 | div.literal-block-wrapper { 839 | margin: 1em 0; 840 | } 841 | 842 | code.xref, a code { 843 | background-color: transparent; 844 | font-weight: bold; 845 | } 846 | 847 | h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { 848 | background-color: transparent; 849 | } 850 | 851 | .viewcode-link { 852 | float: right; 853 | } 854 | 855 | .viewcode-back { 856 | float: right; 857 | font-family: sans-serif; 858 | } 859 | 860 | div.viewcode-block:target { 861 | margin: -1px -10px; 862 | padding: 0 10px; 863 | } 864 | 865 | /* -- math display ---------------------------------------------------------- */ 866 | 867 | img.math { 868 | vertical-align: middle; 869 | } 870 | 871 | div.body div.math p { 872 | text-align: center; 873 | } 874 | 875 | span.eqno { 876 | float: right; 877 | } 878 | 879 | span.eqno a.headerlink { 880 | position: absolute; 881 | z-index: 1; 882 | } 883 | 884 | div.math:hover a.headerlink { 885 | visibility: visible; 886 | } 887 | 888 | /* -- printout stylesheet --------------------------------------------------- */ 889 | 890 | @media print { 891 | div.document, 892 | div.documentwrapper, 893 | div.bodywrapper { 894 | margin: 0 !important; 895 | width: 100%; 896 | } 897 | 898 | div.sphinxsidebar, 899 | div.related, 900 | div.footer, 901 | #top-link { 902 | display: none; 903 | } 904 | } -------------------------------------------------------------------------------- /docs/_build/html/_static/css/badge_only.css: -------------------------------------------------------------------------------- 1 | .fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-bold-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-bold-italic.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-bold-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-bold.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-bold.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-normal-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-normal-italic.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-normal-italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-normal.woff -------------------------------------------------------------------------------- /docs/_build/html/_static/css/fonts/lato-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/css/fonts/lato-normal.woff2 -------------------------------------------------------------------------------- /docs/_build/html/_static/doctools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * doctools.js 3 | * ~~~~~~~~~~~ 4 | * 5 | * Sphinx JavaScript utilities for all documentation. 6 | * 7 | * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | /** 13 | * select a different prefix for underscore 14 | */ 15 | $u = _.noConflict(); 16 | 17 | /** 18 | * make the code below compatible with browsers without 19 | * an installed firebug like debugger 20 | if (!window.console || !console.firebug) { 21 | var names = ["log", "debug", "info", "warn", "error", "assert", "dir", 22 | "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", 23 | "profile", "profileEnd"]; 24 | window.console = {}; 25 | for (var i = 0; i < names.length; ++i) 26 | window.console[names[i]] = function() {}; 27 | } 28 | */ 29 | 30 | /** 31 | * small helper function to urldecode strings 32 | * 33 | * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL 34 | */ 35 | jQuery.urldecode = function(x) { 36 | if (!x) { 37 | return x 38 | } 39 | return decodeURIComponent(x.replace(/\+/g, ' ')); 40 | }; 41 | 42 | /** 43 | * small helper function to urlencode strings 44 | */ 45 | jQuery.urlencode = encodeURIComponent; 46 | 47 | /** 48 | * This function returns the parsed url parameters of the 49 | * current request. Multiple values per key are supported, 50 | * it will always return arrays of strings for the value parts. 51 | */ 52 | jQuery.getQueryParameters = function(s) { 53 | if (typeof s === 'undefined') 54 | s = document.location.search; 55 | var parts = s.substr(s.indexOf('?') + 1).split('&'); 56 | var result = {}; 57 | for (var i = 0; i < parts.length; i++) { 58 | var tmp = parts[i].split('=', 2); 59 | var key = jQuery.urldecode(tmp[0]); 60 | var value = jQuery.urldecode(tmp[1]); 61 | if (key in result) 62 | result[key].push(value); 63 | else 64 | result[key] = [value]; 65 | } 66 | return result; 67 | }; 68 | 69 | /** 70 | * highlight a given string on a jquery object by wrapping it in 71 | * span elements with the given class name. 72 | */ 73 | jQuery.fn.highlightText = function(text, className) { 74 | function highlight(node, addItems) { 75 | if (node.nodeType === 3) { 76 | var val = node.nodeValue; 77 | var pos = val.toLowerCase().indexOf(text); 78 | if (pos >= 0 && 79 | !jQuery(node.parentNode).hasClass(className) && 80 | !jQuery(node.parentNode).hasClass("nohighlight")) { 81 | var span; 82 | var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); 83 | if (isInSVG) { 84 | span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); 85 | } else { 86 | span = document.createElement("span"); 87 | span.className = className; 88 | } 89 | span.appendChild(document.createTextNode(val.substr(pos, text.length))); 90 | node.parentNode.insertBefore(span, node.parentNode.insertBefore( 91 | document.createTextNode(val.substr(pos + text.length)), 92 | node.nextSibling)); 93 | node.nodeValue = val.substr(0, pos); 94 | if (isInSVG) { 95 | var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); 96 | var bbox = node.parentElement.getBBox(); 97 | rect.x.baseVal.value = bbox.x; 98 | rect.y.baseVal.value = bbox.y; 99 | rect.width.baseVal.value = bbox.width; 100 | rect.height.baseVal.value = bbox.height; 101 | rect.setAttribute('class', className); 102 | addItems.push({ 103 | "parent": node.parentNode, 104 | "target": rect}); 105 | } 106 | } 107 | } 108 | else if (!jQuery(node).is("button, select, textarea")) { 109 | jQuery.each(node.childNodes, function() { 110 | highlight(this, addItems); 111 | }); 112 | } 113 | } 114 | var addItems = []; 115 | var result = this.each(function() { 116 | highlight(this, addItems); 117 | }); 118 | for (var i = 0; i < addItems.length; ++i) { 119 | jQuery(addItems[i].parent).before(addItems[i].target); 120 | } 121 | return result; 122 | }; 123 | 124 | /* 125 | * backward compatibility for jQuery.browser 126 | * This will be supported until firefox bug is fixed. 127 | */ 128 | if (!jQuery.browser) { 129 | jQuery.uaMatch = function(ua) { 130 | ua = ua.toLowerCase(); 131 | 132 | var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || 133 | /(webkit)[ \/]([\w.]+)/.exec(ua) || 134 | /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || 135 | /(msie) ([\w.]+)/.exec(ua) || 136 | ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || 137 | []; 138 | 139 | return { 140 | browser: match[ 1 ] || "", 141 | version: match[ 2 ] || "0" 142 | }; 143 | }; 144 | jQuery.browser = {}; 145 | jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; 146 | } 147 | 148 | /** 149 | * Small JavaScript module for the documentation. 150 | */ 151 | var Documentation = { 152 | 153 | init : function() { 154 | this.fixFirefoxAnchorBug(); 155 | this.highlightSearchWords(); 156 | this.initIndexTable(); 157 | if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { 158 | this.initOnKeyListeners(); 159 | } 160 | }, 161 | 162 | /** 163 | * i18n support 164 | */ 165 | TRANSLATIONS : {}, 166 | PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, 167 | LOCALE : 'unknown', 168 | 169 | // gettext and ngettext don't access this so that the functions 170 | // can safely bound to a different name (_ = Documentation.gettext) 171 | gettext : function(string) { 172 | var translated = Documentation.TRANSLATIONS[string]; 173 | if (typeof translated === 'undefined') 174 | return string; 175 | return (typeof translated === 'string') ? translated : translated[0]; 176 | }, 177 | 178 | ngettext : function(singular, plural, n) { 179 | var translated = Documentation.TRANSLATIONS[singular]; 180 | if (typeof translated === 'undefined') 181 | return (n == 1) ? singular : plural; 182 | return translated[Documentation.PLURALEXPR(n)]; 183 | }, 184 | 185 | addTranslations : function(catalog) { 186 | for (var key in catalog.messages) 187 | this.TRANSLATIONS[key] = catalog.messages[key]; 188 | this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); 189 | this.LOCALE = catalog.locale; 190 | }, 191 | 192 | /** 193 | * add context elements like header anchor links 194 | */ 195 | addContextElements : function() { 196 | $('div[id] > :header:first').each(function() { 197 | $('\u00B6'). 198 | attr('href', '#' + this.id). 199 | attr('title', _('Permalink to this headline')). 200 | appendTo(this); 201 | }); 202 | $('dt[id]').each(function() { 203 | $('\u00B6'). 204 | attr('href', '#' + this.id). 205 | attr('title', _('Permalink to this definition')). 206 | appendTo(this); 207 | }); 208 | }, 209 | 210 | /** 211 | * workaround a firefox stupidity 212 | * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 213 | */ 214 | fixFirefoxAnchorBug : function() { 215 | if (document.location.hash && $.browser.mozilla) 216 | window.setTimeout(function() { 217 | document.location.href += ''; 218 | }, 10); 219 | }, 220 | 221 | /** 222 | * highlight the search words provided in the url in the text 223 | */ 224 | highlightSearchWords : function() { 225 | var params = $.getQueryParameters(); 226 | var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; 227 | if (terms.length) { 228 | var body = $('div.body'); 229 | if (!body.length) { 230 | body = $('body'); 231 | } 232 | window.setTimeout(function() { 233 | $.each(terms, function() { 234 | body.highlightText(this.toLowerCase(), 'highlighted'); 235 | }); 236 | }, 10); 237 | $('') 239 | .appendTo($('#searchbox')); 240 | } 241 | }, 242 | 243 | /** 244 | * init the domain index toggle buttons 245 | */ 246 | initIndexTable : function() { 247 | var togglers = $('img.toggler').click(function() { 248 | var src = $(this).attr('src'); 249 | var idnum = $(this).attr('id').substr(7); 250 | $('tr.cg-' + idnum).toggle(); 251 | if (src.substr(-9) === 'minus.png') 252 | $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); 253 | else 254 | $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); 255 | }).css('display', ''); 256 | if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { 257 | togglers.click(); 258 | } 259 | }, 260 | 261 | /** 262 | * helper function to hide the search marks again 263 | */ 264 | hideSearchWords : function() { 265 | $('#searchbox .highlight-link').fadeOut(300); 266 | $('span.highlighted').removeClass('highlighted'); 267 | }, 268 | 269 | /** 270 | * make the url absolute 271 | */ 272 | makeURL : function(relativeURL) { 273 | return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; 274 | }, 275 | 276 | /** 277 | * get the current relative url 278 | */ 279 | getCurrentURL : function() { 280 | var path = document.location.pathname; 281 | var parts = path.split(/\//); 282 | $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { 283 | if (this === '..') 284 | parts.pop(); 285 | }); 286 | var url = parts.join('/'); 287 | return path.substring(url.lastIndexOf('/') + 1, path.length - 1); 288 | }, 289 | 290 | initOnKeyListeners: function() { 291 | $(document).keydown(function(event) { 292 | var activeElementType = document.activeElement.tagName; 293 | // don't navigate when in search box, textarea, dropdown or button 294 | if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' 295 | && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey 296 | && !event.shiftKey) { 297 | switch (event.keyCode) { 298 | case 37: // left 299 | var prevHref = $('link[rel="prev"]').prop('href'); 300 | if (prevHref) { 301 | window.location.href = prevHref; 302 | return false; 303 | } 304 | break; 305 | case 39: // right 306 | var nextHref = $('link[rel="next"]').prop('href'); 307 | if (nextHref) { 308 | window.location.href = nextHref; 309 | return false; 310 | } 311 | break; 312 | } 313 | } 314 | }); 315 | } 316 | }; 317 | 318 | // quick alias for translations 319 | _ = Documentation.gettext; 320 | 321 | $(document).ready(function() { 322 | Documentation.init(); 323 | }); 324 | -------------------------------------------------------------------------------- /docs/_build/html/_static/documentation_options.js: -------------------------------------------------------------------------------- 1 | var DOCUMENTATION_OPTIONS = { 2 | URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), 3 | VERSION: '0.0.1', 4 | LANGUAGE: 'None', 5 | COLLAPSE_INDEX: false, 6 | BUILDER: 'html', 7 | FILE_SUFFIX: '.html', 8 | LINK_SUFFIX: '.html', 9 | HAS_SOURCE: true, 10 | SOURCELINK_SUFFIX: '.txt', 11 | NAVIGATION_WITH_KEYS: false 12 | }; -------------------------------------------------------------------------------- /docs/_build/html/_static/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/file.png -------------------------------------------------------------------------------- /docs/_build/html/_static/js/badge_only.js: -------------------------------------------------------------------------------- 1 | !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); -------------------------------------------------------------------------------- /docs/_build/html/_static/js/html5shiv-printshiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs/_build/html/_static/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); -------------------------------------------------------------------------------- /docs/_build/html/_static/js/theme.js: -------------------------------------------------------------------------------- 1 | !function(n){var e={};function t(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return n[i].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=n,t.c=e,t.d=function(n,e,i){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:i})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var i=Object.create(null);if(t.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var o in n)t.d(i,o,function(e){return n[e]}.bind(null,o));return i},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="",t(t.s=0)}([function(n,e,t){t(1),n.exports=t(3)},function(n,e,t){(function(){var e="undefined"!=typeof window?window.jQuery:t(2);n.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(n){var t=this;void 0===n&&(n=!0),t.isRunning||(t.isRunning=!0,e((function(e){t.init(e),t.reset(),t.win.on("hashchange",t.reset),n&&t.win.on("scroll",(function(){t.linkScroll||t.winScroll||(t.winScroll=!0,requestAnimationFrame((function(){t.onScroll()})))})),t.win.on("resize",(function(){t.winResize||(t.winResize=!0,requestAnimationFrame((function(){t.onResize()})))})),t.onResize()})))},enableSticky:function(){this.enable(!0)},init:function(n){n(document);var e=this;this.navBar=n("div.wy-side-scroll:first"),this.win=n(window),n(document).on("click","[data-toggle='wy-nav-top']",(function(){n("[data-toggle='wy-nav-shift']").toggleClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift")})).on("click",".wy-menu-vertical .current ul li a",(function(){var t=n(this);n("[data-toggle='wy-nav-shift']").removeClass("shift"),n("[data-toggle='rst-versions']").toggleClass("shift"),e.toggleCurrent(t),e.hashChange()})).on("click","[data-toggle='rst-current-version']",(function(){n("[data-toggle='rst-versions']").toggleClass("shift-up")})),n("table.docutils:not(.field-list,.footnote,.citation)").wrap("
"),n("table.docutils.footnote").wrap("
"),n("table.docutils.citation").wrap("
"),n(".wy-menu-vertical ul").not(".simple").siblings("a").each((function(){var t=n(this);expand=n(''),expand.on("click",(function(n){return e.toggleCurrent(t),n.stopPropagation(),!1})),t.prepend(expand)}))},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),t=e.find('[href="'+n+'"]');if(0===t.length){var i=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(t=e.find('[href="#'+i.attr("id")+'"]')).length&&(t=e.find('[href="#"]'))}if(t.length>0){$(".wy-menu-vertical .current").removeClass("current").attr("aria-expanded","false"),t.addClass("current").attr("aria-expanded","true"),t.closest("li.toctree-l1").parent().addClass("current").attr("aria-expanded","true");for(let n=1;n<=10;n++)t.closest("li.toctree-l"+n).addClass("current").attr("aria-expanded","true");t[0].scrollIntoView()}}catch(n){console.log("Error expanding nav for anchor",n)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,t=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(t),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",(function(){this.linkScroll=!1}))},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current").attr("aria-expanded","false"),e.siblings().find("li.current").removeClass("current").attr("aria-expanded","false");var t=e.find("> ul li");t.length&&(t.removeClass("current").attr("aria-expanded","false"),e.toggleClass("current").attr("aria-expanded",(function(n,e){return"true"==e?"false":"true"})))}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:n.exports.ThemeNav,StickyNav:n.exports.ThemeNav}),function(){for(var n=0,e=["ms","moz","webkit","o"],t=0;t0 63 | var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 64 | var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 65 | var s_v = "^(" + C + ")?" + v; // vowel in stem 66 | 67 | this.stemWord = function (w) { 68 | var stem; 69 | var suffix; 70 | var firstch; 71 | var origword = w; 72 | 73 | if (w.length < 3) 74 | return w; 75 | 76 | var re; 77 | var re2; 78 | var re3; 79 | var re4; 80 | 81 | firstch = w.substr(0,1); 82 | if (firstch == "y") 83 | w = firstch.toUpperCase() + w.substr(1); 84 | 85 | // Step 1a 86 | re = /^(.+?)(ss|i)es$/; 87 | re2 = /^(.+?)([^s])s$/; 88 | 89 | if (re.test(w)) 90 | w = w.replace(re,"$1$2"); 91 | else if (re2.test(w)) 92 | w = w.replace(re2,"$1$2"); 93 | 94 | // Step 1b 95 | re = /^(.+?)eed$/; 96 | re2 = /^(.+?)(ed|ing)$/; 97 | if (re.test(w)) { 98 | var fp = re.exec(w); 99 | re = new RegExp(mgr0); 100 | if (re.test(fp[1])) { 101 | re = /.$/; 102 | w = w.replace(re,""); 103 | } 104 | } 105 | else if (re2.test(w)) { 106 | var fp = re2.exec(w); 107 | stem = fp[1]; 108 | re2 = new RegExp(s_v); 109 | if (re2.test(stem)) { 110 | w = stem; 111 | re2 = /(at|bl|iz)$/; 112 | re3 = new RegExp("([^aeiouylsz])\\1$"); 113 | re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); 114 | if (re2.test(w)) 115 | w = w + "e"; 116 | else if (re3.test(w)) { 117 | re = /.$/; 118 | w = w.replace(re,""); 119 | } 120 | else if (re4.test(w)) 121 | w = w + "e"; 122 | } 123 | } 124 | 125 | // Step 1c 126 | re = /^(.+?)y$/; 127 | if (re.test(w)) { 128 | var fp = re.exec(w); 129 | stem = fp[1]; 130 | re = new RegExp(s_v); 131 | if (re.test(stem)) 132 | w = stem + "i"; 133 | } 134 | 135 | // Step 2 136 | re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; 137 | if (re.test(w)) { 138 | var fp = re.exec(w); 139 | stem = fp[1]; 140 | suffix = fp[2]; 141 | re = new RegExp(mgr0); 142 | if (re.test(stem)) 143 | w = stem + step2list[suffix]; 144 | } 145 | 146 | // Step 3 147 | re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; 148 | if (re.test(w)) { 149 | var fp = re.exec(w); 150 | stem = fp[1]; 151 | suffix = fp[2]; 152 | re = new RegExp(mgr0); 153 | if (re.test(stem)) 154 | w = stem + step3list[suffix]; 155 | } 156 | 157 | // Step 4 158 | re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; 159 | re2 = /^(.+?)(s|t)(ion)$/; 160 | if (re.test(w)) { 161 | var fp = re.exec(w); 162 | stem = fp[1]; 163 | re = new RegExp(mgr1); 164 | if (re.test(stem)) 165 | w = stem; 166 | } 167 | else if (re2.test(w)) { 168 | var fp = re2.exec(w); 169 | stem = fp[1] + fp[2]; 170 | re2 = new RegExp(mgr1); 171 | if (re2.test(stem)) 172 | w = stem; 173 | } 174 | 175 | // Step 5 176 | re = /^(.+?)e$/; 177 | if (re.test(w)) { 178 | var fp = re.exec(w); 179 | stem = fp[1]; 180 | re = new RegExp(mgr1); 181 | re2 = new RegExp(meq1); 182 | re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); 183 | if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) 184 | w = stem; 185 | } 186 | re = /ll$/; 187 | re2 = new RegExp(mgr1); 188 | if (re.test(w) && re2.test(w)) { 189 | re = /.$/; 190 | w = w.replace(re,""); 191 | } 192 | 193 | // and turn initial Y back to y 194 | if (firstch == "y") 195 | w = firstch.toLowerCase() + w.substr(1); 196 | return w; 197 | } 198 | } 199 | 200 | 201 | 202 | 203 | var splitChars = (function() { 204 | var result = {}; 205 | var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, 206 | 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, 207 | 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, 208 | 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, 209 | 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, 210 | 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 211 | 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, 212 | 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, 213 | 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, 214 | 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; 215 | var i, j, start, end; 216 | for (i = 0; i < singles.length; i++) { 217 | result[singles[i]] = true; 218 | } 219 | var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], 220 | [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], 221 | [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], 222 | [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], 223 | [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], 224 | [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], 225 | [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], 226 | [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], 227 | [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], 228 | [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], 229 | [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], 230 | [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], 231 | [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], 232 | [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], 233 | [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], 234 | [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], 235 | [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], 236 | [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], 237 | [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], 238 | [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], 239 | [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], 240 | [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], 241 | [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], 242 | [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], 243 | [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], 244 | [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], 245 | [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], 246 | [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], 247 | [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], 248 | [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], 249 | [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], 250 | [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], 251 | [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], 252 | [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], 253 | [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], 254 | [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], 255 | [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], 256 | [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], 257 | [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], 258 | [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], 259 | [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], 260 | [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], 261 | [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], 262 | [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], 263 | [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], 264 | [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], 265 | [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], 266 | [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], 267 | [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; 268 | for (i = 0; i < ranges.length; i++) { 269 | start = ranges[i][0]; 270 | end = ranges[i][1]; 271 | for (j = start; j <= end; j++) { 272 | result[j] = true; 273 | } 274 | } 275 | return result; 276 | })(); 277 | 278 | function splitQuery(query) { 279 | var result = []; 280 | var start = -1; 281 | for (var i = 0; i < query.length; i++) { 282 | if (splitChars[query.charCodeAt(i)]) { 283 | if (start !== -1) { 284 | result.push(query.slice(start, i)); 285 | start = -1; 286 | } 287 | } else if (start === -1) { 288 | start = i; 289 | } 290 | } 291 | if (start !== -1) { 292 | result.push(query.slice(start)); 293 | } 294 | return result; 295 | } 296 | 297 | 298 | -------------------------------------------------------------------------------- /docs/_build/html/_static/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/minus.png -------------------------------------------------------------------------------- /docs/_build/html/_static/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Imzachjohnson/clickupython/c08b4ad9e4ff81d10e3ee42c0e7249acb51c4ab4/docs/_build/html/_static/plus.png -------------------------------------------------------------------------------- /docs/_build/html/_static/pygments.css: -------------------------------------------------------------------------------- 1 | pre { line-height: 125%; } 2 | td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } 3 | span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } 4 | td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } 5 | span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } 6 | .highlight .hll { background-color: #ffffcc } 7 | .highlight { background: #f8f8f8; } 8 | .highlight .c { color: #408080; font-style: italic } /* Comment */ 9 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 10 | .highlight .k { color: #008000; font-weight: bold } /* Keyword */ 11 | .highlight .o { color: #666666 } /* Operator */ 12 | .highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */ 13 | .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ 14 | .highlight .cp { color: #BC7A00 } /* Comment.Preproc */ 15 | .highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */ 16 | .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ 17 | .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ 18 | .highlight .gd { color: #A00000 } /* Generic.Deleted */ 19 | .highlight .ge { font-style: italic } /* Generic.Emph */ 20 | .highlight .gr { color: #FF0000 } /* Generic.Error */ 21 | .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ 22 | .highlight .gi { color: #00A000 } /* Generic.Inserted */ 23 | .highlight .go { color: #888888 } /* Generic.Output */ 24 | .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ 25 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 26 | .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ 27 | .highlight .gt { color: #0044DD } /* Generic.Traceback */ 28 | .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ 29 | .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ 30 | .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ 31 | .highlight .kp { color: #008000 } /* Keyword.Pseudo */ 32 | .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ 33 | .highlight .kt { color: #B00040 } /* Keyword.Type */ 34 | .highlight .m { color: #666666 } /* Literal.Number */ 35 | .highlight .s { color: #BA2121 } /* Literal.String */ 36 | .highlight .na { color: #7D9029 } /* Name.Attribute */ 37 | .highlight .nb { color: #008000 } /* Name.Builtin */ 38 | .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ 39 | .highlight .no { color: #880000 } /* Name.Constant */ 40 | .highlight .nd { color: #AA22FF } /* Name.Decorator */ 41 | .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ 42 | .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ 43 | .highlight .nf { color: #0000FF } /* Name.Function */ 44 | .highlight .nl { color: #A0A000 } /* Name.Label */ 45 | .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ 46 | .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ 47 | .highlight .nv { color: #19177C } /* Name.Variable */ 48 | .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ 49 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 50 | .highlight .mb { color: #666666 } /* Literal.Number.Bin */ 51 | .highlight .mf { color: #666666 } /* Literal.Number.Float */ 52 | .highlight .mh { color: #666666 } /* Literal.Number.Hex */ 53 | .highlight .mi { color: #666666 } /* Literal.Number.Integer */ 54 | .highlight .mo { color: #666666 } /* Literal.Number.Oct */ 55 | .highlight .sa { color: #BA2121 } /* Literal.String.Affix */ 56 | .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ 57 | .highlight .sc { color: #BA2121 } /* Literal.String.Char */ 58 | .highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ 59 | .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ 60 | .highlight .s2 { color: #BA2121 } /* Literal.String.Double */ 61 | .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ 62 | .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ 63 | .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ 64 | .highlight .sx { color: #008000 } /* Literal.String.Other */ 65 | .highlight .sr { color: #BB6688 } /* Literal.String.Regex */ 66 | .highlight .s1 { color: #BA2121 } /* Literal.String.Single */ 67 | .highlight .ss { color: #19177C } /* Literal.String.Symbol */ 68 | .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ 69 | .highlight .fm { color: #0000FF } /* Name.Function.Magic */ 70 | .highlight .vc { color: #19177C } /* Name.Variable.Class */ 71 | .highlight .vg { color: #19177C } /* Name.Variable.Global */ 72 | .highlight .vi { color: #19177C } /* Name.Variable.Instance */ 73 | .highlight .vm { color: #19177C } /* Name.Variable.Magic */ 74 | .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /docs/_build/html/_static/searchtools.js: -------------------------------------------------------------------------------- 1 | /* 2 | * searchtools.js 3 | * ~~~~~~~~~~~~~~~~ 4 | * 5 | * Sphinx JavaScript utilities for the full-text search. 6 | * 7 | * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. 8 | * :license: BSD, see LICENSE for details. 9 | * 10 | */ 11 | 12 | if (!Scorer) { 13 | /** 14 | * Simple result scoring code. 15 | */ 16 | var Scorer = { 17 | // Implement the following function to further tweak the score for each result 18 | // The function takes a result array [filename, title, anchor, descr, score] 19 | // and returns the new score. 20 | /* 21 | score: function(result) { 22 | return result[4]; 23 | }, 24 | */ 25 | 26 | // query matches the full name of an object 27 | objNameMatch: 11, 28 | // or matches in the last dotted part of the object name 29 | objPartialMatch: 6, 30 | // Additive scores depending on the priority of the object 31 | objPrio: {0: 15, // used to be importantResults 32 | 1: 5, // used to be objectResults 33 | 2: -5}, // used to be unimportantResults 34 | // Used when the priority is not in the mapping. 35 | objPrioDefault: 0, 36 | 37 | // query found in title 38 | title: 15, 39 | partialTitle: 7, 40 | // query found in terms 41 | term: 5, 42 | partialTerm: 2 43 | }; 44 | } 45 | 46 | if (!splitQuery) { 47 | function splitQuery(query) { 48 | return query.split(/\s+/); 49 | } 50 | } 51 | 52 | /** 53 | * Search Module 54 | */ 55 | var Search = { 56 | 57 | _index : null, 58 | _queued_query : null, 59 | _pulse_status : -1, 60 | 61 | htmlToText : function(htmlString) { 62 | var virtualDocument = document.implementation.createHTMLDocument('virtual'); 63 | var htmlElement = $(htmlString, virtualDocument); 64 | htmlElement.find('.headerlink').remove(); 65 | docContent = htmlElement.find('[role=main]')[0]; 66 | if(docContent === undefined) { 67 | console.warn("Content block not found. Sphinx search tries to obtain it " + 68 | "via '[role=main]'. Could you check your theme or template."); 69 | return ""; 70 | } 71 | return docContent.textContent || docContent.innerText; 72 | }, 73 | 74 | init : function() { 75 | var params = $.getQueryParameters(); 76 | if (params.q) { 77 | var query = params.q[0]; 78 | $('input[name="q"]')[0].value = query; 79 | this.performSearch(query); 80 | } 81 | }, 82 | 83 | loadIndex : function(url) { 84 | $.ajax({type: "GET", url: url, data: null, 85 | dataType: "script", cache: true, 86 | complete: function(jqxhr, textstatus) { 87 | if (textstatus != "success") { 88 | document.getElementById("searchindexloader").src = url; 89 | } 90 | }}); 91 | }, 92 | 93 | setIndex : function(index) { 94 | var q; 95 | this._index = index; 96 | if ((q = this._queued_query) !== null) { 97 | this._queued_query = null; 98 | Search.query(q); 99 | } 100 | }, 101 | 102 | hasIndex : function() { 103 | return this._index !== null; 104 | }, 105 | 106 | deferQuery : function(query) { 107 | this._queued_query = query; 108 | }, 109 | 110 | stopPulse : function() { 111 | this._pulse_status = 0; 112 | }, 113 | 114 | startPulse : function() { 115 | if (this._pulse_status >= 0) 116 | return; 117 | function pulse() { 118 | var i; 119 | Search._pulse_status = (Search._pulse_status + 1) % 4; 120 | var dotString = ''; 121 | for (i = 0; i < Search._pulse_status; i++) 122 | dotString += '.'; 123 | Search.dots.text(dotString); 124 | if (Search._pulse_status > -1) 125 | window.setTimeout(pulse, 500); 126 | } 127 | pulse(); 128 | }, 129 | 130 | /** 131 | * perform a search for something (or wait until index is loaded) 132 | */ 133 | performSearch : function(query) { 134 | // create the required interface elements 135 | this.out = $('#search-results'); 136 | this.title = $('

' + _('Searching') + '

').appendTo(this.out); 137 | this.dots = $('').appendTo(this.title); 138 | this.status = $('

 

').appendTo(this.out); 139 | this.output = $('