dustrack 1.0.0a1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,163 @@
1
+ .vscode/*
2
+
3
+ # Byte-compiled / optimized / DLL files
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ build/
14
+ develop-eggs/
15
+ dist/
16
+ downloads/
17
+ eggs/
18
+ .eggs/
19
+ lib/
20
+ lib64/
21
+ parts/
22
+ sdist/
23
+ var/
24
+ wheels/
25
+ share/python-wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+ MANIFEST
30
+
31
+ # PyInstaller
32
+ # Usually these files are written by a python script from a template
33
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
34
+ *.manifest
35
+ *.spec
36
+
37
+ # Installer logs
38
+ pip-log.txt
39
+ pip-delete-this-directory.txt
40
+
41
+ # Unit test / coverage reports
42
+ htmlcov/
43
+ .tox/
44
+ .nox/
45
+ .coverage
46
+ .coverage.*
47
+ .cache
48
+ nosetests.xml
49
+ coverage.xml
50
+ *.cover
51
+ *.py,cover
52
+ .hypothesis/
53
+ .pytest_cache/
54
+ cover/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+ db.sqlite3
64
+ db.sqlite3-journal
65
+
66
+ # Flask stuff:
67
+ instance/
68
+ .webassets-cache
69
+
70
+ # Scrapy stuff:
71
+ .scrapy
72
+
73
+ # Sphinx documentation
74
+ docs/_build/
75
+
76
+ # PyBuilder
77
+ .pybuilder/
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # IPython
84
+ profile_default/
85
+ ipython_config.py
86
+
87
+ # pyenv
88
+ # For a library or package, you might want to ignore these files since the code is
89
+ # intended to run in multiple environments; otherwise, check them in:
90
+ # .python-version
91
+
92
+ # pipenv
93
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
94
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
95
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
96
+ # install all needed dependencies.
97
+ #Pipfile.lock
98
+
99
+ # poetry
100
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
101
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
102
+ # commonly ignored for libraries.
103
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
104
+ #poetry.lock
105
+
106
+ # pdm
107
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
108
+ #pdm.lock
109
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
110
+ # in version control.
111
+ # https://pdm.fming.dev/#use-with-ide
112
+ .pdm.toml
113
+
114
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
115
+ __pypackages__/
116
+
117
+ # Celery stuff
118
+ celerybeat-schedule
119
+ celerybeat.pid
120
+
121
+ # SageMath parsed files
122
+ *.sage.py
123
+
124
+ # Environments
125
+ .env
126
+ .venv
127
+ .venv-dev
128
+ env/
129
+ venv/
130
+ ENV/
131
+ env.bak/
132
+ venv.bak/
133
+
134
+ # Spyder project settings
135
+ .spyderproject
136
+ .spyproject
137
+
138
+ # Rope project settings
139
+ .ropeproject
140
+
141
+ # mkdocs documentation
142
+ /site
143
+
144
+ # mypy
145
+ .mypy_cache/
146
+ .dmypy.json
147
+ dmypy.json
148
+
149
+ # Pyre type checker
150
+ .pyre/
151
+
152
+ # pytype static type analyzer
153
+ .pytype/
154
+
155
+ # Cython debug symbols
156
+ cython_debug/
157
+
158
+ # PyCharm
159
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
160
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
161
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
162
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
163
+ #.idea/
@@ -0,0 +1,29 @@
1
+ # Read the Docs configuration file for Sphinx projects
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ # Required
5
+ version: 2
6
+
7
+ # Set the OS, Python version and other tools you might need
8
+ build:
9
+ os: ubuntu-22.04
10
+ tools:
11
+ python: "3.12"
12
+
13
+ # Build documentation in the "docs/" directory with Sphinx
14
+ sphinx:
15
+ configuration: docs/conf.py
16
+
17
+ # Optionally build your docs in additional formats such as PDF and ePub
18
+ formats:
19
+ - pdf
20
+ - epub
21
+
22
+ # Optional but recommended, declare the Python requirements required
23
+ # to build your documentation
24
+ # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
25
+ python:
26
+ install:
27
+ - requirements: docs/requirements.txt
28
+ - method: pip
29
+ path: .
@@ -0,0 +1,9 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-present Praneeth Namburi <praneeth.namburi@gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,152 @@
1
+ Metadata-Version: 2.4
2
+ Name: dustrack
3
+ Version: 1.0.0a1
4
+ Summary: DUSTrack: Semi-automated point tracking in ultrasound videos.
5
+ Keywords: video,tracking,computer-vision,motion-analysis,point-tracking
6
+ Author-email: Praneeth Namburi <praneeth.namburi@gmail.com>
7
+ Requires-Python: >=3.7,<=3.13
8
+ Description-Content-Type: text/markdown
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Topic :: Scientific/Engineering
12
+ Classifier: Programming Language :: Python
13
+ Classifier: Programming Language :: Python :: 3.7
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: Implementation :: CPython
21
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
22
+ License-File: LICENSE
23
+ Requires-Dist: numpy<2
24
+ Requires-Dist: pandas
25
+ Requires-Dist: matplotlib
26
+ Requires-Dist: portion
27
+ Requires-Dist: ffmpeg-python
28
+ Requires-Dist: tables
29
+ Requires-Dist: dill
30
+ Requires-Dist: tqdm
31
+ Requires-Dist: scikit-image
32
+ Requires-Dist: opencv-python
33
+ Requires-Dist: pysampled
34
+ Requires-Dist: decord
35
+ Requires-Dist: pyfilemanager
36
+ Requires-Dist: datanavigator>=1.1.3
37
+ Requires-Dist: sphinx==6.2.1 ; extra == "docs"
38
+ Requires-Dist: sphinx-rtd-theme==2.0.0 ; extra == "docs"
39
+ Requires-Dist: myst-parser==1.0.0 ; extra == "docs"
40
+ Requires-Dist: sphinxcontrib-youtube==1.4.1 ; extra == "docs"
41
+ Project-URL: Home, https://github.com/praneethnamburi/DUSTrack
42
+ Provides-Extra: docs
43
+
44
+ # DUSTrack
45
+
46
+ [![src](https://img.shields.io/badge/src-github-blue)](https://github.com/praneethnamburi/DUSTrack)
47
+ [![PyPI - Version](https://img.shields.io/pypi/v/DUSTrack.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/DUSTrack/)
48
+ [![Documentation Status](https://readthedocs.org/projects/DUSTrack/badge/?version=latest)](https://DUSTrack.readthedocs.io)
49
+ [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/praneethnamburi/DUSTrack/main/LICENSE)
50
+
51
+ *Semi-automated point tracking in videos. Designed for ultrasound videos, but works with natural videos as well.*
52
+
53
+ `DUSTrack` (Deep learning and optical flow-based toolkit for UltraSound Tracking) is a semi-automated framework for tracking arbitrary points in B-mode ultrasound videos. It combines deep learning with optical flow to deliver high-quality, robust tracking across diverse anatomical structures and motion patterns. The toolkit includes a graphical user interface that streamlines the generation of high-quality training data and supports iterative model refinement. It also implements a novel optical-flow-based filtering technique that reduces high-frequency frame-to-frame noise while preserving rapid tissue motion.
54
+
55
+ ## Features
56
+
57
+ - **Hybrid approach**: Combines deep learning with optical flow for accurate tracking
58
+ - **User-friendly GUI**: Streamlines training data generation and model refinement
59
+ - **Noise reduction**: Novel optical-flow-based filtering preserves rapid motion while reducing frame-to-frame noise
60
+ - **Versatile**: Works with ultrasound and other video types
61
+ - **Flexible installation**: Use GUI + optical flow only, or add deep learning capabilities
62
+
63
+ Learn more about DUSTrack in our [preprint](https://arxiv.org/abs/2507.14368).
64
+
65
+ ## Installation
66
+
67
+ ### Option 1: GUI + Optical Flow Only (Recommended for Short Videos)
68
+
69
+ For tracking points in videos with a few hundred frames, this lightweight installation is sufficient:
70
+
71
+ ```sh
72
+ pip install DUSTrack
73
+ ```
74
+
75
+ **Troubleshooting dependencies**: If you encounter dependency issues, use conda with the provided `requirements.yml` file:
76
+
77
+ ```sh
78
+ conda env create -n env-dustrack -f https://github.com/praneethnamburi/DUSTrack/raw/main/requirements.yml
79
+ conda activate env-dustrack
80
+ pip install DUSTrack
81
+ ```
82
+
83
+ ### Option 2: Full Installation (Including Deep Learning)
84
+
85
+ For longer videos or ultrasound videos with repetitive motions, deep learning significantly reduces manual effort and improves tracking quality:
86
+
87
+ 1. Create a conda environment and install DeepLabCut by following [these instructions](https://deeplabcut.github.io/DeepLabCut/docs/installation.html)
88
+ 2. Activate your DeepLabCut environment and install DUSTrack:
89
+ ```sh
90
+ conda activate <your-dlc-env>
91
+ pip install DUSTrack
92
+ ```
93
+
94
+ ## Quick Start
95
+
96
+ ```python
97
+ from dustrack import DUSTrack
98
+ import datanavigator
99
+
100
+ # Launch the GUI with an example video
101
+ video_path = datanavigator.get_example_video() # or use your own video path
102
+ d = DUSTrack(video_path, "pn")
103
+ # The second argument is the name of the "layer" for storing tracking annotations
104
+ ```
105
+
106
+ **Next steps:**
107
+ - Use the GUI to mark points of interest in your video (see [Keyboard shortcuts](https://github.com/praneethnamburi/DUSTrack/raw/main/docs/source/resources/keyboard_shortcuts.pdf))
108
+ - Track points using optical flow and/or train a deep learning model
109
+ - Export tracking results as a `.json` file for further analysis
110
+
111
+ For detailed tutorials and examples, see the [documentation](https://DUSTrack.readthedocs.io).
112
+
113
+ ## Documentation
114
+
115
+ Full documentation is available at [DUSTrack.readthedocs.io](https://DUSTrack.readthedocs.io).
116
+
117
+ ## Citation
118
+
119
+ If you use DUSTrack in your research, please cite our paper:
120
+
121
+ ```bibtex
122
+ @article{namburi2025dustrack,
123
+ title={DUSTrack: Semi-automated point tracking in ultrasound videos},
124
+ author={Namburi, Praneeth and Pallar{\`e}s-L{\'o}pez, Roger and Rosendorf, Jessica and Folgado, Duarte and Anthony, Brian W},
125
+ journal={arXiv preprint arXiv:2507.14368},
126
+ year={2025}
127
+ }
128
+ ```
129
+
130
+ ## Contributing
131
+
132
+ Contributions are welcome! Please feel free to:
133
+ - Submit a Pull Request with improvements or bug fixes
134
+ - Share your use cases and feedback ([contact](https://praneethnamburi.com/contact/))
135
+
136
+ ## License
137
+
138
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
139
+
140
+ ## Contact
141
+
142
+ [Praneeth Namburi](https://praneethnamburi.com)
143
+
144
+ Project Link: [https://github.com/praneethnamburi/DUSTrack](https://github.com/praneethnamburi/DUSTrack)
145
+
146
+
147
+ ## Acknowledgments
148
+
149
+ [MIT.nano Immersion Lab](https://immersion.mit.edu)
150
+
151
+ [NCSOFT](https://nc.com)
152
+
@@ -0,0 +1,108 @@
1
+ # DUSTrack
2
+
3
+ [![src](https://img.shields.io/badge/src-github-blue)](https://github.com/praneethnamburi/DUSTrack)
4
+ [![PyPI - Version](https://img.shields.io/pypi/v/DUSTrack.svg?logo=pypi&label=PyPI&logoColor=gold)](https://pypi.org/project/DUSTrack/)
5
+ [![Documentation Status](https://readthedocs.org/projects/DUSTrack/badge/?version=latest)](https://DUSTrack.readthedocs.io)
6
+ [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/praneethnamburi/DUSTrack/main/LICENSE)
7
+
8
+ *Semi-automated point tracking in videos. Designed for ultrasound videos, but works with natural videos as well.*
9
+
10
+ `DUSTrack` (Deep learning and optical flow-based toolkit for UltraSound Tracking) is a semi-automated framework for tracking arbitrary points in B-mode ultrasound videos. It combines deep learning with optical flow to deliver high-quality, robust tracking across diverse anatomical structures and motion patterns. The toolkit includes a graphical user interface that streamlines the generation of high-quality training data and supports iterative model refinement. It also implements a novel optical-flow-based filtering technique that reduces high-frequency frame-to-frame noise while preserving rapid tissue motion.
11
+
12
+ ## Features
13
+
14
+ - **Hybrid approach**: Combines deep learning with optical flow for accurate tracking
15
+ - **User-friendly GUI**: Streamlines training data generation and model refinement
16
+ - **Noise reduction**: Novel optical-flow-based filtering preserves rapid motion while reducing frame-to-frame noise
17
+ - **Versatile**: Works with ultrasound and other video types
18
+ - **Flexible installation**: Use GUI + optical flow only, or add deep learning capabilities
19
+
20
+ Learn more about DUSTrack in our [preprint](https://arxiv.org/abs/2507.14368).
21
+
22
+ ## Installation
23
+
24
+ ### Option 1: GUI + Optical Flow Only (Recommended for Short Videos)
25
+
26
+ For tracking points in videos with a few hundred frames, this lightweight installation is sufficient:
27
+
28
+ ```sh
29
+ pip install DUSTrack
30
+ ```
31
+
32
+ **Troubleshooting dependencies**: If you encounter dependency issues, use conda with the provided `requirements.yml` file:
33
+
34
+ ```sh
35
+ conda env create -n env-dustrack -f https://github.com/praneethnamburi/DUSTrack/raw/main/requirements.yml
36
+ conda activate env-dustrack
37
+ pip install DUSTrack
38
+ ```
39
+
40
+ ### Option 2: Full Installation (Including Deep Learning)
41
+
42
+ For longer videos or ultrasound videos with repetitive motions, deep learning significantly reduces manual effort and improves tracking quality:
43
+
44
+ 1. Create a conda environment and install DeepLabCut by following [these instructions](https://deeplabcut.github.io/DeepLabCut/docs/installation.html)
45
+ 2. Activate your DeepLabCut environment and install DUSTrack:
46
+ ```sh
47
+ conda activate <your-dlc-env>
48
+ pip install DUSTrack
49
+ ```
50
+
51
+ ## Quick Start
52
+
53
+ ```python
54
+ from dustrack import DUSTrack
55
+ import datanavigator
56
+
57
+ # Launch the GUI with an example video
58
+ video_path = datanavigator.get_example_video() # or use your own video path
59
+ d = DUSTrack(video_path, "pn")
60
+ # The second argument is the name of the "layer" for storing tracking annotations
61
+ ```
62
+
63
+ **Next steps:**
64
+ - Use the GUI to mark points of interest in your video (see [Keyboard shortcuts](https://github.com/praneethnamburi/DUSTrack/raw/main/docs/source/resources/keyboard_shortcuts.pdf))
65
+ - Track points using optical flow and/or train a deep learning model
66
+ - Export tracking results as a `.json` file for further analysis
67
+
68
+ For detailed tutorials and examples, see the [documentation](https://DUSTrack.readthedocs.io).
69
+
70
+ ## Documentation
71
+
72
+ Full documentation is available at [DUSTrack.readthedocs.io](https://DUSTrack.readthedocs.io).
73
+
74
+ ## Citation
75
+
76
+ If you use DUSTrack in your research, please cite our paper:
77
+
78
+ ```bibtex
79
+ @article{namburi2025dustrack,
80
+ title={DUSTrack: Semi-automated point tracking in ultrasound videos},
81
+ author={Namburi, Praneeth and Pallar{\`e}s-L{\'o}pez, Roger and Rosendorf, Jessica and Folgado, Duarte and Anthony, Brian W},
82
+ journal={arXiv preprint arXiv:2507.14368},
83
+ year={2025}
84
+ }
85
+ ```
86
+
87
+ ## Contributing
88
+
89
+ Contributions are welcome! Please feel free to:
90
+ - Submit a Pull Request with improvements or bug fixes
91
+ - Share your use cases and feedback ([contact](https://praneethnamburi.com/contact/))
92
+
93
+ ## License
94
+
95
+ This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
96
+
97
+ ## Contact
98
+
99
+ [Praneeth Namburi](https://praneethnamburi.com)
100
+
101
+ Project Link: [https://github.com/praneethnamburi/DUSTrack](https://github.com/praneethnamburi/DUSTrack)
102
+
103
+
104
+ ## Acknowledgments
105
+
106
+ [MIT.nano Immersion Lab](https://immersion.mit.edu)
107
+
108
+ [NCSOFT](https://nc.com)
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = _build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,16 @@
1
+ # API Reference
2
+
3
+ ```{eval-rst}
4
+ .. automodule:: dustrack
5
+ :members:
6
+ ```
7
+
8
+ ```{eval-rst}
9
+ .. automodule:: dustrack.dlcinterface
10
+ :members:
11
+ ```
12
+
13
+ ```{eval-rst}
14
+ .. automodule:: dustrack.postprocess
15
+ :members:
16
+ ```
@@ -0,0 +1,48 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+
6
+ # -- Project information -----------------------------------------------------
7
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
8
+
9
+ project = 'dustrack' # pyfilemanager
10
+ copyright = '2025-present, Praneeth Namburi'
11
+ author = 'Praneeth Namburi'
12
+ release = '1.0.0a1' # 0.1.0
13
+
14
+ # -- General configuration ---------------------------------------------------
15
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
16
+
17
+ extensions = [
18
+ "myst_parser",
19
+ "sphinx.ext.autodoc",
20
+ "sphinx.ext.duration",
21
+ "sphinx.ext.autosectionlabel",
22
+ "sphinx.ext.napoleon",
23
+ "sphinxcontrib.youtube",
24
+ ]
25
+
26
+ templates_path = ["_templates"]
27
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
28
+
29
+ # -- Options for HTML output -------------------------------------------------
30
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
31
+
32
+ html_theme = "sphinx_rtd_theme"
33
+ html_theme_options = {
34
+ "collapse_navigation": False,
35
+ }
36
+ html_static_path = []
37
+
38
+ autodoc_member_order = "bysource"
39
+ napoleon_use_ivar = True
40
+
41
+ from sphinx.ext.autodoc import between
42
+
43
+
44
+ def setup(app):
45
+ # Register a sphinx.ext.autodoc.between listener to ignore everything
46
+ # between lines that contain the word IGNORE
47
+ app.connect("autodoc-process-docstring", between("^.*IGNORE.*$", exclude=True))
48
+ return app
@@ -0,0 +1,12 @@
1
+ % pyfilemanager documentation master file, created by
2
+ % sphinx-quickstart on Tue Jan 23 10:31:39 2024.
3
+ % You can adapt this file completely to your liking, but it should at least
4
+ % contain the root `toctree` directive.
5
+
6
+ ```{include} ../README.md
7
+ :relative-images:
8
+ ```
9
+
10
+ ```{toctree}
11
+ api
12
+ ```
@@ -0,0 +1,35 @@
1
+ @ECHO OFF
2
+
3
+ pushd %~dp0
4
+
5
+ REM Command file for Sphinx documentation
6
+
7
+ if "%SPHINXBUILD%" == "" (
8
+ set SPHINXBUILD=sphinx-build
9
+ )
10
+ set SOURCEDIR=.
11
+ set BUILDDIR=_build
12
+
13
+ %SPHINXBUILD% >NUL 2>NUL
14
+ if errorlevel 9009 (
15
+ echo.
16
+ echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
17
+ echo.installed, then set the SPHINXBUILD environment variable to point
18
+ echo.to the full path of the 'sphinx-build' executable. Alternatively you
19
+ echo.may add the Sphinx directory to PATH.
20
+ echo.
21
+ echo.If you don't have Sphinx installed, grab it from
22
+ echo.https://www.sphinx-doc.org/
23
+ exit /b 1
24
+ )
25
+
26
+ if "%1" == "" goto help
27
+
28
+ %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29
+ goto end
30
+
31
+ :help
32
+ %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33
+
34
+ :end
35
+ popd
@@ -0,0 +1,4 @@
1
+ sphinx==6.2.1
2
+ sphinx-rtd-theme==2.0.0
3
+ myst-parser==1.0.0
4
+ sphinxcontrib-youtube==1.4.1