qairt-visualizer 0.5.1__py3-none-win_amd64.whl → 0.7.0__py3-none-win_amd64.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 (311) hide show
  1. qairt_visualizer/core/helpers/version.py +23 -0
  2. qairt_visualizer/core/launchers/base_ui_launcher_context.py +28 -7
  3. qairt_visualizer/core/launchers/electron_launcher_context.py +72 -3
  4. qairt_visualizer/core/parsers/dlc_parser/dlc_parser.py +105 -33
  5. qairt_visualizer/core/parsers/dlc_parser/get_source_topology.py +47 -0
  6. qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.pyd +0 -0
  7. qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.so +0 -0
  8. qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.pyd +0 -0
  9. qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.so +0 -0
  10. qairt_visualizer/core/parsers/dlc_parser/models/op_tensor_mappings.py +8 -4
  11. qairt_visualizer/core/ui/dist/browser/__init__.py +47 -0
  12. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity.js → acuity.js} +3 -3
  13. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/app.js → app.js} +63 -57
  14. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-schema.js → armnn-schema.js} +590 -5
  15. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn.js → armnn.js} +3 -5
  16. qairt_visualizer/core/ui/dist/browser/assets/i18n/common/en.json +8 -2
  17. qairt_visualizer/core/ui/dist/browser/assets/i18n/graph/en.json +44 -36
  18. qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/en.json +9 -3
  19. qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/model-diff/en.json +6 -0
  20. qairt_visualizer/core/ui/dist/browser/assets/i18n/workspaces/en.json +3 -0
  21. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/barracuda.js → barracuda.js} +3 -3
  22. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/base.js → base.js} +20 -16
  23. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl.js → bigdl.js} +2 -2
  24. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/browser.js → browser.js} +59 -49
  25. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe.js → caffe.js} +3 -3
  26. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-proto.js → caffe2-proto.js} +26 -26
  27. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2.js → caffe2.js} +113 -114
  28. qairt_visualizer/core/ui/dist/browser/chunk-3SMGFPTN.js +11 -0
  29. qairt_visualizer/core/ui/dist/browser/chunk-43LQFSHA.js +1 -0
  30. qairt_visualizer/core/ui/dist/browser/chunk-447NKSFT.js +1 -0
  31. qairt_visualizer/core/ui/dist/browser/chunk-5MAR72QP.js +1 -0
  32. qairt_visualizer/core/ui/dist/browser/chunk-7PTY53DS.js +5 -0
  33. qairt_visualizer/core/ui/dist/browser/chunk-GAUD627J.js +1 -0
  34. qairt_visualizer/core/ui/dist/browser/chunk-H7TLLCSI.js +1 -0
  35. qairt_visualizer/core/ui/dist/browser/chunk-HISUA6LZ.js +4 -0
  36. qairt_visualizer/core/ui/dist/browser/chunk-HXB7IAZI.js +1 -0
  37. qairt_visualizer/core/ui/dist/browser/chunk-JPD5T7FP.js +120 -0
  38. qairt_visualizer/core/ui/dist/browser/chunk-L3QJ7DR2.js +1 -0
  39. qairt_visualizer/core/ui/dist/browser/{chunk-HBP6TEQ6.js → chunk-MCR4N53U.js} +1 -1
  40. qairt_visualizer/core/ui/dist/browser/chunk-QD7PA2I4.js +19 -0
  41. qairt_visualizer/core/ui/dist/browser/chunk-TKZG6FLW.js +12 -0
  42. qairt_visualizer/core/ui/dist/browser/chunk-WFAVWONI.js +5 -0
  43. qairt_visualizer/core/ui/dist/browser/chunk-WRMDGTCT.js +35 -0
  44. qairt_visualizer/core/ui/dist/browser/chunk-X25J6H7V.js +1 -0
  45. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-schema.js → circle-schema.js} +17 -0
  46. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle.js → circle.js} +3 -3
  47. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk.js → cntk.js} +1 -1
  48. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-proto.js → coreml-proto.js} +1 -0
  49. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml.js → coreml.js} +24 -21
  50. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dagre.js → dagre.js} +5 -5
  51. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet-metadata.json → darknet-metadata.json} +0 -1
  52. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet.js → darknet.js} +3 -3
  53. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs} +44 -131
  54. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j.js → dl4j.js} +5 -2
  55. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-schema.js → dlc-schema.js} +8 -8
  56. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc.js → dlc.js} +110 -29
  57. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn.js → dnn.js} +2 -4
  58. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dot.js → dot.js} +1 -1
  59. qairt_visualizer/core/ui/dist/browser/eaix.js +24 -0
  60. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso.js → espresso.js} +1 -1
  61. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch-schema.js → executorch-schema.js} +363 -42
  62. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch.js → executorch.js} +108 -40
  63. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flatbuffers.js → flatbuffers.js} +1 -1
  64. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flax.js → flax.js} +1 -1
  65. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux.js → flux.js} +2 -2
  66. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/gguf.js → gguf.js} +44 -24
  67. qairt_visualizer/core/ui/dist/browser/grapher.css +145 -0
  68. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/grapher.js → grapher.js} +24 -48
  69. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo.js → hailo.js} +1 -1
  70. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hickle.js → hickle.js} +1 -1
  71. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/imgdnn.js → imgdnn.js} +1 -1
  72. qairt_visualizer/core/ui/dist/browser/index.html +15 -16
  73. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/index.js → index.js} +2 -24
  74. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/json.js → json.js} +28 -3
  75. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann.js → kann.js} +1 -1
  76. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-metadata.json → keras-metadata.json} +15 -7
  77. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras.js → keras.js} +13 -7
  78. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kmodel.js → kmodel.js} +3 -3
  79. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne.js → lasagne.js} +2 -2
  80. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lightgbm.js → lightgbm.js} +1 -1
  81. qairt_visualizer/core/ui/dist/browser/main-EVI665MB.js +1 -0
  82. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mediapipe.js → mediapipe.js} +1 -1
  83. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine.js → megengine.js} +1 -1
  84. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/message.js → message.js} +3 -2
  85. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlir.js → mlir.js} +53 -17
  86. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet.js → mlnet.js} +2 -3
  87. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-schema.js → mnn-schema.js} +9 -6
  88. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn.js → mnn.js} +2 -2
  89. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite.js → mslite.js} +3 -3
  90. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet.js → mxnet.js} +2 -2
  91. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn.js → ncnn.js} +3 -2
  92. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla.js → nnabla.js} +4 -4
  93. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnef.js → nnef.js} +1 -1
  94. qairt_visualizer/core/ui/dist/browser/node.js +102 -0
  95. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/numpy.js → numpy.js} +9 -9
  96. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om.js → om.js} +2 -2
  97. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn.js → onednn.js} +1 -1
  98. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-metadata.json → onnx-metadata.json} +3500 -233
  99. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-proto.js → onnx-proto.js} +436 -4
  100. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx.js → onnx.js} +284 -199
  101. qairt_visualizer/core/ui/dist/browser/onnx.py +231 -0
  102. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino.js → openvino.js} +36 -31
  103. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-proto.js → paddle-proto.js} +54 -54
  104. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle.js → paddle.js} +22 -3
  105. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pickle.js → pickle.js} +3 -3
  106. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/python.js → python.js} +743 -325
  107. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-metadata.json → pytorch-metadata.json} +3217 -2934
  108. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-proto.js → pytorch-proto.js} +4 -4
  109. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch.js → pytorch.js} +172 -86
  110. qairt_visualizer/core/ui/dist/browser/pytorch.py +304 -0
  111. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn.js → qnn.js} +6 -2
  112. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn.js → rknn.js} +3 -3
  113. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/safetensors.js → safetensors.js} +2 -2
  114. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece.js → sentencepiece.js} +1 -1
  115. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/server.py → server.py} +95 -103
  116. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn-metadata.json → sklearn-metadata.json} +15 -10
  117. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn.js → sklearn.js} +5 -5
  118. qairt_visualizer/core/ui/dist/browser/{styles-MRR6DOT2.css → styles-2Z5PB4WZ.css} +1 -1
  119. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tar.js → tar.js} +18 -1
  120. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine.js → tengine.js} +1 -1
  121. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tensorrt.js → tensorrt.js} +1 -1
  122. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-metadata.json → tf-metadata.json} +1255 -163
  123. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-proto.js → tf-proto.js} +46 -12
  124. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf.js → tf.js} +36 -13
  125. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite.js → tflite.js} +18 -21
  126. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn.js → tnn.js} +1 -3
  127. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch.js → torch.js} +1 -1
  128. qairt_visualizer/core/ui/dist/browser/transformers.js +171 -0
  129. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tvm.js → tvm.js} +2 -2
  130. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff.js → uff.js} +2 -2
  131. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/view.js → view.js} +1406 -1115
  132. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/weka.js → weka.js} +3 -4
  133. qairt_visualizer/core/ui/dist/browser/worker-EHYFMTM7.js +1 -0
  134. qairt_visualizer/core/ui/dist/browser/worker-KX5DA6GL.js +4 -0
  135. qairt_visualizer/core/ui/dist/browser/xgboost.js +59 -0
  136. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xml.js → xml.js} +2 -2
  137. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel.js → xmodel.js} +1 -1
  138. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/zip.js → zip.js} +38 -41
  139. qairt_visualizer/core/ui/dist/qairt_visualizer.exe +0 -0
  140. qairt_visualizer/core/ui/dist/resources/app.asar +0 -0
  141. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/METADATA +1 -1
  142. qairt_visualizer-0.7.0.dist-info/RECORD +265 -0
  143. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CITATION.cff +0 -10
  144. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CONTRIBUTING.md +0 -29
  145. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/LICENSE +0 -21
  146. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/README.md +0 -36
  147. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/jenkins/Jenkinsfile +0 -69
  148. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package-lock.json +0 -5743
  149. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.js +0 -689
  150. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.json +0 -53
  151. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.py +0 -87
  152. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.png +0 -0
  153. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.svg +0 -5
  154. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background@2x.png +0 -0
  155. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/electron-builder.json +0 -109
  156. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/eslint.config.js +0 -231
  157. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/forge.config.js +0 -87
  158. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.html +0 -27
  159. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns +0 -0
  160. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns.svg +0 -175
  161. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.ico +0 -0
  162. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.png +0 -0
  163. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.svg +0 -179
  164. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/notarize.cjs +0 -24
  165. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/pyproject.toml +0 -63
  166. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/setup.py +0 -43
  167. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/resolve_upgrade_merge.sh +0 -10
  168. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/__init__.py +0 -41
  169. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/cambricon.js +0 -32
  170. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/favicon.ico +0 -0
  171. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/grapher.css +0 -602
  172. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/index.html +0 -2222
  173. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/modular.js +0 -81
  174. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/onnx.py +0 -227
  175. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/pytorch.py +0 -298
  176. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qcontrol.js +0 -207
  177. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qgraph-toolkit.js +0 -123
  178. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsubgraph.js +0 -226
  179. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsummary-panel.js +0 -89
  180. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/server.js +0 -250
  181. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/backend.py +0 -80
  182. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/measures.py +0 -27
  183. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.js +0 -359
  184. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.json +0 -8523
  185. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/worker.js +0 -859
  186. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/armnn +0 -33
  187. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/bigdl +0 -33
  188. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe +0 -37
  189. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe-script.js +0 -12
  190. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle +0 -43
  191. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle-script.js +0 -87
  192. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle_script.js +0 -73
  193. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/cntk +0 -33
  194. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/coreml +0 -49
  195. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc +0 -20
  196. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc.fbs +0 -165
  197. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn +0 -20
  198. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn.proto +0 -79
  199. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/executorch +0 -41
  200. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/flatc.js +0 -1315
  201. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/gguf +0 -22
  202. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/kann +0 -33
  203. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras +0 -62
  204. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_metadata.py +0 -205
  205. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_script.py +0 -204
  206. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mediapipe +0 -72
  207. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine +0 -47
  208. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine-script.js +0 -113
  209. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine_script.js +0 -112
  210. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mnn +0 -40
  211. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite +0 -45
  212. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite-script.js +0 -83
  213. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite_metadata.js +0 -82
  214. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla +0 -79
  215. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla_script.py +0 -145
  216. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om +0 -26
  217. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om.proto +0 -204
  218. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx +0 -135
  219. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_metadata.py +0 -233
  220. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_script.py +0 -332
  221. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/paddle +0 -38
  222. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/protoc.js +0 -1609
  223. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch +0 -85
  224. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_metadata.py +0 -166
  225. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_script.py +0 -404
  226. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn +0 -20
  227. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn.fbs +0 -78
  228. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sentencepiece +0 -39
  229. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn +0 -65
  230. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_metadata.py +0 -126
  231. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_script.py +0 -129
  232. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf +0 -97
  233. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_metadata.py +0 -403
  234. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_script.py +0 -422
  235. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite-script.js +0 -87
  236. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite_metadata.js +0 -73
  237. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff +0 -20
  238. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff.proto +0 -127
  239. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/xmodel +0 -36
  240. qairt_visualizer/core/ui/dist/browser/chunk-3NAQCYEU.js +0 -1
  241. qairt_visualizer/core/ui/dist/browser/chunk-NFKTPX3Z.js +0 -11
  242. qairt_visualizer/core/ui/dist/browser/chunk-OMI6HJ5Y.js +0 -19
  243. qairt_visualizer/core/ui/dist/browser/chunk-TTZXMRJ5.js +0 -34
  244. qairt_visualizer/core/ui/dist/browser/main-NXPVOKMG.js +0 -1
  245. qairt_visualizer/core/ui/dist/browser/worker-5VPKG2GV.js +0 -4
  246. qairt_visualizer/core/ui/dist/browser/worker-UVGWDZ5K.js +0 -1
  247. qairt_visualizer-0.5.1.dist-info/RECORD +0 -337
  248. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity-metadata.json → acuity-metadata.json} +0 -0
  249. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-metadata.json → armnn-metadata.json} +0 -0
  250. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-metadata.json → bigdl-metadata.json} +0 -0
  251. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-proto.js → bigdl-proto.js} +0 -0
  252. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-metadata.json → caffe-metadata.json} +0 -0
  253. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-proto.js → caffe-proto.js} +0 -0
  254. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-metadata.json → caffe2-metadata.json} +0 -0
  255. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/catboost.js → catboost.js} +0 -0
  256. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-metadata.json → circle-metadata.json} +0 -0
  257. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-metadata.json → cntk-metadata.json} +0 -0
  258. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-proto.js → cntk-proto.js} +0 -0
  259. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-metadata.json → coreml-metadata.json} +0 -0
  260. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j-metadata.json → dl4j-metadata.json} +0 -0
  261. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-metadata.json → dlc-metadata.json} +0 -0
  262. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-metadata.json → dnn-metadata.json} +0 -0
  263. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-proto.js → dnn-proto.js} +0 -0
  264. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso-metadata.json → espresso-metadata.json} +0 -0
  265. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flexbuffers.js → flexbuffers.js} +0 -0
  266. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux-metadata.json → flux-metadata.json} +0 -0
  267. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo-metadata.json → hailo-metadata.json} +0 -0
  268. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hdf5.js → hdf5.js} +0 -0
  269. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/icon.png → icon.png} +0 -0
  270. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-metadata.json → kann-metadata.json} +0 -0
  271. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-schema.js → kann-schema.js} +0 -0
  272. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-proto.js → keras-proto.js} +0 -0
  273. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne-metadata.json → lasagne-metadata.json} +0 -0
  274. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-metadata.json → megengine-metadata.json} +0 -0
  275. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-schema.js → megengine-schema.js} +0 -0
  276. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet-metadata.json → mlnet-metadata.json} +0 -0
  277. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-metadata.json → mnn-metadata.json} +0 -0
  278. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-metadata.json → mslite-metadata.json} +0 -0
  279. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-schema.js → mslite-schema.js} +0 -0
  280. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet-metadata.json → mxnet-metadata.json} +0 -0
  281. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn-metadata.json → ncnn-metadata.json} +0 -0
  282. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-metadata.json → nnabla-metadata.json} +0 -0
  283. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-proto.js → nnabla-proto.js} +0 -0
  284. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnc.js → nnc.js} +0 -0
  285. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-metadata.json → om-metadata.json} +0 -0
  286. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-proto.js → om-proto.js} +0 -0
  287. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn-metadata.json → onednn-metadata.json} +0 -0
  288. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-schema.js → onnx-schema.js} +0 -0
  289. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino-metadata.json → openvino-metadata.json} +0 -0
  290. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-metadata.json → paddle-metadata.json} +0 -0
  291. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-schema.js → paddle-schema.js} +0 -0
  292. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/protobuf.js → protobuf.js} +0 -0
  293. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-schema.js → pytorch-schema.js} +0 -0
  294. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn-metadata.json → qnn-metadata.json} +0 -0
  295. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-metadata.json → rknn-metadata.json} +0 -0
  296. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-schema.js → rknn-schema.js} +0 -0
  297. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece-proto.js → sentencepiece-proto.js} +0 -0
  298. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine-metadata.json → tengine-metadata.json} +0 -0
  299. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/text.js → text.js} +0 -0
  300. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-metadata.json → tflite-metadata.json} +0 -0
  301. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-schema.js → tflite-schema.js} +0 -0
  302. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn-metadata.json → tnn-metadata.json} +0 -0
  303. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch-metadata.json → torch-metadata.json} +0 -0
  304. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-metadata.json → uff-metadata.json} +0 -0
  305. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-proto.js → uff-proto.js} +0 -0
  306. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/worker.js → worker.js} +0 -0
  307. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel-proto.js → xmodel-proto.js} +0 -0
  308. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/LICENSE.pdf +0 -0
  309. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/WHEEL +0 -0
  310. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/entry_points.txt +0 -0
  311. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,23 @@
1
+ # ==============================================================================
2
+ #
3
+ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4
+ # All Rights Reserved.
5
+ # Confidential and Proprietary - Qualcomm Technologies, Inc.
6
+ #
7
+ # ==============================================================================
8
+ """Extract Python Version"""
9
+
10
+ import platform
11
+ import sys
12
+
13
+
14
+ def main():
15
+ """
16
+ CLI entry point: Sends python version to stdout
17
+ """
18
+ sys.stdout.write(platform.python_version())
19
+ sys.stdout.flush()
20
+
21
+
22
+ if __name__ == "__main__":
23
+ main()
@@ -125,23 +125,44 @@ class BaseUILauncherContext(ABC):
125
125
  extract the port from that process first.
126
126
  :return: The port number for the existing process, -1 if cannot be found
127
127
  """
128
+ process_attrs, port = self.locate_ui_process()
128
129
  if self._pid:
129
- port = self.find_ui_process_port_using_pid(self._pid)
130
130
  if port is not self._PROCESS_NOT_FOUND:
131
131
  return port
132
132
 
133
- if platform.system().lower() == "windows":
134
- process_name = self.application_name
135
- process_attrs, port = self._find_ui_process_port_windows(process_name)
136
- else:
137
- process_attrs, port = self._find_ui_process_port_by_iteration()
138
-
139
133
  if process_attrs is None or port == self._PROCESS_NOT_FOUND:
140
134
  return self._PROCESS_NOT_FOUND
141
135
 
142
136
  self.set_pid(process_attrs.pid)
143
137
  return port
144
138
 
139
+ def locate_ui_process(self) -> Tuple[ProcessAttributes | None, int]:
140
+ """
141
+ Will loop through all running processes and checks if any of them match the application_name provided
142
+ If a process is found, both process attributes and the port number is extracted. If _pid is set,
143
+ this function will attempt to locate the process and parse it to return process attributes and port.
144
+ :return: A tuple containing the ProcessAttributes and the port number
145
+ """
146
+ port = None
147
+ process_attrs = None
148
+ if self._pid:
149
+ try:
150
+ process: psutil.Process = psutil.Process(self._pid)
151
+ process_attrs = ProcessAttributes(process.cmdline(), process.name(), pid=self._pid)
152
+ port = self.extract_port_from_process(process_attrs)
153
+ except psutil.NoSuchProcess:
154
+ process_attrs, port = [None, self._PROCESS_NOT_FOUND]
155
+
156
+ if port is not None and port is not self._PROCESS_NOT_FOUND:
157
+ return process_attrs, port
158
+
159
+ if platform.system().lower() == "windows":
160
+ process_name = self.application_name
161
+ process_attrs, port = self._find_ui_process_port_windows(process_name)
162
+ else:
163
+ process_attrs, port = self._find_ui_process_port_by_iteration()
164
+ return process_attrs, port
165
+
145
166
  @classmethod
146
167
  def set_pid(cls, pid: int) -> None:
147
168
  """Sets the pid class variable
@@ -7,9 +7,12 @@
7
7
  # ==============================================================================
8
8
  """Electron launcher"""
9
9
 
10
+ import os
10
11
  import platform
11
12
  import subprocess
12
- from typing import List
13
+ import time
14
+ from pathlib import Path
15
+ from typing import List, Optional, cast
13
16
 
14
17
  from qairt_visualizer.core.launchers.base_ui_launcher_context import BaseUILauncherContext
15
18
  from qairt_visualizer.core.launchers.models.process_attributes import ProcessAttributes
@@ -21,6 +24,9 @@ class ElectronLauncherContext(BaseUILauncherContext):
21
24
  Concrete launcher class responsible for launching the Electron Visualization application.
22
25
  """
23
26
 
27
+ _DEFAULT_PORT = 5555
28
+ _PORT_FILE_LOCATION = os.path.expanduser("~/.qairt_visualizer/current_port.txt")
29
+
24
30
  def __init__(self):
25
31
  super().__init__()
26
32
  self.application_name = "qairt_visualizer"
@@ -37,8 +43,42 @@ class ElectronLauncherContext(BaseUILauncherContext):
37
43
  return process_attrs.proc_name == process_name
38
44
 
39
45
  def launch(self) -> int:
40
- """Launches application in background at given port"""
41
- port = self.detect_port(5555)
46
+ """Launches application in background at given port
47
+ :return: The port Visualizer is listening on
48
+ """
49
+ process_attrs, existing_port = self.locate_ui_process()
50
+
51
+ visual_only_launched_previously_application_listening_for_connection = (
52
+ process_attrs is not None and existing_port != -1
53
+ )
54
+ if visual_only_launched_previously_application_listening_for_connection:
55
+ return existing_port
56
+
57
+ port_written_to_port_file = self._get_existing_zmq_port()
58
+ main_app_launched_listening_for_connection = (
59
+ process_attrs is not None and port_written_to_port_file is not None
60
+ )
61
+
62
+ if main_app_launched_listening_for_connection:
63
+ return cast(int, port_written_to_port_file)
64
+
65
+ has_stale_port_file = (
66
+ process_attrs is None and port_written_to_port_file is not None and self._is_port_file_old()
67
+ )
68
+ # This block handles when another python script may have launched
69
+ # visualizer while the above code already ran
70
+ if has_stale_port_file:
71
+ try:
72
+ port_file = Path(self._PORT_FILE_LOCATION)
73
+ port_file.unlink(missing_ok=True)
74
+ self.logger.debug("Deleted stale port file")
75
+ except OSError as e:
76
+ self.logger.error("Failed to delete stale port file: %s", e)
77
+ elif port_written_to_port_file is not None:
78
+ return port_written_to_port_file
79
+ # End handler for multi-python script scenario
80
+
81
+ port = self.detect_port(self._DEFAULT_PORT)
42
82
  self._launch(["--port", f"{port}"])
43
83
  return port
44
84
 
@@ -64,6 +104,35 @@ class ElectronLauncherContext(BaseUILauncherContext):
64
104
  )
65
105
  self.set_pid(proc.pid)
66
106
 
107
+ def _get_existing_zmq_port(self) -> Optional[int]:
108
+ """Check for existing ZMQ port from temp file"""
109
+ try:
110
+ if os.path.exists(self._PORT_FILE_LOCATION):
111
+ with open(self._PORT_FILE_LOCATION, "r", encoding="utf-8") as f:
112
+ port = int(f.read().strip())
113
+ self.logger.debug("Found existing ZMQ port: %s", port)
114
+ return port
115
+ except (ValueError, IOError, OSError) as e:
116
+ self.logger.debug("Could not read port file: %s", e)
117
+
118
+ return None
119
+
120
+ def _is_port_file_old(self, seconds: int = 30) -> bool:
121
+ """Check if the port file is older than the specified number of seconds"""
122
+ try:
123
+ if not os.path.exists(self._PORT_FILE_LOCATION):
124
+ return False
125
+
126
+ file_mod_time = os.path.getmtime(self._PORT_FILE_LOCATION)
127
+ current_time = time.time()
128
+ age_in_seconds = current_time - file_mod_time
129
+
130
+ return age_in_seconds > seconds
131
+
132
+ except OSError as e:
133
+ self.logger.debug("Error checking port file age: %s", e)
134
+ return False
135
+
67
136
  def extract_port_from_process(self, process_attrs: ProcessAttributes) -> int:
68
137
  app_extension = ""
69
138
  process_name = self.application_name
@@ -8,7 +8,8 @@
8
8
  """DLC Parser class"""
9
9
 
10
10
  import os
11
- from typing import Any, Dict, Optional, Set
11
+ from collections import defaultdict
12
+ from typing import Any, Dict, Literal, Optional, Set, Tuple
12
13
 
13
14
  from qairt_visualizer.core.errors import ArgumentError
14
15
  from qairt_visualizer.core.parsers.dlc_parser.models.op_tensor_mappings import ( # type: ignore
@@ -28,9 +29,9 @@ from . import libPyIrGraph as ir_graph # type: ignore
28
29
  _ = ir_graph
29
30
 
30
31
  OP = 1
31
- OPS_KEY = "ops"
32
+ OPS_KEY: Literal["ops"] = "ops"
32
33
  TENSOR = 0
33
- TENSOR_KEY = "tensors"
34
+ TENSOR_KEY: Literal["tensors"] = "tensors"
34
35
 
35
36
 
36
37
  class DlcParser:
@@ -49,7 +50,7 @@ class DlcParser:
49
50
  """
