Skip to content
Snippets Groups Projects
Commit f79ece0f authored by Alexander Nasuta's avatar Alexander Nasuta
Browse files

docs init commit

parent 02a785bd
No related branches found
No related tags found
No related merge requests found
...@@ -80,6 +80,141 @@ You can also find them on this website: http://jobshop.jjvh.nl/ ...@@ -80,6 +80,141 @@ You can also find them on this website: http://jobshop.jjvh.nl/
# More Examples # More Examples
For more examples you can have a look at the test files in the `tests` directory. 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 # License
Distributed under the MIT License. See `LICENSE.txt` for more information. Distributed under the MIT License. See `LICENSE.txt` for more information.
......
# 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)
@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
: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
docs/source/_static/logo-light.png

3.98 KiB

# 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']
.. 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:
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()
...@@ -30,7 +30,25 @@ dev = [ ...@@ -30,7 +30,25 @@ dev = [
"pytest", "pytest",
"pytest-cov", "pytest-cov",
"tox", "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] [project.urls]
......
...@@ -6,36 +6,145 @@ ...@@ -6,36 +6,145 @@
# #
absl-py==2.1.0 absl-py==2.1.0
# via ortools # 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 backports-tarfile==1.1.0
# via jaraco-context # via jaraco-context
beautifulsoup4==4.12.3 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 build==1.2.1
# via pip-tools # via pip-tools
cachetools==5.3.3 cachetools==5.3.3
# via tox # via tox
certifi==2024.2.2 certifi==2024.2.2
# via requests # via
# httpcore
# httpx
# requests
cffi==1.17.1
# via argon2-cffi-bindings
chardet==5.2.0 chardet==5.2.0
# via tox # via tox
charset-normalizer==3.3.2 charset-normalizer==3.3.2
# via requests # via requests
click==8.1.7 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 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 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 distlib==0.3.8
# via virtualenv # via virtualenv
docutils==0.21.1 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 filelock==3.13.4
# via # via
# tox # tox
# virtualenv # 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 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 immutabledict==4.2.0
# via ortools # via ortools
importlib-metadata==7.1.0 importlib-metadata==7.1.0
...@@ -44,57 +153,248 @@ importlib-metadata==7.1.0 ...@@ -44,57 +153,248 @@ importlib-metadata==7.1.0
# twine # twine
iniconfig==2.0.0 iniconfig==2.0.0
# via pytest # 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 jaraco-classes==3.4.0
# via keyring # via keyring
jaraco-context==5.3.0 jaraco-context==5.3.0
# via keyring # via keyring
jaraco-functools==4.0.0 jaraco-functools==4.0.0
# via keyring # 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 keyring==25.1.0
# via twine # via twine
kiwisolver==1.4.8
# via matplotlib
markdown-it-py==3.0.0 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 mdurl==0.1.2
# via markdown-it-py # via markdown-it-py
mistune==3.1.2
# via nbconvert
more-itertools==10.2.0 more-itertools==10.2.0
# via # via
# jaraco-classes # jaraco-classes
# jaraco-functools # 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 nh3==0.2.17
# via readme-renderer # 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 numpy==1.26.4
# via # via
# contourpy
# graph-jsp-env
# gym
# gymnasium
# imageio
# jsp-instance-utils (pyproject.toml) # jsp-instance-utils (pyproject.toml)
# jsp-vis
# jssenv
# matplotlib
# opencv-python
# ortools # ortools
# pandas # pandas
opencv-python==4.11.0.86
# via
# graph-jsp-env
# jsp-vis
ortools==9.9.3963 ortools==9.9.3963
# via jsp-instance-utils (pyproject.toml) # via jsp-instance-utils (pyproject.toml)
overrides==7.7.0
# via jupyter-server
packaging==24.0 packaging==24.0
# via # via
# build # build
# ipykernel
# jupyter-events
# jupyter-server
# jupyterlab
# jupyterlab-server
# jupytext
# matplotlib
# nbconvert
# plotly
# pyproject-api # pyproject-api
# pytest # pytest
# sphinx
# tox # tox
pandas==2.2.2 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 pip-tools==7.4.1
# via jsp-instance-utils (pyproject.toml) # via jsp-instance-utils (pyproject.toml)
pkginfo==1.10.0 pkginfo==1.10.0
# via twine # via twine
platformdirs==4.2.0 platformdirs==4.2.0
# via # via
# jupyter-core
# tox # tox
# virtualenv # virtualenv
plotly==6.0.1
# via
# graph-jsp-env
# jsp-vis
# jssenv
pluggy==1.4.0 pluggy==1.4.0
# via # via
# pytest # pytest
# tox # tox
prometheus-client==0.21.1
# via jupyter-server
prompt-toolkit==3.0.50
# via ipython
protobuf==5.26.1 protobuf==5.26.1
# via ortools # 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 pygments==2.17.2
# via # via
# furo
# ipython
# ipython-pygments-lexers
# nbconvert
# readme-renderer # readme-renderer
# rich # rich
# sphinx
pyparsing==3.2.1
# via matplotlib
pyproject-api==1.6.1 pyproject-api==1.6.1
# via tox # via tox
pyproject-hooks==1.0.0 pyproject-hooks==1.0.0
...@@ -104,42 +404,186 @@ pyproject-hooks==1.0.0 ...@@ -104,42 +404,186 @@ pyproject-hooks==1.0.0
pytest==8.1.1 pytest==8.1.1
# via # via
# jsp-instance-utils (pyproject.toml) # jsp-instance-utils (pyproject.toml)
# jssenv
# pytest-cov # pytest-cov
pytest-cov==5.0.0 pytest-cov==5.0.0
# via jsp-instance-utils (pyproject.toml) # via jsp-instance-utils (pyproject.toml)
python-dateutil==2.9.0.post0 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 pytz==2024.1
# via pandas # 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 readme-renderer==43.0
# via twine # via twine
referencing==0.36.2
# via
# jsonschema
# jsonschema-specifications
# jupyter-events
requests==2.31.0 requests==2.31.0
# via # via
# codecov
# jsp-instance-utils (pyproject.toml) # jsp-instance-utils (pyproject.toml)
# jssenv
# jupyterlab-server
# requests-toolbelt # requests-toolbelt
# sphinx
# twine # twine
requests-toolbelt==1.0.0 requests-toolbelt==1.0.0
# via twine # via twine
rfc3339-validator==0.1.4
# via
# jsonschema
# jupyter-events
rfc3986==2.0.0 rfc3986==2.0.0
# via twine # via twine
rfc3986-validator==0.1.1
# via
# jsonschema
# jupyter-events
rich==13.7.1 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 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 soupsieve==2.5
# via beautifulsoup4 # 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 tox==4.14.2
# via jsp-instance-utils (pyproject.toml) # 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 twine==5.0.0
# via jsp-instance-utils (pyproject.toml) # 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 tzdata==2024.1
# via pandas # via pandas
uri-template==1.3.0
# via jsonschema
urllib3==2.2.1 urllib3==2.2.1
# via # via
# requests # requests
# twine # twine
uvicorn==0.34.0
# via sphinx-autobuild
virtualenv==20.25.3 virtualenv==20.25.3
# via tox # 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 wheel==0.43.0
# via pip-tools # via pip-tools
zipp==3.18.1 zipp==3.18.1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment