panda-python 0.5.1__tar.gz → 0.5.2__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.
Files changed (78) hide show
  1. panda-python-0.5.2/.github/workflows/docs.yml +32 -0
  2. panda-python-0.5.1/.github/workflows/build.yml → panda-python-0.5.2/.github/workflows/release.yml +20 -19
  3. panda-python-0.5.2/.github/workflows/test.yml +15 -0
  4. panda-python-0.5.2/.github/workflows/test_all.yml +16 -0
  5. {panda-python-0.5.1 → panda-python-0.5.2}/PKG-INFO +45 -4
  6. panda-python-0.5.2/README.md +52 -0
  7. panda-python-0.5.2/bin/before_install_ubuntu.sh +20 -0
  8. {panda-python-0.5.1 → panda-python-0.5.2}/docs/conf.py +1 -1
  9. {panda-python-0.5.1 → panda-python-0.5.2}/pyproject.toml +7 -2
  10. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/__init__.py +1 -1
  11. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/_core/__init__.pyi +5 -0
  12. panda-python-0.5.1/.readthedocs.yml +0 -13
  13. panda-python-0.5.1/README.md +0 -15
  14. panda-python-0.5.1/docs/requirements.txt +0 -3
  15. {panda-python-0.5.1 → panda-python-0.5.2}/.gitignore +0 -0
  16. {panda-python-0.5.1 → panda-python-0.5.2}/.pylintrc +0 -0
  17. {panda-python-0.5.1 → panda-python-0.5.2}/.vscode/c_cpp_properties.json +0 -0
  18. {panda-python-0.5.1 → panda-python-0.5.2}/.vscode/generate_docs_api.sh +0 -0
  19. {panda-python-0.5.1 → panda-python-0.5.2}/.vscode/settings.json +0 -0
  20. {panda-python-0.5.1 → panda-python-0.5.2}/.vscode/tasks.json +0 -0
  21. {panda-python-0.5.1 → panda-python-0.5.2}/CMakeLists.txt +0 -0
  22. {panda-python-0.5.1 → panda-python-0.5.2}/LICENSE +0 -0
  23. /panda-python-0.5.1/bin/before_install.sh → /panda-python-0.5.2/bin/before_install_centos.sh +0 -0
  24. {panda-python-0.5.1 → panda-python-0.5.2}/bin/build_all.sh +0 -0
  25. {panda-python-0.5.1 → panda-python-0.5.2}/docs/Makefile +0 -0
  26. {panda-python-0.5.1 → panda-python-0.5.2}/docs/index.rst +0 -0
  27. {panda-python-0.5.1 → panda-python-0.5.2}/docs/make.bat +0 -0
  28. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.cli.rst +0 -0
  29. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.constants.rst +0 -0
  30. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.controllers.rst +0 -0
  31. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.libfranka.rst +0 -0
  32. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.motion.rst +0 -0
  33. {panda-python-0.5.1 → panda-python-0.5.2}/docs/panda_py.rst +0 -0
  34. {panda-python-0.5.1 → panda-python-0.5.2}/examples/cartesian_impedance.py +0 -0
  35. {panda-python-0.5.1 → panda-python-0.5.2}/examples/communication_test.py +0 -0
  36. {panda-python-0.5.1 → panda-python-0.5.2}/examples/mmc.py +0 -0
  37. {panda-python-0.5.1 → panda-python-0.5.2}/examples/notebooks/benchmark.ipynb +0 -0
  38. {panda-python-0.5.1 → panda-python-0.5.2}/examples/notebooks/motion.ipynb +0 -0
  39. {panda-python-0.5.1 → panda-python-0.5.2}/examples/notebooks/paper.ipynb +0 -0
  40. {panda-python-0.5.1 → panda-python-0.5.2}/include/constants.h +0 -0
  41. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/applied_force.h +0 -0
  42. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/applied_torque.h +0 -0
  43. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/cartesian_impedance.h +0 -0
  44. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/controller.h +0 -0
  45. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/force.h +0 -0
  46. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/integrated_velocity.h +0 -0
  47. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/joint_limits/virtual_wall.h +0 -0
  48. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/joint_limits/virtual_wall_controller.h +0 -0
  49. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/joint_position.h +0 -0
  50. {panda-python-0.5.1 → panda-python-0.5.2}/include/controllers/trajectory.h +0 -0
  51. {panda-python-0.5.1 → panda-python-0.5.2}/include/kinematics/fk.h +0 -0
  52. {panda-python-0.5.1 → panda-python-0.5.2}/include/kinematics/ik.h +0 -0
  53. {panda-python-0.5.1 → panda-python-0.5.2}/include/motion/generators.h +0 -0
  54. {panda-python-0.5.1 → panda-python-0.5.2}/include/motion/time_optimal/path.h +0 -0
  55. {panda-python-0.5.1 → panda-python-0.5.2}/include/motion/time_optimal/trajectory.h +0 -0
  56. {panda-python-0.5.1 → panda-python-0.5.2}/include/panda.h +0 -0
  57. {panda-python-0.5.1 → panda-python-0.5.2}/include/utils.h +0 -0
  58. {panda-python-0.5.1 → panda-python-0.5.2}/logo.jpg +0 -0
  59. {panda-python-0.5.1 → panda-python-0.5.2}/src/_core.cpp +0 -0
  60. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/applied_force.cpp +0 -0
  61. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/applied_torque.cpp +0 -0
  62. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/cartesian_impedance.cpp +0 -0
  63. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/force.cpp +0 -0
  64. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/integrated_velocity.cpp +0 -0
  65. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/joint_limits/virtual_wall.cpp +0 -0
  66. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/joint_position.cpp +0 -0
  67. {panda-python-0.5.1 → panda-python-0.5.2}/src/controllers/trajectory.cpp +0 -0
  68. {panda-python-0.5.1 → panda-python-0.5.2}/src/libfranka.cpp +0 -0
  69. {panda-python-0.5.1 → panda-python-0.5.2}/src/motion/generators.cpp +0 -0
  70. {panda-python-0.5.1 → panda-python-0.5.2}/src/motion/time_optimal/path.cpp +0 -0
  71. {panda-python-0.5.1 → panda-python-0.5.2}/src/motion/time_optimal/trajectory.cpp +0 -0
  72. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda.cpp +0 -0
  73. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/__init__.pyi +0 -0
  74. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/cli.py +0 -0
  75. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/constants.py +0 -0
  76. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/controllers.py +0 -0
  77. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/libfranka/__init__.pyi +0 -0
  78. {panda-python-0.5.1 → panda-python-0.5.2}/src/panda_py/motion.py +0 -0
