mindspore 2.1.0__cp39-cp39-win_amd64.whl → 2.2.11__cp39-cp39-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.

Potentially problematic release.


This version of mindspore might be problematic. Click here for more details.

Files changed (488) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/__init__.py +4 -1
  3. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  4. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  5. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  6. mindspore/_check_jit_forbidden_api.py +3 -1
  7. mindspore/_checkparam.py +23 -29
  8. mindspore/_extends/graph_kernel/__init__.py +0 -1
  9. mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
  10. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  11. mindspore/_extends/graph_kernel/splitter.py +4 -11
  12. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  13. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
  14. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  15. mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
  16. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  17. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
  18. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  19. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  20. mindspore/_extends/parse/__init__.py +13 -15
  21. mindspore/_extends/parse/namespace.py +7 -33
  22. mindspore/_extends/parse/parser.py +67 -72
  23. mindspore/_extends/parse/resources.py +1 -1
  24. mindspore/_extends/parse/standard_method.py +86 -106
  25. mindspore/_extends/parse/trope.py +1 -1
  26. mindspore/_extends/remote/kernel_build_server.py +25 -7
  27. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  28. mindspore/_install_custom.py +43 -0
  29. mindspore/amp.py +47 -11
  30. mindspore/boost/boost.py +1 -8
  31. mindspore/boost/boost_cell_wrapper.py +3 -2
  32. mindspore/boost/grad_accumulation.py +1 -1
  33. mindspore/boost/group_loss_scale_manager.py +8 -7
  34. mindspore/common/__init__.py +5 -3
  35. mindspore/common/_jit_fallback_utils.py +6 -0
  36. mindspore/common/_register_for_adapter.py +2 -0
  37. mindspore/common/_register_for_tensor.py +2 -2
  38. mindspore/common/_stub_tensor.py +13 -0
  39. mindspore/common/_utils.py +29 -0
  40. mindspore/common/api.py +174 -259
  41. mindspore/common/auto_dynamic_shape.py +494 -0
  42. mindspore/common/dtype.py +18 -11
  43. mindspore/common/dump.py +6 -4
  44. mindspore/common/initializer.py +14 -14
  45. mindspore/common/jit_config.py +33 -15
  46. mindspore/common/lazy_inline.py +126 -7
  47. mindspore/common/mindir_util.py +101 -0
  48. mindspore/common/parameter.py +51 -41
  49. mindspore/common/seed.py +4 -4
  50. mindspore/common/sparse_tensor.py +13 -14
  51. mindspore/common/tensor.py +243 -165
  52. mindspore/communication/__init__.py +7 -4
  53. mindspore/communication/_comm_helper.py +83 -4
  54. mindspore/communication/management.py +152 -84
  55. mindspore/config/op_info.config +14 -3
  56. mindspore/context.py +152 -61
  57. mindspore/dataset/__init__.py +5 -5
  58. mindspore/dataset/audio/__init__.py +2 -2
  59. mindspore/dataset/audio/transforms.py +52 -52
  60. mindspore/dataset/callback/ds_callback.py +16 -2
  61. mindspore/dataset/core/config.py +68 -51
  62. mindspore/dataset/engine/cache_client.py +33 -7
  63. mindspore/dataset/engine/datasets.py +250 -112
  64. mindspore/dataset/engine/datasets_audio.py +43 -211
  65. mindspore/dataset/engine/datasets_standard_format.py +16 -35
  66. mindspore/dataset/engine/datasets_text.py +43 -67
  67. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  68. mindspore/dataset/engine/datasets_vision.py +219 -1029
  69. mindspore/dataset/engine/iterators.py +11 -4
  70. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  71. mindspore/dataset/engine/obs/util.py +3 -0
  72. mindspore/dataset/engine/samplers.py +1 -1
  73. mindspore/dataset/engine/validators.py +19 -5
  74. mindspore/dataset/text/__init__.py +3 -3
  75. mindspore/dataset/text/transforms.py +101 -127
  76. mindspore/dataset/text/utils.py +205 -138
  77. mindspore/dataset/transforms/__init__.py +1 -1
  78. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  79. mindspore/dataset/transforms/transforms.py +95 -40
  80. mindspore/dataset/utils/browse_dataset.py +8 -2
  81. mindspore/dataset/utils/line_reader.py +17 -19
  82. mindspore/dataset/vision/__init__.py +3 -3
  83. mindspore/dataset/vision/c_transforms.py +6 -3
  84. mindspore/dataset/vision/transforms.py +409 -287
  85. mindspore/dataset/vision/utils.py +13 -14
  86. mindspore/dataset/vision/validators.py +11 -1
  87. mindspore/dnnl.dll +0 -0
  88. mindspore/experimental/map_parameter.py +14 -0
  89. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  90. mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
  91. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  92. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  93. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  94. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  95. mindspore/gen_ops.py +273 -0
  96. mindspore/include/OWNERS +0 -1
  97. mindspore/include/api/data_type.h +2 -1
  98. mindspore/include/api/graph.h +0 -15
  99. mindspore/include/api/kernel.h +2 -0
  100. mindspore/include/api/kernel_api.h +37 -12
  101. mindspore/include/api/model.h +17 -14
  102. mindspore/include/api/status.h +8 -3
  103. mindspore/include/api/types.h +37 -4
  104. mindspore/include/c_api/ms/abstract.h +67 -0
  105. mindspore/include/c_api/ms/attribute.h +197 -0
  106. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  107. mindspore/include/c_api/ms/base/macros.h +32 -0
  108. mindspore/include/c_api/ms/base/status.h +33 -0
  109. mindspore/include/c_api/ms/base/types.h +282 -0
  110. mindspore/include/c_api/ms/context.h +102 -0
  111. mindspore/include/c_api/ms/graph.h +160 -0
  112. mindspore/include/c_api/ms/node.h +606 -0
  113. mindspore/include/c_api/ms/tensor.h +161 -0
  114. mindspore/include/c_api/ms/value.h +84 -0
  115. mindspore/include/dataset/constants.h +6 -5
  116. mindspore/include/dataset/execute.h +23 -13
  117. mindspore/include/dataset/text.h +26 -26
  118. mindspore/include/dataset/transforms.h +13 -13
  119. mindspore/include/dataset/vision.h +60 -60
  120. mindspore/include/dataset/vision_ascend.h +5 -6
  121. mindspore/include/dataset/vision_lite.h +17 -17
  122. mindspore/jpeg62.dll +0 -0
  123. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  124. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  125. mindspore/mindspore_backend.dll +0 -0
  126. mindspore/mindspore_common.dll +0 -0
  127. mindspore/mindspore_core.dll +0 -0
  128. mindspore/mindspore_glog.dll +0 -0
  129. mindspore/mindspore_shared_lib.dll +0 -0
  130. mindspore/nn/__init__.py +0 -2
  131. mindspore/nn/cell.py +313 -74
  132. mindspore/nn/dynamic_lr.py +21 -21
  133. mindspore/nn/layer/activation.py +22 -30
  134. mindspore/nn/layer/basic.py +15 -13
  135. mindspore/nn/layer/channel_shuffle.py +1 -1
  136. mindspore/nn/layer/container.py +271 -9
  137. mindspore/nn/layer/conv.py +323 -204
  138. mindspore/nn/layer/dense.py +8 -5
  139. mindspore/nn/layer/embedding.py +33 -27
  140. mindspore/nn/layer/flash_attention.py +61 -95
  141. mindspore/nn/layer/image.py +8 -6
  142. mindspore/nn/layer/math.py +16 -25
  143. mindspore/nn/layer/normalization.py +107 -66
  144. mindspore/nn/layer/padding.py +1 -1
  145. mindspore/nn/layer/pooling.py +131 -109
  146. mindspore/nn/layer/rnn_cells.py +27 -22
  147. mindspore/nn/layer/rnns.py +13 -16
  148. mindspore/nn/layer/thor_layer.py +1 -1
  149. mindspore/nn/layer/transformer.py +221 -154
  150. mindspore/nn/learning_rate_schedule.py +9 -1
  151. mindspore/nn/loss/loss.py +235 -174
  152. mindspore/nn/optim/ada_grad.py +2 -1
  153. mindspore/nn/optim/adadelta.py +1 -0
  154. mindspore/nn/optim/adafactor.py +2 -1
  155. mindspore/nn/optim/adam.py +7 -4
  156. mindspore/nn/optim/adamax.py +3 -2
  157. mindspore/nn/optim/adasum.py +2 -2
  158. mindspore/nn/optim/asgd.py +2 -3
  159. mindspore/nn/optim/ftrl.py +6 -5
  160. mindspore/nn/optim/lamb.py +7 -4
  161. mindspore/nn/optim/lars.py +1 -1
  162. mindspore/nn/optim/lazyadam.py +5 -3
  163. mindspore/nn/optim/momentum.py +2 -1
  164. mindspore/nn/optim/optimizer.py +53 -4
  165. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  166. mindspore/nn/optim/rmsprop.py +4 -3
  167. mindspore/nn/optim/rprop.py +23 -12
  168. mindspore/nn/optim/sgd.py +26 -11
  169. mindspore/nn/optim/thor.py +9 -7
  170. mindspore/nn/probability/bijector/bijector.py +5 -5
  171. mindspore/nn/probability/bijector/power_transform.py +27 -27
  172. mindspore/nn/probability/bijector/softplus.py +3 -3
  173. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  174. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  175. mindspore/nn/probability/distribution/beta.py +3 -3
  176. mindspore/nn/probability/distribution/categorical.py +7 -7
  177. mindspore/nn/probability/distribution/cauchy.py +0 -1
  178. mindspore/nn/probability/distribution/distribution.py +3 -3
  179. mindspore/nn/probability/distribution/gamma.py +3 -3
  180. mindspore/nn/probability/distribution/geometric.py +4 -4
  181. mindspore/nn/probability/distribution/gumbel.py +4 -4
  182. mindspore/nn/probability/distribution/log_normal.py +2 -2
  183. mindspore/nn/probability/distribution/logistic.py +2 -2
  184. mindspore/nn/probability/distribution/poisson.py +4 -4
  185. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  186. mindspore/nn/probability/distribution/uniform.py +6 -6
  187. mindspore/nn/wrap/__init__.py +4 -2
  188. mindspore/nn/wrap/cell_wrapper.py +87 -34
  189. mindspore/nn/wrap/grad_reducer.py +8 -5
  190. mindspore/nn/wrap/loss_scale.py +105 -42
  191. mindspore/numpy/array_creations.py +1 -2
  192. mindspore/numpy/array_ops.py +3 -2
  193. mindspore/numpy/utils_const.py +5 -5
  194. mindspore/opencv_core452.dll +0 -0
  195. mindspore/opencv_imgcodecs452.dll +0 -0
  196. mindspore/opencv_imgproc452.dll +0 -0
  197. mindspore/ops/_grad_experimental/__init__.py +0 -5
  198. mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
  199. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  200. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  201. mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
  202. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  203. mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
  204. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  205. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  206. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  207. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  208. mindspore/ops/_op_impl/aicpu/add.py +3 -3
  209. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  210. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  211. mindspore/ops/_op_impl/{_custom_op/flash_attention/constants.py → aicpu/eps.py} +18 -27
  212. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  213. mindspore/ops/_op_impl/aicpu/linear_sum_assignment.py +21 -2
  214. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  215. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  216. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  217. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  218. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  219. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  220. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  221. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  222. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  223. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  224. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  225. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  226. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  227. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  228. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  229. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  230. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  231. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  232. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  233. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  234. mindspore/ops/_primitive_cache.py +1 -1
  235. mindspore/ops/_tracefunc.py +45 -13
  236. mindspore/ops/_utils/utils.py +6 -1
  237. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  238. mindspore/ops/_vmap/vmap_base.py +3 -3
  239. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  240. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  241. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  242. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  243. mindspore/ops/arg_dtype_cast.py +54 -0
  244. mindspore/ops/composite/base.py +37 -10
  245. mindspore/ops/composite/math_ops.py +5 -4
  246. mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
  247. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  248. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  249. mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
  250. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  251. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  252. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  253. mindspore/ops/deprecated.py +304 -0
  254. mindspore/ops/function/__init__.py +4 -1
  255. mindspore/ops/function/array_func.py +174 -193
  256. mindspore/ops/function/clip_func.py +81 -13
  257. mindspore/ops/function/debug_func.py +1 -1
  258. mindspore/ops/function/grad/grad_func.py +18 -9
  259. mindspore/ops/function/image_func.py +10 -4
  260. mindspore/ops/function/linalg_func.py +5 -5
  261. mindspore/ops/function/math_func.py +575 -386
  262. mindspore/ops/function/nn_func.py +568 -260
  263. mindspore/ops/function/random_func.py +88 -57
  264. mindspore/ops/function/sparse_func.py +1 -1
  265. mindspore/ops/function/sparse_unary_func.py +14 -12
  266. mindspore/ops/function/vmap_func.py +6 -5
  267. mindspore/ops/functional.py +15 -10
  268. mindspore/ops/op_info_register.py +244 -25
  269. mindspore/ops/operations/__init__.py +31 -19
  270. mindspore/ops/operations/_grad_ops.py +71 -7
  271. mindspore/ops/operations/_inner_ops.py +350 -17
  272. mindspore/ops/operations/_quant_ops.py +4 -8
  273. mindspore/ops/operations/_sequence_ops.py +42 -0
  274. mindspore/ops/operations/array_ops.py +68 -282
  275. mindspore/ops/operations/comm_ops.py +107 -59
  276. mindspore/ops/operations/custom_ops.py +94 -70
  277. mindspore/ops/operations/debug_ops.py +8 -4
  278. mindspore/ops/operations/image_ops.py +18 -12
  279. mindspore/ops/operations/inner_ops.py +26 -3
  280. mindspore/ops/operations/math_ops.py +192 -144
  281. mindspore/ops/operations/nn_ops.py +857 -489
  282. mindspore/ops/operations/other_ops.py +0 -22
  283. mindspore/ops/operations/random_ops.py +53 -111
  284. mindspore/ops/operations/sparse_ops.py +3 -1
  285. mindspore/ops/primitive.py +24 -18
  286. mindspore/parallel/_auto_parallel_context.py +68 -8
  287. mindspore/parallel/_cost_model_context.py +2 -2
  288. mindspore/parallel/_offload_context.py +17 -3
  289. mindspore/parallel/_parallel_serialization.py +12 -5
  290. mindspore/parallel/_ps_context.py +12 -0
  291. mindspore/parallel/_tensor.py +18 -13
  292. mindspore/parallel/_transformer/layers.py +5 -3
  293. mindspore/parallel/_transformer/loss.py +1 -0
  294. mindspore/parallel/_transformer/moe.py +2 -2
  295. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  296. mindspore/parallel/_transformer/transformer.py +23 -3
  297. mindspore/parallel/_utils.py +11 -7
  298. mindspore/parallel/algo_parameter_config.py +85 -5
  299. mindspore/parallel/checkpoint_transform.py +19 -12
  300. mindspore/parallel/shard.py +21 -14
  301. mindspore/profiler/common/struct_type.py +3 -3
  302. mindspore/profiler/common/util.py +4 -2
  303. mindspore/profiler/envprofiling.py +1 -1
  304. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  305. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  306. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  307. mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
  308. mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
  309. mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
  310. mindspore/profiler/parser/ascend_op_generator.py +6 -6
  311. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  312. mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
  313. mindspore/profiler/parser/base_timeline_generator.py +10 -8
  314. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
  315. mindspore/profiler/parser/flops_parser.py +15 -11
  316. mindspore/profiler/parser/framework_parser.py +38 -22
  317. mindspore/profiler/parser/hccl_parser.py +16 -12
  318. mindspore/profiler/parser/integrator.py +22 -11
  319. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  320. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  321. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  322. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  323. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  324. mindspore/profiler/parser/optime_parser.py +1 -1
  325. mindspore/profiler/parser/profiler_info.py +21 -2
  326. mindspore/profiler/parser/step_trace_parser.py +11 -14
  327. mindspore/profiler/profiling.py +179 -89
  328. mindspore/rewrite/api/node.py +102 -19
  329. mindspore/rewrite/api/node_type.py +5 -1
  330. mindspore/rewrite/api/pattern_engine.py +1 -1
  331. mindspore/rewrite/api/scoped_value.py +9 -17
  332. mindspore/rewrite/api/symbol_tree.py +131 -47
  333. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  334. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  335. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  336. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  337. mindspore/rewrite/common/rewrite_elog.py +5 -1
  338. mindspore/rewrite/namer.py +33 -24
  339. mindspore/rewrite/namespace.py +14 -5
  340. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  341. mindspore/rewrite/node/call_function.py +79 -0
  342. mindspore/rewrite/node/cell_container.py +135 -0
  343. mindspore/rewrite/node/control_flow.py +88 -0
  344. mindspore/rewrite/{node.py → node/node.py} +273 -234
  345. mindspore/rewrite/node/node_manager.py +254 -0
  346. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  347. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  348. mindspore/rewrite/parsers/assign_parser.py +216 -221
  349. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  350. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  351. mindspore/rewrite/parsers/constant_parser.py +9 -6
  352. mindspore/rewrite/parsers/container_parser.py +9 -7
  353. mindspore/rewrite/parsers/for_parser.py +42 -21
  354. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  355. mindspore/rewrite/parsers/if_parser.py +28 -24
  356. mindspore/rewrite/parsers/module_parser.py +196 -25
  357. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  358. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  359. mindspore/rewrite/parsers/return_parser.py +6 -6
  360. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  361. mindspore/rewrite/sparsify/utils.py +1 -1
  362. mindspore/rewrite/symbol_tree.py +523 -578
  363. mindspore/rewrite/symbol_tree_builder.py +9 -193
  364. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  365. mindspore/run_check/_check_version.py +6 -4
  366. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  367. mindspore/safeguard/rewrite_obfuscation.py +541 -0
  368. mindspore/tinyxml2.dll +0 -0
  369. mindspore/train/_utils.py +7 -3
  370. mindspore/train/amp.py +323 -123
  371. mindspore/train/anf_ir_pb2.py +14 -2
  372. mindspore/train/callback/_backup_and_restore.py +2 -12
  373. mindspore/train/callback/_callback.py +29 -4
  374. mindspore/train/callback/_checkpoint.py +23 -8
  375. mindspore/train/callback/_early_stop.py +2 -2
  376. mindspore/train/callback/_landscape.py +4 -4
  377. mindspore/train/callback/_loss_monitor.py +2 -2
  378. mindspore/train/callback/_on_request_exit.py +2 -2
  379. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  380. mindspore/train/callback/_summary_collector.py +15 -8
  381. mindspore/train/callback/_time_monitor.py +58 -5
  382. mindspore/train/data_sink.py +5 -11
  383. mindspore/train/dataset_helper.py +84 -57
  384. mindspore/train/loss_scale_manager.py +2 -2
  385. mindspore/train/metrics/__init__.py +3 -3
  386. mindspore/train/metrics/cosine_similarity.py +1 -1
  387. mindspore/train/metrics/hausdorff_distance.py +3 -2
  388. mindspore/train/metrics/mean_surface_distance.py +3 -2
  389. mindspore/train/metrics/metric.py +39 -19
  390. mindspore/train/metrics/roc.py +2 -2
  391. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  392. mindspore/train/mind_ir_pb2.py +85 -36
  393. mindspore/train/model.py +187 -47
  394. mindspore/train/serialization.py +487 -161
  395. mindspore/train/summary/_summary_adapter.py +1 -1
  396. mindspore/train/summary/_writer_pool.py +3 -2
  397. mindspore/train/summary/summary_record.py +37 -17
  398. mindspore/train/train_thor/convert_utils.py +3 -3
  399. mindspore/train/train_thor/dataset_helper.py +1 -1
  400. mindspore/turbojpeg.dll +0 -0
  401. mindspore/version.py +1 -1
  402. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/METADATA +7 -4
  403. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/RECORD +406 -463
  404. mindspore/_extends/graph_kernel/expander.py +0 -80
  405. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  406. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  407. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  408. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  409. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  410. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  411. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  412. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  413. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  414. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  415. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  416. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  417. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  418. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  419. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  420. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  421. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  422. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  423. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  424. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  425. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  426. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  427. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  428. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  429. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  430. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  431. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  432. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  433. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  434. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  435. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  436. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  437. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  438. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  439. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  440. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  441. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  442. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  443. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  444. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  445. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  446. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  447. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  448. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  449. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  450. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  451. mindspore/dataset/datapreprocess/__init__.py +0 -20
  452. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  453. mindspore/include/api/net.h +0 -142
  454. mindspore/nn/lr_scheduler.py +0 -262
  455. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  456. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  457. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  458. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  459. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  460. mindspore/ops/_op_impl/_custom_op/flash_attention/__init__.py +0 -0
  461. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +0 -350
  462. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +0 -409
  463. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +0 -578
  464. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +0 -199
  465. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +0 -446
  466. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/__init__.py +0 -0
  467. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/sparse_tiling.py +0 -45
  468. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/strategy.py +0 -67
  469. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +0 -62
  470. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  471. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  472. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  473. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  474. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  475. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  476. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  477. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  478. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  479. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  480. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  481. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  482. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  483. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  484. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  485. mindspore/rewrite/node_visitor.py +0 -44
  486. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/WHEEL +0 -0
  487. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/entry_points.txt +0 -0
  488. {mindspore-2.1.0.dist-info → mindspore-2.2.11.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,254 @@
1
+ # Copyright 2022 Huawei Technologies Co., Ltd
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # ============================================================================
15
+ """SymbolTree nodes manager."""
16
+ import sys
17
+ from typing import Optional
18
+ import ast
19
+ from .node import Node
20
+ from .node_topological_manager import TopoManager
21
+ from ..api.node_type import NodeType
22
+
23
+ if sys.version_info >= (3, 9):
24
+ import ast as astunparse # pylint: disable=reimported, ungrouped-imports
25
+ else:
26
+ import astunparse
27
+
28
+ class NodeManager:
29
+ """
30
+ NodeManager saves nodes and manager nodes' topological relationship.
31
+ """
32
+ def __init__(self, node_namer):
33
+ """Initializer of NodeManager"""
34
+ self._topo_mgr = TopoManager()
35
+ self._nodes: {str, Node} = {}
36
+ self._manager_node_namer = node_namer
37
+ # record all tree nodes, which is used when generating codes
38
+ self._tree_nodes: [Node] = []
39
+ # head node is always point to the first node of nodes
40
+ self._head = None
41
+ # tail node is always point to the last node of nodes
42
+ self._tail = None
43
+ # nodes of Input type
44
+ self._inputs: [Node] = []
45
+ # nodes of Output type
46
+ self._returns: [Node] = []
47
+ # ast of ast.FunctionDef
48
+ self._ast_functiondef = None
49
+ # name of manager
50
+ self._manager_name = "OriginNodeManager"
51
+
52
+ @property
53
+ def node_list(self):
54
+ """ Get node list. """
55
+ nodes = []
56
+ node = self._head
57
+ while node is not None:
58
+ nodes.append(node)
59
+ node = node.get_next()
60
+ return nodes
61
+
62
+ @property
63
+ def node_count(self):
64
+ """Number of nodes."""
65
+ node_num = 0
66
+ node = self._head
67
+ while node is not None:
68
+ node_num = node_num + 1
69
+ node = node.get_next()
70
+ return node_num
71
+
72
+ def insert_node(self, new_node: Node, base_node: Node, before_node: bool):
73
+ """
74
+ Insert a node before or after base_node.
75
+
76
+ Args:
77
+ new_node (Node): Node to be inserted.
78
+ base_node (Node): New node will be inserted before or after base_node.
79
+ before_node (bool): Indicate whether new node is inserted before base_node.
80
+ """
81
+ # update node name
82
+ new_node_name = self._manager_node_namer.get_name(new_node)
83
+ new_node.set_name(new_node_name)
84
+ if isinstance(new_node, NodeManager):
85
+ new_node.set_manager_name(new_node_name)
86
+ # insert node to list table
87
+ if base_node is None:
88
+ if self._nodes:
89
+ raise ValueError("base_node cannot be None when node inserted is not the first node.")
90
+ self._head = new_node
91
+ self._tail = new_node
92
+ elif before_node:
93
+ base_node.insert_before(new_node)
94
+ if self._head == base_node:
95
+ self._head = new_node
96
+ else:
97
+ base_node.insert_after(new_node)
98
+ if self._tail == base_node:
99
+ self._tail = new_node
100
+ self._add_node_to_nodes(new_node)
101
+ self._topo_mgr.on_insert_node(new_node)
102
+ new_node.set_node_manager(self)
103
+ # record Input nodes, Output nodes and tree nodes
104
+ if new_node.get_node_type() == NodeType.Output:
105
+ self._returns.append(new_node)
106
+ elif new_node.get_node_type() == NodeType.Input:
107
+ self._inputs.append(new_node)
108
+ elif new_node.get_node_type() == NodeType.Tree:
109
+ self._tree_nodes.append(new_node)
110
+
111
+ def erase_node(self, node: Node):
112
+ """
113
+ Erase a node from nodes.
114
+
115
+ Args:
116
+ node (Node): _description_
117
+ """
118
+ self._topo_mgr.on_erase_node(node)
119
+ for key, value in self._nodes.items():
120
+ if id(value) == id(node):
121
+ # update self._head and self._tail
122
+ if self._head == node:
123
+ self._head = node.get_next()
124
+ if self._tail == node:
125
+ self._tail = node.get_prev()
126
+ # erase node
127
+ self._nodes.pop(key)
128
+ value.isolate()
129
+ break
130
+
131
+ def nodes(self):
132
+ """
133
+ Get nodes.
134
+
135
+ Returns:
136
+ A list of nodes.
137
+ """
138
+ # If iterating nodes directly without new list, iteration may stuck caused
139
+ # by node topology being modified during iteration.
140
+ nodes = []
141
+ node = self._head
142
+ while node is not None:
143
+ nodes.append(node)
144
+ node = node.get_next()
145
+ return nodes
146
+
147
+ def get_node(self, node_name: str) -> Optional[Node]:
148
+ """
149
+ Get node of current NodeManager by `node_name`.
150
+
151
+ Args:
152
+ node_name (str): A str represents name of node as key of query.
153
+
154
+ Returns:
155
+ An instance of Node if found else None.
156
+ """
157
+ return self._nodes.get(node_name)
158
+
159
+ def append_python_node(self, new_node: Node):
160
+ """Append python node"""
161
+ NodeManager.insert_node(self, new_node, self._tail, False)
162
+
163
+ def get_head(self):
164
+ """Get head node of nodes"""
165
+ return self._head
166
+
167
+ def get_tail(self):
168
+ """Get tail node of nodes"""
169
+ return self._tail
170
+
171
+ def reg_observer(self, observer):
172
+ """Register observer to monitor code changes."""
173
+ self._topo_mgr.reg_observer(observer)
174
+ for node in self.nodes():
175
+ if isinstance(node, NodeManager):
176
+ node.reg_observer(observer)
177
+ if node.get_node_type() == NodeType.Tree:
178
+ node.symbol_tree.reg_observer(observer)
179
+
180
+ def get_tree_nodes(self):
181
+ """Get tree nodes inserted into symbol tree, include nodes later erased by user."""
182
+ tree_nodes = []
183
+ tree_nodes.extend(self._tree_nodes)
184
+ for node in self.nodes():
185
+ if isinstance(node, NodeManager):
186
+ tree_nodes.extend(node.get_tree_nodes())
187
+ return tree_nodes
188
+
189
+ def set_ast_functiondef(self, ast_functiondef: ast.FunctionDef):
190
+ """Set _ast_functiondef."""
191
+ self._ast_functiondef = ast_functiondef
192
+
193
+ def get_ast_functiondef(self):
194
+ """Get _ast_functiondef."""
195
+ return self._ast_functiondef
196
+
197
+ def get_inputs(self):
198
+ """Get _inputs"""
199
+ return self._inputs
200
+
201
+ def get_returns(self):
202
+ """Get _returns"""
203
+ return self._returns
204
+
205
+ def set_manager_name(self, name: str):
206
+ """Set _manager_name"""
207
+ self._manager_name = name
208
+
209
+ def get_manager_name(self):
210
+ """Get _manager_name"""
211
+ return self._manager_name
212
+
213
+ def dump(self, title="") -> str:
214
+ """
215
+ Dump topological relation.
216
+
217
+ title (str): A string as a title will be printed before dumping topological relation.
218
+ """
219
+ try:
220
+ from tabulate import tabulate # pylint: disable=unused-import,reportMissingModuleSource
221
+ except ImportError:
222
+ return ""
223
+ dump_str = "=" * 40 + title + "=" * 40 + '\n'
224
+ node_specs = [[
225
+ n.get_node_type(),
226
+ n.get_name(),
227
+ astunparse.unparse(n.get_ast()).strip(),
228
+ [[key, ((value[0].get_name(), value[1]) if value else ())]
229
+ for key, value in n.get_arg_providers().items()],
230
+ [[
231
+ key,
232
+ [(val[0].get_name(), val[1]) if val else ()
233
+ for val in value] if value else []
234
+ ] for key, value in n.get_target_users().items()]
235
+ ] for n in NodeManager.nodes(self)]
236
+ dump_str += tabulate(node_specs, headers=['node type', 'name', 'codes', 'arg providers', 'target users'])
237
+ dump_str += '\n' + "=" * (82 + len(title)) + '\n'
238
+ return dump_str
239
+
240
+ def _add_node_to_nodes(self, node: Node):
241
+ """
242
+ Add `node` to `_nodes` dict.
243
+
244
+ Args:
245
+ node (Node): A Node to be added into `_nodes`.
246
+
247
+ Raises:
248
+ RuntimeError: If name of the node is duplicated.
249
+ """
250
+ node_name = node.get_name()
251
+ if self._nodes.get(node_name) is not None:
252
+ raise ValueError(f"Duplicated node name: {node_name} in"
253
+ f"{self.get_name() if isinstance(self, Node) else 'construct'}")
254
+ self._nodes[node_name] = node
@@ -12,25 +12,20 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  # ============================================================================
15
- """SymbolTree topological-relationship manager."""
16
- from typing import Tuple
17
- import astunparse
15
+ """SymbolTree nodes topological relationship manager."""
16
+ from typing import Tuple, List
18
17
  from mindspore import log as logger
19
- from .api.scoped_value import ScopedValue
18
+ from ..api.scoped_value import ScopedValue
20
19
  from .node import Node
21
- from .common.observable import Observable
22
- from .common.event import Event
20
+ from ..common.observable import Observable
21
+ from ..common.event import Event
23
22
 
24
23
 
25
24
  class TopoManager(Observable):
26
25
  """SymbolTree topological-relationship manager."""
27
- def __init__(self, symbol_tree):
28
- super().__init__()
29
- # symbol_tree is used for dump() to use nodes(), so it can be symbol tree or cell container.
30
- self.symbol_tree = symbol_tree
31
26
 
32
27
  @staticmethod
33
- def get_node_users(node: Node) -> [Tuple[Node, int]]:
28
+ def get_node_users(node: Node) -> List[Tuple[Node, int]]:
34
29
  """
35
30
  Get all nodes which depend on node.
36
31
 
@@ -98,11 +93,13 @@ class TopoManager(Observable):
98
93
  return
99
94
 
100
95
  @staticmethod
101
- def _update_target_users_by_node(node, index, provider: (Node, int)):
96
+ def _update_target_users_by_node(node, index, provider: Tuple[Node, int]):
102
97
  """
103
98
  Update node's _target_users by previous node when insert a new node.
104
99
  This function is called when target is found in previous nodes, which means a repeat target name is set.
105
100
  """
101
+ # Args of nodes which are between node and provider should not be changed
102
+ # [last provider] -> no change args -> [insert node] -> need change args -> [next provider] -> no change args
106
103
  nodes_before_insert = []
107
104
  search_node = provider[0].get_next()
108
105
  while search_node is not None:
@@ -111,7 +108,7 @@ class TopoManager(Observable):
111
108
  break
112
109
  search_node = search_node.get_next()
113
110
  provider_target_users = provider[0].get_target_users(provider[1])
114
- for user in provider_target_users:
111
+ for user in provider_target_users[:]: # copy list by slice to support remove item during iterating
115
112
  if user[0] not in nodes_before_insert:
116
113
  node.append_target_users(index, user)
117
114
  provider_target_users.remove(user)
@@ -171,7 +168,7 @@ class TopoManager(Observable):
171
168
  continue
172
169
  prev_provider = TopoManager._get_value_provider(node, node.get_targets()[index])
173
170
  if not prev_provider:
174
- logger.warning(f"Node {node.get_name()}'s target {index} is used in node "
171
+ logger.warning(f"Node {node.get_name()}'s target {index}({node.get_targets()[index]}) is used in node "
175
172
  f"{target_users[0][0].get_name()}'s arg {target_users[0][1]}, "
176
173
  f"no other node provides this target if node {node.get_name()} is erased.")
177
174
  prev_providers[index] = None
@@ -190,7 +187,7 @@ class TopoManager(Observable):
190
187
  if not arg_providers:
191
188
  continue
192
189
  provider_target_users = arg_providers[0].get_target_users(arg_providers[1])
193
- for target_user in provider_target_users:
190
+ for target_user in reversed(provider_target_users):
194
191
  if target_user[0] == node:
195
192
  provider_target_users.remove(target_user)
196
193
  self.topo_changed()
@@ -210,7 +207,7 @@ class TopoManager(Observable):
210
207
  old_provider = TopoManager._get_value_provider(node, old_arg)
211
208
  if old_provider:
212
209
  old_provider_target_users = old_provider[0].get_target_users(old_provider[1])
213
- for target_user in old_provider_target_users:
210
+ for target_user in reversed(old_provider_target_users):
214
211
  if target_user[0] == node and target_user[1] == arg_idx:
215
212
  old_provider_target_users.remove(target_user)
216
213
  break
@@ -244,33 +241,3 @@ class TopoManager(Observable):
244
241
  # Update current node's arg_providers.
245
242
  dst_node.set_arg_providers(arg_idx, (src_node, out_idx))
246
243
  self.topo_changed()
247
-
248
- def dump(self, title="") -> str:
249
- """
250
- Dump topological relation.
251
-
252
- title (str): A string as a title will be printed before dumping topological relation.
253
- """
254
- try:
255
- from tabulate import tabulate
256
- except ImportError:
257
- print("`topologival_manager:dump()` relies on the library `tabulate`, "
258
- "which could not be found on this machine. Run `pip "
259
- "install tabulate` to install the library.")
260
- return ""
261
- dump_str = "=" * 40 + title + "=" * 40 + '\n'
262
- node_specs = [[
263
- n.get_node_type(),
264
- n.get_name(),
265
- astunparse.unparse(n.get_ast()).strip(),
266
- [[key, ((value[0].get_name(), value[1]) if value else ())]
267
- for key, value in n.get_arg_providers().items()],
268
- [[
269
- key,
270
- [(val[0].get_name(), val[1]) if val else ()
271
- for val in value] if value else []
272
- ] for key, value in n.get_target_users().items()]
273
- ] for n in self.symbol_tree.nodes()]
274
- dump_str += tabulate(node_specs, headers=['node type', 'name', 'codes', 'arg providers', 'target users'])
275
- dump_str += '\n' + "=" * (82 + len(title)) + '\n'
276
- return dump_str
@@ -15,10 +15,11 @@
15
15
  """Parse ast.arguments to input-node of SymbolTree."""
16
16
  import ast
17
17
 
18
- from ..parser import Parser
19
- from ..parser_register import reg_parser
18
+ from .parser import Parser
19
+ from .parser_register import reg_parser
20
20
  from ..symbol_tree import SymbolTree
21
21
  from ..common import error_str
22
+ from ..node.node_manager import NodeManager
22
23
 
23
24
 
24
25
  class ArgumentsParser(Parser):
@@ -28,36 +29,36 @@ class ArgumentsParser(Parser):
28
29
  """Parse target type"""
29
30
  return ast.arguments
30
31
 
31
- def process(self, stree: SymbolTree, node: ast.arguments):
32
+ def process(self, stree: SymbolTree, ast_node: ast.arguments, node_manager: NodeManager):
32
33
  """
33
34
  Parse ast.arguments and create input-node to stree.
34
35
 
35
36
  Args:
36
37
  stree (SymbolTree): symbol tree under parsing.
37
- node (ast.arguments): argument node in construct.
38
+ ast_node (ast.arguments): ast argument node in construct.
39
+ node_manager (NodeManager): NodeManager those asts belong to.
38
40
 
39
41
  Raises:
40
- RuntimeError: Types of node.args elements are not ast.arg.
42
+ RuntimeError: Types of ast_node.args elements are not ast.arg.
41
43
  """
42
- if hasattr(node, "posonlyargs"):
43
- stree.try_append_python_node(node, node.posonlyargs)
44
+ if hasattr(ast_node, "posonlyargs"):
45
+ stree.try_append_python_node(ast_node, ast_node.posonlyargs, node_manager)
44
46
 
45
- for arg in node.args:
47
+ for arg in ast_node.args:
46
48
  if not isinstance(arg, ast.arg):
47
49
  raise RuntimeError(error_str(f"only support ast.arg in arguments arg, but got '{type(arg).__name__}'",
48
- child_node=arg, father_node=node))
49
- stree.append_input_node(arg, arg.arg)
50
-
51
- if hasattr(node, "vararg"):
52
- stree.try_append_python_node(node, node.vararg)
53
- if hasattr(node, "kwonlyargs"):
54
- stree.try_append_python_node(node, node.kwonlyargs)
55
- if hasattr(node, "kw_defaults"):
56
- stree.try_append_python_node(node, node.kw_defaults)
57
- if hasattr(node, "kwarg"):
58
- stree.try_append_python_node(node, node.kwarg)
59
- if hasattr(node, "defaults"):
60
- stree.try_append_python_node(node, node.defaults)
50
+ arg, ast_node))
51
+ stree.append_input_node(arg, arg.arg, node_manager=node_manager)
52
+ if hasattr(ast_node, "vararg"):
53
+ stree.try_append_python_node(ast_node, ast_node.vararg, node_manager)
54
+ if hasattr(ast_node, "kwonlyargs"):
55
+ stree.try_append_python_node(ast_node, ast_node.kwonlyargs, node_manager)
56
+ if hasattr(ast_node, "kw_defaults"):
57
+ stree.try_append_python_node(ast_node, ast_node.kw_defaults, node_manager)
58
+ if hasattr(ast_node, "kwarg"):
59
+ stree.try_append_python_node(ast_node, ast_node.kwarg, node_manager)
60
+ if hasattr(ast_node, "defaults"):
61
+ stree.try_append_python_node(ast_node, ast_node.defaults, node_manager)
61
62
 
62
63
 
63
64
  g_arguments_parser = reg_parser(ArgumentsParser())