From f79ece0fd0b2c9164e4720f7e0e081102e7f2d78 Mon Sep 17 00:00:00 2001 From: Alexander Nasuta <alexander.nasuta@ima.rwth-aachen.de> Date: Wed, 19 Mar 2025 17:07:28 +0100 Subject: [PATCH] docs init commit --- README.md | 135 +++++++ docs/Makefile | 20 + docs/make.bat | 35 ++ docs/source/_static/custom.css | 23 ++ docs/source/_static/logo-light.png | Bin 0 -> 4075 bytes docs/source/conf.py | 54 +++ docs/source/index.rst | 17 + examples/JSSEnv_example.py | 0 examples/graph-jsp-env_example.py | 30 ++ examples/graph-matrix-jsp-env_example.py | 0 examples/kemmerling_example.py | 0 examples/or-tools_example.py | 0 pyproject.toml | 20 +- requirements_dev.txt | 468 ++++++++++++++++++++++- 14 files changed, 789 insertions(+), 13 deletions(-) create mode 100644 docs/Makefile create mode 100644 docs/make.bat create mode 100644 docs/source/_static/custom.css create mode 100644 docs/source/_static/logo-light.png create mode 100644 docs/source/conf.py create mode 100644 docs/source/index.rst create mode 100644 examples/JSSEnv_example.py create mode 100644 examples/graph-jsp-env_example.py create mode 100644 examples/graph-matrix-jsp-env_example.py create mode 100644 examples/kemmerling_example.py create mode 100644 examples/or-tools_example.py diff --git a/README.md b/README.md index 436ca05..ba241d2 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,141 @@ You can also find them on this website: http://jobshop.jjvh.nl/ # More Examples For more examples you can have a look at the test files in the `tests` directory. +## Development Setup + +If you want to check out the code and implement new features or fix bugs, you can set up the project as follows: + +### Clone the Repository + +clone the repository in your favorite code editor (for example PyCharm, VSCode, Neovim, etc.) + +using https: +```shell +git clone https://github.com/Alexander-Nasuta/graph-jsp-env +``` +or by using the GitHub CLI: +```shell +gh repo clone Alexander-Nasuta/graph-jsp-env +``` + +if you are using PyCharm, I recommend doing the following additional steps: + +- mark the `src` folder as source root (by right-clicking on the folder and selecting `Mark Directory as` -> `Sources Root`) +- mark the `tests` folder as test root (by right-clicking on the folder and selecting `Mark Directory as` -> `Test Sources Root`) +- mark the `resources` folder as resources root (by right-clicking on the folder and selecting `Mark Directory as` -> `Resources Root`) + +at the end your project structure should look like this: + +todo + +### Create a Virtual Environment (optional) + +Most Developers use a virtual environment to manage the dependencies of their projects. +I personally use `conda` for this purpose. + +When using `conda`, you can create a new environment with the name 'my-graph-jsp-env' following command: + +```shell +conda create -n my-graph-jsp-env python=3.11 +``` + +Feel free to use any other name for the environment or an more recent version of python. +Activate the environment with the following command: + +```shell +conda activate jsp-instance-utils +``` + +Replace `jsp-instance-utils` with the name of your environment, if you used a different name. + +You can also use `venv` or `virtualenv` to create a virtual environment. In that case please refer to the respective documentation. + +### Install the Dependencies + +To install the dependencies for development purposes, run the following command: + +```shell +pip install -r requirements_dev.txt +pip install tox +``` + +The testing package `tox` is not included in the `requirements_dev.txt` file, because it sometimes causes issues when +using github actions. +Github Actions uses an own tox environment (namely 'tox-gh-actions'), which can cause conflicts with the tox environment on your local machine. + +Reference: [Automated Testing in Python with pytest, tox, and GitHub Actions](https://www.youtube.com/watch?v=DhUpxWjOhME). + +### Install the Project in Editable Mode + +To install the project in editable mode, run the following command: + +```shell +pip install -e . +``` + +This will install the project in editable mode, so you can make changes to the code and test them immediately. + +### Run the Tests + +This project uses `pytest` for testing. To run the tests, run the following command: + +```shell +pytest +``` + +For testing with `tox` run the following command: + +```shell +tox +``` + +Tox will run the tests in a separate environment and will also check if the requirements are installed correctly. + +### Building and Publishing the Project to PyPi + +In order to publish the project to PyPi, the project needs to be built and then uploaded to PyPi. + +To build the project, run the following command: + +```shell +python -m build +``` + +It is considered good practice use the tool `twine` for checking the build and uploading the project to PyPi. +By default the build command creates a `dist` folder with the built project files. +To check all the files in the `dist` folder, run the following command: + +```shell +twine check dist/** +``` + +If the check is successful, you can upload the project to PyPi with the following command: + +```shell +twine upload dist/** +``` + +### Documentation +This project uses `sphinx` for generating the documentation. +It also uses a lot of sphinx extensions to make the documentation more readable and interactive. +For example the extension `myst-parser` is used to enable markdown support in the documentation (instead of the usual .rst-files). +It also uses the `sphinx-autobuild` extension to automatically rebuild the documentation when changes are made. +By running the following command, the documentation will be automatically built and served, when changes are made (make sure to run this command in the root directory of the project): + +```shell +sphinx-autobuild ./docs/source/ ./docs/build/html/ +``` + +This project features most of the extensions featured in this Tutorial: [Document Your Scientific Project With Markdown, Sphinx, and Read the Docs | PyData Global 2021](https://www.youtube.com/watch?v=qRSb299awB0). + + + +## Contact + +If you have any questions or feedback, feel free to contact me via [email](mailto:alexander.nasuta@wzl-iqs.rwth-aachen.de) or open an issue on repository. + + + # License Distributed under the MIT License. See `LICENSE.txt` for more information. diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..dc1312a --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css new file mode 100644 index 0000000..45dc491 --- /dev/null +++ b/docs/source/_static/custom.css @@ -0,0 +1,23 @@ +:root { + --logo-light: url("_static/logo-light.png"); + --logo-dark: url("_static/logo-dark.png"); +} + + +/* custom_admonitions.css */ +.admonition.custom-tip { + background-color: #e7f4e4; + border-left: 4px solid #4caf50; + padding: 10px; +} + +.admonition.custom-note { + background-color: #e7e4f4; + border-left: 4px solid #4caf50; + padding: 10px; +} + +p.block-mode { + display: block; + white-space: pre-wrap; +} \ No newline at end of file diff --git a/docs/source/_static/logo-light.png b/docs/source/_static/logo-light.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d352a677689c4bcbe42bfb7ec3a60c355df87c GIT binary patch literal 4075 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 literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..5b1e595 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,54 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = 'jsp-instance-utils' +copyright = '2025, Alexander Nasuta' +author = 'Alexander Nasuta' +release = '1.0.2' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = [ + "myst_parser", + "sphinx.ext.duration", + "sphinx_copybutton", + + "sphinx.ext.autosectionlabel", + + "sphinx.ext.autosummary", + "sphinx.ext.doctest", + + "sphinx.ext.autodoc", + + "sphinx.ext.napoleon", +] + +templates_path = ['_templates'] +exclude_patterns = [] + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'furo' +html_title = f"Graph Job Shop Environment" +html_static_path = ['_static'] +html_theme_options = { + "light_logo": "logo-light.png", + "dark_logo": "logo-light.png", +} +html_css_files = [ + 'custom.css', +] + +# Configure autosectionlabel +autosectionlabel_prefix_document = True +autosectionlabel_maxdepth = 2 + +# Exclude specific files +autosectionlabel_exclude_files = ['README.md'] diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..5738bd3 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,17 @@ +.. jsp-instance-utils documentation master file, created by + sphinx-quickstart on Wed Mar 19 16:40:55 2025. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +jsp-instance-utils documentation +================================ + +Add your content using ``reStructuredText`` syntax. See the +`reStructuredText <https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html>`_ +documentation for details. + + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + diff --git a/examples/JSSEnv_example.py b/examples/JSSEnv_example.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/graph-jsp-env_example.py b/examples/graph-jsp-env_example.py new file mode 100644 index 0000000..3509461 --- /dev/null +++ b/examples/graph-jsp-env_example.py @@ -0,0 +1,30 @@ +from jsp_instance_utils.instances import ft06, ft06_makespan +from graph_jsp_env.disjunctive_graph_jsp_env import DisjunctiveGraphJspEnv +import numpy as np + + +def main(): + env = DisjunctiveGraphJspEnv( + jps_instance=ft06, + reward_function_parameters={ + "scaling_divisor": ft06_makespan + }, + ) + + done = False + info = {} + while not done: + # get valid action mask. sample expects it to be a numpy array of type int8 + mask = np.array(env.valid_action_mask()).astype(np.int8) + action = env.action_space.sample(mask=mask) + state, reward, terminated, truncated, info = env.step(action) + + done = terminated or truncated + + # console rendering + env.render(show=["gantt_console", "graph_console"]) + print(f"makespan: {info['makespan']}") + + +if __name__ == '__main__': + main() diff --git a/examples/graph-matrix-jsp-env_example.py b/examples/graph-matrix-jsp-env_example.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/kemmerling_example.py b/examples/kemmerling_example.py new file mode 100644 index 0000000..e69de29 diff --git a/examples/or-tools_example.py b/examples/or-tools_example.py new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index 1dbc6a1..d517169 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,25 @@ dev = [ "pytest", "pytest-cov", "tox", - "twine" + "twine", + # for examples + "gym", + "gymnasium", + "JSSEnv", + "graph-jsp-env", + # documentation + "sphinx", + "myst-parser", # .md support for sphinx + "sphinx-autobuild", + # + "furo", # cool theme + "twine", + "sphinx-copybutton", # for code copy buttons + "nbsphinx", # for jupyter notebook support in sphinx + # for converting examples to notebooks + "jupytext", + "notebook", + "typing_extensions>=4.12.0", ] [project.urls] diff --git a/requirements_dev.txt b/requirements_dev.txt index b578fe4..bf7b28d 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -6,36 +6,145 @@ # absl-py==2.1.0 # via ortools +alabaster==1.0.0 + # via sphinx +anyio==4.9.0 + # via + # httpx + # jupyter-server + # starlette + # watchfiles +argon2-cffi==23.1.0 + # via jupyter-server +argon2-cffi-bindings==21.2.0 + # via argon2-cffi +arrow==1.3.0 + # via isoduration +asttokens==3.0.0 + # via stack-data +async-lru==2.0.5 + # via jupyterlab +attrs==25.3.0 + # via + # jsonschema + # referencing +babel==2.17.0 + # via + # jupyterlab-server + # sphinx backports-tarfile==1.1.0 # via jaraco-context beautifulsoup4==4.12.3 - # via jsp-instance-utils (pyproject.toml) + # via + # furo + # jsp-instance-utils (pyproject.toml) + # nbconvert +bleach[css]==6.2.0 + # via nbconvert build==1.2.1 # via pip-tools cachetools==5.3.3 # via tox certifi==2024.2.2 - # via requests + # via + # httpcore + # httpx + # requests +cffi==1.17.1 + # via argon2-cffi-bindings chardet==5.2.0 # via tox charset-normalizer==3.3.2 # via requests click==8.1.7 - # via pip-tools + # via + # pip-tools + # uvicorn +cloudpickle==3.1.1 + # via + # gym + # gymnasium +codecov==2.1.13 + # via jssenv colorama==0.4.6 - # via tox + # via + # build + # click + # ipython + # pytest + # sphinx + # sphinx-autobuild + # tox +comm==0.2.2 + # via ipykernel +contourpy==1.3.1 + # via matplotlib coverage[toml]==7.4.4 - # via pytest-cov + # via + # codecov + # pytest-cov +cycler==0.12.1 + # via matplotlib +debugpy==1.8.13 + # via ipykernel +decorator==5.2.1 + # via ipython +defusedxml==0.7.1 + # via nbconvert distlib==0.3.8 # via virtualenv docutils==0.21.1 - # via readme-renderer + # via + # myst-parser + # nbsphinx + # readme-renderer + # sphinx +executing==2.2.0 + # via stack-data +farama-notifications==0.0.4 + # via gymnasium +fastjsonschema==2.21.1 + # via nbformat filelock==3.13.4 # via # tox # virtualenv +fonttools==4.56.0 + # via matplotlib +fqdn==1.5.1 + # via jsonschema +furo==2024.8.6 + # via jsp-instance-utils (pyproject.toml) +graph-jsp-env==1.0.0 + # via jsp-instance-utils (pyproject.toml) +gym==0.26.2 + # via + # jsp-instance-utils (pyproject.toml) + # jssenv +gym-notices==0.0.8 + # via gym +gymnasium==1.1.1 + # via + # graph-jsp-env + # jsp-instance-utils (pyproject.toml) +h11==0.14.0 + # via + # httpcore + # uvicorn +httpcore==1.0.7 + # via httpx +httpx==0.28.1 + # via jupyterlab idna==3.7 - # via requests + # via + # anyio + # httpx + # jsonschema + # requests +imageio==2.37.0 + # via jssenv +imagesize==1.4.1 + # via sphinx immutabledict==4.2.0 # via ortools importlib-metadata==7.1.0 @@ -44,57 +153,248 @@ importlib-metadata==7.1.0 # twine iniconfig==2.0.0 # via pytest +ipykernel==6.29.5 + # via jupyterlab +ipython==9.0.2 + # via ipykernel +ipython-pygments-lexers==1.1.1 + # via ipython +isoduration==20.11.0 + # via jsonschema jaraco-classes==3.4.0 # via keyring jaraco-context==5.3.0 # via keyring jaraco-functools==4.0.0 # via keyring +jedi==0.19.2 + # via ipython +jinja2==3.1.6 + # via + # jupyter-server + # jupyterlab + # jupyterlab-server + # myst-parser + # nbconvert + # nbsphinx + # sphinx +json5==0.10.0 + # via jupyterlab-server +jsonpointer==3.0.0 + # via jsonschema +jsonschema[format-nongpl]==4.23.0 + # via + # jupyter-events + # jupyterlab-server + # nbformat +jsonschema-specifications==2024.10.1 + # via jsonschema +jsp-vis==1.1.0 + # via jsp-instance-utils (pyproject.toml) +jssenv==1.0.2 + # via jsp-instance-utils (pyproject.toml) +jupyter-client==8.6.3 + # via + # ipykernel + # jupyter-server + # nbclient +jupyter-core==5.7.2 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # nbclient + # nbconvert + # nbformat +jupyter-events==0.12.0 + # via jupyter-server +jupyter-lsp==2.2.5 + # via jupyterlab +jupyter-server==2.15.0 + # via + # jupyter-lsp + # jupyterlab + # jupyterlab-server + # notebook + # notebook-shim +jupyter-server-terminals==0.5.3 + # via jupyter-server +jupyterlab==4.3.6 + # via notebook +jupyterlab-pygments==0.3.0 + # via nbconvert +jupyterlab-server==2.27.3 + # via + # jupyterlab + # notebook +jupytext==1.16.7 + # via jsp-instance-utils (pyproject.toml) +kaleido==0.2.1 + # via + # graph-jsp-env + # jsp-vis + # jssenv keyring==25.1.0 # via twine +kiwisolver==1.4.8 + # via matplotlib markdown-it-py==3.0.0 - # via rich + # via + # jupytext + # mdit-py-plugins + # myst-parser + # rich +markupsafe==3.0.2 + # via + # jinja2 + # nbconvert +matplotlib==3.8.4 + # via + # graph-jsp-env + # jsp-vis +matplotlib-inline==0.1.7 + # via + # ipykernel + # ipython +mdit-py-plugins==0.4.2 + # via + # jupytext + # myst-parser mdurl==0.1.2 # via markdown-it-py +mistune==3.1.2 + # via nbconvert more-itertools==10.2.0 # via # jaraco-classes # jaraco-functools +myst-parser==4.0.1 + # via jsp-instance-utils (pyproject.toml) +narwhals==1.31.0 + # via plotly +nbclient==0.10.2 + # via nbconvert +nbconvert==7.16.6 + # via + # jupyter-server + # nbsphinx +nbformat==5.10.4 + # via + # jupyter-server + # jupytext + # nbclient + # nbconvert + # nbsphinx +nbsphinx==0.9.7 + # via jsp-instance-utils (pyproject.toml) +nest-asyncio==1.6.0 + # via ipykernel +networkx==3.4.2 + # via graph-jsp-env nh3==0.2.17 # via readme-renderer +notebook==7.3.3 + # via jsp-instance-utils (pyproject.toml) +notebook-shim==0.2.4 + # via + # jupyterlab + # notebook numpy==1.26.4 # via + # contourpy + # graph-jsp-env + # gym + # gymnasium + # imageio # jsp-instance-utils (pyproject.toml) + # jsp-vis + # jssenv + # matplotlib + # opencv-python # ortools # pandas +opencv-python==4.11.0.86 + # via + # graph-jsp-env + # jsp-vis ortools==9.9.3963 # via jsp-instance-utils (pyproject.toml) +overrides==7.7.0 + # via jupyter-server packaging==24.0 # via # build + # ipykernel + # jupyter-events + # jupyter-server + # jupyterlab + # jupyterlab-server + # jupytext + # matplotlib + # nbconvert + # plotly # pyproject-api # pytest + # sphinx # tox pandas==2.2.2 - # via ortools + # via + # graph-jsp-env + # jsp-vis + # jssenv + # ortools +pandocfilters==1.5.1 + # via nbconvert +parso==0.8.4 + # via jedi +pillow==11.1.0 + # via + # imageio + # matplotlib pip-tools==7.4.1 # via jsp-instance-utils (pyproject.toml) pkginfo==1.10.0 # via twine platformdirs==4.2.0 # via + # jupyter-core # tox # virtualenv +plotly==6.0.1 + # via + # graph-jsp-env + # jsp-vis + # jssenv pluggy==1.4.0 # via # pytest # tox +prometheus-client==0.21.1 + # via jupyter-server +prompt-toolkit==3.0.50 + # via ipython protobuf==5.26.1 # via ortools +psutil==7.0.0 + # via + # ipykernel + # jssenv +pure-eval==0.2.3 + # via stack-data +pycparser==2.22 + # via cffi pygments==2.17.2 # via + # furo + # ipython + # ipython-pygments-lexers + # nbconvert # readme-renderer # rich + # sphinx +pyparsing==3.2.1 + # via matplotlib pyproject-api==1.6.1 # via tox pyproject-hooks==1.0.0 @@ -104,42 +404,186 @@ pyproject-hooks==1.0.0 pytest==8.1.1 # via # jsp-instance-utils (pyproject.toml) + # jssenv # pytest-cov pytest-cov==5.0.0 # via jsp-instance-utils (pyproject.toml) python-dateutil==2.9.0.post0 - # via pandas + # via + # arrow + # jupyter-client + # matplotlib + # pandas +python-json-logger==3.3.0 + # via jupyter-events pytz==2024.1 # via pandas +pywin32==310 + # via jupyter-core +pywin32-ctypes==0.2.3 + # via keyring +pywinpty==2.0.15 + # via + # jupyter-server + # jupyter-server-terminals + # terminado +pyyaml==6.0.2 + # via + # jupyter-events + # jupytext + # myst-parser +pyzmq==26.3.0 + # via + # ipykernel + # jupyter-client + # jupyter-server readme-renderer==43.0 # via twine +referencing==0.36.2 + # via + # jsonschema + # jsonschema-specifications + # jupyter-events requests==2.31.0 # via + # codecov # jsp-instance-utils (pyproject.toml) + # jssenv + # jupyterlab-server # requests-toolbelt + # sphinx # twine requests-toolbelt==1.0.0 # via twine +rfc3339-validator==0.1.4 + # via + # jsonschema + # jupyter-events rfc3986==2.0.0 # via twine +rfc3986-validator==0.1.1 + # via + # jsonschema + # jupyter-events rich==13.7.1 - # via twine + # via + # graph-jsp-env + # twine +rpds-py==0.23.1 + # via + # jsonschema + # referencing +send2trash==1.8.3 + # via jupyter-server six==1.16.0 - # via python-dateutil + # via + # python-dateutil + # rfc3339-validator +sniffio==1.3.1 + # via anyio +snowballstemmer==2.2.0 + # via sphinx soupsieve==2.5 # via beautifulsoup4 +sphinx==8.1.3 + # via + # furo + # jsp-instance-utils (pyproject.toml) + # myst-parser + # nbsphinx + # sphinx-autobuild + # sphinx-basic-ng + # sphinx-copybutton +sphinx-autobuild==2024.10.3 + # via jsp-instance-utils (pyproject.toml) +sphinx-basic-ng==1.0.0b2 + # via furo +sphinx-copybutton==0.5.2 + # via jsp-instance-utils (pyproject.toml) +sphinxcontrib-applehelp==2.0.0 + # via sphinx +sphinxcontrib-devhelp==2.0.0 + # via sphinx +sphinxcontrib-htmlhelp==2.1.0 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==2.0.0 + # via sphinx +sphinxcontrib-serializinghtml==2.0.0 + # via sphinx +stack-data==0.6.3 + # via ipython +starlette==0.46.1 + # via sphinx-autobuild +terminado==0.18.1 + # via + # jupyter-server + # jupyter-server-terminals +tinycss2==1.4.0 + # via bleach +tornado==6.4.2 + # via + # ipykernel + # jupyter-client + # jupyter-server + # jupyterlab + # notebook + # terminado tox==4.14.2 # via jsp-instance-utils (pyproject.toml) +traitlets==5.14.3 + # via + # comm + # ipykernel + # ipython + # jupyter-client + # jupyter-core + # jupyter-events + # jupyter-server + # jupyterlab + # matplotlib-inline + # nbclient + # nbconvert + # nbformat + # nbsphinx twine==5.0.0 # via jsp-instance-utils (pyproject.toml) +types-python-dateutil==2.9.0.20241206 + # via arrow +typing-extensions==4.12.2 + # via + # anyio + # gymnasium + # ipython + # jsp-instance-utils (pyproject.toml) + # referencing tzdata==2024.1 # via pandas +uri-template==1.3.0 + # via jsonschema urllib3==2.2.1 # via # requests # twine +uvicorn==0.34.0 + # via sphinx-autobuild virtualenv==20.25.3 # via tox +watchfiles==1.0.4 + # via sphinx-autobuild +wcwidth==0.2.13 + # via prompt-toolkit +webcolors==24.11.1 + # via jsonschema +webencodings==0.5.1 + # via + # bleach + # tinycss2 +websocket-client==1.8.0 + # via jupyter-server +websockets==15.0.1 + # via sphinx-autobuild wheel==0.43.0 # via pip-tools zipp==3.18.1 -- GitLab