@@ -0,0 +1,32 @@
1
+ name: Build and deploy documentation
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+
7
+ permissions:
8
+ contents: write
9
+ id-token: write
10
+ pages: write
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - uses: actions/setup-python@v3
18
+ - name: Install prerequisites
19
+ run: ./bin/before_install_ubuntu.sh
20
+ - name: Build wheel
21
+ run: pip install .[docs]
22
+ - name: Build documentation
23
+ run: cd docs && make html
24
+ - name: Setup Pages
25
+ uses: actions/configure-pages@v3
26
+ - name: Upload artifact
27
+ uses: actions/upload-pages-artifact@v2
28
+ with:
29
+ path: ./docs/_build/html
30
+ - name: Deploy to GitHub Pages
31
+ id: deployment
32
+ uses: actions/deploy-pages@v2
@@ -1,28 +1,24 @@
1
- name: build
1
+ name: Build and deploy all variants
2
2
 
3
3
  on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
4
  release:
9
5
  types: [published]
10
6
 
11
7
  env:
12
- VERSION: 0.5.1
8
+ VERSION: 0.5.2
13
9
 
14
10
  permissions: write-all
15
11
 
16
12
  jobs:
17
13
  build_wheels:
18
- name: Build wheels on ubuntu-latest
14
+ name: Build all wheels with cibuildwheel
19
15
  runs-on: ubuntu-latest
20
16
  steps:
21
17
  - uses: actions/checkout@v3
22
18
  - uses: actions/setup-python@v3
23
19
  - name: Install cibuildwheel
24
20
  run: python -m pip install cibuildwheel==2.12.0
25
- - name: Build wheels
21
+ - name: Build all wheels
26
22
  run: ./bin/build_all.sh
