quarchpy 2.2.5__py2.py3-none-any.whl → 2.2.7.dev1__py2.py3-none-any.whl
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.
- quarchpy/.idea/misc.xml +4 -1
- quarchpy/.idea/modules.xml +0 -1
- quarchpy/.idea/quarchpy.iml +1 -2
- quarchpy/.idea/workspace.xml +28 -72
- quarchpy/_version.py +1 -1
- quarchpy/config_files/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-313.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/app.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/README.txt +2 -2
- quarchpy/connection_specific/QPS/win-amd64/qis/help.txt +2 -2
- quarchpy/connection_specific/QPS/win-amd64/qis/qis.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/{CInterface-2.2.jar → CInterface-2.3.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/QuarchCommon-2.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/TorridonCommon-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/jmdns-3.6.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/usb4java-1.3.1.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps-command-reference.html +331 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/JFXUtilities-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/QuarchCommon-2.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-base-21.0.4-linux.jar → javafx-base-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-controls-21.0.4-linux.jar → javafx-controls-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-fxml-21.0.4-linux.jar → javafx-fxml-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-graphics-21.0.4-linux.jar → javafx-graphics-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-swing-21.0.4-linux.jar → javafx-swing-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-base-21.0.4-mac-aarch64.jar → javafx-base-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-controls-21.0.4-mac-aarch64.jar → javafx-controls-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-fxml-21.0.4-mac-aarch64.jar → javafx-fxml-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-graphics-21.0.4-mac-aarch64.jar → javafx-graphics-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-swing-21.0.4-mac-aarch64.jar → javafx-swing-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-base-21.0.4-mac.jar → javafx-base-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-controls-21.0.4-mac.jar → javafx-controls-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-fxml-21.0.4-mac.jar → javafx-fxml-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-graphics-21.0.4-mac.jar → javafx-graphics-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-swing-21.0.4-mac.jar → javafx-swing-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-base-21.0.4-win.jar → javafx-base-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-controls-21.0.4-win.jar → javafx-controls-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-fxml-21.0.4-win.jar → javafx-fxml-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-graphics-21.0.4-win.jar → javafx-graphics-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-swing-21.0.4-win.jar → javafx-swing-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/scriptCommands.txt +59 -3
- quarchpy/connection_specific/QPS/win-amd64/whats-new.txt +12 -20
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/connection_QPS.py +7 -3
- quarchpy/connection_specific/connection_QPS.py.bak +242 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-313.pyc +0 -0
- quarchpy/device/quarchPPM.py +1 -1
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-313.pyc +0 -0
- quarchpy/docs/CHANGES.rst +17 -0
- quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
- quarchpy/docs/_build/doctrees/environment.pickle +0 -0
- quarchpy/docs/_build/doctrees/index.doctree +0 -0
- quarchpy/docs/_build/doctrees/readme.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
- quarchpy/docs/_build/html/.buildinfo +2 -2
- quarchpy/docs/_build/html/.buildinfo.bak +4 -0
- quarchpy/docs/_build/html/CHANGES.html +176 -150
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +14 -0
- quarchpy/docs/_build/html/_static/alabaster.css +47 -87
- quarchpy/docs/_build/html/_static/basic.css +3 -14
- quarchpy/docs/_build/html/_static/doctools.js +0 -7
- quarchpy/docs/_build/html/_static/github-banner.svg +5 -0
- quarchpy/docs/_build/html/_static/language_data.js +1 -8
- quarchpy/docs/_build/html/_static/pygments.css +2 -1
- quarchpy/docs/_build/html/_static/searchtools.js +129 -71
- quarchpy/docs/_build/html/genindex.html +22 -55
- quarchpy/docs/_build/html/index.html +90 -85
- quarchpy/docs/_build/html/objects.inv +0 -0
- quarchpy/docs/_build/html/py-modindex.html +20 -29
- quarchpy/docs/_build/html/readme.html +20 -19
- quarchpy/docs/_build/html/search.html +14 -14
- quarchpy/docs/_build/html/searchindex.js +1 -1
- quarchpy/docs/_build/html/source/changelog.html +246 -216
- quarchpy/docs/_build/html/source/licenses.html +20 -19
- quarchpy/docs/_build/html/source/modules.html +22 -21
- quarchpy/docs/_build/html/source/quarchpy.calibration.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.config_files.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +22 -37
- quarchpy/docs/_build/html/source/quarchpy.debug.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.device.html +21 -20
- quarchpy/docs/_build/html/source/quarchpy.disk_test.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.fio.html +22 -47
- quarchpy/docs/_build/html/source/quarchpy.html +22 -37
- quarchpy/docs/_build/html/source/quarchpy.iometer.html +26 -25
- quarchpy/docs/_build/html/source/quarchpy.qis.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.qps.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.user_interface.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.utilities.html +20 -19
- quarchpy/docs/_build/html/source/readme.html +20 -19
- quarchpy/fio/FIO_interface.py +255 -1
- quarchpy/fio/FIO_interface.py.bak +317 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/gen_iometer_template.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-313.pyc +0 -0
- quarchpy/qps/qpsFuncs.py +1 -1
- quarchpy/user_interface/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-313.pyc +0 -0
- {quarchpy-2.2.5.dist-info → quarchpy-2.2.7.dev1.dist-info}/METADATA +29 -3
- {quarchpy-2.2.5.dist-info → quarchpy-2.2.7.dev1.dist-info}/RECORD +161 -104
- {quarchpy-2.2.5.dist-info → quarchpy-2.2.7.dev1.dist-info}/WHEEL +1 -1
- quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
- quarchpy/__pycache__/run.cpython-311.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/jmdns-3.5.9.jar +0 -0
- {quarchpy-2.2.5.dist-info → quarchpy-2.2.7.dev1.dist-info}/top_level.txt +0 -0
@@ -14,6 +14,20 @@ Change Log
|
|
14
14
|
----------
|
15
15
|
|
16
16
|
|
17
|
+
2.2.6
|
18
|
+
-----
|
19
|
+
- New QPS 1.45 and QIS 1.47
|
20
|
+
|
21
|
+
2.2.5
|
22
|
+
-----
|
23
|
+
- Minor Bug fix and removal of redundant jar
|
24
|
+
2.2.4
|
25
|
+
-----
|
26
|
+
- Update to Java libraries to run QPS
|
27
|
+
- Removal of depracated libs saveing space
|
28
|
+
2.2.3
|
29
|
+
-----
|
30
|
+
- Minor bug fix
|
17
31
|
2.2.2
|
18
32
|
-----
|
19
33
|
- New QPS 1.44 and QIS 1.46
|
@@ -1,5 +1,3 @@
|
|
1
|
-
@import url("basic.css");
|
2
|
-
|
3
1
|
/* -- page layout ----------------------------------------------------------- */
|
4
2
|
|
5
3
|
body {
|
@@ -69,6 +67,11 @@ div.relations {
|
|
69
67
|
}
|
70
68
|
|
71
69
|
|
70
|
+
div.sphinxsidebar {
|
71
|
+
max-height: 100%;
|
72
|
+
overflow-y: auto;
|
73
|
+
}
|
74
|
+
|
72
75
|
div.sphinxsidebar a {
|
73
76
|
color: #444;
|
74
77
|
text-decoration: none;
|
@@ -155,6 +158,14 @@ div.sphinxsidebar input {
|
|
155
158
|
font-size: 1em;
|
156
159
|
}
|
157
160
|
|
161
|
+
div.sphinxsidebar #searchbox {
|
162
|
+
margin: 1em 0;
|
163
|
+
}
|
164
|
+
|
165
|
+
div.sphinxsidebar .search > div {
|
166
|
+
display: table-cell;
|
167
|
+
}
|
168
|
+
|
158
169
|
div.sphinxsidebar hr {
|
159
170
|
border: none;
|
160
171
|
height: 1px;
|
@@ -250,10 +261,6 @@ div.admonition p.last {
|
|
250
261
|
margin-bottom: 0;
|
251
262
|
}
|
252
263
|
|
253
|
-
div.highlight {
|
254
|
-
background-color: #fff;
|
255
|
-
}
|
256
|
-
|
257
264
|
dt:target, .highlight {
|
258
265
|
background: #FAF3E8;
|
259
266
|
}
|
@@ -441,7 +448,7 @@ ul, ol {
|
|
441
448
|
}
|
442
449
|
|
443
450
|
pre {
|
444
|
-
background:
|
451
|
+
background: unset;
|
445
452
|
padding: 7px 30px;
|
446
453
|
margin: 15px 0px;
|
447
454
|
line-height: 1.3em;
|
@@ -472,15 +479,15 @@ a.reference {
|
|
472
479
|
border-bottom: 1px dotted #004B6B;
|
473
480
|
}
|
474
481
|
|
482
|
+
a.reference:hover {
|
483
|
+
border-bottom: 1px solid #6D4100;
|
484
|
+
}
|
485
|
+
|
475
486
|
/* Don't put an underline on images */
|
476
487
|
a.image-reference, a.image-reference:hover {
|
477
488
|
border-bottom: none;
|
478
489
|
}
|
479
490
|
|
480
|
-
a.reference:hover {
|
481
|
-
border-bottom: 1px solid #6D4100;
|
482
|
-
}
|
483
|
-
|
484
491
|
a.footnote-reference {
|
485
492
|
text-decoration: none;
|
486
493
|
font-size: 0.7em;
|
@@ -496,68 +503,7 @@ a:hover tt, a:hover code {
|
|
496
503
|
background: #EEE;
|
497
504
|
}
|
498
505
|
|
499
|
-
|
500
|
-
@media screen and (max-width: 870px) {
|
501
|
-
|
502
|
-
div.sphinxsidebar {
|
503
|
-
display: none;
|
504
|
-
}
|
505
|
-
|
506
|
-
div.document {
|
507
|
-
width: 100%;
|
508
|
-
|
509
|
-
}
|
510
|
-
|
511
|
-
div.documentwrapper {
|
512
|
-
margin-left: 0;
|
513
|
-
margin-top: 0;
|
514
|
-
margin-right: 0;
|
515
|
-
margin-bottom: 0;
|
516
|
-
}
|
517
|
-
|
518
|
-
div.bodywrapper {
|
519
|
-
margin-top: 0;
|
520
|
-
margin-right: 0;
|
521
|
-
margin-bottom: 0;
|
522
|
-
margin-left: 0;
|
523
|
-
}
|
524
|
-
|
525
|
-
ul {
|
526
|
-
margin-left: 0;
|
527
|
-
}
|
528
|
-
|
529
|
-
li > ul {
|
530
|
-
/* Matches the 30px from the "ul, ol" selector above */
|
531
|
-
margin-left: 30px;
|
532
|
-
}
|
533
|
-
|
534
|
-
.document {
|
535
|
-
width: auto;
|
536
|
-
}
|
537
|
-
|
538
|
-
.footer {
|
539
|
-
width: auto;
|
540
|
-
}
|
541
|
-
|
542
|
-
.bodywrapper {
|
543
|
-
margin: 0;
|
544
|
-
}
|
545
|
-
|
546
|
-
.footer {
|
547
|
-
width: auto;
|
548
|
-
}
|
549
|
-
|
550
|
-
.github {
|
551
|
-
display: none;
|
552
|
-
}
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
}
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
@media screen and (max-width: 875px) {
|
506
|
+
@media screen and (max-width: 940px) {
|
561
507
|
|
562
508
|
body {
|
563
509
|
margin: 0;
|
@@ -567,12 +513,16 @@ a:hover tt, a:hover code {
|
|
567
513
|
div.documentwrapper {
|
568
514
|
float: none;
|
569
515
|
background: #fff;
|
516
|
+
margin-left: 0;
|
517
|
+
margin-top: 0;
|
518
|
+
margin-right: 0;
|
519
|
+
margin-bottom: 0;
|
570
520
|
}
|
571
521
|
|
572
522
|
div.sphinxsidebar {
|
573
523
|
display: block;
|
574
524
|
float: none;
|
575
|
-
width:
|
525
|
+
width: unset;
|
576
526
|
margin: 50px -30px -20px -30px;
|
577
527
|
padding: 10px 20px;
|
578
528
|
background: #333;
|
@@ -607,8 +557,14 @@ a:hover tt, a:hover code {
|
|
607
557
|
|
608
558
|
div.body {
|
609
559
|
min-height: 0;
|
560
|
+
min-width: auto; /* fixes width on small screens, breaks .hll */
|
610
561
|
padding: 0;
|
611
562
|
}
|
563
|
+
|
564
|
+
.hll {
|
565
|
+
/* "fixes" the breakage */
|
566
|
+
width: max-content;
|
567
|
+
}
|
612
568
|
|
613
569
|
.rtd_doc_footer {
|
614
570
|
display: none;
|
@@ -622,13 +578,18 @@ a:hover tt, a:hover code {
|
|
622
578
|
width: auto;
|
623
579
|
}
|
624
580
|
|
625
|
-
.footer {
|
626
|
-
width: auto;
|
627
|
-
}
|
628
|
-
|
629
581
|
.github {
|
630
582
|
display: none;
|
631
583
|
}
|
584
|
+
|
585
|
+
ul {
|
586
|
+
margin-left: 0;
|
587
|
+
}
|
588
|
+
|
589
|
+
li > ul {
|
590
|
+
/* Matches the 30px from the "ul, ol" selector above */
|
591
|
+
margin-left: 30px;
|
592
|
+
}
|
632
593
|
}
|
633
594
|
|
634
595
|
|
@@ -638,15 +599,7 @@ a:hover tt, a:hover code {
|
|
638
599
|
display: none!important;
|
639
600
|
}
|
640
601
|
|
641
|
-
/*
|
642
|
-
* pages. Without this, docutils' magical list fuckery causes inconsistent
|
643
|
-
* formatting between different release sub-lists.
|
644
|
-
*/
|
645
|
-
div#changelog > div.section > ul > li > p:only-child {
|
646
|
-
margin-bottom: 0;
|
647
|
-
}
|
648
|
-
|
649
|
-
/* Hide fugly table cell borders in ..bibliography:: directive output */
|
602
|
+
/* Hide ugly table cell borders in ..bibliography:: directive output */
|
650
603
|
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
|
651
604
|
border: none;
|
652
605
|
/* Below needed in some edge cases; if not applied, bottom shadows appear */
|
@@ -700,4 +653,11 @@ nav#breadcrumbs li+li:before {
|
|
700
653
|
div.related {
|
701
654
|
display: none;
|
702
655
|
}
|
656
|
+
}
|
657
|
+
|
658
|
+
img.github {
|
659
|
+
position: absolute;
|
660
|
+
top: 0;
|
661
|
+
border: 0;
|
662
|
+
right: 0;
|
703
663
|
}
|
@@ -1,12 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* basic.css
|
3
|
-
* ~~~~~~~~~
|
4
|
-
*
|
5
2
|
* Sphinx stylesheet -- basic theme.
|
6
|
-
*
|
7
|
-
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
|
8
|
-
* :license: BSD, see LICENSE for details.
|
9
|
-
*
|
10
3
|
*/
|
11
4
|
|
12
5
|
/* -- main layout ----------------------------------------------------------- */
|
@@ -115,15 +108,11 @@ img {
|
|
115
108
|
/* -- search page ----------------------------------------------------------- */
|
116
109
|
|
117
110
|
ul.search {
|
118
|
-
margin: 10px
|
119
|
-
padding: 0;
|
111
|
+
margin-top: 10px;
|
120
112
|
}
|
121
113
|
|
122
114
|
ul.search li {
|
123
|
-
padding: 5px 0
|
124
|
-
background-image: url(file.png);
|
125
|
-
background-repeat: no-repeat;
|
126
|
-
background-position: 0 7px;
|
115
|
+
padding: 5px 0;
|
127
116
|
}
|
128
117
|
|
129
118
|
ul.search li a {
|
@@ -222,7 +211,7 @@ table.modindextable td {
|
|
222
211
|
/* -- general body styles --------------------------------------------------- */
|
223
212
|
|
224
213
|
div.body {
|
225
|
-
min-width:
|
214
|
+
min-width: inherit;
|
226
215
|
max-width: 800px;
|
227
216
|
}
|
228
217
|
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="80" height="80" viewBox="0 0 250 250" fill="#fff">
|
2
|
+
<path d="M0 0l115 115h15l12 27 108 108V0z" fill="#151513"/>
|
3
|
+
<path d="M128 109c-15-9-9-19-9-19 3-7 2-11 2-11-1-7 3-2 3-2 4 5 2 11 2 11-3 10 5 15 9 16"/>
|
4
|
+
<path d="M115 115s4 2 5 0l14-14c3-2 6-3 8-3-8-11-15-24 2-41 5-5 10-7 16-7 1-2 3-7 12-11 0 0 5 3 7 16 4 2 8 5 12 9s7 8 9 12c14 3 17 7 17 7-4 8-9 11-11 11 0 6-2 11-7 16-16 16-30 10-41 2 0 3-1 7-5 11l-12 11c-1 1 1 5 1 5z"/>
|
5
|
+
</svg>
|
@@ -1,19 +1,12 @@
|
|
1
1
|
/*
|
2
|
-
* language_data.js
|
3
|
-
* ~~~~~~~~~~~~~~~~
|
4
|
-
*
|
5
2
|
* This script contains the language-specific data used by searchtools.js,
|
6
3
|
* namely the list of stopwords, stemmer, scorer and splitter.
|
7
|
-
*
|
8
|
-
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
|
9
|
-
* :license: BSD, see LICENSE for details.
|
10
|
-
*
|
11
4
|
*/
|
12
5
|
|
13
6
|
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
|
14
7
|
|
15
8
|
|
16
|
-
/* Non-minified version is copied as a separate JS file,
|
9
|
+
/* Non-minified version is copied as a separate JS file, if available */
|
17
10
|
|
18
11
|
/**
|
19
12
|
* Porter Stemmer
|
@@ -22,6 +22,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
|
|
22
22
|
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
|
23
23
|
.highlight .gd { color: #a40000 } /* Generic.Deleted */
|
24
24
|
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
25
|
+
.highlight .ges { color: #000000 } /* Generic.EmphStrong */
|
25
26
|
.highlight .gr { color: #ef2929 } /* Generic.Error */
|
26
27
|
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
27
28
|
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
@@ -55,7 +56,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
|
|
55
56
|
.highlight .nv { color: #000000 } /* Name.Variable */
|
56
57
|
.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
|
57
58
|
.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */
|
58
|
-
.highlight .w { color: #f8f8f8
|
59
|
+
.highlight .w { color: #f8f8f8 } /* Text.Whitespace */
|
59
60
|
.highlight .mb { color: #990000 } /* Literal.Number.Bin */
|
60
61
|
.highlight .mf { color: #990000 } /* Literal.Number.Float */
|
61
62
|
.highlight .mh { color: #990000 } /* Literal.Number.Hex */
|
@@ -1,12 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
* searchtools.js
|
3
|
-
* ~~~~~~~~~~~~~~~~
|
4
|
-
*
|
5
2
|
* Sphinx JavaScript utilities for the full-text search.
|
6
|
-
*
|
7
|
-
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
|
8
|
-
* :license: BSD, see LICENSE for details.
|
9
|
-
*
|
10
3
|
*/
|
11
4
|
"use strict";
|
12
5
|
|
@@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") {
|
|
20
13
|
// and returns the new score.
|
21
14
|
/*
|
22
15
|
score: result => {
|
23
|
-
const [docname, title, anchor, descr, score, filename] = result
|
16
|
+
const [docname, title, anchor, descr, score, filename, kind] = result
|
24
17
|
return score
|
25
18
|
},
|
26
19
|
*/
|
@@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") {
|
|
47
40
|
};
|
48
41
|
}
|
49
42
|
|
43
|
+
// Global search result kind enum, used by themes to style search results.
|
44
|
+
class SearchResultKind {
|
45
|
+
static get index() { return "index"; }
|
46
|
+
static get object() { return "object"; }
|
47
|
+
static get text() { return "text"; }
|
48
|
+
static get title() { return "title"; }
|
49
|
+
}
|
50
|
+
|
50
51
|
const _removeChildren = (element) => {
|
51
52
|
while (element && element.lastChild) element.removeChild(element.lastChild);
|
52
53
|
};
|
@@ -64,9 +65,13 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
|
|
64
65
|
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
|
65
66
|
const contentRoot = document.documentElement.dataset.content_root;
|
66
67
|
|
67
|
-
const [docName, title, anchor, descr, score, _filename] = item;
|
68
|
+
const [docName, title, anchor, descr, score, _filename, kind] = item;
|
68
69
|
|
69
70
|
let listItem = document.createElement("li");
|
71
|
+
// Add a class representing the item's type:
|
72
|
+
// can be used by a theme's CSS selector for styling
|
73
|
+
// See SearchResultKind for the class names.
|
74
|
+
listItem.classList.add(`kind-${kind}`);
|
70
75
|
let requestUrl;
|
71
76
|
let linkUrl;
|
72
77
|
if (docBuilder === "dirhtml") {
|
@@ -99,7 +104,7 @@ const _displayItem = (item, searchTerms, highlightTerms) => {
|
|
99
104
|
.then((data) => {
|
100
105
|
if (data)
|
101
106
|
listItem.appendChild(
|
102
|
-
Search.makeSearchSummary(data, searchTerms)
|
107
|
+
Search.makeSearchSummary(data, searchTerms, anchor)
|
103
108
|
);
|
104
109
|
// highlight search terms in the summary
|
105
110
|
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
|
@@ -115,9 +120,11 @@ const _finishSearch = (resultCount) => {
|
|
115
120
|
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
|
116
121
|
);
|
117
122
|
else
|
118
|
-
Search.status.innerText =
|
119
|
-
|
120
|
-
|
123
|
+
Search.status.innerText = Documentation.ngettext(
|
124
|
+
"Search finished, found one page matching the search query.",
|
125
|
+
"Search finished, found ${resultCount} pages matching the search query.",
|
126
|
+
resultCount,
|
127
|
+
).replace('${resultCount}', resultCount);
|
121
128
|
};
|
122
129
|
const _displayNextItem = (
|
123
130
|
results,
|
@@ -137,6 +144,22 @@ const _displayNextItem = (
|
|
137
144
|
// search finished, update title and status message
|
138
145
|
else _finishSearch(resultCount);
|
139
146
|
};
|
147
|
+
// Helper function used by query() to order search results.
|
148
|
+
// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
|
149
|
+
// Order the results by score (in opposite order of appearance, since the
|
150
|
+
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
|
151
|
+
const _orderResultsByScoreThenName = (a, b) => {
|
152
|
+
const leftScore = a[4];
|
153
|
+
const rightScore = b[4];
|
154
|
+
if (leftScore === rightScore) {
|
155
|
+
// same score: sort alphabetically
|
156
|
+
const leftTitle = a[1].toLowerCase();
|
157
|
+
const rightTitle = b[1].toLowerCase();
|
158
|
+
if (leftTitle === rightTitle) return 0;
|
159
|
+
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
160
|
+
}
|
161
|
+
return leftScore > rightScore ? 1 : -1;
|
162
|
+
};
|
140
163
|
|
141
164
|
/**
|
142
165
|
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
|
@@ -160,13 +183,26 @@ const Search = {
|
|
160
183
|
_queued_query: null,
|
161
184
|
_pulse_status: -1,
|
162
185
|
|
163
|
-
htmlToText: (htmlString) => {
|
186
|
+
htmlToText: (htmlString, anchor) => {
|
164
187
|
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
|
165
|
-
|
188
|
+
for (const removalQuery of [".headerlink", "script", "style"]) {
|
189
|
+
htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
|
190
|
+
}
|
191
|
+
if (anchor) {
|
192
|
+
const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
|
193
|
+
if (anchorContent) return anchorContent.textContent;
|
194
|
+
|
195
|
+
console.warn(
|
196
|
+
`Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
|
197
|
+
);
|
198
|
+
}
|
199
|
+
|
200
|
+
// if anchor not specified or not found, fall back to main content
|
166
201
|
const docContent = htmlElement.querySelector('[role="main"]');
|
167
|
-
if (docContent
|
202
|
+
if (docContent) return docContent.textContent;
|
203
|
+
|
168
204
|
console.warn(
|
169
|
-
"Content block not found. Sphinx search tries to obtain it via '[role=main]'.
|
205
|
+
"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
|
170
206
|
);
|
171
207
|
return "";
|
172
208
|
},
|
@@ -219,6 +255,7 @@ const Search = {
|
|
219
255
|
searchSummary.classList.add("search-summary");
|
220
256
|
searchSummary.innerText = "";
|
221
257
|
const searchList = document.createElement("ul");
|
258
|
+
searchList.setAttribute("role", "list");
|
222
259
|
searchList.classList.add("search");
|
223
260
|
|
224
261
|
const out = document.getElementById("search-results");
|
@@ -239,16 +276,7 @@ const Search = {
|
|
239
276
|
else Search.deferQuery(query);
|
240
277
|
},
|
241
278
|
|
242
|
-
|
243
|
-
* execute search (requires search index to be loaded)
|
244
|
-
*/
|
245
|
-
query: (query) => {
|
246
|
-
const filenames = Search._index.filenames;
|
247
|
-
const docNames = Search._index.docnames;
|
248
|
-
const titles = Search._index.titles;
|
249
|
-
const allTitles = Search._index.alltitles;
|
250
|
-
const indexEntries = Search._index.indexentries;
|
251
|
-
|
279
|
+
_parseQuery: (query) => {
|
252
280
|
// stem the search terms and add them to the correct list
|
253
281
|
const stemmer = new Stemmer();
|
254
282
|
const searchTerms = new Set();
|
@@ -284,22 +312,40 @@ const Search = {
|
|
284
312
|
// console.info("required: ", [...searchTerms]);
|
285
313
|
// console.info("excluded: ", [...excludedTerms]);
|
286
314
|
|
287
|
-
|
288
|
-
|
315
|
+
return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
|
316
|
+
},
|
317
|
+
|
318
|
+
/**
|
319
|
+
* execute search (requires search index to be loaded)
|
320
|
+
*/
|
321
|
+
_performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
|
322
|
+
const filenames = Search._index.filenames;
|
323
|
+
const docNames = Search._index.docnames;
|
324
|
+
const titles = Search._index.titles;
|
325
|
+
const allTitles = Search._index.alltitles;
|
326
|
+
const indexEntries = Search._index.indexentries;
|
327
|
+
|
328
|
+
// Collect multiple result groups to be sorted separately and then ordered.
|
329
|
+
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
|
330
|
+
const normalResults = [];
|
331
|
+
const nonMainIndexResults = [];
|
332
|
+
|
289
333
|
_removeChildren(document.getElementById("search-progress"));
|
290
334
|
|
291
|
-
const queryLower = query.toLowerCase();
|
335
|
+
const queryLower = query.toLowerCase().trim();
|
292
336
|
for (const [title, foundTitles] of Object.entries(allTitles)) {
|
293
|
-
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
|
337
|
+
if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
|
294
338
|
for (const [file, id] of foundTitles) {
|
295
|
-
|
296
|
-
|
339
|
+
const score = Math.round(Scorer.title * queryLower.length / title.length);
|
340
|
+
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
|
341
|
+
normalResults.push([
|
297
342
|
docNames[file],
|
298
343
|
titles[file] !== title ? `${titles[file]} > ${title}` : title,
|
299
344
|
id !== null ? "#" + id : "",
|
300
345
|
null,
|
301
|
-
score,
|
346
|
+
score + boost,
|
302
347
|
filenames[file],
|
348
|
+
SearchResultKind.title,
|
303
349
|
]);
|
304
350
|
}
|
305
351
|
}
|
@@ -308,46 +354,48 @@ const Search = {
|
|
308
354
|
// search for explicit entries in index directives
|
309
355
|
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
|
310
356
|
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
|
311
|
-
for (const [file, id] of foundEntries) {
|
312
|
-
|
313
|
-
|
357
|
+
for (const [file, id, isMain] of foundEntries) {
|
358
|
+
const score = Math.round(100 * queryLower.length / entry.length);
|
359
|
+
const result = [
|
314
360
|
docNames[file],
|
315
361
|
titles[file],
|
316
362
|
id ? "#" + id : "",
|
317
363
|
null,
|
318
364
|
score,
|
319
365
|
filenames[file],
|
320
|
-
|
366
|
+
SearchResultKind.index,
|
367
|
+
];
|
368
|
+
if (isMain) {
|
369
|
+
normalResults.push(result);
|
370
|
+
} else {
|
371
|
+
nonMainIndexResults.push(result);
|
372
|
+
}
|
321
373
|
}
|
322
374
|
}
|
323
375
|
}
|
324
376
|
|
325
377
|
// lookup as object
|
326
378
|
objectTerms.forEach((term) =>
|
327
|
-
|
379
|
+
normalResults.push(...Search.performObjectSearch(term, objectTerms))
|
328
380
|
);
|
329
381
|
|
330
382
|
// lookup as search terms in fulltext
|
331
|
-
|
383
|
+
normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
|
332
384
|
|
333
385
|
// let the scorer override scores with a custom scoring function
|
334
|
-
if (Scorer.score)
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
results
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
|
348
|
-
}
|
349
|
-
return leftScore > rightScore ? 1 : -1;
|
350
|
-
});
|
386
|
+
if (Scorer.score) {
|
387
|
+
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
|
388
|
+
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
|
389
|
+
}
|
390
|
+
|
391
|
+
// Sort each group of results by score and then alphabetically by name.
|
392
|
+
normalResults.sort(_orderResultsByScoreThenName);
|
393
|
+
nonMainIndexResults.sort(_orderResultsByScoreThenName);
|
394
|
+
|
395
|
+
// Combine the result groups in (reverse) order.
|
396
|
+
// Non-main index entries are typically arbitrary cross-references,
|
397
|
+
// so display them after other results.
|
398
|
+
let results = [...nonMainIndexResults, ...normalResults];
|
351
399
|
|
352
400
|
// remove duplicate search results
|
353
401
|
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
|
@@ -361,7 +409,12 @@ const Search = {
|
|
361
409
|
return acc;
|
362
410
|
}, []);
|
363
411
|
|
364
|
-
|
412
|
+
return results.reverse();
|
413
|
+
},
|
414
|
+
|
415
|
+
query: (query) => {
|
416
|
+
const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
|
417
|
+
const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
|
365
418
|
|
366
419
|
// for debugging
|
367
420
|
//Search.lastresults = results.slice(); // a copy
|
@@ -432,6 +485,7 @@ const Search = {
|
|
432
485
|
descr,
|
433
486
|
score,
|
434
487
|
filenames[match[0]],
|
488
|
+
SearchResultKind.object,
|
435
489
|
]);
|
436
490
|
};
|
437
491
|
Object.keys(objects).forEach((prefix) =>
|
@@ -466,14 +520,18 @@ const Search = {
|
|
466
520
|
// add support for partial matches
|
467
521
|
if (word.length > 2) {
|
468
522
|
const escapedWord = _escapeRegExp(word);
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
523
|
+
if (!terms.hasOwnProperty(word)) {
|
524
|
+
Object.keys(terms).forEach((term) => {
|
525
|
+
if (term.match(escapedWord))
|
526
|
+
arr.push({ files: terms[term], score: Scorer.partialTerm });
|
527
|
+
});
|
528
|
+
}
|
529
|
+
if (!titleTerms.hasOwnProperty(word)) {
|
530
|
+
Object.keys(titleTerms).forEach((term) => {
|
531
|
+
if (term.match(escapedWord))
|
532
|
+
arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
|
533
|
+
});
|
534
|
+
}
|
477
535
|
}
|
478
536
|
|
479
537
|
// no match but word was a required one
|
@@ -496,9 +554,8 @@ const Search = {
|
|
496
554
|
|
497
555
|
// create the mapping
|
498
556
|
files.forEach((file) => {
|
499
|
-
if (fileMap.has(file)
|
500
|
-
|
501
|
-
else fileMap.set(file, [word]);
|
557
|
+
if (!fileMap.has(file)) fileMap.set(file, [word]);
|
558
|
+
else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
|
502
559
|
});
|
503
560
|
});
|
504
561
|
|
@@ -539,6 +596,7 @@ const Search = {
|
|
539
596
|
null,
|
540
597
|
score,
|
541
598
|
filenames[file],
|
599
|
+
SearchResultKind.text,
|
542
600
|
]);
|
543
601
|
}
|
544
602
|
return results;
|
@@ -549,8 +607,8 @@ const Search = {
|
|
549
607
|
* search summary for a given text. keywords is a list
|
550
608
|
* of stemmed words.
|
551
609
|
*/
|
552
|
-
makeSearchSummary: (htmlText, keywords) => {
|
553
|
-
const text = Search.htmlToText(htmlText);
|
610
|
+
makeSearchSummary: (htmlText, keywords, anchor) => {
|
611
|
+
const text = Search.htmlToText(htmlText, anchor);
|
554
612
|
if (text === "") return null;
|
555
613
|
|
556
614
|
const textLower = text.toLowerCase();
|