quarchpy 2.1.24.dev1__py2.py3-none-any.whl → 2.1.24.dev3__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.
Files changed (113) hide show
  1. quarchpy/.idea/.name +1 -1
  2. quarchpy/.idea/modules.xml +2 -0
  3. quarchpy/.idea/quarchpy.iml +5 -1
  4. quarchpy/.idea/workspace.xml +267 -18
  5. quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
  6. quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
  7. quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
  8. quarchpy/_version.py +1 -1
  9. quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
  10. quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
  11. quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.8.0.jar +0 -0
  12. quarchpy/connection_specific/QPS/win-amd64/hs_err_pid8224.log +8905 -0
  13. quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
  14. quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
  15. quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
  16. quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
  17. quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
  18. quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
  19. quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
  20. quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
  21. quarchpy/connection_specific/__pycache__/connection_mDNS.cpython-311.pyc +0 -0
  22. quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
  23. quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
  24. quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
  25. quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
  26. quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
  27. quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
  28. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
  29. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
  30. quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
  31. quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
  32. quarchpy/debug/SystemTest.py +14 -3
  33. quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
  34. quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
  35. quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
  36. quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
  37. quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
  38. quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
  39. quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
  40. quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
  41. quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
  42. quarchpy/device/scanDevices.py +51 -25
  43. quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
  44. quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
  45. quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
  46. quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
  47. quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
  48. quarchpy/docs/_build/doctrees/environment.pickle +0 -0
  49. quarchpy/docs/_build/doctrees/index.doctree +0 -0
  50. quarchpy/docs/_build/doctrees/readme.doctree +0 -0
  51. quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
  52. quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
  53. quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
  54. quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
  55. quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
  56. quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
  57. quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
  58. quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
  59. quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
  60. quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
  61. quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
  62. quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
  63. quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
  64. quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
  65. quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
  66. quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
  67. quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
  68. quarchpy/docs/_build/html/CHANGES.html +119 -123
  69. quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +0 -5
  70. quarchpy/docs/_build/html/genindex.html +1537 -0
  71. quarchpy/docs/_build/html/index.html +60 -61
  72. quarchpy/docs/_build/html/objects.inv +0 -0
  73. quarchpy/docs/_build/html/readme.html +7 -6
  74. quarchpy/docs/_build/html/searchindex.js +1 -1
  75. quarchpy/docs/_build/html/source/changelog.html +179 -184
  76. quarchpy/docs/_build/html/source/licenses.html +7 -6
  77. quarchpy/docs/_build/html/source/modules.html +43 -35
  78. quarchpy/docs/_build/html/source/quarchpy.config_files.html +12 -2
  79. quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +602 -16
  80. quarchpy/docs/_build/html/source/quarchpy.debug.html +127 -8
  81. quarchpy/docs/_build/html/source/quarchpy.device.html +1003 -12
  82. quarchpy/docs/_build/html/source/quarchpy.disk_test.html +75 -9
  83. quarchpy/docs/_build/html/source/quarchpy.fio.html +67 -6
  84. quarchpy/docs/_build/html/source/quarchpy.html +539 -38
  85. quarchpy/docs/_build/html/source/quarchpy.iometer.html +156 -10
  86. quarchpy/docs/_build/html/source/quarchpy.qis.html +518 -4
  87. quarchpy/docs/_build/html/source/quarchpy.qps.html +105 -4
  88. quarchpy/docs/_build/html/source/quarchpy.user_interface.html +156 -4
  89. quarchpy/docs/_build/html/source/quarchpy.utilities.html +96 -10
  90. quarchpy/docs/_build/html/source/readme.html +7 -6
  91. quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
  92. quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
  93. quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
  94. quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
  95. quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
  96. quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
  97. quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
  98. quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
  99. quarchpy/qis/qisFuncs.py +5 -9
  100. quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
  101. quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
  102. quarchpy/run.py +0 -7
  103. quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
  104. quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
  105. quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
  106. quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
  107. quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
  108. quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
  109. {quarchpy-2.1.24.dev1.dist-info → quarchpy-2.1.24.dev3.dist-info}/METADATA +1 -1
  110. {quarchpy-2.1.24.dev1.dist-info → quarchpy-2.1.24.dev3.dist-info}/RECORD +112 -60
  111. quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -12
  112. {quarchpy-2.1.24.dev1.dist-info → quarchpy-2.1.24.dev3.dist-info}/WHEEL +0 -0
  113. {quarchpy-2.1.24.dev1.dist-info → quarchpy-2.1.24.dev3.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,17 @@
1
- from quarchpy import *
2
- from quarchpy.device import *
3
- from importlib.metadata import distribution
1
+ # from quarchpy import *
2
+ # from quarchpy.device import *
3
+ try:
4
+ from importlib.metadata import distribution
5
+ except:
6
+ try:
7
+ from importlib_metadata import distribution
8
+ except Exception as e:
9
+ print("Failed to import distribution from importlib_metadata")
10
+ try:
11
+
12
+ from importlib_metadata import distribution
13
+ except:
14
+ print("here")
4
15
  import os
5
16
  import platform
6
17
  import sys
@@ -19,7 +19,7 @@ from quarchpy.device import quarchDevice, quarchArray
19
19
  from quarchpy.connection_specific.connection_Serial import serialList, serial
20
20
  from quarchpy.device.quarchArray import isThisAnArrayController
21
21
  from quarchpy.connection_specific.connection_USB import TQuarchUSB_IF
22
- from quarchpy.connection_specific import connection_ReST
22
+ from quarchpy.connection_specific import connection_ReST, connection_TCP
23
23
  from quarchpy.connection_specific.connection_mDNS import MyListener
24
24
  from quarchpy.utilities import TestCenter
25
25
 
@@ -183,6 +183,7 @@ def list_network(target_conn="all", debugPring=False, lanTimeout=1, ipAddressLoo
183
183
  # Broadcast the message.
184
184
  logging.debug("Broadcast LAN discovery message for UDP scan to all network interfaces")
185
185
  ipList = socket.gethostbyname_ex(socket.gethostname())
186
+ temp1= socket.gethostname()
186
187
  logging.debug(os.path.basename(__file__) + ": Discovered the following interfaces: " + str(ipList))
187
188
 
188
189
 
@@ -306,8 +307,13 @@ def get_user_level_serial_number(network_modules):
306
307
  ''''''
307
308
  def lookupDevice(ipAddressLookup, mySocket, lan_modules):
308
309
  try:
309
- logging.debug("Ipaddress lookup " + ipAddressLookup)
310
+ specifiedDevice =None
310
311
  # For future reference, 0 is the C terminator for a string
312
+ timeout = mySocket.gettimeout()
313
+ # mySocket.settimeout(20)
314
+ # timeout2 = mySocket.gettimeout()
315
+ logging.debug("Ipaddress lookup =" + ipAddressLookup+ " timeout = "+ str(timeout))
316
+
311
317
  mySocket.sendto(b'Discovery: Who is out there?\0\n', (str(ipAddressLookup).strip(), 30303))
312
318
  specifiedDevice = mySocket.recvfrom(256)
313
319
  # Check to see if the response contains the connection protocol
@@ -315,26 +321,47 @@ def lookupDevice(ipAddressLookup, mySocket, lan_modules):
315
321
  except Exception as e:
316
322
  logging.warning("Error during UDP lookup of IP address "+ str(ipAddressLookup) +" Error: " + str(e))
317
323
  logging.warning("No Quarch module found at this address. Please check the IP address and that you can ping it.\r\n")
318
- return None
319
- #
320
- # if specifiedDevice is None: #Only True if TCP not found or errored
321
- # try:
322
- # restCon = connection_ReST.ReSTConn(str(ipAddressLookup).replace("\r\n", ""))
323
- # restDevice = restCon.sendCommand("*enclosure?") #Try use enclosure for PPMs
324
- # if "fail" in restDevice.lower(): # This will fail nicely for other modules
325
- # restDevice = restCon.sendCommand("*serial?") # and serial number will be used in place.
326
- # if not str(restDevice).startswith("QTL"):
327
- # restDevice = "QTL" + restDevice
328
- # # Exit as device was found correctly
329
- # # Add the item to list
330
- # lan_modules["REST:" + str(ipAddressLookup).replace("\r\n", "")] = restDevice
331
- # specifiedDevice=None # Don't return rest connection, to bypass tcp parsing.
332
- # except Exception as e:
333
- # logging.warning("Error During REST scan of IP address " + str(ipAddressLookup) + " Error: " + str(e))
334
- # logging.warning("Please check the IP address and that you can ping it.\r\n")
335
- #
336
- # # Needs to return None so previous method will not attempt another lookup.
337
- # return specifiedDevice
324
+
325
+ #return None # Commented out, attempt a REST connection with IP. This is what other quarch applications do.
326
+ if specifiedDevice is None: #Only True if TCP not found or errored
327
+ try:
328
+ restCon = connection_ReST.ReSTConn(str(ipAddressLookup).replace("\r\n", ""))
329
+ restDevice = restCon.sendCommand("*enclosure?") #Try use enclosure for PPMs
330
+ if "fail" in restDevice.lower(): # This will fail nicely for other modules
331
+ restDevice = restCon.sendCommand("*serial?") # and serial number will be used in place.
332
+ if not str(restDevice).startswith("QTL"):
333
+ restDevice = "QTL" + restDevice
334
+ # Exit as device was found correctly
335
+ # Add the item to list
336
+ lan_modules["REST:" + str(ipAddressLookup).replace("\r\n", "")] = restDevice
337
+ specifiedDevice=None # Don't return rest connection, to bypass tcp parsing.
338
+ except Exception as e:
339
+ logging.warning("Error During REST scan of IP address " + str(ipAddressLookup) + " Error: " + str(e))
340
+ logging.warning("Please check the IP address and that you can ping it.\r\n")
341
+ try:
342
+ # from threading import Thread
343
+ # t = Thread(target=connection_TCP.TCPConn, args=(str(ipAddressLookup).replace("\r\n", ""),))
344
+ # t.daemon = True
345
+ # t.start()
346
+ # t.join(50)
347
+ # if t.is_alive():
348
+ # raise TimeoutError("Timeout during TCP Connection attempt.")
349
+
350
+ tcpCon= connection_TCP.TCPConn(str(ipAddressLookup).replace("\r\n", ""))
351
+ tcpDevice = tcpCon.sendCommand("*enclosure?") #Try use enclosure for PPMs
352
+ if "fail" in tcpDevice.lower(): # This will fail nicely for other modules
353
+ tcpDevice = tcpCon.sendCommand("*serial?") # and serial number will be used in place.
354
+ if not str(tcpDevice).startswith("QTL"):
355
+ tcpDevice = "QTL" + tcpDevice
356
+ # Exit as device was found correctly
357
+ # Add the item to list
358
+ lan_modules["TCP:" + str(ipAddressLookup).replace("\r\n", "")] = tcpDevice
359
+ specifiedDevice=None # Don't return tcp connection, to bypass tcp parsing.
360
+ except Exception as e:
361
+ logging.warning("Error During TCP scan of IP address " + str(ipAddressLookup) + " Error: " + str(e))
362
+ logging.warning("Please check the IP address and that you can ping it.\r\n")
363
+ # Needs to return None so previous method will not attempt another lookup.
364
+ return specifiedDevice
338
365
 
339
366
 
340
367
 
@@ -462,7 +489,8 @@ def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly
462
489
  module_type_filter=None, ipAddressLookup=None):
463
490
  foundDevices = dict()
464
491
  scannedArrays = list()
465
-
492
+ mdnsListener = MyListener()
493
+ scan_mDNS(mdnsListener)
466
494
 
467
495
  if target_conn.lower() == "all":
468
496
  foundDevices = list_USB()
@@ -471,8 +499,6 @@ def scanDevices(target_conn="all", lanTimeout=1, scanInArray=True, favouriteOnly
471
499
  #This will fail if the test machine is not connected to a network
472
500
  foundDevices = mergeDict(foundDevices, list_network("all", ipAddressLookup=ipAddressLookup, lanTimeout=lanTimeout))
473
501
  try:
474
- mdnsListener = MyListener()
475
- scan_mDNS(mdnsListener)
476
502
  foundDevices = mergeDict(foundDevices, mdnsListener.found_devices)
477
503
  except Exception as mdnsExcept:
478
504
  logging.debug("An error occurred while trying to use the mdns listner to scan\n" +str(mdnsExcept))
Binary file