27
23
  - uses: actions/upload-artifact@v3
28
24
  with:
@@ -46,11 +42,24 @@ jobs:
46
42
  path: dist/*.tar.gz
47
43
  name: dist
48
44
 
49
- upload:
50
- name: "Upload wheels"
45
+ upload_pypi:
46
+ name: "Upload wheels to pypi"
47
+ needs: [build_wheels, build_sdist]
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/download-artifact@v3
51
+ with:
52
+ name: dist
53
+ path: dist
54
+ - uses: pypa/gh-action-pypi-publish@v1.5.0
55
+ with:
56
+ user: __token__
57
+ password: ${{ secrets.PYPI_API_TOKEN }}
58
+
59
+ upload_assets:
60
+ name: "Upload release assets"
51
61
  needs: [build_wheels, build_sdist]
52
62
  runs-on: ubuntu-latest
53
- if: github.event_name == 'release' && github.event.action == 'published'
54
63
  steps:
55
64
  - uses: actions/download-artifact@v3
56
65
  with:
@@ -88,11 +97,3 @@ jobs:
88
97
  asset_content_type: application/zip
89
98
  env:
90
99
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
91
- - uses: actions/download-artifact@v3
92
- with:
93
- name: dist
94
- path: dist
95
- - uses: pypa/gh-action-pypi-publish@v1.5.0
96
- with:
97
- user: __token__
98
- password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,15 @@
1
+ name: Build and test
2
+
3
+ on:
4
+ push:
5
+
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - uses: actions/setup-python@v3
12
+ - name: Install prerequisites
13
+ run: ./bin/before_install_ubuntu.sh
14
+ - name: Build wheel
15
+ run: pip install .
@@ -0,0 +1,16 @@
1
+ name: Build and test all variants
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build_wheels:
8
+ name: Build all wheels with cibuildwheel
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v3
12
+ - uses: actions/setup-python@v3
13
+ - name: Install cibuildwheel
14
+ run: python -m pip install cibuildwheel==2.12.0
15
+ - name: Build all wheels
16
+ run: ./bin/build_all.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: panda-python
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: Python bindings for the Panda
5
5
  Keywords: python real-time control robot franka emika
6
6
  Author-Email: Jean Elsner <jean.elsner@tum.de>
@@ -223,21 +223,62 @@ Requires-Dist: matplotlib; extra == "examples"
223
223
  Requires-Dist: spatialmath; extra == "examples"
224
224
  Requires-Dist: ansitable; extra == "examples"
225
225
  Requires-Dist: qpsolvers; extra == "examples"
226
+ Requires-Dist: furo; extra == "docs"
227
+ Requires-Dist: sphinx-reredirects; extra == "docs"
228
+ Requires-Dist: sphinx; extra == "docs"
226
229
  Provides-Extra: examples
230
+ Provides-Extra: docs
227
231
  Description-Content-Type: text/markdown
228
232
 
229
233
  # panda-py
234
+
235
+ > **Info**
236
+ >
237
+ > Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
238
+
230
239
  ![logo](https://github.com/JeanElsner/panda-py/blob/main/logo.jpg?raw=true)
231
240
 
232
241
  [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/JeanElsner/panda-py/build.yml)](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
233
242
  [![GitHub](https://img.shields.io/github/license/JeanElsner/panda-py)](https://www.apache.org/licenses/LICENSE-2.0)
234
243
  [![PyPI](https://img.shields.io/pypi/v/panda-python)](https://pypi.org/project/panda-python/)
235
244
  ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/panda-python)
245
+ [![Documentation](https://shields.io/badge/-Documentation-informational)](https://jeanelsner.github.io/panda-py/)
236
246
 
237
247
  Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
238
248
 
239
- > **Info**
240
- >
241
- > Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
249
+ ## Getting started
250
+
251
+
252
+
253
+ ## Install
254
+
255
+ ```
256
+ pip install panda-python
257
+ ```
258
+
259
+ This will install panda-py and all its requirements. The pip version ships with libfranka 0.9.2, the newest version for the Franka Emika Robot. Please refer to the section below if you use an older system version or the more recent Franka Research 3 robot.
260
+
261
+ ## libfranka Version
262
+
263
+ There are currently two robot models available from Franka Emika: the Franka Emika Robot (FER, formerly known as Panda) and the Franka Research 3 (FR3). Depending on the installed firmware, the FER supports version <=0.9 while the FR3 requires version >=0.10. For details, refer to [this](https://frankaemika.github.io/docs/compatibility.html) compatibility matrix. If you need a libfranka version different from the default 0.9.2, download the respective zip archive from the [release page](https://github.com/JeanElsner/panda-py/releases). Extract the archive and install the wheel for your Python version with pip, e.g., run
264
+ ```
265
+ pip install panda_python-*libfranka.0.7.1-cp310*.whl
266
+ ```
267
+ to install the binary wheel for libfranka 0.7.1 and Python 3.10.
268
+
269
+ # Citation
270
+
271
+ If you use panda-py in published research, please consider citing the [companion paper](https://arxiv.org/abs/2307.07633).
272
+
273
+ ```
274
+ @misc{elsner2023taming,
275
+ title={Taming the Panda with Python: A Powerful Duo for Seamless Robotics Programming and Integration},
276
+ author={Jean Elsner},
277
+ year={2023},
278
+ eprint={2307.07633},
279
+ archivePrefix={arXiv},
280
+ primaryClass={cs.RO}
281
+ }
282
+ ```
242
283
 
243
284
  [^1]: Not actually guaranteed. Based on a sample size of one.
@@ -0,0 +1,52 @@
1
+ # panda-py
2
+
3
+ > **Info**
4
+ >
5
+ > Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
6
+
7
+ ![logo](https://github.com/JeanElsner/panda-py/blob/main/logo.jpg?raw=true)
8
+
9
+ [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/JeanElsner/panda-py/build.yml)](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
10
+ [![GitHub](https://img.shields.io/github/license/JeanElsner/panda-py)](https://www.apache.org/licenses/LICENSE-2.0)
11
+ [![PyPI](https://img.shields.io/pypi/v/panda-python)](https://pypi.org/project/panda-python/)
12
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/panda-python)
13
+ [![Documentation](https://shields.io/badge/-Documentation-informational)](https://jeanelsner.github.io/panda-py/)
14
+
15
+ Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
16
+
17
+ ## Getting started
18
+
19
+
20
+
21
+ ## Install
22
+
23
+ ```
24
+ pip install panda-python
25
+ ```
26
+
27
+ This will install panda-py and all its requirements. The pip version ships with libfranka 0.9.2, the newest version for the Franka Emika Robot. Please refer to the section below if you use an older system version or the more recent Franka Research 3 robot.
28
+
29
+ ## libfranka Version
30
+
31
+ There are currently two robot models available from Franka Emika: the Franka Emika Robot (FER, formerly known as Panda) and the Franka Research 3 (FR3). Depending on the installed firmware, the FER supports version <=0.9 while the FR3 requires version >=0.10. For details, refer to [this](https://frankaemika.github.io/docs/compatibility.html) compatibility matrix. If you need a libfranka version different from the default 0.9.2, download the respective zip archive from the [release page](https://github.com/JeanElsner/panda-py/releases). Extract the archive and install the wheel for your Python version with pip, e.g., run
32
+ ```
33
+ pip install panda_python-*libfranka.0.7.1-cp310*.whl
34
+ ```
35
+ to install the binary wheel for libfranka 0.7.1 and Python 3.10.
36
+
37
+ # Citation
38
+
39
+ If you use panda-py in published research, please consider citing the [companion paper](https://arxiv.org/abs/2307.07633).
40
+
41
+ ```
42
+ @misc{elsner2023taming,
43
+ title={Taming the Panda with Python: A Powerful Duo for Seamless Robotics Programming and Integration},
44
+ author={Jean Elsner},
45
+ year={2023},
46
+ eprint={2307.07633},
47
+ archivePrefix={arXiv},
48
+ primaryClass={cs.RO}
49
+ }
50
+ ```
51
+
52
+ [^1]: Not actually guaranteed. Based on a sample size of one.
@@ -0,0 +1,20 @@
1
+ #!/bin/bash
2
+
3
+ sudo apt install build-essential cmake git libpoco-dev libeigen3-dev
4
+
5
+ # For legacy versions, use my patched repository
6
+ repo="https://github.com/frankaemika/libfranka.git"
7
+ if [[ "$LIBFRANKA_VER" == "0.7.1" || "$LIBFRANKA_VER" == "0.8.0" ]]; then
8
+ repo="https://github.com/JeanElsner/libfranka.git"
9
+ fi
10
+
11
+ sudo apt remove "*libfranka*"
12
+ git clone --recursive $repo
13
+ cd libfranka
14
+ git checkout $LIBFRANKA_VER
15
+ git submodule update
16
+ mkdir build && cd build
17
+ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF ..
18
+ cmake --build .
19
+ cpack -G DEB
20
+ sudo dpkg -i libfranka*.deb
@@ -9,7 +9,7 @@
9
9
  project = 'panda-py'
10
10
  copyright = '2023, Jean Elsner'
11
11
  author = 'Jean Elsner'
12
- release = '0.5.1'
12
+ release = '0.5.2'
13
13
 
14
14
  # -- General configuration ---------------------------------------------------
15
15
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@@ -7,7 +7,7 @@ name = "panda-python"
7
7
  description = "Python bindings for the Panda"
8
8
  requires-python = ">=3.7"
9
9
  dependencies = ["websockets>=11.0", "requests", "numpy"]
10
- version = "0.5.1"
10
+ version = "0.5.2"
11
11
  authors = [
12
12
  { name = "Jean Elsner", email = "jean.elsner@tum.de" },
13
13
  ]
@@ -34,6 +34,11 @@ examples = [
34
34
  "ansitable",
35
35
  "qpsolvers",
36
36
  ]
37
+ docs = [
38
+ "furo",
39
+ "sphinx-reredirects",
40
+ "sphinx",
41
+ ]
37
42
 
38
43
  [project.scripts]
39
44
  panda-lock = "panda_py.cli:lock"
@@ -47,7 +52,7 @@ skip = [ "pp*", "*musllinux*",]
47
52
  environment = "LIBFRANKA_VER=0.9.2"
48
53
 
49
54
  [tool.cibuildwheel.linux]
50
- before-all = [ "./bin/before_install.sh",]
55
+ before-all = [ "./bin/before_install_centos.sh",]
51
56
  archs = [ "x86_64",]
52
57
 
53
58
  [tool.scikit-build.cmake]
@@ -3,7 +3,7 @@ Introduction
3
3
  ------------
4
4
 
5
5
  panda-py is a Python library for the Franka Emika Robot System
6
- that allows you to program and control the robot in Python.
6
+ that allows you to program and control the robot in real-time.
7
7
 
8
8
 
9
9
  """
@@ -193,6 +193,11 @@ class Panda():
193
193
  """
194
194
  :type: str
195
195
  """
196
+ @property
197
+ def q(self) -> numpy.ndarray[numpy.float64, _Shape[7, 1]]:
198
+ """
199
+ :type: numpy.ndarray[numpy.float64, _Shape[7, 1]]
200
+ """
196
201
  pass
197
202
  class PandaContext():
198
203
  def __enter__(self) -> PandaContext: ...
@@ -1,13 +0,0 @@
1
- version: 2
2
-
3
- build:
4
- os: ubuntu-22.04
5
- tools:
6
- python: "3.11"
7
-
8
- sphinx:
9
- configuration: docs/conf.py
10
-
11
- python:
12
- install:
13
- - requirements: docs/requirements.txt
@@ -1,15 +0,0 @@
1
- # panda-py
2
- ![logo](https://github.com/JeanElsner/panda-py/blob/main/logo.jpg?raw=true)
3
-
4
- [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/JeanElsner/panda-py/build.yml)](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
5
- [![GitHub](https://img.shields.io/github/license/JeanElsner/panda-py)](https://www.apache.org/licenses/LICENSE-2.0)
6
- [![PyPI](https://img.shields.io/pypi/v/panda-python)](https://pypi.org/project/panda-python/)
7
- ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/panda-python)
8
-
9
- Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
10
-
11
- > **Info**
12
- >
13
- > Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
14
-
15
- [^1]: Not actually guaranteed. Based on a sample size of one.
@@ -1,3 +0,0 @@
1
- panda-python
2
- sphinx-reredirects
3
- furo
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes