qairt-visualizer 0.5.1__py3-none-win_amd64.whl → 0.6.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 (309) 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 +32 -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/netron_plugin/source/barracuda.js → barracuda.js} +3 -3
  21. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/base.js → base.js} +20 -16
  22. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl.js → bigdl.js} +2 -2
  23. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/browser.js → browser.js} +59 -49
  24. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe.js → caffe.js} +3 -3
  25. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-proto.js → caffe2-proto.js} +26 -26
  26. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2.js → caffe2.js} +113 -114
  27. qairt_visualizer/core/ui/dist/browser/chunk-3SMGFPTN.js +11 -0
  28. qairt_visualizer/core/ui/dist/browser/chunk-43LQFSHA.js +1 -0
  29. qairt_visualizer/core/ui/dist/browser/chunk-447NKSFT.js +1 -0
  30. qairt_visualizer/core/ui/dist/browser/chunk-5MAR72QP.js +1 -0
  31. qairt_visualizer/core/ui/dist/browser/chunk-7PTY53DS.js +5 -0
  32. qairt_visualizer/core/ui/dist/browser/chunk-GAUD627J.js +1 -0
  33. qairt_visualizer/core/ui/dist/browser/chunk-H7TLLCSI.js +1 -0
  34. qairt_visualizer/core/ui/dist/browser/chunk-HISUA6LZ.js +4 -0
  35. qairt_visualizer/core/ui/dist/browser/chunk-HXB7IAZI.js +1 -0
  36. qairt_visualizer/core/ui/dist/browser/chunk-L3QJ7DR2.js +1 -0
  37. qairt_visualizer/core/ui/dist/browser/chunk-M7SD7HRU.js +129 -0
  38. qairt_visualizer/core/ui/dist/browser/{chunk-HBP6TEQ6.js → chunk-MCR4N53U.js} +1 -1
  39. qairt_visualizer/core/ui/dist/browser/chunk-QD7PA2I4.js +19 -0
  40. qairt_visualizer/core/ui/dist/browser/chunk-TKZG6FLW.js +12 -0
  41. qairt_visualizer/core/ui/dist/browser/chunk-WFAVWONI.js +5 -0
  42. qairt_visualizer/core/ui/dist/browser/chunk-WRMDGTCT.js +35 -0
  43. qairt_visualizer/core/ui/dist/browser/chunk-X25J6H7V.js +1 -0
  44. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-schema.js → circle-schema.js} +17 -0
  45. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle.js → circle.js} +3 -3
  46. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk.js → cntk.js} +1 -1
  47. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-proto.js → coreml-proto.js} +1 -0
  48. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml.js → coreml.js} +24 -21
  49. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dagre.js → dagre.js} +5 -5
  50. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet-metadata.json → darknet-metadata.json} +0 -1
  51. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet.js → darknet.js} +3 -3
  52. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs} +44 -131
  53. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j.js → dl4j.js} +5 -2
  54. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-schema.js → dlc-schema.js} +8 -8
  55. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc.js → dlc.js} +110 -29
  56. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn.js → dnn.js} +2 -4
  57. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dot.js → dot.js} +1 -1
  58. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso.js → espresso.js} +1 -1
  59. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch-schema.js → executorch-schema.js} +363 -42
  60. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch.js → executorch.js} +108 -40
  61. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flatbuffers.js → flatbuffers.js} +1 -1
  62. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flax.js → flax.js} +1 -1
  63. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux.js → flux.js} +2 -2
  64. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/gguf.js → gguf.js} +44 -24
  65. qairt_visualizer/core/ui/dist/browser/grapher.css +145 -0
  66. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/grapher.js → grapher.js} +24 -48
  67. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo.js → hailo.js} +1 -1
  68. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hickle.js → hickle.js} +1 -1
  69. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/imgdnn.js → imgdnn.js} +1 -1
  70. qairt_visualizer/core/ui/dist/browser/index.html +15 -16
  71. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/index.js → index.js} +2 -24
  72. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/json.js → json.js} +28 -3
  73. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann.js → kann.js} +1 -1
  74. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-metadata.json → keras-metadata.json} +15 -7
  75. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras.js → keras.js} +13 -7
  76. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kmodel.js → kmodel.js} +3 -3
  77. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne.js → lasagne.js} +2 -2
  78. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lightgbm.js → lightgbm.js} +1 -1
  79. qairt_visualizer/core/ui/dist/browser/main-VGWU2273.js +1 -0
  80. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mediapipe.js → mediapipe.js} +1 -1
  81. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine.js → megengine.js} +1 -1
  82. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/message.js → message.js} +3 -2
  83. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlir.js → mlir.js} +53 -17
  84. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet.js → mlnet.js} +2 -3
  85. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-schema.js → mnn-schema.js} +9 -6
  86. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn.js → mnn.js} +2 -2
  87. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite.js → mslite.js} +3 -3
  88. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet.js → mxnet.js} +2 -2
  89. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn.js → ncnn.js} +3 -2
  90. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla.js → nnabla.js} +4 -4
  91. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnef.js → nnef.js} +1 -1
  92. qairt_visualizer/core/ui/dist/browser/node.js +102 -0
  93. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/numpy.js → numpy.js} +9 -9
  94. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om.js → om.js} +2 -2
  95. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn.js → onednn.js} +1 -1
  96. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-metadata.json → onnx-metadata.json} +3500 -233
  97. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-proto.js → onnx-proto.js} +436 -4
  98. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx.js → onnx.js} +284 -199
  99. qairt_visualizer/core/ui/dist/browser/onnx.py +231 -0
  100. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino.js → openvino.js} +36 -31
  101. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-proto.js → paddle-proto.js} +54 -54
  102. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle.js → paddle.js} +22 -3
  103. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pickle.js → pickle.js} +3 -3
  104. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/python.js → python.js} +743 -325
  105. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-metadata.json → pytorch-metadata.json} +3217 -2934
  106. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-proto.js → pytorch-proto.js} +4 -4
  107. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch.js → pytorch.js} +172 -86
  108. qairt_visualizer/core/ui/dist/browser/pytorch.py +304 -0
  109. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn.js → qnn.js} +6 -2
  110. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn.js → rknn.js} +3 -3
  111. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/safetensors.js → safetensors.js} +2 -2
  112. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece.js → sentencepiece.js} +1 -1
  113. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/server.py → server.py} +95 -103
  114. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn-metadata.json → sklearn-metadata.json} +15 -10
  115. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn.js → sklearn.js} +5 -5
  116. qairt_visualizer/core/ui/dist/browser/{styles-MRR6DOT2.css → styles-52VQCFP5.css} +1 -1
  117. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tar.js → tar.js} +18 -1
  118. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine.js → tengine.js} +1 -1
  119. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tensorrt.js → tensorrt.js} +1 -1
  120. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-metadata.json → tf-metadata.json} +1255 -163
  121. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-proto.js → tf-proto.js} +46 -12
  122. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf.js → tf.js} +36 -13
  123. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite.js → tflite.js} +18 -21
  124. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn.js → tnn.js} +1 -3
  125. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch.js → torch.js} +1 -1
  126. qairt_visualizer/core/ui/dist/browser/transformers.js +171 -0
  127. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tvm.js → tvm.js} +2 -2
  128. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff.js → uff.js} +2 -2
  129. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/view.js → view.js} +1405 -1115
  130. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/weka.js → weka.js} +3 -4
  131. qairt_visualizer/core/ui/dist/browser/worker-CECUQ4FG.js +1 -0
  132. qairt_visualizer/core/ui/dist/browser/worker-IGSZ74QJ.js +4 -0
  133. qairt_visualizer/core/ui/dist/browser/xgboost.js +59 -0
  134. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xml.js → xml.js} +2 -2
  135. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel.js → xmodel.js} +1 -1
  136. qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/zip.js → zip.js} +38 -41
  137. qairt_visualizer/core/ui/dist/qairt_visualizer.exe +0 -0
  138. qairt_visualizer/core/ui/dist/resources/app.asar +0 -0
  139. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.6.0.dist-info}/METADATA +1 -1
  140. qairt_visualizer-0.6.0.dist-info/RECORD +264 -0
  141. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CITATION.cff +0 -10
  142. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CONTRIBUTING.md +0 -29
  143. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/LICENSE +0 -21
  144. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/README.md +0 -36
  145. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/jenkins/Jenkinsfile +0 -69
  146. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package-lock.json +0 -5743
  147. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.js +0 -689
  148. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.json +0 -53
  149. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.py +0 -87
  150. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.png +0 -0
  151. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.svg +0 -5
  152. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background@2x.png +0 -0
  153. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/electron-builder.json +0 -109
  154. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/eslint.config.js +0 -231
  155. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/forge.config.js +0 -87
  156. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.html +0 -27
  157. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns +0 -0
  158. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns.svg +0 -175
  159. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.ico +0 -0
  160. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.png +0 -0
  161. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.svg +0 -179
  162. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/notarize.cjs +0 -24
  163. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/pyproject.toml +0 -63
  164. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/setup.py +0 -43
  165. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/resolve_upgrade_merge.sh +0 -10
  166. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/__init__.py +0 -41
  167. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/cambricon.js +0 -32
  168. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/favicon.ico +0 -0
  169. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/grapher.css +0 -602
  170. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/index.html +0 -2222
  171. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/modular.js +0 -81
  172. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/onnx.py +0 -227
  173. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/pytorch.py +0 -298
  174. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qcontrol.js +0 -207
  175. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qgraph-toolkit.js +0 -123
  176. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsubgraph.js +0 -226
  177. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsummary-panel.js +0 -89
  178. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/server.js +0 -250
  179. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/backend.py +0 -80
  180. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/measures.py +0 -27
  181. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.js +0 -359
  182. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.json +0 -8523
  183. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/worker.js +0 -859
  184. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/armnn +0 -33
  185. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/bigdl +0 -33
  186. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe +0 -37
  187. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe-script.js +0 -12
  188. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle +0 -43
  189. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle-script.js +0 -87
  190. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle_script.js +0 -73
  191. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/cntk +0 -33
  192. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/coreml +0 -49
  193. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc +0 -20
  194. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc.fbs +0 -165
  195. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn +0 -20
  196. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn.proto +0 -79
  197. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/executorch +0 -41
  198. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/flatc.js +0 -1315
  199. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/gguf +0 -22
  200. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/kann +0 -33
  201. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras +0 -62
  202. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_metadata.py +0 -205
  203. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_script.py +0 -204
  204. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mediapipe +0 -72
  205. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine +0 -47
  206. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine-script.js +0 -113
  207. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine_script.js +0 -112
  208. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mnn +0 -40
  209. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite +0 -45
  210. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite-script.js +0 -83
  211. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite_metadata.js +0 -82
  212. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla +0 -79
  213. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla_script.py +0 -145
  214. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om +0 -26
  215. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om.proto +0 -204
  216. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx +0 -135
  217. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_metadata.py +0 -233
  218. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_script.py +0 -332
  219. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/paddle +0 -38
  220. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/protoc.js +0 -1609
  221. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch +0 -85
  222. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_metadata.py +0 -166
  223. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_script.py +0 -404
  224. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn +0 -20
  225. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn.fbs +0 -78
  226. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sentencepiece +0 -39
  227. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn +0 -65
  228. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_metadata.py +0 -126
  229. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_script.py +0 -129
  230. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf +0 -97
  231. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_metadata.py +0 -403
  232. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_script.py +0 -422
  233. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite-script.js +0 -87
  234. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite_metadata.js +0 -73
  235. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff +0 -20
  236. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff.proto +0 -127
  237. qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/xmodel +0 -36
  238. qairt_visualizer/core/ui/dist/browser/chunk-3NAQCYEU.js +0 -1
  239. qairt_visualizer/core/ui/dist/browser/chunk-NFKTPX3Z.js +0 -11
  240. qairt_visualizer/core/ui/dist/browser/chunk-OMI6HJ5Y.js +0 -19
  241. qairt_visualizer/core/ui/dist/browser/chunk-TTZXMRJ5.js +0 -34
  242. qairt_visualizer/core/ui/dist/browser/main-NXPVOKMG.js +0 -1
  243. qairt_visualizer/core/ui/dist/browser/worker-5VPKG2GV.js +0 -4
  244. qairt_visualizer/core/ui/dist/browser/worker-UVGWDZ5K.js +0 -1
  245. qairt_visualizer-0.5.1.dist-info/RECORD +0 -337
  246. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity-metadata.json → acuity-metadata.json} +0 -0
  247. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-metadata.json → armnn-metadata.json} +0 -0
  248. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-metadata.json → bigdl-metadata.json} +0 -0
  249. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-proto.js → bigdl-proto.js} +0 -0
  250. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-metadata.json → caffe-metadata.json} +0 -0
  251. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-proto.js → caffe-proto.js} +0 -0
  252. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-metadata.json → caffe2-metadata.json} +0 -0
  253. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/catboost.js → catboost.js} +0 -0
  254. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-metadata.json → circle-metadata.json} +0 -0
  255. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-metadata.json → cntk-metadata.json} +0 -0
  256. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-proto.js → cntk-proto.js} +0 -0
  257. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-metadata.json → coreml-metadata.json} +0 -0
  258. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j-metadata.json → dl4j-metadata.json} +0 -0
  259. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-metadata.json → dlc-metadata.json} +0 -0
  260. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-metadata.json → dnn-metadata.json} +0 -0
  261. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-proto.js → dnn-proto.js} +0 -0
  262. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso-metadata.json → espresso-metadata.json} +0 -0
  263. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flexbuffers.js → flexbuffers.js} +0 -0
  264. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux-metadata.json → flux-metadata.json} +0 -0
  265. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo-metadata.json → hailo-metadata.json} +0 -0
  266. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hdf5.js → hdf5.js} +0 -0
  267. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/icon.png → icon.png} +0 -0
  268. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-metadata.json → kann-metadata.json} +0 -0
  269. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-schema.js → kann-schema.js} +0 -0
  270. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-proto.js → keras-proto.js} +0 -0
  271. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne-metadata.json → lasagne-metadata.json} +0 -0
  272. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-metadata.json → megengine-metadata.json} +0 -0
  273. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-schema.js → megengine-schema.js} +0 -0
  274. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet-metadata.json → mlnet-metadata.json} +0 -0
  275. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-metadata.json → mnn-metadata.json} +0 -0
  276. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-metadata.json → mslite-metadata.json} +0 -0
  277. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-schema.js → mslite-schema.js} +0 -0
  278. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet-metadata.json → mxnet-metadata.json} +0 -0
  279. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn-metadata.json → ncnn-metadata.json} +0 -0
  280. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-metadata.json → nnabla-metadata.json} +0 -0
  281. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-proto.js → nnabla-proto.js} +0 -0
  282. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnc.js → nnc.js} +0 -0
  283. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-metadata.json → om-metadata.json} +0 -0
  284. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-proto.js → om-proto.js} +0 -0
  285. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn-metadata.json → onednn-metadata.json} +0 -0
  286. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-schema.js → onnx-schema.js} +0 -0
  287. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino-metadata.json → openvino-metadata.json} +0 -0
  288. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-metadata.json → paddle-metadata.json} +0 -0
  289. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-schema.js → paddle-schema.js} +0 -0
  290. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/protobuf.js → protobuf.js} +0 -0
  291. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-schema.js → pytorch-schema.js} +0 -0
  292. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn-metadata.json → qnn-metadata.json} +0 -0
  293. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-metadata.json → rknn-metadata.json} +0 -0
  294. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-schema.js → rknn-schema.js} +0 -0
  295. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece-proto.js → sentencepiece-proto.js} +0 -0
  296. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine-metadata.json → tengine-metadata.json} +0 -0
  297. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/text.js → text.js} +0 -0
  298. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-metadata.json → tflite-metadata.json} +0 -0
  299. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-schema.js → tflite-schema.js} +0 -0
  300. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn-metadata.json → tnn-metadata.json} +0 -0
  301. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch-metadata.json → torch-metadata.json} +0 -0
  302. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-metadata.json → uff-metadata.json} +0 -0
  303. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-proto.js → uff-proto.js} +0 -0
  304. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/worker.js → worker.js} +0 -0
  305. /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel-proto.js → xmodel-proto.js} +0 -0
  306. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.6.0.dist-info}/LICENSE.pdf +0 -0
  307. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.6.0.dist-info}/WHEEL +0 -0
  308. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.6.0.dist-info}/entry_points.txt +0 -0
  309. {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.6.0.dist-info}/top_level.txt +0 -0
@@ -1,81 +1,80 @@
1
- ''' Python Server implementation '''
1
+ """ Python Server implementation """
2
2
 
3
3
  import errno
4
4
  import http.server
5
- import importlib.util
5
+ import importlib
6
+ import importlib.metadata
6
7
  import json
8
+ import logging
7
9
  import os
8
10
  import random
9
11
  import re
10
12
  import socket
11
13
  import socketserver
12
- import sys
13
14
  import threading
14
15
  import time
15
- import webbrowser
16
16
  import urllib.parse
17
+ import webbrowser
18
+
19
+ __version__ = "0.0.0"
17
20
 
18
- __version__ = '0.0.0'
21
+ logger = logging.getLogger(__name__)
19
22
 
20
- class _ContentProvider: # pylint: disable=too-few-public-methods
23
+ class _ContentProvider:
21
24
  data = bytearray()
22
- base_dir = ''
23
- base = ''
24
- identifier = ''
25
+ base_dir = ""
26
+ base = ""
27
+ identifier = ""
25
28
  def __init__(self, data, path, file, name):
26
29
  self.data = data if data else bytearray()
27
- self.identifier = os.path.basename(file) if file else ''
30
+ self.identifier = os.path.basename(file) if file else ""
28
31
  self.name = name
29
32
  if path:
30
- self.dir = os.path.dirname(path) if os.path.dirname(path) else '.'
33
+ self.dir = os.path.dirname(path) if os.path.dirname(path) else "."
31
34
  self.base = os.path.basename(path)
32
35
  def read(self, path):
33
- ''' Read content '''
34
36
  if path == self.base and self.data:
35
37
  return self.data
36
38
  base_dir = os.path.realpath(self.dir)
37
- filename = os.path.normpath(os.path.realpath(base_dir + '/' + path))
39
+ filename = os.path.normpath(os.path.realpath(base_dir + "/" + path))
38
40
  if os.path.commonprefix([ base_dir, filename ]) == base_dir:
39
41
  if os.path.exists(filename) and not os.path.isdir(filename):
40
- with open(filename, 'rb') as file:
42
+ with open(filename, "rb") as file:
41
43
  return file.read()
42
44
  return None
43
45
 
44
46
  class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
45
47
  content = None
46
- verbosity = 1
47
48
  mime_types = {
48
- '.html': 'text/html',
49
- '.js': 'text/javascript',
50
- '.css': 'text/css',
51
- '.png': 'image/png',
52
- '.gif': 'image/gif',
53
- '.jpg': 'image/jpeg',
54
- '.ico': 'image/x-icon',
55
- '.json': 'application/json',
56
- '.pb': 'application/octet-stream',
57
- '.ttf': 'font/truetype',
58
- '.otf': 'font/opentype',
59
- '.eot': 'application/vnd.ms-fontobject',
60
- '.woff': 'font/woff',
61
- '.woff2': 'application/font-woff2',
62
- '.svg': 'image/svg+xml'
49
+ ".html": "text/html",
50
+ ".js": "text/javascript",
51
+ ".css": "text/css",
52
+ ".png": "image/png",
53
+ ".gif": "image/gif",
54
+ ".jpg": "image/jpeg",
55
+ ".ico": "image/x-icon",
56
+ ".json": "application/json",
57
+ ".pb": "application/octet-stream",
58
+ ".ttf": "font/truetype",
59
+ ".otf": "font/opentype",
60
+ ".eot": "application/vnd.ms-fontobject",
61
+ ".woff": "font/woff",
62
+ ".woff2": "application/font-woff2",
63
+ ".svg": "image/svg+xml"
63
64
  }
64
- def do_HEAD(self): # pylint: disable=invalid-name
65
- ''' Serve a HEAD request '''
65
+ def do_HEAD(self):
66
66
  self.do_GET()
67
- def do_GET(self): # pylint: disable=invalid-name
68
- ''' Serve a GET request '''
67
+ def do_GET(self):
69
68
  path = urllib.parse.urlparse(self.path).path
70
- path = '/index.html' if path == '/' else path
69
+ path = "/index.html" if path == "/" else path
71
70
  status_code = 404
72
71
  content = None
73
72
  content_type = None
74
- if path.startswith('/data/'):
75
- path = urllib.parse.unquote(path[len('/data/'):])
73
+ if path.startswith("/data/"):
74
+ path = urllib.parse.unquote(path[len("/data/"):])
76
75
  content = self.content.read(path)
77
76
  if content:
78
- content_type = 'application/octet-stream'
77
+ content_type = "application/octet-stream"
79
78
  status_code = 200
80
79
  else:
81
80
  base_dir = os.path.dirname(os.path.realpath(__file__))
@@ -85,10 +84,10 @@ class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
85
84
  os.path.exists(filename) and not os.path.isdir(filename) and \
86
85
  extension in self.mime_types:
87
86
  content_type = self.mime_types[extension]
88
- with open(filename, 'rb') as file:
87
+ with open(filename, "rb") as file:
89
88
  content = file.read()