50
51
 
51
52
  if not dlc_file_path:
52
- raise ArgumentError("A valid DLC file argument is required")
53
+ raise ArgumentError("A DLC file path is required")
53
54
  if not os.path.isfile(dlc_file_path):
54
55
  raise FileNotFoundError(f"The input file path {dlc_file_path} does not exist")
55
56
  if not os.path.splitext(dlc_file_path)[1] == ".dlc":
@@ -85,38 +86,78 @@ class DlcParser:
85
86
  3. DLC tensor -> ONNX op/tensor
86
87
  4. ONNX tensor -> DLC op/tensor
87
88
  """
88
- dlc_ops_to_target_ops: Dict[str, Dict[str, Set[str]]] = {}
89
- target_ops_to_dlc_ops: Dict[str, Dict[str, Set[str]]] = {}
90
- dlc_tensors_to_target_tensors: Dict[str, Dict[str, Set[str]]] = {}
91
- target_tensors_to_dlc_tensors: Dict[str, Dict[str, Set[str]]] = {}
89
+ dlc_ops_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
90
+ source_ops_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
91
+ dlc_tensors_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
92
+ source_tensors_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
92
93
 
93
- for category, dlc_items in zip([OPS_KEY, TENSOR_KEY], [dlc_op_map, dlc_tensor_map]):
94
+ dlc_ops_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
95
+ dlc_tensors_to_dlc_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
96
+ source_ops_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
97
+ source_tensors_to_source_ops_and_tensors: Dict[str, Dict[str, Set[str]]] = {}
98
+
99
+ dlc_item_to_source_set: Dict[Tuple[str, str], Set[str]] = defaultdict(set)
100
+ source_item_to_dlc_set: Dict[Tuple[str, str], Set[str]] = defaultdict(set)
101
+
102
+ for dlc_type, dlc_items in zip([OPS_KEY, TENSOR_KEY], [dlc_op_map, dlc_tensor_map]):
94
103
  for dlc_item in dlc_items:
95
- dlc_item_name = dlc_item.get_name()
104
+ dlc_name = dlc_item.get_name()
96
105
  source_items = dlc_item.get_trace_pair()
97
-
98
106
  for source_item in source_items:
99
107
  source_name = source_item.get_name()
100
- source_type = OPS_KEY if source_item.get_type() == OP else TENSOR_KEY
101
-
102
- # DLC -> ONNX
103
- self.update_mapping(dlc_ops_to_target_ops, dlc_item_name, source_type, source_name)
104
-
105
- # ONNX -> DLC
106
- self.update_mapping(target_ops_to_dlc_ops, source_name, category, dlc_item_name)
108
+ source_type: Literal["ops", "tensors"] = (
109
+ OPS_KEY if source_item.get_type() == OP else TENSOR_KEY
110
+ )
107
111
 
108
- # DLC tensor -> ONNX
109
- if category == TENSOR_KEY:
112
+ if dlc_type == OPS_KEY:
110
113
  self.update_mapping(
111
- dlc_tensors_to_target_tensors, dlc_item_name, source_type, source_name
114
+ dlc_ops_to_source_ops_and_tensors, dlc_name, source_type, source_name
115
+ )
116
+ else:
117
+ self.update_mapping(
118
+ dlc_tensors_to_source_ops_and_tensors, dlc_name, source_type, source_name
112
119
  )
113
120
 
114
- # ONNX tensor -> DLC
115
- if source_type == TENSOR_KEY:
121
+ dlc_type_literal: Any = dlc_type
122
+ if source_type == OPS_KEY:
123
+ self.update_mapping(
124
+ source_ops_to_dlc_ops_and_tensors, source_name, dlc_type_literal, dlc_name
125
+ )
126
+ else:
116
127
  self.update_mapping(
117
- target_tensors_to_dlc_tensors, source_name, category, dlc_item_name
128
+ source_tensors_to_dlc_ops_and_tensors, source_name, dlc_type_literal, dlc_name
118
129
  )
119
130
 
131
+ dlc_item_to_source_set[(dlc_type, dlc_name)].add(f"{source_type}:{source_name}")
132
+ source_item_to_dlc_set[(source_type, source_name)].add(f"{dlc_type}:{dlc_name}")
133
+
134
+ def build_intra_relations(items_map, reverse_map, ops_map, tensors_map):
135
+ for (item_type, item_name), related_set in items_map.items():
136
+ for related_str in related_set:
137
+ related_type, related_name = related_str.split(":", 1)
138
+ other_items = reverse_map.get((related_type, related_name), set())
139
+ for other_str in other_items:
140
+ other_type, other_name = other_str.split(":", 1)
141
+
142
+ if item_type == OPS_KEY:
143
+ self.update_mapping(ops_map, item_name, other_type, other_name)
144
+ else:
145
+ self.update_mapping(tensors_map, item_name, other_type, other_name)
146
+
147
+ build_intra_relations(
148
+ dlc_item_to_source_set,
149
+ source_item_to_dlc_set,
150
+ dlc_ops_to_dlc_ops_and_tensors,
151
+ dlc_tensors_to_dlc_ops_and_tensors,
152
+ )
153
+
154
+ build_intra_relations(
155
+ source_item_to_dlc_set,
156
+ dlc_item_to_source_set,
157
+ source_ops_to_source_ops_and_tensors,
158
+ source_tensors_to_source_ops_and_tensors,
159
+ )
160
+
120
161
  def convert_sets(d: Dict[str, Dict[str, Set[str]]]) -> Dict[str, MappingGroup]:
121
162
  return {
122
163
  k: MappingGroup(ops=sorted(v.get(OPS_KEY, [])), tensors=sorted(v.get(TENSOR_KEY, [])))
@@ -125,20 +166,34 @@ class DlcParser:
125
166
 
126
167
  return (
127
168
  OpTensorMappings(
128
- dlc_ops_to_target_ops=convert_sets(dlc_ops_to_target_ops),
129
- target_ops_to_dlc_ops=convert_sets(target_ops_to_dlc_ops),
130
- dlc_tensors_to_target_tensors=convert_sets(dlc_tensors_to_target_tensors),
131
- target_tensors_to_dlc_tensors=convert_sets(target_tensors_to_dlc_tensors),
169
+ dlc_ops_to_source_ops_and_tensors=convert_sets(dlc_ops_to_source_ops_and_tensors),
170
+ source_ops_to_dlc_ops_and_tensors=convert_sets(source_ops_to_dlc_ops_and_tensors),
171
+ dlc_tensors_to_source_ops_and_tensors=convert_sets(dlc_tensors_to_source_ops_and_tensors),
172
+ source_tensors_to_dlc_ops_and_tensors=convert_sets(source_tensors_to_dlc_ops_and_tensors),
173
+ dlc_ops_to_dlc_ops_and_tensors=convert_sets(dlc_ops_to_dlc_ops_and_tensors),
174
+ dlc_tensors_to_dlc_ops_and_tensors=convert_sets(dlc_tensors_to_dlc_ops_and_tensors),
175
+ source_ops_to_source_ops_and_tensors=convert_sets(source_ops_to_source_ops_and_tensors),
176
+ source_tensors_to_source_ops_and_tensors=convert_sets(
177
+ source_tensors_to_source_ops_and_tensors
178
+ ),
132
179
  )
133
- if len(dlc_ops_to_target_ops)
134
- or len(target_ops_to_dlc_ops)
135
- or len(dlc_tensors_to_target_tensors)
136
- or len(target_tensors_to_dlc_tensors)
180
+ if len(dlc_ops_to_source_ops_and_tensors)
181
+ or len(source_ops_to_dlc_ops_and_tensors)
182
+ or len(dlc_tensors_to_source_ops_and_tensors)
183
+ or len(source_tensors_to_dlc_ops_and_tensors)
184
+ or len(dlc_ops_to_dlc_ops_and_tensors)
185
+ or len(dlc_tensors_to_dlc_ops_and_tensors)
186
+ or len(source_ops_to_source_ops_and_tensors)
187
+ or len(source_tensors_to_source_ops_and_tensors)
137
188
  else None
138
189
  )
139
190
 
140
191
  def update_mapping(
141
- self, map_obj: Dict[str, Dict[str, Set[str]]], name: str, category: str, value: str
192
+ self,
193
+ map_obj: Dict[str, Dict[str, Set[str]]],
194
+ name: str,
195
+ category: Literal["ops", "tensors"],
196
+ value: str,
142
197
  ) -> None:
143
198
  """Simple helper function for setting dictionary objects"""
144
199
  group: Dict[str, Set[str]] = {OPS_KEY: set(), TENSOR_KEY: set()}
@@ -158,6 +213,23 @@ class DlcParser:
158
213
  raise NotImplementedError("DLC's with multiple IR graphs not currently supported")
159
214
  return self.model_reader.get_ir_graph(next(iter(graph_names)))
160
215
 
216
+ def get_source_topology(self):
217
+ """
218
+ Get the source topology from the DLC, if available. Requires converting the source
219
+ model with the --enable_framework_trace argument. Source topology will always be the
220
+ first and only entry 0
221
+ """
222
+ # Eventually when we support multiple source types, we need to
223
+ # get new enum values from the converter team to use for recordType
224
+ topology = self.model_reader.extract_record(
225
+ recordName="source.topology0", recordType=modeltools.DlcRecordType.SOURCE_TOPOLOGY
226
+ )
227
+ if topology.get_size() == 0:
228
+ raise ValueError(
229
+ f"DLC file {os.path.basename(self.dlc_path)} " + "does not contain its source topology"
230
+ )
231
+ return topology.get_bytes()
232
+
161
233
  def close_file(self):
162
234
  """
