pyRFtk 2.0.7__tar.gz → 2.0.9__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.
- {pyrftk-2.0.7 → pyrftk-2.0.9}/PKG-INFO +13 -1
- {pyrftk-2.0.7 → pyrftk-2.0.9}/README.md +12 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/pyproject.toml +3 -1
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/ReadTSF.py +12 -6
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/WriteTSF.py +4 -3
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/__init__.py +2 -2
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfCircuit.py +33 -3
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfGTL.py +2 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfObject.py +98 -13
- pyrftk-2.0.7/docs/Makefile +0 -20
- pyrftk-2.0.7/docs/build/.buildinfo +0 -4
- pyrftk-2.0.7/docs/build/.doctrees/Arcs.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Deembedding.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Examples.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Installation.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Introduction.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Logging.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Touchstone.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/Tutorials.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/backup.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/environment.pickle +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/index.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/modules.doctree +0 -0
- pyrftk-2.0.7/docs/build/.doctrees/pyRFtk.doctree +0 -0
- pyrftk-2.0.7/docs/build/.nojekyll +0 -0
- pyrftk-2.0.7/docs/build/Arcs.html +0 -103
- pyrftk-2.0.7/docs/build/Deembedding.html +0 -192
- pyrftk-2.0.7/docs/build/Examples.html +0 -105
- pyrftk-2.0.7/docs/build/Installation.html +0 -140
- pyrftk-2.0.7/docs/build/Introduction.html +0 -199
- pyrftk-2.0.7/docs/build/Logging.html +0 -103
- pyrftk-2.0.7/docs/build/Touchstone.html +0 -191
- pyrftk-2.0.7/docs/build/Tutorials.html +0 -127
- pyrftk-2.0.7/docs/build/_downloads/b90e652aafe314ced71820d596828aed/Tomas-Ref_geo-R=200-Diel_eps=0500.s2p +0 -1010
- pyrftk-2.0.7/docs/build/_downloads/bf8243189246eb0547daf197b1578bac/tomas_icrh_linear_2017-vacuum.s2p +0 -1014
- pyrftk-2.0.7/docs/build/_images/RLC.png +0 -0
- pyrftk-2.0.7/docs/build/_images/RLCSC.png +0 -0
- pyrftk-2.0.7/docs/build/_images/SC.png +0 -0
- pyrftk-2.0.7/docs/build/_images/SimpleCircuit.png +0 -0
- pyrftk-2.0.7/docs/build/_images/TomasCircuit.png +0 -0
- pyrftk-2.0.7/docs/build/_sources/Arcs.rst.txt +0 -2
- pyrftk-2.0.7/docs/build/_sources/Deembedding.rst.txt +0 -91
- pyrftk-2.0.7/docs/build/_sources/Examples.rst.txt +0 -5
- pyrftk-2.0.7/docs/build/_sources/Installation.rst.txt +0 -23
- pyrftk-2.0.7/docs/build/_sources/Introduction.rst.txt +0 -101
- pyrftk-2.0.7/docs/build/_sources/Logging.rst.txt +0 -5
- pyrftk-2.0.7/docs/build/_sources/Touchstone.rst.txt +0 -85
- pyrftk-2.0.7/docs/build/_sources/Tutorials.rst.txt +0 -7
- pyrftk-2.0.7/docs/build/_sources/backup.rst.txt +0 -84
- pyrftk-2.0.7/docs/build/_sources/index.rst.txt +0 -24
- pyrftk-2.0.7/docs/build/_sources/modules.rst.txt +0 -7
- pyrftk-2.0.7/docs/build/_sources/pyRFtk.rst.txt +0 -245
- pyrftk-2.0.7/docs/build/_static/_sphinx_javascript_frameworks_compat.js +0 -123
- pyrftk-2.0.7/docs/build/_static/alabaster.css +0 -703
- pyrftk-2.0.7/docs/build/_static/basic.css +0 -925
- pyrftk-2.0.7/docs/build/_static/classic.css +0 -269
- pyrftk-2.0.7/docs/build/_static/css/badge_only.css +0 -1
- pyrftk-2.0.7/docs/build/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/fontawesome-webfont.eot +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/fontawesome-webfont.svg +0 -2671
- pyrftk-2.0.7/docs/build/_static/css/fonts/fontawesome-webfont.ttf +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/fontawesome-webfont.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-bold-italic.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-bold-italic.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-bold.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-bold.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-normal-italic.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-normal-italic.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-normal.woff +0 -0
- pyrftk-2.0.7/docs/build/_static/css/fonts/lato-normal.woff2 +0 -0
- pyrftk-2.0.7/docs/build/_static/css/theme.css +0 -4
- pyrftk-2.0.7/docs/build/_static/custom.css +0 -1
- pyrftk-2.0.7/docs/build/_static/doctools.js +0 -156
- pyrftk-2.0.7/docs/build/_static/documentation_options.js +0 -13
- pyrftk-2.0.7/docs/build/_static/file.png +0 -0
- pyrftk-2.0.7/docs/build/_static/groundwork.css +0 -720
- pyrftk-2.0.7/docs/build/_static/gw_logo.png +0 -0
- pyrftk-2.0.7/docs/build/_static/jquery.js +0 -2
- pyrftk-2.0.7/docs/build/_static/js/badge_only.js +0 -1
- pyrftk-2.0.7/docs/build/_static/js/html5shiv-printshiv.min.js +0 -4
- pyrftk-2.0.7/docs/build/_static/js/html5shiv.min.js +0 -4
- pyrftk-2.0.7/docs/build/_static/js/theme.js +0 -1
- pyrftk-2.0.7/docs/build/_static/language_data.js +0 -199
- pyrftk-2.0.7/docs/build/_static/minus.png +0 -0
- pyrftk-2.0.7/docs/build/_static/plus.png +0 -0
- pyrftk-2.0.7/docs/build/_static/pygments.css +0 -75
- pyrftk-2.0.7/docs/build/_static/searchtools.js +0 -574
- pyrftk-2.0.7/docs/build/_static/sidebar.js +0 -70
- pyrftk-2.0.7/docs/build/_static/small_groundwork.css +0 -102
- pyrftk-2.0.7/docs/build/_static/sphinx_highlight.js +0 -154
- pyrftk-2.0.7/docs/build/backup.html +0 -178
- pyrftk-2.0.7/docs/build/doctrees/Deembedding.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/Examples.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/Installation.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/Introduction.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/TOMAS.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/Touchstone.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/Tutorials.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/backup.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/environment.pickle +0 -0
- pyrftk-2.0.7/docs/build/doctrees/index.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/modules.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/pyRFtk.doctree +0 -0
- pyrftk-2.0.7/docs/build/doctrees/usage.doctree +0 -0
- pyrftk-2.0.7/docs/build/genindex.html +0 -759
- pyrftk-2.0.7/docs/build/html/.buildinfo +0 -4
- pyrftk-2.0.7/docs/build/html/.nojekyll +0 -0
- pyrftk-2.0.7/docs/build/html/Deembedding.html +0 -174
- pyrftk-2.0.7/docs/build/html/Examples.html +0 -90
- pyrftk-2.0.7/docs/build/html/Installation.html +0 -147
- pyrftk-2.0.7/docs/build/html/Introduction.html +0 -192
- pyrftk-2.0.7/docs/build/html/TOMAS.html +0 -102
- pyrftk-2.0.7/docs/build/html/Touchstone.html +0 -183
- pyrftk-2.0.7/docs/build/html/Tutorials.html +0 -119
- pyrftk-2.0.7/docs/build/html/_images/RLC.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/RLCSC.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/SC.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/SimpleCircuit.pdf +0 -0
- pyrftk-2.0.7/docs/build/html/_images/SimpleCircuit.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/TOMAS_ICRH_Antenna.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/TOMAS_ICRH_Circuit.png +0 -0
- pyrftk-2.0.7/docs/build/html/_images/TomasCircuit.png +0 -0
- pyrftk-2.0.7/docs/build/html/_sources/Deembedding.rst.txt +0 -90
- pyrftk-2.0.7/docs/build/html/_sources/Examples.rst.txt +0 -5
- pyrftk-2.0.7/docs/build/html/_sources/Installation.rst.txt +0 -33
- pyrftk-2.0.7/docs/build/html/_sources/Introduction.rst.txt +0 -101
- pyrftk-2.0.7/docs/build/html/_sources/TOMAS.rst.txt +0 -13
- pyrftk-2.0.7/docs/build/html/_sources/Touchstone.rst.txt +0 -84
- pyrftk-2.0.7/docs/build/html/_sources/Tutorials.rst.txt +0 -7
- pyrftk-2.0.7/docs/build/html/_sources/backup.rst.txt +0 -84
- pyrftk-2.0.7/docs/build/html/_sources/index.rst.txt +0 -24
- pyrftk-2.0.7/docs/build/html/_sources/modules.rst.txt +0 -7
- pyrftk-2.0.7/docs/build/html/_sources/pyRFtk.rst.txt +0 -245
- pyrftk-2.0.7/docs/build/html/_sources/usage.rst.txt +0 -176
- pyrftk-2.0.7/docs/build/html/_static/alabaster.css +0 -703
- pyrftk-2.0.7/docs/build/html/_static/basic.css +0 -925
- pyrftk-2.0.7/docs/build/html/_static/classic.css +0 -269
- pyrftk-2.0.7/docs/build/html/_static/custom.css +0 -1
- pyrftk-2.0.7/docs/build/html/_static/doctools.js +0 -156
- pyrftk-2.0.7/docs/build/html/_static/documentation_options.js +0 -13
- pyrftk-2.0.7/docs/build/html/_static/file.png +0 -0
- pyrftk-2.0.7/docs/build/html/_static/language_data.js +0 -199
- pyrftk-2.0.7/docs/build/html/_static/minus.png +0 -0
- pyrftk-2.0.7/docs/build/html/_static/plus.png +0 -0
- pyrftk-2.0.7/docs/build/html/_static/pygments.css +0 -75
- pyrftk-2.0.7/docs/build/html/_static/searchtools.js +0 -574
- pyrftk-2.0.7/docs/build/html/_static/sidebar.js +0 -70
- pyrftk-2.0.7/docs/build/html/_static/sphinx_highlight.js +0 -154
- pyrftk-2.0.7/docs/build/html/backup.html +0 -165
- pyrftk-2.0.7/docs/build/html/genindex.html +0 -738
- pyrftk-2.0.7/docs/build/html/index.html +0 -147
- pyrftk-2.0.7/docs/build/html/modules.html +0 -305
- pyrftk-2.0.7/docs/build/html/objects.inv +0 -0
- pyrftk-2.0.7/docs/build/html/py-modindex.html +0 -238
- pyrftk-2.0.7/docs/build/html/pyRFtk.html +0 -1581
- pyrftk-2.0.7/docs/build/html/search.html +0 -102
- pyrftk-2.0.7/docs/build/html/searchindex.js +0 -1
- pyrftk-2.0.7/docs/build/html/usage.html +0 -267
- pyrftk-2.0.7/docs/build/index.html +0 -142
- pyrftk-2.0.7/docs/build/modules.html +0 -320
- pyrftk-2.0.7/docs/build/objects.inv +0 -0
- pyrftk-2.0.7/docs/build/py-modindex.html +0 -259
- pyrftk-2.0.7/docs/build/pyRFtk.html +0 -1377
- pyrftk-2.0.7/docs/build/search.html +0 -119
- pyrftk-2.0.7/docs/build/searchindex.js +0 -1
- pyrftk-2.0.7/docs/make.bat +0 -35
- pyrftk-2.0.7/docs/source/Arcs.rst +0 -2
- pyrftk-2.0.7/docs/source/Deembedding.rst +0 -91
- pyrftk-2.0.7/docs/source/Drawings/SimpleCircuit.odg +0 -0
- pyrftk-2.0.7/docs/source/Examples.rst +0 -5
- pyrftk-2.0.7/docs/source/Files/Tomas-Ref_geo-R=200-Diel_eps=0500.s2p +0 -1010
- pyrftk-2.0.7/docs/source/Files/tomas_icrh_linear_2017-vacuum.s2p +0 -1014
- pyrftk-2.0.7/docs/source/Images/RLC.png +0 -0
- pyrftk-2.0.7/docs/source/Images/RLCSC.png +0 -0
- pyrftk-2.0.7/docs/source/Images/SC.png +0 -0
- pyrftk-2.0.7/docs/source/Images/SimpleCircuit.pdf +0 -0
- pyrftk-2.0.7/docs/source/Images/SimpleCircuit.png +0 -0
- pyrftk-2.0.7/docs/source/Images/TOMAS_ICRH_Antenna.png +0 -0
- pyrftk-2.0.7/docs/source/Images/TOMAS_ICRH_Circuit.png +0 -0
- pyrftk-2.0.7/docs/source/Images/TomasCircuit.png +0 -0
- pyrftk-2.0.7/docs/source/Installation.rst +0 -23
- pyrftk-2.0.7/docs/source/Introduction.rst +0 -101
- pyrftk-2.0.7/docs/source/Logging.rst +0 -5
- pyrftk-2.0.7/docs/source/Touchstone.rst +0 -85
- pyrftk-2.0.7/docs/source/Tutorials.rst +0 -7
- pyrftk-2.0.7/docs/source/backup.rst +0 -84
- pyrftk-2.0.7/docs/source/conf.py +0 -28
- pyrftk-2.0.7/docs/source/index.rst +0 -24
- pyrftk-2.0.7/docs/source/modules.rst +0 -7
- pyrftk-2.0.7/docs/source/pyRFtk.rst +0 -245
- pyrftk-2.0.7/rfCommon.log +0 -67
- pyrftk-2.0.7/tests/WEST_TWA_7s_4_No_FS_protruding.s7p +0 -3256
- pyrftk-2.0.7/tests/rfCommon.log +0 -100
- pyrftk-2.0.7/tests/routine.sh +0 -3
- pyrftk-2.0.7/tests/tests.py +0 -433
- {pyrftk-2.0.7 → pyrftk-2.0.9}/.gitignore +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/LICENCE +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/logo/logo.pdf +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/logo/logo.png +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/logo/logo.svg +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/.gitignore +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/ConvertGeneral.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/ReadDictData.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/S_from_VI.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/S_from_Y.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/S_from_Z.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/Y_from_S.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/Z_from_S.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/_check_3D_shape_.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/circuit.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/codebase.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/compareSs.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/config.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/findpath.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/getlines.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/maxfun.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/plotVSWs.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/printMatrices.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/resolveTLparams.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfArcObj.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfBase.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfCoupler.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfRLC.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/rfTRL.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/str_dict.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/tictoc.py +0 -0
- {pyrftk-2.0.7 → pyrftk-2.0.9}/src/pyRFtk/whoami.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyRFtk
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.9
|
|
4
4
|
Summary: Design tool for RF antennae networks
|
|
5
5
|
Project-URL: Homepage, https://lpp-erm-kms.github.io/pyrftk/
|
|
6
6
|
Author-email: Frederic Durodie <frederic.durodie@rma.ac.be>, Arthur Adriaens <arthur.adriaens@mil.be>
|
|
@@ -23,7 +23,19 @@ you can:
|
|
|
23
23
|
- Detect Arcs
|
|
24
24
|
- Deembed systems
|
|
25
25
|
- ...
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
pyRFtk is available as a pip package:
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
pip install pyRFtk
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Or using your favorite distribution platform
|
|
26
35
|
|
|
27
36
|
## Authors
|
|
28
37
|
The code was developed by RF-engineer Frederic Durodie and later
|
|
29
38
|
on refactored, packaged and documented by Arthur Adriaens
|
|
39
|
+
|
|
40
|
+
## Example usage
|
|
41
|
+
This code was extensively used for the paper [An automatic matching system for the ICRF antenna at TOMAS: Development and experimental proof](https://doi.org/10.1016/j.fusengdes.2025.114840), the code for which may be found in the examples folder.
|
|
@@ -11,7 +11,19 @@ you can:
|
|
|
11
11
|
- Detect Arcs
|
|
12
12
|
- Deembed systems
|
|
13
13
|
- ...
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
pyRFtk is available as a pip package:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
pip install pyRFtk
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Or using your favorite distribution platform
|
|
14
23
|
|
|
15
24
|
## Authors
|
|
16
25
|
The code was developed by RF-engineer Frederic Durodie and later
|
|
17
26
|
on refactored, packaged and documented by Arthur Adriaens
|
|
27
|
+
|
|
28
|
+
## Example usage
|
|
29
|
+
This code was extensively used for the paper [An automatic matching system for the ICRF antenna at TOMAS: Development and experimental proof](https://doi.org/10.1016/j.fusengdes.2025.114840), the code for which may be found in the examples folder.
|
|
@@ -3,7 +3,7 @@ requires = ["hatchling","numpy","matplotlib","logging"]
|
|
|
3
3
|
build-backend = "hatchling.build"
|
|
4
4
|
[project]
|
|
5
5
|
name = "pyRFtk"
|
|
6
|
-
version = "2.0.
|
|
6
|
+
version = "2.0.9"
|
|
7
7
|
authors = [
|
|
8
8
|
{ name="Frederic Durodie", email="frederic.durodie@rma.ac.be" },
|
|
9
9
|
{ name="Arthur Adriaens", email="arthur.adriaens@mil.be" },
|
|
@@ -17,3 +17,5 @@ classifiers = [
|
|
|
17
17
|
]
|
|
18
18
|
[project.urls]
|
|
19
19
|
"Homepage" = "https://lpp-erm-kms.github.io/pyrftk/"
|
|
20
|
+
[tool.hatch.build]
|
|
21
|
+
exclude = ["docs", "tests", "examples"]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
__updated__ = "
|
|
1
|
+
__updated__ = "2026-05-20 14:58:47"
|
|
2
2
|
|
|
3
3
|
import numpy as np
|
|
4
4
|
import re
|
|
@@ -349,14 +349,15 @@ def ReadTSF(src, **kwargs):
|
|
|
349
349
|
|
|
350
350
|
## do some checking
|
|
351
351
|
nZcs, nZbase = 0, 0
|
|
352
|
-
if len(Zcs) and (nZcs := Zcs.shape[1]):
|
|
352
|
+
if len(Zcs) and (nZcs := np.array(Zcs).shape[1]):
|
|
353
353
|
# Zcs (and probably gammas) were present in the file
|
|
354
354
|
if Zbase is not None:
|
|
355
355
|
# there was also a R ... in the format
|
|
356
356
|
if (nZbase := len(Zbase) if hasattr(Zbase, '__iter__') else 1) != nZcs :
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
357
|
+
if False:
|
|
358
|
+
warn(f'\nInconsistent length of the Zcs ({nZcs}) comments and the '
|
|
359
|
+
f'format supplied reference impedance R ({nZbase})',
|
|
360
|
+
stacklevel=4)
|
|
360
361
|
else:
|
|
361
362
|
# numbers match ... but do the values
|
|
362
363
|
if nZbase == 1:
|
|
@@ -376,7 +377,9 @@ def ReadTSF(src, **kwargs):
|
|
|
376
377
|
if nZbase == 1 and nZcs != 1:
|
|
377
378
|
err = []
|
|
378
379
|
|
|
379
|
-
|
|
380
|
+
else: # this should be the case when no Zcs or gammas are present
|
|
381
|
+
nZbase = len(Zlist)
|
|
382
|
+
|
|
380
383
|
|
|
381
384
|
# if the data type is Z or Y we need to convert to S
|
|
382
385
|
|
|
@@ -397,6 +400,7 @@ def ReadTSF(src, **kwargs):
|
|
|
397
400
|
|
|
398
401
|
elif Zbase is not None and (nZbase == 1 or nZbase == Ss.shape[1]):
|
|
399
402
|
Ss = ConvertGeneral(TZbase if TZbase else 50., Ss, Zbase, 'P', 'V')
|
|
403
|
+
# print(f'have converted the data from {Zbase} in the touchstone to {TZbase}')
|
|
400
404
|
|
|
401
405
|
elif Zbase is None: # No Zcs and Zbase is None:
|
|
402
406
|
Ss = ConvertGeneral(TZbase if TZbase else 50., Ss, Zcs, 'P', 'V')
|
|
@@ -404,6 +408,7 @@ def ReadTSF(src, **kwargs):
|
|
|
404
408
|
else:
|
|
405
409
|
logit['ERROR'] and tLogger.error(f'len(Zcs)[{len(Zcs)}] != N[{N}]')
|
|
406
410
|
logit['ERROR'] and tLogger.error(f'Zcs={Zcs}')
|
|
411
|
+
raise ValueError('in ReadTSF: please specify Zbase')
|
|
407
412
|
|
|
408
413
|
|
|
409
414
|
# set the portnames
|
|
@@ -440,6 +445,7 @@ def ReadTSF(src, **kwargs):
|
|
|
440
445
|
debug and tLogger.debug(ident(f'set ports to {ports}'))
|
|
441
446
|
|
|
442
447
|
debug and tLogger.debug(ident(f'< [CommonLib.ReadTSF]',-1))
|
|
448
|
+
|
|
443
449
|
return {
|
|
444
450
|
"ports" : ports,
|
|
445
451
|
"fs" : fs,
|
|
@@ -95,6 +95,7 @@ def WriteTSF(object, path2tsf=None,
|
|
|
95
95
|
num_format = ('8.4f', '10.7f', '10.7f')
|
|
96
96
|
|
|
97
97
|
tnumfmt = f'%{num_format[1]} %{num_format[2]} '
|
|
98
|
+
leadspaces = ' '*(1 + int(num_format[0].split('.')[0]))
|
|
98
99
|
|
|
99
100
|
for k,fk in enumerate(fs):
|
|
100
101
|
s += (f'%{num_format[0]}' % (fk / fscale)) + ' '
|
|
@@ -106,7 +107,7 @@ def WriteTSF(object, path2tsf=None,
|
|
|
106
107
|
s += tnumfmt % (np.real(dij),np.imag(dij))
|
|
107
108
|
|
|
108
109
|
elif fmt == 'DB':
|
|
109
|
-
s += tnumfmt% (20.*np.log10(np.abs(dij)),
|
|
110
|
+
s += tnumfmt % (20.*np.log10(np.abs(dij)),
|
|
110
111
|
np.angle(dij,1))
|
|
111
112
|
|
|
112
113
|
else: # can only be MA
|
|
@@ -115,12 +116,12 @@ def WriteTSF(object, path2tsf=None,
|
|
|
115
116
|
if (kc % 4 == 3) and (kc is not nports-1):
|
|
116
117
|
if kc == 3:
|
|
117
118
|
s += ' ! row %d' % (kr+1)
|
|
118
|
-
s += '\n'+
|
|
119
|
+
s += '\n' + leadspaces
|
|
119
120
|
|
|
120
121
|
if nports > 2:
|
|
121
122
|
s += '\n'
|
|
122
123
|
if kr != nports-1:
|
|
123
|
-
s +=
|
|
124
|
+
s += leadspaces
|
|
124
125
|
|
|
125
126
|
s += '\n'
|
|
126
127
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
__updated__ = "
|
|
1
|
+
__updated__ = "2026-04-24 09:20:26"
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
print('\n*** using local copy of pyRFtk ***\n')
|
|
4
4
|
|
|
5
5
|
from .config import tLogger, setLogLevel, logit, ident, _newID, logident
|
|
6
6
|
from .rfBase import rfBase
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
__updated__ = "
|
|
1
|
+
__updated__ = "2026-05-19 11:11:41"
|
|
2
|
+
|
|
3
|
+
#FIXME: addblock of a np.array fails because of xpos issues (also __str__ fails)
|
|
2
4
|
|
|
3
5
|
import numpy as np
|
|
4
6
|
import matplotlib.pyplot as plt
|
|
@@ -292,6 +294,30 @@ class rfCircuit(rfBase):
|
|
|
292
294
|
|
|
293
295
|
return obj
|
|
294
296
|
|
|
297
|
+
#==============================================================================================
|
|
298
|
+
#
|
|
299
|
+
# o b j e c t
|
|
300
|
+
#
|
|
301
|
+
def object(self,path):
|
|
302
|
+
"""object
|
|
303
|
+
|
|
304
|
+
returns the object pointed to by path
|
|
305
|
+
|
|
306
|
+
eg. rfCircuit_object = self.object('block1.block2. ... .blockN')
|
|
307
|
+
|
|
308
|
+
is equivalent to
|
|
309
|
+
|
|
310
|
+
rfCircuit_object = \
|
|
311
|
+
self.blocks['block1']['object'].blocks['block2']['object']. ... .blocks['blockN']['object']
|
|
312
|
+
|
|
313
|
+
Note this is similar to findObj
|
|
314
|
+
"""
|
|
315
|
+
obj = self
|
|
316
|
+
for blk in path.split('.'):
|
|
317
|
+
obj = obj.blocks[blk]['object']
|
|
318
|
+
|
|
319
|
+
return obj
|
|
320
|
+
|
|
295
321
|
#===========================================================================
|
|
296
322
|
#
|
|
297
323
|
# _ s u b s t p o r t s
|
|
@@ -692,8 +718,12 @@ class rfCircuit(rfBase):
|
|
|
692
718
|
|
|
693
719
|
# update the self.xpos
|
|
694
720
|
# self.xpos = []
|
|
695
|
-
|
|
696
|
-
|
|
721
|
+
if hasattr(RFobj,'xpos'):
|
|
722
|
+
for p, x in zip(oports, RFobj.xpos):
|
|
723
|
+
self.xpos.append(relpos + x)
|
|
724
|
+
else:
|
|
725
|
+
for p in oports:
|
|
726
|
+
self.xpos.append(relpos)
|
|
697
727
|
|
|
698
728
|
_debug_ and tLogger.debug(ident(
|
|
699
729
|
f'< [circuit.addblock] (inserted a new block)', -1
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
__updated__ = "
|
|
1
|
+
__updated__ = "2026-05-20 14:05:43"
|
|
2
|
+
|
|
3
|
+
#TODO: add the possibility to fill doing rfObject(fs=[ ...], Ss=[ ... ])
|
|
2
4
|
|
|
3
5
|
if __name__ == '__main__':
|
|
4
6
|
import sys
|
|
@@ -60,9 +62,9 @@ class rfObject():
|
|
|
60
62
|
and
|
|
61
63
|
|
|
62
64
|
excitation = {port1:a1, ... }
|
|
63
|
-
|
|
65
|
+
Vmax, rfObject.maxV(fHz, excitation)
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
[note code partially debugged using co-pilot (GPT-5 mini)]
|
|
66
68
|
"""
|
|
67
69
|
#===========================================================================
|
|
68
70
|
#
|
|
@@ -85,6 +87,8 @@ class rfObject():
|
|
|
85
87
|
fixme: no parameters to set the Zcs and Gms port properties
|
|
86
88
|
"""
|
|
87
89
|
|
|
90
|
+
self.got_args = False
|
|
91
|
+
|
|
88
92
|
if not hasattr(self,'args'):
|
|
89
93
|
self.args = args
|
|
90
94
|
|
|
@@ -93,12 +97,76 @@ class rfObject():
|
|
|
93
97
|
|
|
94
98
|
self.Id = kwargs.pop('Id',f'{type(self).__name__}_{_newID()}')
|
|
95
99
|
|
|
100
|
+
# if only an arg is given -> convert it (type cast) to an rfObject
|
|
101
|
+
# this eg to convert a list/numpy array to an rfOject
|
|
102
|
+
#
|
|
103
|
+
# obj = rfObject(numpy.array([[0,1],[1,0]])
|
|
104
|
+
# obj.getS(fs) returns [[0,1],[1,0]] for all frequenies fs
|
|
105
|
+
#
|
|
106
|
+
# what could be valid kwargs ?
|
|
107
|
+
#
|
|
108
|
+
# ports, xpos, Zbase
|
|
109
|
+
|
|
110
|
+
# print(f'rfObject: Nargs = {len(args)}')
|
|
111
|
+
|
|
112
|
+
if Nargs := len(args):
|
|
113
|
+
if Nargs == 1:
|
|
114
|
+
# check type of arg
|
|
115
|
+
if not isinstance(args[0], (np.ndarray, np.matrix, list)):
|
|
116
|
+
raise TypeError(
|
|
117
|
+
f'rfObject: args[0] must be of type list, numpy.array or '
|
|
118
|
+
f'numpy.matrix; got {type(args[0])}')
|
|
119
|
+
|
|
120
|
+
arg0 = np.array(args[0], dtype=complex)
|
|
121
|
+
|
|
122
|
+
if len(arg0.shape) != 2:
|
|
123
|
+
raise TypeError(
|
|
124
|
+
f'rfObject: arg[0] must must represent a square 2-dim '
|
|
125
|
+
f'array; got {arg0.shape}')
|
|
126
|
+
|
|
127
|
+
if arg0.shape[0] != arg0.shape[1]:
|
|
128
|
+
raise TypeError(
|
|
129
|
+
f'rfObject: arg[0] must must represent a square 2-dim '
|
|
130
|
+
f'array; got {arg0.shape[0]} x {arg0.shape[1]}')
|
|
131
|
+
|
|
132
|
+
self.N = arg0.shape[0]
|
|
133
|
+
self.ports = [f'm{k:03d}' for k in range(1,self.N+1)]
|
|
134
|
+
self.Ss = np.array([arg0, arg0])
|
|
135
|
+
self.fs = np.array([0, 1e18])
|
|
136
|
+
|
|
137
|
+
self.got_args = True
|
|
138
|
+
|
|
139
|
+
elif Nargs == 2:
|
|
140
|
+
raise NotImplementedError()
|
|
141
|
+
|
|
142
|
+
else:
|
|
143
|
+
raise TypeError(f"rfObject: at most 2 args expected; got {Nargs}")
|
|
144
|
+
|
|
96
145
|
#TODO: validate allowed port names
|
|
97
|
-
|
|
98
|
-
self.alias = {}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
146
|
+
|
|
147
|
+
self.alias = {} #FIXME: what was the idea again ... does not appear to be used
|
|
148
|
+
|
|
149
|
+
_ports = kwargs.get('ports', [])
|
|
150
|
+
if isinstance(_ports, str):
|
|
151
|
+
_ports = _ports.split()
|
|
152
|
+
_N = len(_ports)
|
|
153
|
+
|
|
154
|
+
# If the object was created from an argument (e.g. an S-matrix),
|
|
155
|
+
# self.N and self.ports may already be set. Only override ports
|
|
156
|
+
# from kwargs when the caller actually provided a non-empty ports list.
|
|
157
|
+
if hasattr(self, 'N'):
|
|
158
|
+
if _N:
|
|
159
|
+
if _N != self.N:
|
|
160
|
+
raise ValueError(
|
|
161
|
+
f'rfObject: the supplied args suggests a {self.N} port '
|
|
162
|
+
f'object but the supplied port kwarg suggests a {_N} port one')
|
|
163
|
+
# override only when ports were explicitly provided
|
|
164
|
+
self.ports = _ports
|
|
165
|
+
else:
|
|
166
|
+
# no N previously set -> use provided ports count (may be zero)
|
|
167
|
+
self.N = _N
|
|
168
|
+
# assign provided ports (may be empty list)
|
|
169
|
+
self.ports = _ports
|
|
102
170
|
|
|
103
171
|
self.Zbase = kwargs.get('Zbase', rcparams['Zbase'])
|
|
104
172
|
self.funit = kwargs.get('funit', rcparams['funit'])
|
|
@@ -107,13 +175,17 @@ class rfObject():
|
|
|
107
175
|
|
|
108
176
|
self.interp = kwargs.get('interp',rcparams['interp'])
|
|
109
177
|
self.interpkws = kwargs.get('interpkws',rcparams['interpkws'])
|
|
110
|
-
|
|
178
|
+
|
|
111
179
|
self.xpos = kwargs.get('xpos', [0.]*self.N)
|
|
112
|
-
|
|
180
|
+
|
|
113
181
|
# initialize arrays and stuff
|
|
114
|
-
|
|
182
|
+
if not hasattr(self,'fs'):
|
|
183
|
+
self.fs = np.array([],dtype=float).reshape((0,))
|
|
115
184
|
self.sorted = True
|
|
116
|
-
|
|
185
|
+
|
|
186
|
+
if not hasattr(self, 'Ss'):
|
|
187
|
+
self.Ss = np.array([], dtype=complex).reshape((0, self.N, self.N))
|
|
188
|
+
|
|
117
189
|
self.Zcs = np.array([], dtype=complex).reshape(0, self.N)
|
|
118
190
|
self.Gms = np.array([], dtype=complex).reshape(0, self.N)
|
|
119
191
|
self.process_kwargs()
|
|
@@ -121,13 +193,22 @@ class rfObject():
|
|
|
121
193
|
|
|
122
194
|
self.touchstone = kwargs.get('touchstone', None)
|
|
123
195
|
if self.touchstone:
|
|
196
|
+
if self.got_args:
|
|
197
|
+
raise ValueError(
|
|
198
|
+
f'rfObject: touchstone is not compatible with the use of args')
|
|
199
|
+
|
|
124
200
|
Tkwargs = {'Zbase': self.Zbase, 'funit':'HZ'}
|
|
201
|
+
# FIXME: if Zbase is not supplied it defaults to 50 Ohm but that is
|
|
202
|
+
# not taking into account the information supplied in the
|
|
203
|
+
# touchstone !
|
|
204
|
+
|
|
125
205
|
for (kw, value) in kwargs.items():
|
|
126
206
|
if kw in Tkwargs:
|
|
127
207
|
Tkwargs[kw] = value
|
|
128
208
|
|
|
129
209
|
self.read_tsf(self.touchstone, **Tkwargs)
|
|
130
|
-
|
|
210
|
+
|
|
211
|
+
|
|
131
212
|
self.interpOK = False
|
|
132
213
|
|
|
133
214
|
self.f, self.S = None, None
|
|
@@ -214,7 +295,10 @@ class rfObject():
|
|
|
214
295
|
for kw, val in self.kwargs.items():
|
|
215
296
|
s += ',\n'
|
|
216
297
|
s += ' %s = %r' % (kw,val)
|
|
298
|
+
if 'Zbase' not in self.kwargs:
|
|
299
|
+
s += f'\n Zbase = {self.Zbase} [default]'
|
|
217
300
|
s += '\n)'
|
|
301
|
+
|
|
218
302
|
return s
|
|
219
303
|
|
|
220
304
|
#===========================================================================
|
|
@@ -673,3 +757,4 @@ class rfObject():
|
|
|
673
757
|
f'pyRFtk2.rfObject.deembed: port(s) {",".join([p for p in ports])}'
|
|
674
758
|
' not found.')
|
|
675
759
|
|
|
760
|
+
|
pyrftk-2.0.7/docs/Makefile
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
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 = source
|
|
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)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html class="writer-html5" lang="en" >
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" />
|
|
5
|
-
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Arc Detection — pyRFtk 2.0.0 documentation</title>
|
|
8
|
-
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
|
9
|
-
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
|
|
10
|
-
<!--[if lt IE 9]>
|
|
11
|
-
<script src="_static/js/html5shiv.min.js"></script>
|
|
12
|
-
<![endif]-->
|
|
13
|
-
|
|
14
|
-
<script src="_static/jquery.js?v=5d32c60e"></script>
|
|
15
|
-
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
|
|
16
|
-
<script src="_static/documentation_options.js?v=51b770b3"></script>
|
|
17
|
-
<script src="_static/doctools.js?v=888ff710"></script>
|
|
18
|
-
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
|
19
|
-
<script src="_static/js/theme.js"></script>
|
|
20
|
-
<link rel="index" title="Index" href="genindex.html" />
|
|
21
|
-
<link rel="search" title="Search" href="search.html" />
|
|
22
|
-
</head>
|
|
23
|
-
|
|
24
|
-
<body class="wy-body-for-nav">
|
|
25
|
-
<div class="wy-grid-for-nav">
|
|
26
|
-
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
|
27
|
-
<div class="wy-side-scroll">
|
|
28
|
-
<div class="wy-side-nav-search" >
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<a href="index.html" class="icon icon-home">
|
|
33
|
-
pyRFtk
|
|
34
|
-
</a>
|
|
35
|
-
<div role="search">
|
|
36
|
-
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
|
37
|
-
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
|
|
38
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
|
39
|
-
<input type="hidden" name="area" value="default" />
|
|
40
|
-
</form>
|
|
41
|
-
</div>
|
|
42
|
-
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
|
|
43
|
-
<ul>
|
|
44
|
-
<li class="toctree-l1"><a class="reference internal" href="Tutorials.html">Tutorials</a></li>
|
|
45
|
-
</ul>
|
|
46
|
-
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
</nav>
|
|
50
|
-
|
|
51
|
-
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
|
|
52
|
-
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
|
53
|
-
<a href="index.html">pyRFtk</a>
|
|
54
|
-
</nav>
|
|
55
|
-
|
|
56
|
-
<div class="wy-nav-content">
|
|
57
|
-
<div class="rst-content">
|
|
58
|
-
<div role="navigation" aria-label="Page navigation">
|
|
59
|
-
<ul class="wy-breadcrumbs">
|
|
60
|
-
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
|
|
61
|
-
<li class="breadcrumb-item active">Arc Detection</li>
|
|
62
|
-
<li class="wy-breadcrumbs-aside">
|
|
63
|
-
<a href="_sources/Arcs.rst.txt" rel="nofollow"> View page source</a>
|
|
64
|
-
</li>
|
|
65
|
-
</ul>
|
|
66
|
-
<hr/>
|
|
67
|
-
</div>
|
|
68
|
-
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
|
69
|
-
<div itemprop="articleBody">
|
|
70
|
-
|
|
71
|
-
<section id="arc-detection">
|
|
72
|
-
<h1>Arc Detection<a class="headerlink" href="#arc-detection" title="Link to this heading"></a></h1>
|
|
73
|
-
</section>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
<footer>
|
|
79
|
-
|
|
80
|
-
<hr/>
|
|
81
|
-
|
|
82
|
-
<div role="contentinfo">
|
|
83
|
-
<p>© Copyright 2023, Frederic Durodie and Arthur Adriaens.</p>
|
|
84
|
-
</div>
|
|
85
|
-
|
|
86
|
-
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
|
|
87
|
-
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
|
|
88
|
-
provided by <a href="https://readthedocs.org">Read the Docs</a>.
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
</footer>
|
|
92
|
-
</div>
|
|
93
|
-
</div>
|
|
94
|
-
</section>
|
|
95
|
-
</div>
|
|
96
|
-
<script>
|
|
97
|
-
jQuery(function () {
|
|
98
|
-
SphinxRtdTheme.Navigation.enable(true);
|
|
99
|
-
});
|
|
100
|
-
</script>
|
|
101
|
-
|
|
102
|
-
</body>
|
|
103
|
-
</html>
|