90
- if path == '/index.html':
91
- content = content.decode('utf-8')
89
+ if path == "/index.html":
90
+ content = content.decode("utf-8")
92
91
  meta = [
93
92
  '<meta name="type" content="Python">',
94
93
  '<meta name="version" content="' + __version__ + '">'
@@ -101,24 +100,24 @@ class _HTTPRequestHandler(http.server.BaseHTTPRequestHandler):
101
100
  meta.append('<meta name="name" content="' + name + '">')
102
101
  identifier = self.content.identifier
103
102
  if identifier:
104
- meta.append('<meta name="identifier" content="' + identifier + '">')
105
- meta = '\n'.join(meta)
106
- content = re.sub(r'<meta name="version" content=".*">', meta, content)
107
- content = content.encode('utf-8')
103
+ meta.append(f'<meta name="identifier" content="{identifier}">')
104
+ meta = "\n".join(meta)
105
+ regex = r'<meta name="version" content=".*">'
106
+ content = re.sub(regex, lambda _: meta, content)
107
+ content = content.encode("utf-8")
108
108
  status_code = 200
109
- _log(self.verbosity > 1, str(status_code) + ' ' + self.command + ' ' + self.path + '\n')
110
109
  self._write(status_code, content_type, content)
111
- def log_message(self, format, *args): # pylint: disable=redefined-builtin
112
- return
110
+ def log_message(self, format, *args):
111
+ logger.debug(" ".join(args))
113
112
  def _write(self, status_code, content_type, content):
114
113
  self.send_response(status_code)
115
114
  if content:
116
- self.send_header('Content-Type', content_type)
117
- self.send_header('Content-Length', len(content))
115
+ self.send_header("Content-Type", content_type)
116
+ self.send_header("Content-Length", len(content))
118
117
  self.end_headers()
119
- if self.command != 'HEAD':
118
+ if self.command != "HEAD":
120
119
  if status_code == 404 and content is None:
121
- self.wfile.write(str(status_code).encode('utf-8'))
120
+ self.wfile.write(str(status_code).encode("utf-8"))
122
121
  elif (status_code in (200, 404)) and content is not None:
123
122
  self.wfile.write(content)
124
123
 
@@ -126,16 +125,14 @@ class _ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
126
125
  pass
127
126
 
128
127
  class _HTTPServerThread(threading.Thread):
129
- def __init__(self, content, address, verbosity):
128
+ def __init__(self, content, address):
130
129
  threading.Thread.__init__(self)
131
- self.verbosity = verbosity
132
130
  self.address = address
133
- self.url = 'http://' + address[0] + ':' + str(address[1])
131
+ self.url = "http://" + address[0] + ":" + str(address[1])
134
132
  self.server = _ThreadedHTTPServer(address, _HTTPRequestHandler)
135
133
  self.server.timeout = 0.25
136
134
  self.server.block_on_close = False
137
135
  self.server.RequestHandlerClass.content = content
138
- self.server.RequestHandlerClass.verbosity = verbosity
139
136
  self.terminate_event = threading.Event()
140
137
  self.terminate_event.set()
141
138
  self.stop_event = threading.Event()
@@ -146,37 +143,35 @@ class _HTTPServerThread(threading.Thread):
146
143
  try:
147
144
  while not self.stop_event.is_set():
148
145
  self.server.handle_request()
149
- except: # pylint: disable=bare-except
146
+ except: # noqa: E722
150
147
  pass
151
148
  self.terminate_event.set()
152
149
  self.stop_event.clear()
153
150
 
154
151
  def stop(self):
155
- ''' Stop server '''
156
152
  if self.alive():
157
- _log(self.verbosity > 0, "Stopping " + self.url + "\n")
153
+ logger.info("Stopping " + self.url)
158
154
  self.stop_event.set()
159
155
  self.server.server_close()
160
- self.terminate_event.wait(1000)
156
+ self.terminate_event.wait(1)
161
157
 
162
158
  def alive(self):
163
- ''' Check server status '''
164
159
  value = not self.terminate_event.is_set()
165
160
  return value
166
161
 
167
162
  def _open(data):
168
163
  registry = dict([
169
- ('onnx.onnx_ml_pb2.ModelProto', '.onnx'),
170
- ('torch.jit._script.ScriptModule', '.pytorch'),
171
- ('torch.Graph', '.pytorch'),
172
- ('torch._C.Graph', '.pytorch'),
173
- ('torch.nn.modules.module.Module', '.pytorch')
164
+ ("onnx.onnx_ml_pb2.ModelProto", ".onnx"),
165
+ ("torch.jit._script.ScriptModule", ".pytorch"),
166
+ ("torch.Graph", ".pytorch"),
167
+ ("torch._C.Graph", ".pytorch"),
168
+ ("torch.nn.modules.module.Module", ".pytorch")
174
169
  ])
175
170
  queue = [ data.__class__ ]
176
171
  while len(queue) > 0:
177
172
  current = queue.pop(0)
178
173
  if current.__module__ and current.__name__:
179
- name = current.__module__ + '.' + current.__name__
174
+ name = current.__module__ + "." + current.__name__
180
175
  if name in registry:
181
176
  module_name = registry[name]
182
177
  module = importlib.import_module(module_name, package=__package__)
@@ -186,7 +181,10 @@ def _open(data):
186
181
  return None
187
182
 
188
183
  def _threads(address=None):
189
- threads = [ _ for _ in threading.enumerate() if isinstance(_, _HTTPServerThread) and _.alive() ]
184
+ threads = []
185
+ for thread in threading.enumerate():
186
+ if isinstance(thread, _HTTPServerThread) and thread.alive():
187
+ threads.append(thread)
190
188
  if address is not None:
191
189
  address = _make_address(address)
192
190
  threads = [ _ for _ in threads if address[0] == _.address[0] ]
@@ -194,21 +192,16 @@ def _threads(address=None):
194
192
  threads = [ _ for _ in threads if address[1] == _.address[1] ]
195
193
  return threads
196
194
 
197
- def _log(condition, message):
198
- if condition:
199
- sys.stdout.write(message)
200
- sys.stdout.flush()
201
-
202
195
  def _make_address(address):
203
196
  if address is None or isinstance(address, int):
204
197
  port = address
205
- address = ('localhost', port)
198
+ address = ("localhost", port)
206
199
  if isinstance(address, tuple) and len(address) == 2:
207
200
  host = address[0]
208
201
  port = address[1]
209
202
  if isinstance(host, str) and (port is None or isinstance(port, int)):
210
203
  return address
211
- raise ValueError('Invalid address.')
204
+ raise ValueError("Invalid address.")
212
205
 
213
206
  def _make_port(address):
214
207
  if address[1] is None or address[1] == 0:
@@ -231,56 +224,56 @@ def _make_port(address):
231
224
  sockname = temp_socket.getsockname()
232
225
  address = (address[0], sockname[1])
233
226
  return address
234
- except: # pylint: disable=bare-except
227
+ except: # noqa: E722
235
228
  pass
236
229
  finally:
237
230
  temp_socket.close()
238
231
  if isinstance(address[1], int):
239
232
  return address
240
- raise ValueError('Failed to allocate port.')
233
+ raise ValueError("Failed to allocate port.")
241
234
 
242
235
  def stop(address=None):
243
- '''Stop serving model at address.
236
+ """Stop serving model at address.
244
237
 
245
238
  Args:
246
239
  address (tuple, optional): A (host, port) tuple, or a port number.
247
- '''
240
+ """
248
241
  threads = _threads(address)
249
242
  for thread in threads:
250
243
  thread.stop()
251
244
 
252
- def status(adrress=None):
253
- '''Is model served at address.
245
+ def status(address=None):
246
+ """Is model served at address.
254
247
 
255
248
  Args:
256
249
  address (tuple, optional): A (host, port) tuple, or a port number.
257
- '''
258
- threads = _threads(adrress)
250
+ """
251
+ threads = _threads(address)
259
252
  return len(threads) > 0
260
253
 
261
254
  def wait():
262
- '''Wait for console exit and stop all model servers.'''
255
+ """Wait for console exit and stop all model servers."""
263
256
  try:
264
257
  while len(_threads()) > 0:
265
258
  time.sleep(0.1)
266
259
  except (KeyboardInterrupt, SystemExit):
267
- _log(True, '\n')
260
+ logger.info("")
268
261
  stop()
269
262
 
270
- def serve(file, data=None, address=None, browse=False, verbosity=1):
271
- '''Start serving model from file or data buffer at address and open in web browser.
263
+ def serve(file, data=None, address=None, browse=False):
264
+ """Start serving model from file or data buffer at address and open in web browser.
272
265
 
273
266
  Args:
274
267
  file (string): Model file to serve. Required to detect format.
275
268
  data (bytes): Model data to serve. None will load data from file.
276
269
  address (tuple, optional): A (host, port) tuple, or a port number.
277
270
  browse (bool, optional): Launch web browser. Default: True
278
- log (bool, optional): Log details to console. Default: False
279
271
 
280
272
  Returns:
281
273
  A (host, port) address tuple.
282
- '''
283
- verbosity = { '0': 0, 'quiet': 0, '1': 1, 'default': 1, '2': 2, 'debug': 2 }[str(verbosity)]
274
+ """
275
+ if not logging.getLogger().hasHandlers():
276
+ logging.basicConfig(level=logging.INFO, format="%(message)s")
284
277
 
285
278
  if not data and file and not os.path.exists(file):
286
279
  raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), file)