163
235
  Closes the model_reader file
@@ -0,0 +1,47 @@
1
+ # ==============================================================================
2
+ #
3
+ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
4
+ # All Rights Reserved.
5
+ # Confidential and Proprietary - Qualcomm Technologies, Inc.
6
+ #
7
+ # ==============================================================================
8
+ """Extract Source Topology From DLC"""
9
+
10
+ import sys
11
+ import tempfile
12
+
13
+ from qairt_visualizer.core.parsers.dlc_parser.dlc_parser import DlcParser
14
+ from qairt_visualizer.core.parsers.dlc_parser.helpers.exception_helpers import handle_exception
15
+
16
+
17
+ def main():
18
+ """
19
+ CLI entry point: Gets the DLC's topology, if available.
20
+ """
21
+ if len(sys.argv) == 1:
22
+ raise ValueError("An argument for a DLC file path was not provided")
23
+ dlc_path = sys.argv[1]
24
+
25
+ reader = DlcParser(dlc_path)
26
+ source_topology = reader.get_source_topology()
27
+
28
+ sys.stdout.write(save_topology_to_tmp(source_topology))
29
+ sys.stdout.flush()
30
+
31
+
32
+ def save_topology_to_tmp(topology) -> str:
33
+ """
34
+ Saves the graph topology to a temp file, which must be removed by the caller
35
+ :param topology: The binary topology data to save to file
36
+ """
37
+ try:
38
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".onnx", mode="wb") as tmp:
39
+ tmp.write(topology)
40
+ return tmp.name
41
+ except Exception as e: # pylint: disable=broad-exception-caught
42
+ handle_exception(e)
43
+ return ""
44
+
45
+
46
+ if __name__ == "__main__":
47
+ main()
@@ -27,10 +27,14 @@ class OpTensorMappings(BaseModel):
27
27
  Class defining the various op / tensor mapping relationships
