quarchpy 2.2.9.dev3__py2.py3-none-any.whl → 2.2.9.dev5__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/__init__.py +1 -1
- quarchpy/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-310.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-310.pyc +0 -0
- quarchpy/_version.py +1 -1
- quarchpy/config_files/Cable_Modules/QTL1253-01 - Mini SAS Module Config v3.5 c1.3.qfg +196 -196
- quarchpy/config_files/Cable_Modules/QTL1253-01 - Mini SAS Module Config v4.000 c1.3.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL1253-02 - Mini SAS Module Config v3.5 c1.3.qfg +196 -196
- quarchpy/config_files/Cable_Modules/QTL1253-02 - Mini SAS Module Config v4.000 c1.3.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL1253-xx - Mini SAS Module Config v4.003 c1.6.qfg +197 -197
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v3.5 c1.2.qfg +188 -188
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v4.000 c1.2.qfg +190 -190
- quarchpy/config_files/Cable_Modules/QTL1271-xx - Ethernet Module Config v4.100 c1.3.qfg +189 -189
- quarchpy/config_files/Cable_Modules/QTL1292-xx - SFP+ Cable Pull Module Config v4.000 c1.1.qfg +154 -154
- quarchpy/config_files/Cable_Modules/QTL1309-04 - USB 3.0 Module Config v4.003 c1.2.qfg +187 -187
- quarchpy/config_files/Cable_Modules/QTL1309-xx - USB 3.0 Module Config v3.5 c1.1.qfg +187 -187
- quarchpy/config_files/Cable_Modules/QTL1309-xx - USB 3.0 Module Config v4.000 c1.1.qfg +188 -188
- quarchpy/config_files/Cable_Modules/QTL1366-xx - QSFP Cable Pull Module Config v4.000 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1383-xx - eSATAp Module Config v4.000 c1.3.qfg +190 -190
- quarchpy/config_files/Cable_Modules/QTL1521-02 - Mini SAS HD Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1521-03 - Mini SAS HD Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1521-05 - Mini SAS HD Module Config v4.005 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1521-05 - Mini SAS HD Module Config v4.007 c1.2.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1521-xx - Mini SAS HD Module Config v4.003 c1.5.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL1663-xx - Quad QSFP Cable Pull Module Config v4.000 c1.1.qfg +308 -308
- quarchpy/config_files/Cable_Modules/QTL1675-05 - Mini SAS HD Module w Triggering Config v4.007 c1.3.qfg +211 -211
- quarchpy/config_files/Cable_Modules/QTL1675-xx - Mini SAS HD Module w Triggering Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Cable_Modules/QTL1917-xx - Dual SFP+ Cable Pull Module Config v4.000 c1.1.qfg +174 -174
- quarchpy/config_files/Cable_Modules/QTL1971-01 - USB TypeC Module Config v4.000 c1.1.qfg +203 -203
- quarchpy/config_files/Cable_Modules/QTL1971-02 - USB TypeC Module Config v4.000 c1.1.qfg +203 -203
- quarchpy/config_files/Cable_Modules/QTL2022-xx - RJ-45 Cable Module Config v4.104 c1.3.QFG +189 -189
- quarchpy/config_files/Cable_Modules/QTL2058-xx - External PCIe Module Config v4.001 c1.1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2138-01 - SFP28 Cable Pull Module Config v4.000 c1.1.qfg +154 -154
- quarchpy/config_files/Cable_Modules/QTL2146-01 - Gen4 OCuLink Cable Module Config v4.001 c1.1.qfg +212 -212
- quarchpy/config_files/Cable_Modules/QTL2162-01 - 24G mini SAS HD Cable Break Module Config v4.000 c1.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2171-01 - QSFP28 Cable Module Config v4.000 c1.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL2171-02 - QSFP28 Cable Module Config v4.000 c1.qfg +198 -198
- quarchpy/config_files/Cable_Modules/QTL2341-01 - Gen4 External PCIe Cable Module v4.000.qfg +209 -209
- quarchpy/config_files/Cable_Modules/QTL2602-xx - Multiprotocol Link Breaker.qfg +178 -178
- quarchpy/config_files/Cable_Modules/QTL2834-xx - -48V DC Breaker Module v5.000 c1.0.qfg +177 -177
- quarchpy/config_files/Card_Modules/QTL1069-xx - SBB 2.0 Module Config v3.5 c1.1.qfg +366 -366
- quarchpy/config_files/Card_Modules/QTL1630-01 - PCIe Card Module v4.000 c1.0.qfg +280 -280
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.004 c1.2.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.005 c1.2.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL1630-02 - PCIe Card Module Config v4.100 c1.4.qfg +284 -284
- quarchpy/config_files/Card_Modules/QTL1630-04 - PCIe Card Module Config v4.001 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL1630-04 - PCIe Card Module Config v4.004 c1.2.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.004 c1.2.qfg +284 -284
- quarchpy/config_files/Card_Modules/QTL1688-01 - PCIe Card Module w Triggering Config v4.006 c1.3.qfg +285 -285
- quarchpy/config_files/Card_Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.001 c1.1.qfg +286 -286
- quarchpy/config_files/Card_Modules/QTL1688-03 - PCIe Card Module w Triggering Config v4.004 c1.2.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1688-04 - PCIe Card Module w Triggering Config v4.005 c1.5.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1688-05 - PCIe Card Module w Triggering Config v4.005 c1.qfg +288 -288
- quarchpy/config_files/Card_Modules/QTL1848-01 - PCIe Lite Card Module Config v4.000.qfg +122 -122
- quarchpy/config_files/Card_Modules/QTL1848-02 - PCIe Lite Card Module Config v4.000.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL1919-01 - PCIe x8 Card Module Config v4.001 c1.4.qfg +247 -247
- quarchpy/config_files/Card_Modules/QTL1920-01 - PCIe x8 Card Module w Triggering Config v4.000 c1.3.qfg +247 -247
- quarchpy/config_files/Card_Modules/QTL2019-xx - M.2 Horizontal Card Module Config v4.002 c1.1.qfg +219 -219
- quarchpy/config_files/Card_Modules/QTL2034-xx - M.2 M-Key Vertical Module Config v4.001 c1.1.qfg +221 -221
- quarchpy/config_files/Card_Modules/QTL2067-xx - PCIe SFF Module Config v4.000 c1.1.qfg +248 -248
- quarchpy/config_files/Card_Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.006 c1.4.qfg +256 -256
- quarchpy/config_files/Card_Modules/QTL2067-xx - Sanblaze 2 Drive Riser Card Config v4.007 c1.4.qfg +256 -256
- quarchpy/config_files/Card_Modules/QTL2073-01 - GEN3 PCIe Lite Card Module Config v4.001.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL2073-01 - PCIe Lite Card Module Config v4.000.qfg +134 -134
- quarchpy/config_files/Card_Modules/QTL2074-01 - GEN3 PCIe HS Card Module v4.005 c1.4.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2074-01 - PCIe Card Module Config CurrentLimit v4.004 c1.2.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.3.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2087-xx - PCIe GEN4 Card Module w Triggering Config v5.000 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2094-01 - Sanblaze Dualport Riser Card Config v4.001 c1.1.qfg +223 -223
- quarchpy/config_files/Card_Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.000 c1.1.qfg +287 -287
- quarchpy/config_files/Card_Modules/QTL2128-xx - PCIe GEN4 Card Module w Triggering Config v4.001 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2135-xx - PCIe GEN4 Card Module w Triggering Config - Inrush Limit v4.001 c1.4.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2161-01 - EDSFF x8 Module Config v4.000 c1.1.qfg +210 -210
- quarchpy/config_files/Card_Modules/QTL2171-xx - EDSFF x8 Module w Triggering Config 4.001 c1.1.qfg +213 -213
- quarchpy/config_files/Card_Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.000 c1.1.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2203-01 - Sanblaze Dualport Rack Riser Card Config v4.005 c1.5.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2272-01 - GEN4 EDSFF x8 Module Config v4.000 c1.1.qfg +211 -211
- quarchpy/config_files/Card_Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.000 c1.1.qfg +212 -212
- quarchpy/config_files/Card_Modules/QTL2282-01 - Sanblaze Singleport Rack Riser Card Config v4.002 c1.2.qfg +212 -212
- quarchpy/config_files/Card_Modules/QTL2318-01 - SANBlaze U.2 Rack Riser Card Config v4.000 c1.1.qfg +218 -218
- quarchpy/config_files/Card_Modules/QTL2322-03 - GEN4 M.2 M-Key Vertical Breaker Module Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2322-xx - GEN4 M.2 M-Key Vertical Breaker Module Config v5.000 c1.1.qfg +208 -208
- quarchpy/config_files/Card_Modules/QTL2334-xx - Gen4 EDSFF x4 Card Module Config v4.000 c1.1.qfg +187 -187
- quarchpy/config_files/Card_Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.000 c1.1.qfg +189 -189
- quarchpy/config_files/Card_Modules/QTL2351-xx - GEN4 EDSFF x4 Card Module +Triggering Config v4.001 c1.2.qfg +190 -190
- quarchpy/config_files/Card_Modules/QTL2357-xx - PCIe GEN5 Card Module Config v5.000 c1.1.qfg +282 -282
- quarchpy/config_files/Card_Modules/QTL2358-xx - PCIe GEN5 Card Module w Triggering Config v5.000 c1.1.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.000 c1.1.qfg +215 -215
- quarchpy/config_files/Card_Modules/QTL2378-xx - SANBlaze U.3 Rack Riser Card Config v4.001 c1.2.qfg +217 -217
- quarchpy/config_files/Card_Modules/QTL2395-01 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.000 c1.1.qfg +208 -208
- quarchpy/config_files/Card_Modules/QTL2395-02 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2395-03 - GEN4 M.2 M-Key Vertical Breaker Module w Triggering Config v5.001 c1.3.qfg +220 -220
- quarchpy/config_files/Card_Modules/QTL2396-xx - PCIe GEN5 Card Module w inrush Config v5.000 c1.1.qfg +282 -282
- quarchpy/config_files/Card_Modules/QTL2403-xx - Gen4 PCIe Lite Module Config v4.000.qfg +135 -135
- quarchpy/config_files/Card_Modules/QTL2515-xx - PCIe GEN4 Card Module w Triggering - Inrush Limit Config v4.001 c1.3.qfg +277 -277
- quarchpy/config_files/Card_Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.000.qfg +130 -130
- quarchpy/config_files/Card_Modules/QTL2652-xx - Gen5 PCIe Lite Module Config v4.003.qfg +137 -137
- quarchpy/config_files/Card_Modules/QTL2658-xx - Gen5 PCIe Lite Module w Inrush Config v4.000.qfg +130 -130
- quarchpy/config_files/Card_Modules/QTL2661-xx - GEN5 PCIe U.3 Breaker Config w Triggering v5.000 c1.1.qfg +229 -229
- quarchpy/config_files/Card_Modules/QTL2662-xx - GEN5 PCIe U.3 Breaker Config v5.000 c1.1.qfg +228 -228
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.000.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker Config v5.001 c1.2.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2686-xx - Gen5 EDSFF E3 x4 Breaker v5.000 c1.1.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker +Triggering Config v5.000.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering Config v5.001 c1.2.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2692-xx - Gen5 EDSFF E3 x4 Breaker w Triggering v5.000 c1.1.qfg +230 -230
- quarchpy/config_files/Card_Modules/QTL2766-xx - GEN4 EDSFF E1 x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2767-xx - GEN4 EDSFF E3 x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2768-xx - GEN4 EDSFF E3 2T x8 Breaker Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2776-xx - GEN4 EDSFF E1 x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2777-xx - GEN4 EDSFF E3 x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2778-xx - GEN4 EDSFF E3 2T x8 Breaker +Triggering Config v5.000.qfg +253 -253
- quarchpy/config_files/Card_Modules/QTL2798-xx - PCIe GEN5 Card Module w Triggering w Inrush Limit Config v5.000 c1.1.qfg +283 -283
- quarchpy/config_files/Card_Modules/QTL2804-xx - GEN5 MCIO x4 to U.2 Breaker Config v5.000 c1.1.qfg +234 -234
- quarchpy/config_files/Card_Modules/QTL2805-xx - GEN5 MCIO x4 to U.2 Breaker + Triggering Config v5.000 c1.1.qfg +234 -234
- quarchpy/config_files/Card_Modules/QTL2814-xx - GEN5 AIC to U.2 Breaker + Triggering Config v5.000 c1.1 .qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2892-xx - GEN5 EDSFF E1 x4 Breaker.qfg +233 -233
- quarchpy/config_files/Card_Modules/QTL2925-xx - GEN5 EDSFF E1 x4 Breaker +Triggering.qfg +233 -233
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v3.5 c1.5.qfg +198 -198
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v4.000 c1.5.qfg +200 -200
- quarchpy/config_files/Drive_Modules/QTL1177-xx - HS Module Config v4.006 c1.8.qfg +199 -199
- quarchpy/config_files/Drive_Modules/QTL1215-xx - Lite Module Config v3.50.qfg +118 -118
- quarchpy/config_files/Drive_Modules/QTL1215-xx - Lite Module Config v4.000.qfg +118 -118
- quarchpy/config_files/Drive_Modules/QTL1301-xx - HS Lite Module Config v3.50.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1301-xx - HS Lite Module Config v4.000.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1429-01 - EMC HS Lite Module Config v4.000.qfg +129 -129
- quarchpy/config_files/Drive_Modules/QTL1429-02 - EMC HS Lite Module Config v4.002.qfg +120 -120
- quarchpy/config_files/Drive_Modules/QTL1623-03 - 12G HS Lite Module Config v4.001.qfg +128 -128
- quarchpy/config_files/Drive_Modules/QTL1623-04 - 12G HS Lite Module Config v4.001.qfg +128 -128
- quarchpy/config_files/Drive_Modules/QTL1680-xx - SCA2 Lite Module Config v4.001.qfg +135 -135
- quarchpy/config_files/Drive_Modules/QTL1689-01 - 12G HS Module Config v4.001 c1.1.qfg +199 -199
- quarchpy/config_files/Drive_Modules/QTL1689-04 - 12G HS Module Config v4.002 c1.1.qfg +196 -196
- quarchpy/config_files/Drive_Modules/QTL1689-05 - 12G HS Module Config v4.002 c1.1.qfg +196 -196
- quarchpy/config_files/Drive_Modules/QTL1743-02 - PCIe SFF Module Config v4.003 c1.3.qfg +222 -222
- quarchpy/config_files/Drive_Modules/QTL1743-02 - PCIe SFF Module Config v4.006 c1.4.qfg +213 -213
- quarchpy/config_files/Drive_Modules/QTL1743-xx - PCIe SFF Module Config v4.000 c1.1.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL1753-xx - 12G Lite Module Config v4.000.qfg +116 -116
- quarchpy/config_files/Drive_Modules/QTL1921-01 - EMC 12G HS Lite Module Config v4.000.qfg +120 -120
- quarchpy/config_files/Drive_Modules/QTL2207-01 - GEN 4 PCIe U.2 Drive Module.qfg +217 -217
- quarchpy/config_files/Drive_Modules/QTL2207-02 - GEN 4 PCIe U.2 Drive Module v5.000.qfg +220 -220
- quarchpy/config_files/Drive_Modules/QTL2207-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module v4.001.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2207-xx - GEN 4 PCIe U.2 Drive Module.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2245-01 - GEN 4 PCIe U.3 HS Drive Module v4.000.qfg +223 -223
- quarchpy/config_files/Drive_Modules/QTL2245-xx - GEN 4 PCIe U.3 HS Drive Module.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2266-01 - GEN 4 PCIe SFF HS Drive Module Triggering.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2266-02 - GEN 4 PCIe SFF HS Drive Module Triggering v4.002.qfg +220 -220
- quarchpy/config_files/Drive_Modules/QTL2266-03 - GEN 4 PCIe SFF HS Drive Module Triggering v5.001.qfg +221 -221
- quarchpy/config_files/Drive_Modules/QTL2266-XX - GEN 4 PCIe SFF HS Drive Module Triggering.qfg +219 -219
- quarchpy/config_files/Drive_Modules/QTL2270-01 - GEN 4 PCIe U.3 HS Drive Module Triggering v4.000.qfg +225 -225
- quarchpy/config_files/Drive_Modules/QTL2270-xx - GEN 4 PCIe U.3 HS Drive Module Triggering.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2542-02 - 24G SAS Drive Breaker Module v5.001.qfg +194 -194
- quarchpy/config_files/Drive_Modules/QTL2542-xx - 24G SAS Drive Breaker v5.000 c1.1.qfg +194 -194
- quarchpy/config_files/Drive_Modules/QTL2543-xx - 24G SAS Drive Breaker +Triggering v5.000 c1.1.qfg +195 -195
- quarchpy/config_files/Drive_Modules/QTL2602-xx - Multiprotocol Link Breaker.qfg +178 -178
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.000.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.001.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.003.qfg +227 -227
- quarchpy/config_files/Drive_Modules/QTL2645-xx - Gen5 PCIe U.2 Drive Module v5.007.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.000.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.001.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module + Triggering v5.003.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2651-xx - Gen5 PCIe U.2 Drive Module v5.007.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2661-xx - Gen5 U.3 Drive Module + Triggering v5.000.qfg +229 -229
- quarchpy/config_files/Drive_Modules/QTL2662-xx - Gen5 PCIe U.3 Drive Module v5.000.qfg +228 -228
- quarchpy/config_files/Drive_Modules/QTL2757-xx - Gen5 SFF Lite Breaker Module Config v4.000.qfg +140 -140
- quarchpy/config_files/Drive_Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2804-xx - Gen5 MCIO to U.2 Breaker v5.001.qfg +234 -234
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.001.qfg +234 -234
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.002.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2805-xx - Gen5 MCIO to U.2 Breaker +Triggering v5.003.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2813-xx - Gen5 AIC to U.2 Breaker v5.001 c1.2.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2813-xx - Gen5 AIC to U.2 Breaker with Triggering v5.002 c1.3.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2814-xx - Gen5 AIC to U.2 Breaker with Triggering v5.001 c1.2.qfg +230 -230
- quarchpy/config_files/Drive_Modules/QTL2814-xx - Gen5 AIC to U.2 Breaker with Triggering v5.002 c1.3.qfg +253 -253
- quarchpy/config_files/Drive_Modules/QTL2892-xx - Gen5 EDSFF E1 x4 Breaker v5.001.qfg +233 -233
- quarchpy/config_files/Drive_Modules/Standard Drive Module Config v3.5 c1.1.qfg +171 -171
- quarchpy/config_files/Power_Margining/HD/QTL1944-xx - HD Power Module v5.000.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1944-xx - HD Power Module v5.003.qfg +124 -124
- quarchpy/config_files/Power_Margining/HD/QTL1995-xx - x6 HD Power Module v5.002.qfg +122 -122
- quarchpy/config_files/Power_Margining/HD/QTL1995-xx - x6 HD Power Module v5.003.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v5.002.qfg +122 -122
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v5.003.qfg +123 -123
- quarchpy/config_files/Power_Margining/HD/QTL1999-xx - Single HD Power Module v6.000.qfg +124 -124
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.101.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Power Margining Module v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1455-02 - Test Power Margining Module v4.004.qfg +73 -73
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.101.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1658-01 - Power Margining Module w. Triggering v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.105.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1727-01 - 3v3 Power Margining Module w. Triggering v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.105.qfg +78 -78
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.200.qfg +80 -80
- quarchpy/config_files/Power_Margining/PPM/QTL1730-01 - 3v3 Power Margining Module v4.201.qfg +82 -82
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.000.qfg +80 -80
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.200.qfg +81 -81
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.202.qfg +87 -87
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.210.qfg +88 -88
- quarchpy/config_files/Power_Margining/XLC/QTL1824-01 - Power Margining Module V2 - Triggering v4.211.qfg +121 -121
- quarchpy/config_files/Power_Margining/XLC/QTL1824-03 - Power Margining Module V2 - Triggering v4.213.qfg +121 -121
- quarchpy/config_files/Power_Margining/XLC/QTL1847-01 - Power Margining Module V2 v4.213.qfg +121 -121
- quarchpy/config_files/Switch_Modules/QTL1390-xx - 4-8 SATA MUX Module Config v4.002.qfg +186 -186
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.002.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.003.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1443-xx - 1-8 USB3 MUX Module Config v4.100.qfg +147 -147
- quarchpy/config_files/Switch_Modules/QTL1449-xx - 1-8 PCIe MUX Module Config v4.000.qfg +145 -145
- quarchpy/config_files/Switch_Modules/QTL1490-xx - SATA Keyed HS Module Config v4.003 c1.6.qfg +194 -194
- quarchpy/config_files/Switch_Modules/QTL1490-xx - SATA Keyed HS Module Config v4.006 c1.8.qfg +193 -193
- quarchpy/config_files/Switch_Modules/QTL1530-xx - 1-8 DP MUX Module Config v4.000.qfg +145 -145
- quarchpy/config_files/Switch_Modules/QTL1564-xx - 12 Port Mini SAS HD MUX Module Config v4.000.qfg +184 -184
- quarchpy/config_files/Switch_Modules/QTL1584-xx - 1-4 ExpressCard MUX Module Config v4.000.qfg +81 -81
- quarchpy/config_files/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-310.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/app.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/help.txt +17 -50
- quarchpy/connection_specific/QPS/win-amd64/qis/qis.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/usb4java-1.3.1.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps-command-reference.html +104 -112
- quarchpy/connection_specific/QPS/win-amd64/qps.jar +0 -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/scriptCommands.txt +4 -26
- quarchpy/connection_specific/QPS/win-amd64/whats-new.txt +12 -20
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-310.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-310.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py +226 -171
- quarchpy/connection_specific/connection_QPS.py +0 -2
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-310.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/java +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/jfr +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/jrunscript +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/jwebserver +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/keytool +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/bin/rmiregistry +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/jaxp.properties +26 -46
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/logging.properties +2 -2
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/management/management.properties +5 -4
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/net.properties +3 -1
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/security/java.policy +46 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/security/java.security +59 -67
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.base/asm.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.base/cldr.md +98 -89
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.base/icu.md +470 -45
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.base/public_suffix.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.base/unicode.md +92 -258
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.desktop/freetype.md +7 -7
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.desktop/giflib.md +10 -6
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.smartcardio/pcsclite.md +4 -4
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xalan.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md +10 -14
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ADDITIONAL_LICENSE_INFO +37 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ASSEMBLY_EXCEPTION +27 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/LICENSE +347 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ADDITIONAL_LICENSE_INFO +37 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ASSEMBLY_EXCEPTION +27 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/LICENSE +347 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.localedata/cldr.md +98 -89
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/classlist +224 -309
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/jexec +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/jfr/default.jfc +10 -36
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/jfr/profile.jfc +10 -35
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/jrt-fs.jar +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/jspawnhelper +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libawt.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libawt_headless.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libawt_xawt.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libdt_socket.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libextnet.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libfontmanager.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libfreetype.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libinstrument.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libj2gss.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libj2pcsc.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libj2pkcs11.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjaas.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjava.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjavajpeg.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjawt.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjdwp.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjimage.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjli.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjsig.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjsound.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libjsvml.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/liblcms.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libmanagement.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libmanagement_agent.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libmanagement_ext.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libmlib_image.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libnet.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libnio.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libprefs.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/librmi.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libsctp.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libsplashscreen.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libsyslookup.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libverify.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libzip.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/modules +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/psfontj2d.properties +1 -1
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/security/default.policy +235 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/security/public_suffix_list.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/server/libjsig.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/server/libjvm.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/tzdb.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/release +2 -2
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/java +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/jfr +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/jrunscript +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/jwebserver +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/keytool +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/bin/rmiregistry +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/jaxp.properties +26 -46
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/logging.properties +2 -2
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/management/management.properties +5 -4
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/net.properties +3 -1
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/security/java.policy +46 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/security/java.security +59 -67
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.base/asm.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.base/cldr.md +98 -89
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.base/icu.md +470 -45
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.base/public_suffix.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.base/unicode.md +92 -258
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.desktop/freetype.md +7 -7
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.desktop/giflib.md +10 -6
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.smartcardio/pcsclite.md +4 -4
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xalan.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md +10 -14
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ADDITIONAL_LICENSE_INFO +37 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ASSEMBLY_EXCEPTION +27 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/LICENSE +347 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ADDITIONAL_LICENSE_INFO +37 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ASSEMBLY_EXCEPTION +27 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/LICENSE +347 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/jdk.localedata/cldr.md +98 -89
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/classlist +223 -315
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/jfr/default.jfc +10 -36
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/jfr/profile.jfc +10 -35
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/jrt-fs.jar +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/jspawnhelper +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libawt.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libawt_lwawt.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libdt_socket.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libextnet.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libfontmanager.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libfreetype.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libinstrument.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libj2gss.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libj2pcsc.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libj2pkcs11.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjaas.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjava.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjavajpeg.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjawt.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjdwp.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjimage.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjli.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjsig.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libjsound.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/liblcms.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libmanagement.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libmanagement_agent.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libmanagement_ext.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libmlib_image.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libnet.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libnio.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libosx.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libosxapp.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libosxkrb5.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libosxsecurity.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libosxui.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libprefs.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/librmi.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libsplashscreen.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libsyslookup.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libverify.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/libzip.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/modules +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/psfontj2d.properties +1 -1
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/security/default.policy +235 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/security/public_suffix_list.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/server/libjsig.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/server/libjvm.dylib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/shaders.metallib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/lib/tzdb.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/release +2 -2
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-console-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-datetime-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-debug-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-errorhandling-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-file-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-file-l1-2-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-file-l2-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-handle-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-heap-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-interlocked-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-libraryloader-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-localization-l1-2-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-memory-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-namedpipe-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-processenvironment-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-processthreads-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-processthreads-l1-1-1.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-profile-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-rtlsupport-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-string-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-synch-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-synch-l1-2-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-sysinfo-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-timezone-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-core-util-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-conio-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-convert-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-environment-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-filesystem-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-heap-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-locale-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-math-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-multibyte-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-private-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-process-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-runtime-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-stdio-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-string-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-time-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/api-ms-win-crt-utility-l1-1-0.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/awt.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/dt_socket.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/extnet.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/fontmanager.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/freetype.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/instrument.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/j2gss.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/j2pcsc.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/j2pkcs11.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jaas.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jabswitch.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jaccessinspector.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jaccesswalker.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/java.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/java.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/javaaccessbridge.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/javajpeg.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/javaw.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jawt.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jdwp.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jfr.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jimage.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jli.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jrunscript.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jsound.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jsvml.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/jwebserver.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/keytool.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/kinit.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/klist.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/ktab.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/lcms.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/management.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/management_agent.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/management_ext.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/mlib_image.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/msvcp140.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/net.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/nio.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/prefs.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/rmi.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/rmiregistry.exe +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/server/jvm.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/splashscreen.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/sspi_bridge.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/syslookup.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/ucrtbase.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/vcruntime140.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/vcruntime140_1.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/verify.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/w2k_lsa_auth.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/windowsaccessbridge-64.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/bin/zip.dll +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/jaxp.properties +26 -46
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/logging.properties +2 -2
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/management/management.properties +5 -4
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/net.properties +3 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/security/java.policy +46 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/security/java.security +59 -67
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.base/asm.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.base/cldr.md +98 -89
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.base/icu.md +470 -45
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.base/public_suffix.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.base/unicode.md +92 -258
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.desktop/freetype.md +7 -7
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.desktop/giflib.md +10 -6
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xalan.md +1 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.crypto.cryptoki/pkcs11cryptotoken.md +10 -14
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ADDITIONAL_LICENSE_INFO +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/ASSEMBLY_EXCEPTION +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler/LICENSE +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ADDITIONAL_LICENSE_INFO +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/ASSEMBLY_EXCEPTION +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/jdk.internal.vm.compiler.management/LICENSE +1 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/classlist +222 -313
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/jawt.lib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/jfr/default.jfc +10 -36
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/jfr/profile.jfc +10 -35
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/jrt-fs.jar +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/jvm.lib +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/modules +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/psfontj2d.properties +1 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/security/default.policy +251 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/security/public_suffix_list.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/tzdb.dat +0 -0
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/lib/tzmappings +146 -1
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/release +2 -2
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialposix.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_linux.cpython-310.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_posix.cpython-310.pyc +0 -0
- quarchpy/connection_specific/usb_libs/usb1.py +2360 -2360
- quarchpy/debug/SystemTest.py +34 -7
- quarchpy/debug/__pycache__/SystemTest.cpython-310.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-310.pyc +0 -0
- quarchpy/debug/module_debug.py +25 -25
- quarchpy/debug/simple_terminal.py +23 -18
- quarchpy/device/__init__.py +4 -4
- quarchpy/device/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-310.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-310.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-310.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-310.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-310.pyc +0 -0
- quarchpy/device/device.py +1237 -441
- quarchpy/device/quarchArray.py +2 -2
- quarchpy/device/quarchPPM.py +9 -9
- quarchpy/device/scanDevices.py +1 -1
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-310.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-310.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-310.pyc +0 -0
- quarchpy/docs/CHANGES.rst +443 -443
- quarchpy/docs/Makefile +20 -20
- quarchpy/docs/_build/html/.buildinfo +4 -4
- quarchpy/docs/_build/html/CHANGES.html +660 -660
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +439 -439
- quarchpy/docs/_build/html/_sources/index.rst.txt +23 -23
- quarchpy/docs/_build/html/_sources/readme.rst.txt +41 -41
- quarchpy/docs/_build/html/_sources/source/modules.rst.txt +7 -7
- quarchpy/docs/_build/html/_sources/source/quarchpy.calibration.rst.txt +78 -78
- quarchpy/docs/_build/html/_sources/source/quarchpy.config_files.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.connection_specific.rst.txt +76 -76
- quarchpy/docs/_build/html/_sources/source/quarchpy.debug.rst.txt +38 -38
- quarchpy/docs/_build/html/_sources/source/quarchpy.device.rst.txt +54 -54
- quarchpy/docs/_build/html/_sources/source/quarchpy.disk_test.rst.txt +126 -126
- quarchpy/docs/_build/html/_sources/source/quarchpy.fio.rst.txt +30 -30
- quarchpy/docs/_build/html/_sources/source/quarchpy.iometer.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.qis.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.qps.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.rst.txt +50 -50
- quarchpy/docs/_build/html/_sources/source/quarchpy.user_interface.rst.txt +22 -22
- quarchpy/docs/_build/html/_sources/source/quarchpy.utilities.rst.txt +22 -22
- quarchpy/docs/_build/html/_static/alabaster.css +662 -662
- quarchpy/docs/_build/html/_static/basic.css +913 -913
- quarchpy/docs/_build/html/_static/custom.css +1 -1
- quarchpy/docs/_build/html/_static/doctools.js +149 -149
- quarchpy/docs/_build/html/_static/documentation_options.js +12 -12
- quarchpy/docs/_build/html/_static/jquery-3.4.1.js +10598 -10598
- quarchpy/docs/_build/html/_static/jquery.js +2 -2
- quarchpy/docs/_build/html/_static/language_data.js +192 -192
- quarchpy/docs/_build/html/_static/pygments.css +83 -83
- quarchpy/docs/_build/html/_static/searchtools.js +632 -632
- quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -154
- quarchpy/docs/_build/html/_static/underscore-1.3.1.js +999 -999
- quarchpy/docs/_build/html/_static/underscore.js +5 -5
- quarchpy/docs/_build/html/genindex.html +1626 -1626
- quarchpy/docs/_build/html/index.html +214 -214
- quarchpy/docs/_build/html/py-modindex.html +300 -300
- quarchpy/docs/_build/html/readme.html +137 -137
- quarchpy/docs/_build/html/search.html +123 -123
- quarchpy/docs/_build/html/source/changelog.html +739 -739
- quarchpy/docs/_build/html/source/licenses.html +181 -181
- quarchpy/docs/_build/html/source/modules.html +222 -222
- quarchpy/docs/_build/html/source/quarchpy.calibration.html +147 -147
- quarchpy/docs/_build/html/source/quarchpy.config_files.html +136 -136
- quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +729 -729
- quarchpy/docs/_build/html/source/quarchpy.debug.html +251 -251
- quarchpy/docs/_build/html/source/quarchpy.device.html +1165 -1165
- quarchpy/docs/_build/html/source/quarchpy.disk_test.html +220 -220
- quarchpy/docs/_build/html/source/quarchpy.fio.html +218 -218
- quarchpy/docs/_build/html/source/quarchpy.html +715 -715
- quarchpy/docs/_build/html/source/quarchpy.iometer.html +271 -271
- quarchpy/docs/_build/html/source/quarchpy.qis.html +640 -640
- quarchpy/docs/_build/html/source/quarchpy.qps.html +186 -186
- quarchpy/docs/_build/html/source/quarchpy.user_interface.html +278 -278
- quarchpy/docs/_build/html/source/quarchpy.utilities.html +211 -211
- quarchpy/docs/_build/html/source/readme.html +147 -147
- quarchpy/docs/conf.py +56 -56
- quarchpy/docs/index.rst +23 -23
- quarchpy/docs/make.bat +35 -35
- quarchpy/docs/readme.rst +41 -41
- quarchpy/docs/source/modules.rst +7 -7
- quarchpy/docs/source/quarchpy.calibration.rst +78 -78
- quarchpy/docs/source/quarchpy.config_files.rst +22 -22
- quarchpy/docs/source/quarchpy.connection_specific.rst +76 -76
- quarchpy/docs/source/quarchpy.debug.rst +38 -38
- quarchpy/docs/source/quarchpy.device.rst +54 -54
- quarchpy/docs/source/quarchpy.disk_test.rst +126 -126
- quarchpy/docs/source/quarchpy.fio.rst +30 -30
- quarchpy/docs/source/quarchpy.iometer.rst +22 -22
- quarchpy/docs/source/quarchpy.qis.rst +22 -22
- quarchpy/docs/source/quarchpy.qps.rst +22 -22
- quarchpy/docs/source/quarchpy.rst +50 -50
- quarchpy/docs/source/quarchpy.user_interface.rst +22 -22
- quarchpy/docs/source/quarchpy.utilities.rst +22 -22
- quarchpy/fio/HIDEtest_performance_class.py +533 -533
- quarchpy/fio/__pycache__/FIO_interface.cpython-310.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/iometer/__pycache__/{gen_iometer_template.cpython-313.pyc → gen_iometer_template.cpython-310.pyc} +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-310.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-310.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-310.pyc +0 -0
- quarchpy/qis/qisFuncs.py +1 -1
- quarchpy/qps/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-310.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-310.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-310.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-310.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-310.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-310.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-310.pyc +0 -0
- {quarchpy-2.2.9.dev3.dist-info → quarchpy-2.2.9.dev5.dist-info}/METADATA +466 -466
- {quarchpy-2.2.9.dev3.dist-info → quarchpy-2.2.9.dev5.dist-info}/RECORD +655 -753
- {quarchpy-2.2.9.dev3.dist-info → quarchpy-2.2.9.dev5.dist-info}/WHEEL +1 -1
- quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-313.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-313.pyc +0 -0
- quarchpy/__pycache__/run.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-313.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/Material-Icons-license.txt +0 -51
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/argparse4j-LICENSE.txt +0 -23
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/com.sun.istack-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/commons-io-LICENSE-2.0.txt +0 -202
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/controlsfx-license.txt +0 -29
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/jakarta.activation-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/jakarta.xml.bind-api-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/netty-LICENSE.txt +0 -202
- quarchpy/connection_specific/QPS/win-amd64/3rdPartyLicenses/netty-NOTICE.txt +0 -239
- quarchpy/connection_specific/QPS/win-amd64/InstallType.dat +0 -1
- quarchpy/connection_specific/QPS/win-amd64/app.properties +0 -6
- quarchpy/connection_specific/QPS/win-amd64/license.txt +0 -1
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/com.sun.istack-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/dorkbox-LICENSE.Apachev2 +0 -218
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jSerialComm-LICENSE-APACHE-2.0 +0 -202
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jSerialComm-LICENSE-LGPL-3.0 +0 -165
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jakarta.activation-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jakarta.xml.bind-api-license.html +0 -59
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/javassist-License.html +0 -381
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jmdns-LICENSE.txt +0 -202
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/jna-AL2.0 +0 -177
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/kotlin-stdlib-LICENSE-2.0.txt +0 -202
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/netty-LICENSE.txt +0 -202
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/netty-NOTICE.txt +0 -239
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/slf4j-LICENSE.txt +0 -24
- quarchpy/connection_specific/QPS/win-amd64/qis/3rdPartyLicenses/usb4java-LICENSE.md +0 -20
- quarchpy/connection_specific/QPS/win-amd64/qis/license.txt +0 -1
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/CInterface-2.5.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/TorridonCommon-1.3.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/commons-io-2.18.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/qutils-1.0.jar +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/conf/jaxp-strict.properties.template +0 -123
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/schema10part1.md +0 -51
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/schema10part2.md +0 -50
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xhtml10.md +0 -57
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xhtml10schema.md +0 -150
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xhtml11.md +0 -68
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xhtml11schema.md +0 -60
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xmlspec.md +0 -63
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/java.xml/xmlxsd.md +0 -43
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/legal/jdk.incubator.vector/sleef.md +0 -439
- quarchpy/connection_specific/jdk_j21_jres/lin_amd64_jdk_21_jre/lib/libsimdsort.so +0 -0
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/conf/jaxp-strict.properties.template +0 -123
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/schema10part1.md +0 -51
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/schema10part2.md +0 -50
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xhtml10.md +0 -57
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xhtml10schema.md +0 -150
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xhtml11.md +0 -68
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xhtml11schema.md +0 -60
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xmlspec.md +0 -63
- quarchpy/connection_specific/jdk_j21_jres/mac_amd64_jdk_21_jre/legal/java.xml/xmlxsd.md +0 -43
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/conf/jaxp-strict.properties.template +0 -123
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/schema10part1.md +0 -51
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/schema10part2.md +0 -50
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xhtml10.md +0 -57
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xhtml10schema.md +0 -150
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xhtml11.md +0 -68
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xhtml11schema.md +0 -60
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xmlspec.md +0 -63
- quarchpy/connection_specific/jdk_j21_jres/win_amd64_jdk_21_jre/legal/java.xml/xmlxsd.md +0 -43
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.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-311.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-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-313.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-313.pyc +0 -0
- /quarchpy/connection_specific/QPS/win-amd64/DeviceConfig/{QTL1995-02.xml → QTL1995-02.XML} +0 -0
- /quarchpy/connection_specific/QPS/win-amd64/DeviceConfig/{QTL1999-02.xml → QTL1999-02.XML} +0 -0
- /quarchpy/connection_specific/QPS/win-amd64/DeviceConfig/{QTL2312-01.xml → QTL2312-01.XML} +0 -0
- {quarchpy-2.2.9.dev3.dist-info → quarchpy-2.2.9.dev5.dist-info}/top_level.txt +0 -0
@@ -1,14 +1,9 @@
|
|
1
|
-
import csv
|
2
1
|
import socket
|
3
2
|
import re
|
4
|
-
import
|
5
|
-
import sys
|
6
|
-
import os
|
3
|
+
import gzip
|
7
4
|
import datetime
|
8
5
|
import select
|
9
6
|
import threading
|
10
|
-
import math
|
11
|
-
import logging
|
12
7
|
import struct
|
13
8
|
from io import StringIO
|
14
9
|
from quarchpy.user_interface import *
|
@@ -87,7 +82,7 @@ class QisInterface:
|
|
87
82
|
logging.error('Is backend running and host accessible?')
|
88
83
|
self.deviceDict['QIS'][0:3] = [True, 'Disconnected', 'Unable to connect to QIS']
|
89
84
|
raise e
|
90
|
-
|
85
|
+
|
91
86
|
# Tries to close the socket to specified host and port.
|
92
87
|
def disconnect(self):
|
93
88
|
res = 'Disconnecting from backend'
|
@@ -104,17 +99,20 @@ class QisInterface:
|
|
104
99
|
return res
|
105
100
|
|
106
101
|
def closeConnection(self, sock=None, conString=None):
|
107
|
-
if sock
|
102
|
+
if sock is None:
|
108
103
|
sock = self.sock
|
109
104
|
if conString is None:
|
110
|
-
|
105
|
+
cmd = "close"
|
111
106
|
else:
|
112
|
-
cmd =conString+" close"
|
113
|
-
|
114
|
-
|
115
|
-
|
107
|
+
cmd = conString + " close"
|
108
|
+
try:
|
109
|
+
response = self.sendAndReceiveText(sock, cmd)
|
110
|
+
return response
|
111
|
+
except ConnectionResetError:
|
112
|
+
logging.warning('Unable to close connection to QIS, QIS may be already closed')
|
113
|
+
return None
|
116
114
|
|
117
|
-
def startStream(self, module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator, streamDuration
|
115
|
+
def startStream(self, module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator, streamDuration=None, inMemoryData=None, outputFileHandle=None, useGzip=None):
|
118
116
|
self.StreamRunSentSemaphore.acquire()
|
119
117
|
self.deviceDictSetup('QIS')
|
120
118
|
i = self.deviceMulti(module)
|
@@ -124,7 +122,7 @@ class QisInterface:
|
|
124
122
|
|
125
123
|
# Create the thread
|
126
124
|
t1 = threading.Thread(target=self.startStreamThread, name=module,
|
127
|
-
args=(module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator, streamDuration, inMemoryData))
|
125
|
+
args=(module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator, streamDuration, inMemoryData, outputFileHandle, useGzip))
|
128
126
|
# Start the thread
|
129
127
|
t1.start()
|
130
128
|
|
@@ -178,7 +176,8 @@ class QisInterface:
|
|
178
176
|
running = False
|
179
177
|
time.sleep(0.1)
|
180
178
|
|
181
|
-
def startStreamThread(self, module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator,
|
179
|
+
def startStreamThread(self, module, fileName, fileMaxMB, streamName, streamAverage, releaseOnData, separator,
|
180
|
+
streamDuration=None, inMemoryData=None, output_file_handle=None, use_gzip=False):
|
182
181
|
# This is the function that is run when t1 is created. It is run in a seperate thread from
|
183
182
|
# the main application so streaming can happen without blocking the main application from
|
184
183
|
# doing other things. Within this function/thread you have to be very careful not to try
|
@@ -187,20 +186,40 @@ class QisInterface:
|
|
187
186
|
# (which some of the comms with module functions will use by default).
|
188
187
|
|
189
188
|
f = None
|
190
|
-
#
|
191
|
-
if inMemoryData
|
189
|
+
file_opened_by_function = False # True if this function opens the file
|
190
|
+
is_in_memory_stream = False # True if using inMemoryData (StringIO)
|
191
|
+
|
192
|
+
# Priority: 1. output_file_handle, 2. inMemoryData, 3. open new file
|
193
|
+
if output_file_handle is not None:
|
194
|
+
f = output_file_handle
|
195
|
+
# Caller is responsible for the handle's mode (e.g., text/binary) and type.
|
196
|
+
elif inMemoryData is not None:
|
192
197
|
if not isinstance(inMemoryData, StringIO):
|
193
|
-
raise
|
198
|
+
raise TypeError("Error! The parameter 'inMemoryData' must be of type StringIO.")
|
194
199
|
f = inMemoryData
|
200
|
+
is_in_memory_stream = True
|
195
201
|
else:
|
196
|
-
|
202
|
+
# No external handle or in-memory buffer, so open a file.
|
203
|
+
if not fileName: # fileName is mandatory if we are to open a file.
|
204
|
+
raise ValueError("fileName must be provided if output_file_handle and inMemoryData are None.")
|
205
|
+
file_opened_by_function = True
|
206
|
+
if use_gzip:
|
207
|
+
# Open in text mode ('wt'). Encoding 'utf-8' is a good default.
|
208
|
+
# gzip.open in text mode handles newline conversions.
|
209
|
+
f = gzip.open(fileName, 'wt', encoding='utf-8')
|
210
|
+
else:
|
211
|
+
# Open in text mode ('w').
|
212
|
+
# newline='' ensures that '\n' is written as '\n' on all platforms.
|
213
|
+
f = open(fileName, 'w', encoding='utf-8', newline='')
|
197
214
|
|
215
|
+
# This variable was declared but seemed unused before its first assignment.
|
198
216
|
stripes = ['Empty Header']
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
217
|
+
|
218
|
+
# Send stream command so module starts streaming data into the backends buffer
|
219
|
+
streamRes = self.sendAndReceiveCmd(self.streamSock, 'rec stream', device=module, betweenCommandDelay=0)
|
220
|
+
# printText(streamRes) # Assuming printText is a custom logging/debug function
|
221
|
+
if 'rec stream : OK' in streamRes:
|
222
|
+
if releaseOnData is False:
|
204
223
|
self.StreamRunSentSemaphore.release()
|
205
224
|
self.stripesEvent.clear()
|
206
225
|
self.deviceDict[module][0:3] = [False, 'Running', 'Stream Running']
|
@@ -208,36 +227,43 @@ class QisInterface:
|
|
208
227
|
self.StreamRunSentSemaphore.release()
|
209
228
|
self.stripesEvent.clear()
|
210
229
|
self.deviceDict[module][0:3] = [True, 'Stopped', module + " couldn't start because " + streamRes]
|
230
|
+
if file_opened_by_function and f:
|
231
|
+
try:
|
232
|
+
f.close()
|
233
|
+
except Exception as e_close:
|
234
|
+
logging.error(f"Error closing file {fileName} on stream start failure: {e_close}")
|
211
235
|
return
|
212
236
|
|
213
237
|
baseSamplePeriod = self.streamHeaderAverage(device=module, sock=self.streamSock)
|
214
|
-
count=0
|
215
|
-
maxTries=10
|
238
|
+
count = 0
|
239
|
+
maxTries = 10
|
216
240
|
while 'Header Not Available' in baseSamplePeriod:
|
217
241
|
baseSamplePeriod = self.streamHeaderAverage(device=module, sock=self.streamSock)
|
218
242
|
time.sleep(0.1)
|
219
243
|
count += 1
|
220
244
|
if count > maxTries:
|
221
245
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'Header not available']
|
222
|
-
|
223
|
-
|
224
|
-
|
246
|
+
if file_opened_by_function and f:
|
247
|
+
try:
|
248
|
+
f.close()
|
249
|
+
except Exception as e_close:
|
250
|
+
logging.error(f"Error closing file {fileName} on header failure: {e_close}")
|
251
|
+
return # Changed from exit() for cleaner thread termination
|
252
|
+
|
253
|
+
version = self.streamHeaderVersion(device=module, sock=self.streamSock) # version seems unused
|
254
|
+
timeStampHeader = datetime.datetime.now().strftime("%H:%M:%S:%f %d/%m/%y") # timeStampHeader seems unused
|
225
255
|
formatHeader = self.streamHeaderFormat(device=module, sock=self.streamSock)
|
226
256
|
formatHeader = formatHeader.replace(", ", separator)
|
227
257
|
f.write(formatHeader + '\n')
|
228
258
|
|
229
259
|
numStripesPerRead = 4096
|
230
260
|
maxFileExceeded = False
|
231
|
-
openAttempts = 0
|
261
|
+
openAttempts = 0 # Used in except IOError block
|
232
262
|
leftover = 0
|
233
263
|
remainingStripes = []
|
234
264
|
streamOverrun = False
|
235
265
|
streamComplete = False
|
236
266
|
|
237
|
-
# baseSamplePeriod is a string in the form [int][unit]
|
238
|
-
# where the unit can be S,mS,uS,nS
|
239
|
-
# we need to convert it to a float number of seconds
|
240
|
-
# and we also derive the baseSampleUnits in string and numeric form
|
241
267
|
if 'ns' in baseSamplePeriod.lower():
|
242
268
|
baseSampleUnitText = 'ns'
|
243
269
|
baseSampleUnitExponent = -9
|
@@ -247,178 +273,207 @@ class QisInterface:
|
|
247
273
|
elif 'ms' in baseSamplePeriod.lower():
|
248
274
|
baseSampleUnitText = 'ms'
|
249
275
|
baseSampleUnitExponent = -3
|
250
|
-
elif 'S' in baseSamplePeriod.lower():
|
276
|
+
elif 'S' in baseSamplePeriod.lower(): # Original was 'S', assuming it means 's'
|
251
277
|
baseSampleUnitText = 's'
|
252
278
|
baseSampleUnitExponent = 0
|
253
279
|
else:
|
254
|
-
raise
|
280
|
+
# Clean up and raise error if baseSamplePeriod is undecodable
|
281
|
+
if file_opened_by_function and f:
|
282
|
+
try:
|
283
|
+
f.close()
|
284
|
+
except Exception as e_close:
|
285
|
+
logging.error(f"Error closing file {fileName} due to ValueError: {e_close}")
|
286
|
+
raise ValueError(f"couldn't decode samplePeriod: {baseSamplePeriod}")
|
255
287
|
|
256
|
-
baseSamplePeriodS = int(re.search(r'^\d*\.?\d*', baseSamplePeriod).group())*(10**baseSampleUnitExponent)
|
288
|
+
baseSamplePeriodS = int(re.search(r'^\d*\.?\d*', baseSamplePeriod).group()) * (10 ** baseSampleUnitExponent)
|
289
|
+
|
290
|
+
# The following re-opening of the file is removed as f is already open in 'w' or 'wt' mode
|
291
|
+
# and subsequent writes will append.
|
292
|
+
# if inMemoryData is None:
|
293
|
+
# f = open(fileName, 'a', newline='')
|
257
294
|
|
258
|
-
# # TODO: MD Thinks this implements software averaging, is unused and now performed in QIS
|
259
|
-
# if streamAverage != None:
|
260
|
-
# #Matt converting streamAveraging into number
|
261
|
-
# streamAverage = self.convertStreamAverage(streamAverage)
|
262
|
-
# stripesPerAverage = float(streamAverage) / (float(baseSamplePeriodS) * 4e-6)
|
263
|
-
if inMemoryData is None:
|
264
|
-
f = open(fileName, 'a', newline='') #changed from ab to a as all data should be in string format now regardless of py2 or py3
|
265
295
|
isRun = True
|
266
296
|
while isRun:
|
267
297
|
try:
|
268
|
-
# Until the event threadRunEvent is set externally to this thread,
|
269
|
-
# loop and read from the stream
|
270
298
|
i = self.deviceMulti(module)
|
271
299
|
while self.stopFlagList[i] and (not streamOverrun) and (not streamComplete):
|
272
|
-
#now = time.time()
|
273
300
|
streamOverrun, removeChar, newStripes = self.streamGetStripesText(self.streamSock, module, numStripesPerRead)
|
274
|
-
newStripes = newStripes.replace(' ', separator)
|
301
|
+
newStripes = newStripes.replace(' ', separator) # Replace spaces globally first
|
275
302
|
if streamOverrun:
|
276
303
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'Device buffer overrun']
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
304
|
+
|
305
|
+
isEmpty = (removeChar == -6 and len(newStripes) == 6)
|
306
|
+
|
307
|
+
if not isEmpty:
|
308
|
+
current_file_mb = 0.0
|
309
|
+
if is_in_memory_stream:
|
310
|
+
current_file_mb = f.tell() / 1048576.0
|
311
|
+
elif fileName: # For file-based output (opened here or external handle with known fileName)
|
312
|
+
try:
|
313
|
+
# os.stat reflects the size on disk. For buffered writes (incl. gzip),
|
314
|
+
# this might not be the exact current unwritten buffer size + disk size
|
315
|
+
# without a flush, but it's what the original code relied on.
|
316
|
+
statInfo = os.stat(fileName)
|
317
|
+
current_file_mb = statInfo.st_size / 1048576.0
|
318
|
+
except FileNotFoundError:
|
319
|
+
current_file_mb = 0.0 # File might not exist yet or fileName is not locatable
|
320
|
+
except Exception as e_stat:
|
321
|
+
logging.warning(f"Could not get file size for {fileName}: {e_stat}")
|
322
|
+
current_file_mb = 0.0 # Default to small size on error
|
287
323
|
else:
|
288
|
-
|
324
|
+
# output_file_handle was given, but fileName was None. Cannot check disk size.
|
325
|
+
# Assume it's okay or managed by caller. fileMaxMB check effectively bypassed.
|
326
|
+
current_file_mb = 0.0
|
327
|
+
|
289
328
|
try:
|
290
|
-
int
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
329
|
+
# Ensure fileMaxMB can be converted to int. If not, skip file size check for this iteration.
|
330
|
+
max_mb_val = int(fileMaxMB)
|
331
|
+
except (ValueError, TypeError):
|
332
|
+
logging.warning(f"Invalid fileMaxMB value: {fileMaxMB}. Skipping size check for this iteration.")
|
333
|
+
max_mb_val = float('inf') # Effectively disable check if invalid
|
334
|
+
|
335
|
+
if current_file_mb < max_mb_val:
|
336
|
+
if releaseOnData: # Note: Original was `releaseOnData == True`
|
295
337
|
self.StreamRunSentSemaphore.release()
|
296
338
|
self.stripesEvent.clear()
|
297
|
-
releaseOnData = False
|
298
|
-
|
299
|
-
|
300
|
-
leftover, remainingStripes = self.averageStripes(leftover, stripesPerAverage,
|
339
|
+
releaseOnData = False # Prevent re-releasing
|
340
|
+
if streamAverage is not None:
|
341
|
+
# Assuming self.averageStripes handles writing to f
|
342
|
+
leftover, remainingStripes = self.averageStripes(leftover, stripesPerAverage,
|
343
|
+
newStripes[:removeChar], f,
|
344
|
+
remainingStripes)
|
301
345
|
else:
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
lastLine = newStripes.splitlines()[-3] # the last data line is followed by 'eof' and '>'
|
306
|
-
lastTime = lastLine.split(separator)[0] # get the first (time) entry
|
307
|
-
|
308
|
-
# if the last entry is still within the required stream length, write the whole lot
|
309
|
-
if int(lastTime) < int(streamDuration/(10**baseSampleUnitExponent)): # < rather than <= because we start at 0
|
310
|
-
newStripes = newStripes.replace(' ', separator)
|
311
|
-
f.write(newStripes[:removeChar])
|
346
|
+
if streamDuration is not None:
|
347
|
+
lastLine = newStripes.splitlines()[-3] # the last data line is followed by 'eof' and '>'
|
348
|
+
lastTime = lastLine.split(separator)[0]
|
312
349
|
|
313
|
-
|
350
|
+
if int(lastTime) < int(streamDuration / (10 ** baseSampleUnitExponent)):
|
351
|
+
# newStripes was already globally space-replaced.
|
352
|
+
f.write(newStripes[:removeChar])
|
314
353
|
else:
|
315
|
-
for thisLine in newStripes.splitlines()[:-2]:
|
316
|
-
|
317
|
-
if int(
|
354
|
+
for thisLine in newStripes.splitlines()[:-2]: # Process lines before 'eof' and '>'
|
355
|
+
thisTimeStr = thisLine.split(separator)[0]
|
356
|
+
if int(thisTimeStr) < int(streamDuration / (10 ** baseSampleUnitExponent)):
|
318
357
|
f.write(thisLine + '\r\n') # Put the CR back on the end
|
319
358
|
else:
|
320
359
|
streamComplete = True
|
321
360
|
break
|
322
361
|
else:
|
323
|
-
newStripes
|
362
|
+
# newStripes was already globally space-replaced.
|
324
363
|
f.write(newStripes[:removeChar])
|
325
|
-
|
326
364
|
else:
|
327
365
|
maxFileExceeded = True
|
328
|
-
#printText('QisInterface file size exceeded in loop 1- breaking')
|
329
366
|
maxFileStatus = self.streamBufferStatus(device=module, sock=self.streamSock)
|
330
367
|
f.write('Warning: Max file size exceeded before end of stream.\n')
|
331
|
-
f.write(
|
368
|
+
f.write(
|
369
|
+
'Unrecorded stripes in buffer when file full: ' + maxFileStatus + '.\n') # Added newline for clarity
|
332
370
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'User defined max filesize reached']
|
333
|
-
break
|
334
|
-
else:
|
335
|
-
# there's no stripes in the buffer - it's not filling up fast -
|
336
|
-
# sleeps so we don't spam qis with requests (seems to make QIS crash)
|
337
|
-
# it might be clever to change the sleep time accoring to the situation
|
338
|
-
# e.g. wait longer with higher averaging or lots of no stripes in a row
|
371
|
+
break # Exit inner while loop
|
372
|
+
else: # isEmpty == True
|
339
373
|
time.sleep(0.1)
|
340
374
|
streamStatus = self.streamRunningStatus(device=module, sock=self.streamSock)
|
341
375
|
if streamOverrun:
|
342
|
-
#
|
343
|
-
break
|
376
|
+
break # Exit inner while loop
|
344
377
|
elif "Stopped" in streamStatus:
|
345
378
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'User halted stream']
|
346
|
-
break
|
347
|
-
#
|
348
|
-
|
349
|
-
|
379
|
+
break # Exit inner while loop
|
380
|
+
# End of inner while self.stopFlagList... loop
|
381
|
+
|
382
|
+
self.sendAndReceiveCmd(self.streamSock, 'rec stop', device=module, betweenCommandDelay=0)
|
383
|
+
streamState = self.sendAndReceiveCmd(self.streamSock, 'stream?', device=module, betweenCommandDelay=0)
|
350
384
|
while "stopped" not in streamState.lower():
|
351
385
|
logging.debug("waiting for stream? to return stopped")
|
352
386
|
time.sleep(0.1)
|
353
|
-
streamState = self.sendAndReceiveCmd(self.streamSock, 'stream?', device=module, betweenCommandDelay=0)
|
387
|
+
streamState = self.sendAndReceiveCmd(self.streamSock, 'stream?', device=module, betweenCommandDelay=0)
|
354
388
|
|
355
389
|
if (not streamOverrun) and (not maxFileExceeded):
|
356
390
|
self.deviceDict[module][0:3] = [False, 'Stopped', 'Stream stopped - emptying buffer']
|
357
|
-
|
358
|
-
if
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
391
|
+
|
392
|
+
if not maxFileExceeded:
|
393
|
+
streamOverrun_final, removeChar_final, newStripes_final = self.streamGetStripesText(self.streamSock, module, numStripesPerRead)
|
394
|
+
isEmpty_final = (removeChar_final == -6 and len(newStripes_final) == 6)
|
395
|
+
|
396
|
+
while not isEmpty_final:
|
397
|
+
current_file_mb_final = 0.0
|
398
|
+
if is_in_memory_stream:
|
399
|
+
current_file_mb_final = f.tell() / 1048576.0
|
400
|
+
elif fileName:
|
401
|
+
try:
|
402
|
+
statInfo = os.stat(fileName)
|
403
|
+
current_file_mb_final = statInfo.st_size / 1048576.0
|
404
|
+
except Exception:
|
405
|
+
current_file_mb_final = 0.0
|
371
406
|
else:
|
372
|
-
|
407
|
+
current_file_mb_final = 0.0
|
408
|
+
|
373
409
|
try:
|
374
|
-
int(fileMaxMB)
|
375
|
-
except:
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
410
|
+
max_mb_val_final = int(fileMaxMB)
|
411
|
+
except (ValueError, TypeError):
|
412
|
+
max_mb_val_final = float('inf') # Effectively disable
|
413
|
+
|
414
|
+
if current_file_mb_final < max_mb_val_final:
|
415
|
+
if not streamComplete: # Check if stream was already completed due to duration
|
416
|
+
if (streamAverage != None):
|
417
|
+
leftover, remainingStripes = self.averageStripes(leftover, stripesPerAverage,
|
418
|
+
newStripes_final[
|
419
|
+
:removeChar_final], f,
|
420
|
+
remainingStripes)
|
381
421
|
else:
|
382
|
-
|
383
|
-
f.write(
|
422
|
+
newStripes_final = newStripes_final.replace(' ', separator) # Ensure replacement
|
423
|
+
f.write(newStripes_final[:removeChar_final])
|
384
424
|
else:
|
385
|
-
if not maxFileExceeded:
|
386
|
-
|
387
|
-
|
425
|
+
if not maxFileExceeded: # Only write warning if not already written
|
426
|
+
maxFileStatus_final = self.streamBufferStatus(device=module, sock=self.streamSock)
|
427
|
+
f.write('Warning: Max file size exceeded before end of stream.\n') # Changed from b''
|
428
|
+
f.write('Unrecorded stripes in buffer when file full: ' + maxFileStatus_final + '.\n') # Changed from b'', added newline
|
429
|
+
logging.warning('Max file size exceeded. Some data has not been saved to file: ' + maxFileStatus_final + '.')
|
430
|
+
maxFileExceeded = True # Set flag
|
388
431
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'User defined max filesize reached']
|
389
|
-
break
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
f.write(b'Unrecorded stripes in buffer when file full: ' + maxFileStatus + '.')
|
398
|
-
logging.warning('Max file size exceeded. Some data has not been saved to file: ' + maxFileStatus + '.')
|
399
|
-
|
400
|
-
#printText('Stripes in buffer now: ' + self.streamBufferStatus(device=module, sock=self.streamSock))
|
401
|
-
|
402
|
-
if streamOverrun:
|
432
|
+
break # Exit emptying loop
|
433
|
+
|
434
|
+
streamOverrun_final, removeChar_final, newStripes_final = self.streamGetStripesText(
|
435
|
+
self.streamSock, module, numStripesPerRead, skipStatusCheck=True)
|
436
|
+
isEmpty_final = (removeChar_final == -6 and len(newStripes_final) == (
|
437
|
+
6 if newStripes_final else 0)) # handle newStripes_final potentially being None
|
438
|
+
|
439
|
+
if streamOverrun: # This check is after emptying buffer; might need re-evaluation if overrun can happen during emptying
|
403
440
|
self.deviceDict[module][0:3] = [True, 'Stopped', 'Device buffer overrun - QIS buffer empty']
|
404
|
-
elif not maxFileExceeded:
|
441
|
+
elif not maxFileExceeded: # If not overrun and not exceeded file size
|
405
442
|
self.deviceDict[module][0:3] = [False, 'Stopped', 'Stream stopped']
|
443
|
+
# If maxFileExceeded is true, the status is already set.
|
444
|
+
|
406
445
|
time.sleep(0.2)
|
407
|
-
isRun = False
|
446
|
+
isRun = False # Exit main while isRun loop
|
408
447
|
except IOError as err:
|
409
|
-
|
410
|
-
if
|
411
|
-
|
448
|
+
logging.error(f"IOError in startStreamThread for module {module}: {err}")
|
449
|
+
# f might have been closed by the system if it's a pipe and the other end closed,
|
450
|
+
# or other severe IO errors.
|
451
|
+
# Attempt to close only if this function opened it and it seems like it might be openable/closable.
|
452
|
+
if file_opened_by_function and f is not None:
|
453
|
+
try:
|
454
|
+
if not f.closed:
|
455
|
+
f.close()
|
456
|
+
except Exception as e_close:
|
457
|
+
logging.error(f"Error closing file {fileName} during IOError handling: {e_close}")
|
458
|
+
f = None # Avoid trying to close again in finally if error persists
|
459
|
+
|
412
460
|
time.sleep(0.5)
|
413
461
|
openAttempts += 1
|
414
462
|
if openAttempts > 4:
|
415
|
-
logging.error(
|
416
|
-
|
463
|
+
logging.error(f"Too many IOErrors in QisInterface for module {module}. Raising error.")
|
464
|
+
# Set device status before raising, if possible
|
465
|
+
self.deviceDict[module][0:3] = [True, 'Stopped', f'IOError limit exceeded: {err}']
|
466
|
+
raise # Re-raise the last IOError
|
417
467
|
finally:
|
418
|
-
if
|
419
|
-
|
420
|
-
|
421
|
-
|
468
|
+
if file_opened_by_function and f is not None:
|
469
|
+
try:
|
470
|
+
if not f.closed: # Check if not already closed (e.g. in IOError block)
|
471
|
+
f.close()
|
472
|
+
except Exception as e_close:
|
473
|
+
logging.error(f"Error closing file {fileName} in finally block: {e_close}")
|
474
|
+
# If output_file_handle was passed, caller is responsible for closing.
|
475
|
+
# If inMemoryData was passed, it's managed by caller.
|
476
|
+
# The original `else: inMemoryData = f` is removed as inMemoryData (StringIO) is mutated in-place.
|
422
477
|
|
423
478
|
# This is the function that is ran when t1 is created. It is ran in a seperate thread from
|
424
479
|
# the main application so streaming can happen without blocking the main application from
|
@@ -614,7 +669,7 @@ class QisInterface:
|
|
614
669
|
x = struct.pack(">d", int(stripe[counter]))
|
615
670
|
# logging.debug(item, x)
|
616
671
|
file1.write(x)
|
617
|
-
|
672
|
+
|
618
673
|
# Query the backend for a list of connected modules. A $scan command is sent to refresh the list of devices,
|
619
674
|
# Then a wait occurs while the backend discovers devices (network ones can take a while) and then a list of device name strings is returned
|
620
675
|
# The objects connection needs to be opened (connect()) before this is used
|
@@ -623,7 +678,7 @@ class QisInterface:
|
|
623
678
|
if sock == None:
|
624
679
|
sock = self.sock
|
625
680
|
devString = self.sendAndReceiveText(sock, '$list')
|
626
|
-
devString = devString.replace('>', '')
|
681
|
+
devString = devString.replace('>', '')
|
627
682
|
devString = devString.replace(r'\d+\) ', '')
|
628
683
|
devString = devString.split('\r\n')
|
629
684
|
devString = filter(None, devString) #remove empty elements
|
@@ -793,7 +848,7 @@ class QisInterface:
|
|
793
848
|
streamStatus = streamStatus.split('\r\n')
|
794
849
|
streamStatus[index] = re.sub(r'^Stripes Buffered: ', '', streamStatus[index])
|
795
850
|
return streamStatus[index]
|
796
|
-
|
851
|
+
|
797
852
|
# TODO: MD - This function should be replaced with a more generic method of accessing the header
|
798
853
|
# The return of a string with concatenated value and units should be replaced with something easier to parse
|
799
854
|
#
|
@@ -837,7 +892,7 @@ class QisInterface:
|
|
837
892
|
except Exception as e:
|
838
893
|
logging.error(device + ' Unable to get stream average.' + self.host + ':' + str(self.port))
|
839
894
|
raise e
|
840
|
-
|
895
|
+
|
841
896
|
# Get the version of the stream and convert to string for the specified device
|
842
897
|
# The objects connection needs to be opened (connect()) before this is used
|
843
898
|
def streamHeaderVersion(self, device, sock=None):
|
@@ -864,7 +919,7 @@ class QisInterface:
|
|
864
919
|
except Exception as e:
|
865
920
|
logging.error(device + ' Unable to get stream version.' + self.host + ':' + str(self.port))
|
866
921
|
raise e
|
867
|
-
|
922
|
+
|
868
923
|
# Get a header string giving which measurements are returned in the string for the specified device
|
869
924
|
# The objects connection needs to be opened (connect()) before this is used
|
870
925
|
def streamHeaderFormat(self, device, sock=None):
|
@@ -877,7 +932,7 @@ class QisInterface:
|
|
877
932
|
if (self.isXmlHeader (streamStatus)):
|
878
933
|
# Get the basic averaging rate (V3 header)
|
879
934
|
xml_root = self.getStreamXmlHeader (device=device, sock=sock)
|
880
|
-
# Return the time based averaging string
|
935
|
+
# Return the time based averaging string
|
881
936
|
device_period = xml_root.find('.//devicePeriod')
|
882
937
|
time_unit = 'uS'
|
883
938
|
if device_period == None:
|
@@ -887,7 +942,7 @@ class QisInterface:
|
|
887
942
|
if ('ns' in device_period.text):
|
888
943
|
time_unit = 'nS'
|
889
944
|
averageStr = device_period.text
|
890
|
-
|
945
|
+
|
891
946
|
# Time column always first
|
892
947
|
formatHeader = 'Time ' + time_unit + ','
|
893
948
|
# Find the channels section of each group and iterate through it to add the channel columns
|
@@ -925,7 +980,7 @@ class QisInterface:
|
|
925
980
|
formatHeader = formatHeader + ' 3V3_I,'
|
926
981
|
else:
|
927
982
|
formatHeader = formatHeader + ' 5V_I,'
|
928
|
-
|
983
|
+
|
929
984
|
if format & b1:
|
930
985
|
formatHeader = formatHeader + ' 12V_V,'
|
931
986
|
if format & b0:
|
@@ -990,7 +1045,7 @@ class QisInterface:
|
|
990
1045
|
return '32k'
|
991
1046
|
else:
|
992
1047
|
return 'Invalid Average Value'
|
993
|
-
|
1048
|
+
|
994
1049
|
# TODO: MD Thinks this implements software averaging, is unused and now performed in QIS
|
995
1050
|
# Works out average values of timescales longer than max device averaging
|
996
1051
|
def averageStripes(self, leftover, streamAverage, newStripes, f, remainingStripes = []):
|
@@ -1037,7 +1092,7 @@ class QisInterface:
|
|
1037
1092
|
self.stopFlagList.append(True)
|
1038
1093
|
self.listSemaphore.release()
|
1039
1094
|
return self.deviceList.index(device)
|
1040
|
-
|
1095
|
+
|
1041
1096
|
def deviceDictSetup(self, module):
|
1042
1097
|
if module in self.deviceDict.keys():
|
1043
1098
|
return
|
@@ -1049,23 +1104,23 @@ class QisInterface:
|
|
1049
1104
|
self.dictSemaphore.acquire()
|
1050
1105
|
self.deviceDict[module] = [False, 'Stopped', "User hasn't started stream"]
|
1051
1106
|
self.dictSemaphore.release()
|
1052
|
-
|
1107
|
+
|
1053
1108
|
def streamInterrupt(self):
|
1054
1109
|
for key in self.deviceDict.keys():
|
1055
1110
|
if self.deviceDict[key][0]:
|
1056
1111
|
return True
|
1057
1112
|
return False
|
1058
|
-
|
1113
|
+
|
1059
1114
|
def interruptList(self):
|
1060
1115
|
streamIssueList = []
|
1061
1116
|
for key in self.deviceDict.keys():
|
1062
1117
|
if self.deviceDict[key][0]:
|
1063
|
-
streamIssue = [key]
|
1118
|
+
streamIssue = [key]
|
1064
1119
|
streamIssue.append(self.deviceDict[key][1])
|
1065
1120
|
streamIssue.append(self.deviceDict[key][2])
|
1066
1121
|
streamIssueList.append(streamIssue)
|
1067
1122
|
return streamIssueList
|
1068
|
-
|
1123
|
+
|
1069
1124
|
def waitStop(self):
|
1070
1125
|
running = 1
|
1071
1126
|
while running != 0:
|
@@ -1087,7 +1142,7 @@ class QisInterface:
|
|
1087
1142
|
returnValue = streamAveraging
|
1088
1143
|
|
1089
1144
|
return returnValue
|
1090
|
-
|
1145
|
+
|
1091
1146
|
# Pass in a stream header and we check if it is XML or legacy format
|
1092
1147
|
def isXmlHeader (self, headerText):
|
1093
1148
|
if('?xml version=' not in headerText):
|
@@ -1120,17 +1175,17 @@ class QisInterface:
|
|
1120
1175
|
|
1121
1176
|
break
|
1122
1177
|
# Parse XML into structured format
|
1123
|
-
xml_root = ET.fromstring(headerData)
|
1124
|
-
|
1178
|
+
xml_root = ET.fromstring(headerData)
|
1179
|
+
|
1125
1180
|
# Check header format is supported by quarchpy
|
1126
1181
|
versionStr = xml_root.find('.//version').text
|
1127
1182
|
if ('V3' not in versionStr):
|
1128
1183
|
logging.error(device + ' Stream header version not compatible: ' + xml_root['version'].text + '.' + self.host + ':' + str(self.port))
|
1129
1184
|
raise Exception ("Stream header version not supported");
|
1130
|
-
|
1185
|
+
|
1131
1186
|
# Return the XML structure for the code to use
|
1132
1187
|
return xml_root
|
1133
|
-
|
1188
|
+
|
1134
1189
|
except Exception as e:
|
1135
1190
|
logging.error(device + ' Exception while parsing stream header XML.' + self.host + ':' + str(self.port))
|
1136
1191
|
raise e
|