@@ -288,11 +281,11 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
288
281
  content = _ContentProvider(data, file, file, file)
289
282
 
290
283
  if data and not isinstance(data, bytearray) and isinstance(data.__class__, type):
291
- _log(verbosity > 1, 'Experimental\n')
284
+ logger.info("Experimental")
292
285
  model = _open(data)
293
286
  if model:
294
287
  text = json.dumps(model.to_json(), indent=2, ensure_ascii=False)
295
- content = _ContentProvider(text.encode('utf-8'), 'model.netron', None, file)
288
+ content = _ContentProvider(text.encode("utf-8"), "model.netron", None, file)
296
289
 
297
290
  address = _make_address(address)
298
291
  if isinstance(address[1], int) and address[1] != 0:
@@ -300,33 +293,32 @@ def serve(file, data=None, address=None, browse=False, verbosity=1):
300
293
  else:
301
294
  address = _make_port(address)
302
295
 
303
- thread = _HTTPServerThread(content, address, verbosity)
296
+ thread = _HTTPServerThread(content, address)
304
297
  thread.start()
305
298
  while not thread.alive():
306
299
  time.sleep(0.01)
307
- message = (("Serving '" + file + "'") if file else "Serving") + " at " + thread.url + "\n"
308
- _log(verbosity > 0, message)
300
+ state = ("Serving '" + file + "'") if file else "Serving"
301
+ logger.info(f"{state} at {thread.url}")
309
302
  if browse:
310
303
  webbrowser.open(thread.url)
311
304
 
312
305
  return address
313
306
 
314
- def start(file=None, address=None, browse=True, verbosity=1):
315
- '''Start serving model file at address and open in web browser.
307
+ def start(file=None, address=None, browse=True):
308
+ """Start serving model file at address and open in web browser.
316
309
 
317
310
  Args:
318
311
  file (string): Model file to serve.
319
- log (bool, optional): Log details to console. Default: False
320
312
  browse (bool, optional): Launch web browser, Default: True
321
313
  address (tuple, optional): A (host, port) tuple, or a port number.
322
314
 
323
315
  Returns:
324
316
  A (host, port) address tuple.
325
- '''
326
- return serve(file, None, browse=browse, address=address, verbosity=verbosity)
317
+ """
318
+ return serve(file, None, browse=browse, address=address)
327
319
 
328
320
  def widget(address, height=800):
329
- ''' Open address as Jupyter Notebook IFrame.
321
+ """ Open address as Jupyter Notebook IFrame.
330
322
 
331
323
  Args:
332
324
  address (tuple, optional): A (host, port) tuple, or a port number.
@@ -334,8 +326,8 @@ def widget(address, height=800):
334
326
 
335
327
  Returns:
336
328
  A Jupyter Notebook IFrame.