28
28
  """
29
29
 
30
- dlc_ops_to_target_ops: Dict[str, MappingGroup]
31
- target_ops_to_dlc_ops: Dict[str, MappingGroup]
32
- dlc_tensors_to_target_tensors: Dict[str, MappingGroup]
33
- target_tensors_to_dlc_tensors: Dict[str, MappingGroup]
30
+ dlc_ops_to_source_ops_and_tensors: Dict[str, MappingGroup]
31
+ source_ops_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
32
+ dlc_tensors_to_source_ops_and_tensors: Dict[str, MappingGroup]
33
+ source_tensors_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
34
+ dlc_ops_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
35
+ dlc_tensors_to_dlc_ops_and_tensors: Dict[str, MappingGroup]
36
+ source_ops_to_source_ops_and_tensors: Dict[str, MappingGroup]
37
+ source_tensors_to_source_ops_and_tensors: Dict[str, MappingGroup]
34
38
 
35
39
 
36
40
  class DlcOpTensorMappings(BaseModel):
@@ -0,0 +1,47 @@
1
+ """ Python Server entry point """
2
+
3
+ import argparse
4
+ import logging
5
+ import os
6
+ import sys
7
+
8
+ from .server import __version__, serve, start, status, stop, wait, widget
9
+
10
+ __all__ = ["start", "stop", "status", "wait", "serve", "widget", "__version__"]
11
+
12
+ def main():
13
+ """ main entry point """
14
+ parser = argparse.ArgumentParser(description=
15
+ "Viewer for neural network, deep learning and machine learning models.")
16
+ parser.add_argument("file",
17
+ metavar="MODEL_FILE", help="model file to serve", nargs="?", default=None)
18
+ parser.add_argument("-b", "--browse",
19
+ help="launch web browser", action="store_true")
20
+ parser.add_argument("-p", "--port", help="port to serve", type=int)
21
+ parser.add_argument("--host",
22
+ metavar="ADDR", help="host to serve", default="localhost")
23
+ parser.add_argument("--verbosity",
24
+ metavar="LEVEL", help="log verbosity (quiet, default, debug)",
25
+ choices=[ "quiet", "debug", "default" ], default="default")
26
+ parser.add_argument("--version", help="print version", action="store_true")
27
+ args = parser.parse_args()
28
+ levels = {
29
+ "quiet": logging.CRITICAL,
30
+ "default": logging.INFO,
31
+ "debug": logging.DEBUG,
32
+ }
33
+ logging.basicConfig(level=levels[args.verbosity], format="%(message)s")
34
+ logger = logging.getLogger(__name__)
35
+ if args.file and not os.path.exists(args.file):
36
+ logger.error(f"Model file '{args.file}' does not exist.")
37
+ sys.exit(2)
38
+ if args.version:
39
+ logger.info(__version__)
40
+ sys.exit(0)
41
+ address = (args.host, args.port) if args.host else args.port if args.port else None
42
+ start(args.file, address=address, browse=args.browse)
43
+ wait()
44
+ sys.exit(0)
45
+
46
+ if __name__ == "__main__":
47
+ main()
@@ -5,7 +5,7 @@ acuity.ModelFactory = class {
5
5
 
6
6
  async match(context) {
7
7
  const obj = await context.peek('json');
8
- if (obj && obj.MetaData && obj.Layers) {
8
+ if (obj && obj.MetaData && obj.Layers && Object.keys(obj).length < 256) {
9
9
  return context.set('acuity', obj);
10
10
  }
11
11
  return null;
@@ -23,7 +23,7 @@ acuity.Model = class {
23
23
  this.name = model.MetaData.Name;
24
24
  this.format = `Acuity v${model.MetaData.AcuityVersion}`;
25
25
  this.runtime = model.MetaData.Platform;
26
- this.graphs = [new acuity.Graph(metadata, model, data, quantization)];
26
+ this.modules = [new acuity.Graph(metadata, model, data, quantization)];
27
27
  }
28
28
  };
29
29
 
@@ -702,4 +702,4 @@ acuity.Error = class extends Error {
702
702
  }
703
703
  };
704
704
 
705
- export const ModelFactory = acuity.ModelFactory;
705
+ export const ModelFactory = acuity.ModelFactory;