337
- '''
329
+ """
338
330
  address = _make_address(address)
339
331
  url = f"http://{address[0]}:{address[1]}"
340
- IPython = __import__('IPython') # pylint: disable=invalid-name
332
+ IPython = __import__("IPython")
341
333
  return IPython.display.IFrame(url, width="100%", height=height)
@@ -192,7 +192,7 @@
192
192
  },
193
193
  {
194
194
  "name": "sklearn.calibration.CalibratedClassifierCV",
195
- "description": "Probability calibration with isotonic regression or logistic regression.\n\nThis class uses cross-validation to both estimate the parameters of a\nclassifier and subsequently calibrate a classifier. With default\n`ensemble=True`, for each cv split it\nfits a copy of the base estimator to the training subset, and calibrates it\nusing the testing subset. For prediction, predicted probabilities are\naveraged across these individual calibrated classifiers. When\n`ensemble=False`, cross-validation is used to obtain unbiased predictions,\nvia :func:`~sklearn.model_selection.cross_val_predict`, which are then\nused for calibration. For prediction, the base estimator, trained using all\nthe data, is used. This is the prediction method implemented when\n`probabilities=True` for :class:`~sklearn.svm.SVC` and :class:`~sklearn.svm.NuSVC`\nestimators (see :ref:`User Guide <scores_probabilities>` for details).\n\nAlready fitted classifiers can be calibrated by wrapping the model in a\n:class:`~sklearn.frozen.FrozenEstimator`. In this case all provided\ndata is used for calibration. The user has to take care manually that data\nfor model fitting and calibration are disjoint.\n\nThe calibration is based on the :term:`decision_function` method of the\n`estimator` if it exists, else on :term:`predict_proba`.\n\nRead more in the :ref:`User Guide <calibration>`.\nIn order to learn more on the CalibratedClassifierCV class, see the\nfollowing calibration examples:\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration.py`,\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration_curve.py`, and\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration_multiclass.py`.\n",
195
+ "description": "Probability calibration with isotonic regression or logistic regression.\n\nThis class uses cross-validation to both estimate the parameters of a\nclassifier and subsequently calibrate a classifier. With\n`ensemble=True`, for each cv split it\nfits a copy of the base estimator to the training subset, and calibrates it\nusing the testing subset. For prediction, predicted probabilities are\naveraged across these individual calibrated classifiers. When\n`ensemble=False`, cross-validation is used to obtain unbiased predictions,\nvia :func:`~sklearn.model_selection.cross_val_predict`, which are then\nused for calibration. For prediction, the base estimator, trained using all\nthe data, is used. This is the prediction method implemented when\n`probabilities=True` for :class:`~sklearn.svm.SVC` and :class:`~sklearn.svm.NuSVC`\nestimators (see :ref:`User Guide <scores_probabilities>` for details).\n\nAlready fitted classifiers can be calibrated by wrapping the model in a\n:class:`~sklearn.frozen.FrozenEstimator`. In this case all provided\ndata is used for calibration. The user has to take care manually that data\nfor model fitting and calibration are disjoint.\n\nThe calibration is based on the :term:`decision_function` method of the\n`estimator` if it exists, else on :term:`predict_proba`.\n\nRead more in the :ref:`User Guide <calibration>`.\nIn order to learn more on the CalibratedClassifierCV class, see the\nfollowing calibration examples:\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration.py`,\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration_curve.py`, and\n:ref:`sphx_glr_auto_examples_calibration_plot_calibration_multiclass.py`.\n",
196
196
  "attributes": [
197
197
  {
198
198
  "default": null,
@@ -280,8 +280,8 @@
280
280
  },
281
281
  {
282
282
  "name": "force_int_remainder_cols",
283
- "default": true,
284
- "description": "Force the columns of the last entry of `transformers_`, which\ncorresponds to the \"remainder\" transformer, to always be stored as\nindices (int) rather than column names (str). See description of the\n`transformers_` attribute for details.\n\n.. note::\nIf you do not access the list of columns for the remainder columns\nin the `transformers_` fitted attribute, you do not need to set\nthis parameter.\n\n.. versionadded:: 1.5\n\n.. versionchanged:: 1.7\nThe default value for `force_int_remainder_cols` will change from\n`True` to `False` in version 1.7.\n"
283
+ "default": false,
284
+ "description": "This parameter has no effect.\n\n.. note::\nIf you do not access the list of columns for the remainder columns\nin the `transformers_` fitted attribute, you do not need to set\nthis parameter.\n\n.. versionadded:: 1.5\n\n.. versionchanged:: 1.7\nThe default value for `force_int_remainder_cols` will change from\n`True` to `False` in version 1.7.\n\n.. deprecated:: 1.7\n`force_int_remainder_cols` is deprecated and will be removed in 1.9.\n"
285
285
  }
286
286
  ]
287
287
  },
@@ -1043,7 +1043,7 @@
1043
1043
  },
1044
1044
  {
1045
1045
  "name": "sklearn.linear_model._logistic.LogisticRegression",
1046
- "description": "\nLogistic Regression (aka logit, MaxEnt) classifier.\n\nThis class implements regularized logistic regression using the\n'liblinear' library, 'newton-cg', 'sag', 'saga' and 'lbfgs' solvers. **Note\nthat regularization is applied by default**. It can handle both dense\nand sparse input. Use C-ordered arrays or CSR matrices containing 64-bit\nfloats for optimal performance; any other input format will be converted\n(and copied).\n\nThe 'newton-cg', 'sag', and 'lbfgs' solvers support only L2 regularization\nwith primal formulation, or no regularization. The 'liblinear' solver\nsupports both L1 and L2 regularization, with a dual formulation only for\nthe L2 penalty. The Elastic-Net regularization is only supported by the\n'saga' solver.\n\nFor :term:`multiclass` problems, only 'newton-cg', 'sag', 'saga' and 'lbfgs'\nhandle multinomial loss. 'liblinear' and 'newton-cholesky' only handle binary\nclassification but can be extended to handle multiclass by using\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n\nRead more in the :ref:`User Guide <logistic_regression>`.\n",
1046
+ "description": "\nLogistic Regression (aka logit, MaxEnt) classifier.\n\nThis class implements regularized logistic regression using the\n'liblinear' library, 'newton-cg', 'sag', 'saga' and 'lbfgs' solvers. **Note\nthat regularization is applied by default**. It can handle both dense\nand sparse input. Use C-ordered arrays or CSR matrices containing 64-bit\nfloats for optimal performance; any other input format will be converted\n(and copied).\n\nThe 'newton-cg', 'sag', and 'lbfgs' solvers support only L2 regularization\nwith primal formulation, or no regularization. The 'liblinear' solver\nsupports both L1 and L2 regularization, with a dual formulation only for\nthe L2 penalty. The Elastic-Net regularization is only supported by the\n'saga' solver.\n\nFor :term:`multiclass` problems, all solvers but 'liblinear' optimize the\n(penalized) multinomial loss. 'liblinear' only handle binary classification but can\nbe extended to handle multiclass by using\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n\nRead more in the :ref:`User Guide <logistic_regression>`.\n",
1047
1047
  "attributes": [
1048
1048
  {
1049
1049
  "default": "l2",
@@ -1093,7 +1093,7 @@
1093
1093
  },
1094
1094
  {
1095
1095
  "default": "lbfgs",
1096
- "description": "\nAlgorithm to use in the optimization problem. Default is 'lbfgs'.\nTo choose a solver, you might want to consider the following aspects:\n\n- For small datasets, 'liblinear' is a good choice, whereas 'sag'\nand 'saga' are faster for large ones;\n- For :term:`multiclass` problems, all solvers except 'liblinear' minimize the\nfull multinomial loss;\n- 'liblinear' can only handle binary classification by default. To apply a\none-versus-rest scheme for the multiclass setting one can wrap it with the\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n- 'newton-cholesky' is a good choice for\n`n_samples` >> `n_features * n_classes`, especially with one-hot encoded\ncategorical features with rare categories. Be aware that the memory usage\nof this solver has a quadratic dependency on `n_features * n_classes`\nbecause it explicitly computes the full Hessian matrix.\n\n.. warning::\nThe choice of the algorithm depends on the penalty chosen and on\n(multinomial) multiclass support:\n\n================= ============================== ======================\nsolver penalty multinomial multiclass\n================= ============================== ======================\n'lbfgs' 'l2', None yes\n'liblinear' 'l1', 'l2' no\n'newton-cg' 'l2', None yes\n'newton-cholesky' 'l2', None no\n'sag' 'l2', None yes\n'saga' 'elasticnet', 'l1', 'l2', None yes\n================= ============================== ======================\n\n.. note::\n'sag' and 'saga' fast convergence is only guaranteed on features\nwith approximately the same scale. You can preprocess the data with\na scaler from :mod:`sklearn.preprocessing`.\n\n.. seealso::\nRefer to the :ref:`User Guide <Logistic_regression>` for more\ninformation regarding :class:`LogisticRegression` and more specifically the\n:ref:`Table <logistic_regression_solvers>`\nsummarizing solver/penalty supports.\n\n.. versionadded:: 0.17\nStochastic Average Gradient descent solver.\n.. versionadded:: 0.19\nSAGA solver.\n.. versionchanged:: 0.22\nThe default solver changed from 'liblinear' to 'lbfgs' in 0.22.\n.. versionadded:: 1.2\nnewton-cholesky solver.\n",
1096
+ "description": "\nAlgorithm to use in the optimization problem. Default is 'lbfgs'.\nTo choose a solver, you might want to consider the following aspects:\n\n- For small datasets, 'liblinear' is a good choice, whereas 'sag'\nand 'saga' are faster for large ones;\n- For :term:`multiclass` problems, all solvers except 'liblinear' minimize the\nfull multinomial loss;\n- 'liblinear' can only handle binary classification by default. To apply a\none-versus-rest scheme for the multiclass setting one can wrap it with the\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n- 'newton-cholesky' is a good choice for\n`n_samples` >> `n_features * n_classes`, especially with one-hot encoded\ncategorical features with rare categories. Be aware that the memory usage\nof this solver has a quadratic dependency on `n_features * n_classes`\nbecause it explicitly computes the full Hessian matrix.\n\n.. warning::\nThe choice of the algorithm depends on the penalty chosen and on\n(multinomial) multiclass support:\n\n================= ============================== ======================\nsolver penalty multinomial multiclass\n================= ============================== ======================\n'lbfgs' 'l2', None yes\n'liblinear' 'l1', 'l2' no\n'newton-cg' 'l2', None yes\n'newton-cholesky' 'l2', None yes\n'sag' 'l2', None yes\n'saga' 'elasticnet', 'l1', 'l2', None yes\n================= ============================== ======================\n\n.. note::\n'sag' and 'saga' fast convergence is only guaranteed on features\nwith approximately the same scale. You can preprocess the data with\na scaler from :mod:`sklearn.preprocessing`.\n\n.. seealso::\nRefer to the :ref:`User Guide <Logistic_regression>` for more\ninformation regarding :class:`LogisticRegression` and more specifically the\n:ref:`Table <logistic_regression_solvers>`\nsummarizing solver/penalty supports.\n\n.. versionadded:: 0.17\nStochastic Average Gradient (SAG) descent solver. Multinomial support in\nversion 0.18.\n.. versionadded:: 0.19\nSAGA solver.\n.. versionchanged:: 0.22\nThe default solver changed from 'liblinear' to 'lbfgs' in 0.22.\n.. versionadded:: 1.2\nnewton-cholesky solver. Multinomial support in version 1.6.\n",
1097
1097
  "name": "solver"
1098
1098
  },
1099
1099
  {
@@ -1249,15 +1249,20 @@
1249
1249
  },
1250
1250
  {
1251
1251
  "default": false,
1252
- "description": "When set to ``True``, forces the coefficients to be positive. This\noption is only supported for dense arrays.\n\n.. versionadded:: 0.24\n",
1252
+ "description": "When set to ``True``, forces the coefficients to be positive. This\noption is only supported for dense arrays.\n\nFor a comparison between a linear regression model with positive constraints\non the regression coefficients and a linear regression without such constraints,\nsee :ref:`sphx_glr_auto_examples_linear_model_plot_nnls.py`.\n\n.. versionadded:: 0.24\n",
1253
1253
  "name": "positive",
1254
1254
  "type": "boolean"
1255
+ },
1256
+ {
1257
+ "name": "tol",
1258
+ "default": 1e-06,
1259
+ "description": "The precision of the solution (`coef_`) is determined by `tol` which\nspecifies a different convergence criterion for the `lsqr` solver.\n`tol` is set as `atol` and `btol` of `scipy.sparse.linalg.lsqr` when\nfitting on sparse training data. This parameter has no effect when fitting\non dense data.\n\n.. versionadded:: 1.7\n"
1255
1260
  }
1256
1261
  ]
1257
1262
  },
1258
1263
  {
1259
1264
  "name": "sklearn.linear_model.LogisticRegression",
1260
- "description": "\nLogistic Regression (aka logit, MaxEnt) classifier.\n\nThis class implements regularized logistic regression using the\n'liblinear' library, 'newton-cg', 'sag', 'saga' and 'lbfgs' solvers. **Note\nthat regularization is applied by default**. It can handle both dense\nand sparse input. Use C-ordered arrays or CSR matrices containing 64-bit\nfloats for optimal performance; any other input format will be converted\n(and copied).\n\nThe 'newton-cg', 'sag', and 'lbfgs' solvers support only L2 regularization\nwith primal formulation, or no regularization. The 'liblinear' solver\nsupports both L1 and L2 regularization, with a dual formulation only for\nthe L2 penalty. The Elastic-Net regularization is only supported by the\n'saga' solver.\n\nFor :term:`multiclass` problems, only 'newton-cg', 'sag', 'saga' and 'lbfgs'\nhandle multinomial loss. 'liblinear' and 'newton-cholesky' only handle binary\nclassification but can be extended to handle multiclass by using\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n\nRead more in the :ref:`User Guide <logistic_regression>`.\n",
1265
+ "description": "\nLogistic Regression (aka logit, MaxEnt) classifier.\n\nThis class implements regularized logistic regression using the\n'liblinear' library, 'newton-cg', 'sag', 'saga' and 'lbfgs' solvers. **Note\nthat regularization is applied by default**. It can handle both dense\nand sparse input. Use C-ordered arrays or CSR matrices containing 64-bit\nfloats for optimal performance; any other input format will be converted\n(and copied).\n\nThe 'newton-cg', 'sag', and 'lbfgs' solvers support only L2 regularization\nwith primal formulation, or no regularization. The 'liblinear' solver\nsupports both L1 and L2 regularization, with a dual formulation only for\nthe L2 penalty. The Elastic-Net regularization is only supported by the\n'saga' solver.\n\nFor :term:`multiclass` problems, all solvers but 'liblinear' optimize the\n(penalized) multinomial loss. 'liblinear' only handle binary classification but can\nbe extended to handle multiclass by using\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n\nRead more in the :ref:`User Guide <logistic_regression>`.\n",
1261
1266
  "attributes": [
1262
1267
  {
1263
1268
  "default": "l2",
@@ -1315,7 +1320,7 @@
1315
1320
  },
1316
1321
  {
1317
1322
  "default": "lbfgs",
1318
- "description": "\nAlgorithm to use in the optimization problem. Default is 'lbfgs'.\nTo choose a solver, you might want to consider the following aspects:\n\n- For small datasets, 'liblinear' is a good choice, whereas 'sag'\nand 'saga' are faster for large ones;\n- For :term:`multiclass` problems, all solvers except 'liblinear' minimize the\nfull multinomial loss;\n- 'liblinear' can only handle binary classification by default. To apply a\none-versus-rest scheme for the multiclass setting one can wrap it with the\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n- 'newton-cholesky' is a good choice for\n`n_samples` >> `n_features * n_classes`, especially with one-hot encoded\ncategorical features with rare categories. Be aware that the memory usage\nof this solver has a quadratic dependency on `n_features * n_classes`\nbecause it explicitly computes the full Hessian matrix.\n\n.. warning::\nThe choice of the algorithm depends on the penalty chosen and on\n(multinomial) multiclass support:\n\n================= ============================== ======================\nsolver penalty multinomial multiclass\n================= ============================== ======================\n'lbfgs' 'l2', None yes\n'liblinear' 'l1', 'l2' no\n'newton-cg' 'l2', None yes\n'newton-cholesky' 'l2', None no\n'sag' 'l2', None yes\n'saga' 'elasticnet', 'l1', 'l2', None yes\n================= ============================== ======================\n\n.. note::\n'sag' and 'saga' fast convergence is only guaranteed on features\nwith approximately the same scale. You can preprocess the data with\na scaler from :mod:`sklearn.preprocessing`.\n\n.. seealso::\nRefer to the :ref:`User Guide <Logistic_regression>` for more\ninformation regarding :class:`LogisticRegression` and more specifically the\n:ref:`Table <logistic_regression_solvers>`\nsummarizing solver/penalty supports.\n\n.. versionadded:: 0.17\nStochastic Average Gradient descent solver.\n.. versionadded:: 0.19\nSAGA solver.\n.. versionchanged:: 0.22\nThe default solver changed from 'liblinear' to 'lbfgs' in 0.22.\n.. versionadded:: 1.2\nnewton-cholesky solver.\n",
1323
+ "description": "\nAlgorithm to use in the optimization problem. Default is 'lbfgs'.\nTo choose a solver, you might want to consider the following aspects:\n\n- For small datasets, 'liblinear' is a good choice, whereas 'sag'\nand 'saga' are faster for large ones;\n- For :term:`multiclass` problems, all solvers except 'liblinear' minimize the\nfull multinomial loss;\n- 'liblinear' can only handle binary classification by default. To apply a\none-versus-rest scheme for the multiclass setting one can wrap it with the\n:class:`~sklearn.multiclass.OneVsRestClassifier`.\n- 'newton-cholesky' is a good choice for\n`n_samples` >> `n_features * n_classes`, especially with one-hot encoded\ncategorical features with rare categories. Be aware that the memory usage\nof this solver has a quadratic dependency on `n_features * n_classes`\nbecause it explicitly computes the full Hessian matrix.\n\n.. warning::\nThe choice of the algorithm depends on the penalty chosen and on\n(multinomial) multiclass support:\n\n================= ============================== ======================\nsolver penalty multinomial multiclass\n================= ============================== ======================\n'lbfgs' 'l2', None yes\n'liblinear' 'l1', 'l2' no\n'newton-cg' 'l2', None yes\n'newton-cholesky' 'l2', None yes\n'sag' 'l2', None yes\n'saga' 'elasticnet', 'l1', 'l2', None yes\n================= ============================== ======================\n\n.. note::\n'sag' and 'saga' fast convergence is only guaranteed on features\nwith approximately the same scale. You can preprocess the data with\na scaler from :mod:`sklearn.preprocessing`.\n\n.. seealso::\nRefer to the :ref:`User Guide <Logistic_regression>` for more\ninformation regarding :class:`LogisticRegression` and more specifically the\n:ref:`Table <logistic_regression_solvers>`\nsummarizing solver/penalty supports.\n\n.. versionadded:: 0.17\nStochastic Average Gradient (SAG) descent solver. Multinomial support in\nversion 0.18.\n.. versionadded:: 0.19\nSAGA solver.\n.. versionchanged:: 0.22\nThe default solver changed from 'liblinear' to 'lbfgs' in 0.22.\n.. versionadded:: 1.2\nnewton-cholesky solver. Multinomial support in version 1.6.\n",
1319
1324
  "name": "solver",
1320
1325
  "optional": true
1321
1326
  },
@@ -1376,7 +1381,7 @@
1376
1381
  },
1377
1382
  {
1378
1383
  "default": null,
1379
- "description": "Strategy to evaluate the performance of the cross-validated model on\nthe test set.\n\nIf `scoring` represents a single score, one can use:\n\n- a single string (see :ref:`scoring_parameter`);\n- a callable (see :ref:`scoring_callable`) that returns a single value.\n\nIf `scoring` represents multiple scores, one can use:\n\n- a list or tuple of unique strings;\n- a callable returning a dictionary where the keys are the metric\nnames and the values are the metric scores;\n- a dictionary with metric names as keys and callables as values.\n\nSee :ref:`multimetric_grid_search` for an example.\n",
1384
+ "description": "Strategy to evaluate the performance of the cross-validated model on\nthe test set.\n\nIf `scoring` represents a single score, one can use:\n\n- a single string (see :ref:`scoring_string_names`);\n- a callable (see :ref:`scoring_callable`) that returns a single value;\n- `None`, the `estimator`'s\n:ref:`default evaluation criterion <scoring_api_overview>` is used.\n\nIf `scoring` represents multiple scores, one can use:\n\n- a list or tuple of unique strings;\n- a callable returning a dictionary where the keys are the metric\nnames and the values are the metric scores;\n- a dictionary with metric names as keys and callables as values.\n\nSee :ref:`multimetric_grid_search` for an example.\n",
1380
1385
  "name": "scoring"
1381
1386
  },
1382
1387
  {
@@ -1404,7 +1409,7 @@
1404
1409
  },
1405
1410
  {
1406
1411
  "default": "True",
1407
- "description": "Refit an estimator using the best found parameters on the whole\ndataset.\n\nFor multiple metric evaluation, this needs to be a `str` denoting the\nscorer that would be used to find the best parameters for refitting\nthe estimator at the end.\n\nWhere there are considerations other than maximum score in\nchoosing a best estimator, ``refit`` can be set to a function which\nreturns the selected ``best_index_`` given ``cv_results_``. In that\ncase, the ``best_estimator_`` and ``best_params_`` will be set\naccording to the returned ``best_index_`` while the ``best_score_``\nattribute will not be available.\n\nThe refitted estimator is made available at the ``best_estimator_``\nattribute and permits using ``predict`` directly on this\n``GridSearchCV`` instance.\n\nAlso for multiple metric evaluation, the attributes ``best_index_``,\n``best_score_`` and ``best_params_`` will only be available if\n``refit`` is set and all of them will be determined w.r.t this specific\nscorer.\n\nSee ``scoring`` parameter to know more about multiple metric\nevaluation.\n\nSee :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`\nto see how to design a custom selection strategy using a callable\nvia `refit`.\n\n.. versionchanged:: 0.20\nSupport for callable added.\n",
1412
+ "description": "Refit an estimator using the best found parameters on the whole\ndataset.\n\nFor multiple metric evaluation, this needs to be a `str` denoting the\nscorer that would be used to find the best parameters for refitting\nthe estimator at the end.\n\nWhere there are considerations other than maximum score in\nchoosing a best estimator, ``refit`` can be set to a function which\nreturns the selected ``best_index_`` given ``cv_results_``. In that\ncase, the ``best_estimator_`` and ``best_params_`` will be set\naccording to the returned ``best_index_`` while the ``best_score_``\nattribute will not be available.\n\nThe refitted estimator is made available at the ``best_estimator_``\nattribute and permits using ``predict`` directly on this\n``GridSearchCV`` instance.\n\nAlso for multiple metric evaluation, the attributes ``best_index_``,\n``best_score_`` and ``best_params_`` will only be available if\n``refit`` is set and all of them will be determined w.r.t this specific\nscorer.\n\nSee ``scoring`` parameter to know more about multiple metric\nevaluation.\n\nSee :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py`\nto see how to design a custom selection strategy using a callable\nvia `refit`.\n\nSee :ref:`this example\n<sphx_glr_auto_examples_model_selection_plot_grid_search_refit_callable.py>`\nfor an example of how to use ``refit=callable`` to balance model\ncomplexity and cross-validated score.\n\n.. versionchanged:: 0.20\nSupport for callable added.\n",
1408
1413
  "name": "refit",
1409
1414
  "type": "boolean"
1410
1415
  },
@@ -53,7 +53,7 @@ sklearn.Model = class {
53
53
  ['hmmlearn', 'hmmlearn']
54
54
  ]);
55
55
  this.format = formats.get(type.split('.').shift());
56
- this.graphs = [];
56
+ this.modules = [];
57
57
  const version = [];
58
58
  switch (type) {
59
59
  case 'sklearn':
@@ -62,7 +62,7 @@ sklearn.Model = class {
62
62
  if (obj._sklearn_version) {
63
63
  version.push(` v${obj._sklearn_version}`);
64
64
  }
65
- this.graphs.push(new sklearn.Graph(metadata, '', obj));
65
+ this.modules.push(new sklearn.Module(metadata, '', obj));
66
66
  break;
67
67
  }
68
68
  case 'sklearn.list':
@@ -70,7 +70,7 @@ sklearn.Model = class {
70
70
  const list = obj;
71
71
  for (let i = 0; i < list.length; i++) {
72
72
  const obj = list[i];
73
- this.graphs.push(new sklearn.Graph(metadata, i.toString(), obj));
73
+ this.modules.push(new sklearn.Module(metadata, i.toString(), obj));
74
74
  if (obj._sklearn_version) {
75
75
  version.push(` v${obj._sklearn_version}`);
76
76
  }
@@ -81,7 +81,7 @@ sklearn.Model = class {
81
81
  case 'scipy.map': {
82
82
  const entries = obj instanceof Map ? Array.from(obj) : Object.entries(obj);
83
83
  for (const [name, value] of entries) {
84
- this.graphs.push(new sklearn.Graph(metadata, name, value));
84
+ this.modules.push(new sklearn.Module(metadata, name, value));
85
85
  if (value._sklearn_version) {
86
86
  version.push(` v${value._sklearn_version}`);
87
87
  }
@@ -98,7 +98,7 @@ sklearn.Model = class {
98
98
  }
99
99
  };
100
100
 
101
- sklearn.Graph = class {
101
+ sklearn.Module = class {
102
102
 
103
103
  constructor(metadata, name, obj) {
104
104
  this.name = name || '';