mindspore 2.1.0__cp39-cp39-win_amd64.whl → 2.2.10__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 (505) hide show
  1. mindspore/.commit_id +1 -1
  2. mindspore/Microsoft.VisualStudio.Telemetry.dll +0 -0
  3. mindspore/Newtonsoft.Json.dll +0 -0
  4. mindspore/__init__.py +4 -1
  5. mindspore/_c_dataengine.cp39-win_amd64.pyd +0 -0
  6. mindspore/_c_expression.cp39-win_amd64.pyd +0 -0
  7. mindspore/_c_mindrecord.cp39-win_amd64.pyd +0 -0
  8. mindspore/_check_jit_forbidden_api.py +3 -1
  9. mindspore/_checkparam.py +23 -29
  10. mindspore/_extends/graph_kernel/__init__.py +0 -1
  11. mindspore/_extends/graph_kernel/model/graph_split.py +84 -76
  12. mindspore/_extends/graph_kernel/model/model_builder.py +9 -50
  13. mindspore/_extends/graph_kernel/splitter.py +4 -11
  14. mindspore/_extends/parallel_compile/akg_compiler/akg_process.py +122 -15
  15. mindspore/_extends/parallel_compile/akg_compiler/build_tbe_kernel.py +84 -67
  16. mindspore/_extends/parallel_compile/akg_compiler/tbe_topi.py +4 -2
  17. mindspore/_extends/parallel_compile/akg_compiler/util.py +10 -7
  18. mindspore/_extends/parallel_compile/tbe_compiler/tbe_adapter.py +2 -2
  19. mindspore/_extends/parallel_compile/tbe_compiler/tbe_helper.py +6 -5
  20. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job.py +1 -1
  21. mindspore/_extends/parallel_compile/tbe_compiler/tbe_job_manager.py +1 -1
  22. mindspore/_extends/parse/__init__.py +12 -15
  23. mindspore/_extends/parse/namespace.py +7 -33
  24. mindspore/_extends/parse/parser.py +61 -71
  25. mindspore/_extends/parse/resources.py +1 -1
  26. mindspore/_extends/parse/standard_method.py +74 -104
  27. mindspore/_extends/parse/trope.py +1 -1
  28. mindspore/_extends/remote/kernel_build_server.py +25 -7
  29. mindspore/_extends/remote/kernel_build_server_akg_v2.py +55 -0
  30. mindspore/_install_custom.py +43 -0
  31. mindspore/amp.py +47 -11
  32. mindspore/atlprov.dll +0 -0
  33. mindspore/boost/boost.py +1 -8
  34. mindspore/boost/boost_cell_wrapper.py +3 -2
  35. mindspore/boost/grad_accumulation.py +1 -1
  36. mindspore/boost/group_loss_scale_manager.py +8 -7
  37. mindspore/c1.dll +0 -0
  38. mindspore/c1xx.dll +0 -0
  39. mindspore/c2.dll +0 -0
  40. mindspore/common/__init__.py +5 -3
  41. mindspore/common/_jit_fallback_utils.py +6 -0
  42. mindspore/common/_register_for_adapter.py +2 -0
  43. mindspore/common/_register_for_tensor.py +2 -2
  44. mindspore/common/_stub_tensor.py +13 -0
  45. mindspore/common/_utils.py +13 -0
  46. mindspore/common/api.py +174 -259
  47. mindspore/common/auto_dynamic_shape.py +494 -0
  48. mindspore/common/dtype.py +18 -11
  49. mindspore/common/dump.py +6 -4
  50. mindspore/common/initializer.py +14 -14
  51. mindspore/common/jit_config.py +33 -15
  52. mindspore/common/lazy_inline.py +126 -7
  53. mindspore/common/mindir_util.py +101 -0
  54. mindspore/common/parameter.py +51 -41
  55. mindspore/common/seed.py +4 -4
  56. mindspore/common/sparse_tensor.py +13 -14
  57. mindspore/common/tensor.py +243 -165
  58. mindspore/communication/__init__.py +7 -4
  59. mindspore/communication/_comm_helper.py +83 -4
  60. mindspore/communication/management.py +152 -84
  61. mindspore/config/op_info.config +14 -3
  62. mindspore/context.py +152 -61
  63. mindspore/dataset/__init__.py +5 -5
  64. mindspore/dataset/audio/__init__.py +2 -2
  65. mindspore/dataset/audio/transforms.py +52 -52
  66. mindspore/dataset/callback/ds_callback.py +16 -2
  67. mindspore/dataset/core/config.py +68 -51
  68. mindspore/dataset/engine/cache_client.py +28 -5
  69. mindspore/dataset/engine/datasets.py +250 -112
  70. mindspore/dataset/engine/datasets_audio.py +43 -211
  71. mindspore/dataset/engine/datasets_standard_format.py +16 -35
  72. mindspore/dataset/engine/datasets_text.py +43 -67
  73. mindspore/dataset/engine/datasets_user_defined.py +86 -100
  74. mindspore/dataset/engine/datasets_vision.py +219 -1029
  75. mindspore/dataset/engine/iterators.py +11 -4
  76. mindspore/dataset/engine/obs/obs_mindrecord_dataset.py +4 -0
  77. mindspore/dataset/engine/obs/util.py +3 -0
  78. mindspore/dataset/engine/samplers.py +1 -1
  79. mindspore/dataset/engine/validators.py +19 -5
  80. mindspore/dataset/text/__init__.py +3 -3
  81. mindspore/dataset/text/transforms.py +101 -127
  82. mindspore/dataset/text/utils.py +205 -138
  83. mindspore/dataset/transforms/__init__.py +1 -1
  84. mindspore/dataset/transforms/py_transforms_util.py +40 -12
  85. mindspore/dataset/transforms/transforms.py +95 -40
  86. mindspore/dataset/utils/browse_dataset.py +8 -2
  87. mindspore/dataset/utils/line_reader.py +17 -19
  88. mindspore/dataset/vision/__init__.py +3 -3
  89. mindspore/dataset/vision/c_transforms.py +6 -3
  90. mindspore/dataset/vision/transforms.py +409 -287
  91. mindspore/dataset/vision/utils.py +13 -14
  92. mindspore/dataset/vision/validators.py +11 -1
  93. mindspore/dnnl.dll +0 -0
  94. mindspore/dpcmi.dll +0 -0
  95. mindspore/experimental/map_parameter.py +14 -0
  96. mindspore/{nn/optim_ex → experimental/optim}/__init__.py +30 -29
  97. mindspore/{nn/optim_ex → experimental/optim}/adam.py +60 -67
  98. mindspore/{nn/optim_ex → experimental/optim}/adamw.py +181 -203
  99. mindspore/experimental/optim/lr_scheduler.py +1427 -0
  100. mindspore/{nn/optim_ex → experimental/optim}/optimizer.py +252 -259
  101. mindspore/{nn/optim_ex → experimental/optim}/sgd.py +147 -152
  102. mindspore/gen_ops.py +273 -0
  103. mindspore/include/OWNERS +0 -1
  104. mindspore/include/api/data_type.h +2 -1
  105. mindspore/include/api/graph.h +0 -15
  106. mindspore/include/api/kernel.h +2 -0
  107. mindspore/include/api/kernel_api.h +37 -12
  108. mindspore/include/api/model.h +17 -14
  109. mindspore/include/api/status.h +8 -3
  110. mindspore/include/api/types.h +37 -4
  111. mindspore/include/c_api/ms/abstract.h +67 -0
  112. mindspore/include/c_api/ms/attribute.h +197 -0
  113. mindspore/include/c_api/ms/base/handle_types.h +43 -0
  114. mindspore/include/c_api/ms/base/macros.h +32 -0
  115. mindspore/include/c_api/ms/base/status.h +33 -0
  116. mindspore/include/c_api/ms/base/types.h +282 -0
  117. mindspore/include/c_api/ms/context.h +102 -0
  118. mindspore/include/c_api/ms/graph.h +160 -0
  119. mindspore/include/c_api/ms/node.h +606 -0
  120. mindspore/include/c_api/ms/tensor.h +161 -0
  121. mindspore/include/c_api/ms/value.h +84 -0
  122. mindspore/include/dataset/constants.h +6 -5
  123. mindspore/include/dataset/execute.h +23 -13
  124. mindspore/include/dataset/text.h +26 -26
  125. mindspore/include/dataset/transforms.h +13 -13
  126. mindspore/include/dataset/vision.h +60 -60
  127. mindspore/include/dataset/vision_ascend.h +5 -6
  128. mindspore/include/dataset/vision_lite.h +17 -17
  129. mindspore/jpeg62.dll +0 -0
  130. mindspore/mindrecord/tools/imagenet_to_mr.py +1 -1
  131. mindspore/mindrecord/tools/mnist_to_mr.py +2 -2
  132. mindspore/mindspore_backend.dll +0 -0
  133. mindspore/mindspore_common.dll +0 -0
  134. mindspore/mindspore_core.dll +0 -0
  135. mindspore/mindspore_glog.dll +0 -0
  136. mindspore/mindspore_shared_lib.dll +0 -0
  137. mindspore/msobj140.dll +0 -0
  138. mindspore/mspdb140.dll +0 -0
  139. mindspore/mspdbcore.dll +0 -0
  140. mindspore/mspdbst.dll +0 -0
  141. mindspore/mspft140.dll +0 -0
  142. mindspore/msvcdis140.dll +0 -0
  143. mindspore/msvcp140_1.dll +0 -0
  144. mindspore/msvcp140_2.dll +0 -0
  145. mindspore/msvcp140_atomic_wait.dll +0 -0
  146. mindspore/msvcp140_codecvt_ids.dll +0 -0
  147. mindspore/nn/__init__.py +0 -2
  148. mindspore/nn/cell.py +313 -74
  149. mindspore/nn/dynamic_lr.py +21 -21
  150. mindspore/nn/layer/activation.py +22 -30
  151. mindspore/nn/layer/basic.py +15 -13
  152. mindspore/nn/layer/channel_shuffle.py +1 -1
  153. mindspore/nn/layer/container.py +271 -9
  154. mindspore/nn/layer/conv.py +323 -204
  155. mindspore/nn/layer/dense.py +8 -5
  156. mindspore/nn/layer/embedding.py +33 -27
  157. mindspore/nn/layer/flash_attention.py +141 -88
  158. mindspore/nn/layer/image.py +8 -6
  159. mindspore/nn/layer/math.py +16 -25
  160. mindspore/nn/layer/normalization.py +107 -66
  161. mindspore/nn/layer/padding.py +1 -1
  162. mindspore/nn/layer/pooling.py +131 -109
  163. mindspore/nn/layer/rnn_cells.py +27 -22
  164. mindspore/nn/layer/rnns.py +13 -16
  165. mindspore/nn/layer/thor_layer.py +1 -1
  166. mindspore/nn/layer/transformer.py +221 -154
  167. mindspore/nn/learning_rate_schedule.py +9 -1
  168. mindspore/nn/loss/loss.py +235 -174
  169. mindspore/nn/optim/ada_grad.py +2 -1
  170. mindspore/nn/optim/adadelta.py +1 -0
  171. mindspore/nn/optim/adafactor.py +2 -1
  172. mindspore/nn/optim/adam.py +7 -4
  173. mindspore/nn/optim/adamax.py +3 -2
  174. mindspore/nn/optim/adasum.py +2 -2
  175. mindspore/nn/optim/asgd.py +2 -3
  176. mindspore/nn/optim/ftrl.py +6 -5
  177. mindspore/nn/optim/lamb.py +7 -4
  178. mindspore/nn/optim/lars.py +1 -1
  179. mindspore/nn/optim/lazyadam.py +5 -3
  180. mindspore/nn/optim/momentum.py +2 -1
  181. mindspore/nn/optim/optimizer.py +53 -4
  182. mindspore/nn/optim/proximal_ada_grad.py +3 -4
  183. mindspore/nn/optim/rmsprop.py +4 -3
  184. mindspore/nn/optim/rprop.py +23 -12
  185. mindspore/nn/optim/sgd.py +26 -11
  186. mindspore/nn/optim/thor.py +9 -7
  187. mindspore/nn/probability/bijector/bijector.py +5 -5
  188. mindspore/nn/probability/bijector/power_transform.py +27 -27
  189. mindspore/nn/probability/bijector/softplus.py +3 -3
  190. mindspore/nn/probability/distribution/_utils/custom_ops.py +3 -3
  191. mindspore/nn/probability/distribution/bernoulli.py +5 -5
  192. mindspore/nn/probability/distribution/beta.py +3 -3
  193. mindspore/nn/probability/distribution/categorical.py +7 -7
  194. mindspore/nn/probability/distribution/cauchy.py +0 -1
  195. mindspore/nn/probability/distribution/distribution.py +3 -3
  196. mindspore/nn/probability/distribution/gamma.py +3 -3
  197. mindspore/nn/probability/distribution/geometric.py +4 -4
  198. mindspore/nn/probability/distribution/gumbel.py +4 -4
  199. mindspore/nn/probability/distribution/log_normal.py +2 -2
  200. mindspore/nn/probability/distribution/logistic.py +2 -2
  201. mindspore/nn/probability/distribution/poisson.py +4 -4
  202. mindspore/nn/probability/distribution/transformed_distribution.py +3 -3
  203. mindspore/nn/probability/distribution/uniform.py +6 -6
  204. mindspore/nn/wrap/cell_wrapper.py +84 -34
  205. mindspore/nn/wrap/grad_reducer.py +8 -5
  206. mindspore/nn/wrap/loss_scale.py +105 -42
  207. mindspore/numpy/array_creations.py +1 -2
  208. mindspore/numpy/array_ops.py +3 -2
  209. mindspore/numpy/utils_const.py +5 -5
  210. mindspore/opencv_core452.dll +0 -0
  211. mindspore/opencv_imgcodecs452.dll +0 -0
  212. mindspore/opencv_imgproc452.dll +0 -0
  213. mindspore/ops/_grad_experimental/__init__.py +0 -5
  214. mindspore/ops/_grad_experimental/grad_array_ops.py +2 -3
  215. mindspore/ops/_grad_experimental/grad_comm_ops.py +15 -2
  216. mindspore/ops/_grad_experimental/grad_debug_ops.py +0 -37
  217. mindspore/ops/_grad_experimental/grad_implementations.py +11 -1
  218. mindspore/ops/_grad_experimental/grad_inner_ops.py +2 -216
  219. mindspore/ops/_grad_experimental/grad_math_ops.py +19 -199
  220. mindspore/ops/_grad_experimental/grad_sparse.py +15 -0
  221. mindspore/ops/_grad_experimental/grad_sparse_ops.py +3 -3
  222. mindspore/ops/_op_impl/_custom_op/dsd_back_impl.py +1 -1
  223. mindspore/ops/_op_impl/_custom_op/flash_attention/attention.py +165 -109
  224. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_bwd.py +144 -86
  225. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_fwd.py +172 -187
  226. mindspore/ops/_op_impl/_custom_op/flash_attention/flash_attention_impl.py +51 -57
  227. mindspore/ops/_op_impl/_custom_op/flash_attention/tik_ops_utils.py +6 -17
  228. mindspore/ops/_op_impl/_custom_op/flash_attention/tiling_strategy/wukong_tiling.py +1 -1
  229. mindspore/ops/_op_impl/aicpu/__init__.py +14 -2
  230. mindspore/ops/_op_impl/aicpu/add.py +3 -3
  231. mindspore/ops/_op_impl/aicpu/bias_add_grad.py +0 -1
  232. mindspore/ops/_op_impl/aicpu/count_nonzero.py +43 -0
  233. mindspore/ops/_op_impl/aicpu/eps.py +32 -0
  234. mindspore/ops/_op_impl/aicpu/gamma.py +2 -2
  235. mindspore/ops/_op_impl/aicpu/log_uniform_candidate_sampler.py +6 -3
  236. mindspore/ops/_op_impl/aicpu/lu_unpack_grad.py +0 -1
  237. mindspore/ops/_op_impl/aicpu/multinomial.py +3 -3
  238. mindspore/ops/_op_impl/aicpu/parameterized_truncated_normal.py +15 -7
  239. mindspore/ops/_op_impl/aicpu/random_categorical.py +39 -19
  240. mindspore/ops/_op_impl/aicpu/random_choice_with_mask.py +5 -2
  241. mindspore/ops/_op_impl/aicpu/random_poisson.py +103 -52
  242. mindspore/ops/_op_impl/aicpu/random_shuffle.py +17 -15
  243. mindspore/ops/_op_impl/aicpu/{sparseaddmm.py → sparse_addmm.py} +2 -2
  244. mindspore/ops/_op_impl/aicpu/{sparsesparsemaximum.py → sparse_sparse_maximum.py} +4 -4
  245. mindspore/ops/_op_impl/aicpu/standard_laplace.py +5 -5
  246. mindspore/ops/_op_impl/aicpu/standard_normal.py +5 -5
  247. mindspore/ops/_op_impl/aicpu/truncated_normal.py +9 -7
  248. mindspore/ops/_op_impl/aicpu/uniform.py +5 -3
  249. mindspore/ops/_op_impl/aicpu/uniform_candidate_sampler.py +8 -4
  250. mindspore/ops/_op_impl/aicpu/uniform_int.py +5 -5
  251. mindspore/ops/_op_impl/aicpu/uniform_real.py +4 -4
  252. mindspore/ops/_op_impl/tbe/__init__.py +4 -4
  253. mindspore/ops/_op_impl/tbe/inplace_index_add.py +7 -3
  254. mindspore/ops/_op_impl/tbe/trans_data_ds.py +2 -0
  255. mindspore/ops/_primitive_cache.py +1 -1
  256. mindspore/ops/_tracefunc.py +45 -13
  257. mindspore/ops/_utils/utils.py +6 -1
  258. mindspore/ops/_vmap/vmap_array_ops.py +3 -3
  259. mindspore/ops/_vmap/vmap_base.py +3 -3
  260. mindspore/ops/_vmap/vmap_convolution_ops.py +1 -1
  261. mindspore/ops/_vmap/vmap_grad_math_ops.py +6 -4
  262. mindspore/ops/_vmap/vmap_math_ops.py +5 -2
  263. mindspore/ops/_vmap/vmap_nn_ops.py +61 -7
  264. mindspore/ops/arg_dtype_cast.py +54 -0
  265. mindspore/ops/composite/base.py +37 -10
  266. mindspore/ops/composite/math_ops.py +5 -4
  267. mindspore/ops/composite/multitype_ops/_compile_utils.py +275 -73
  268. mindspore/ops/composite/multitype_ops/_constexpr_utils.py +16 -9
  269. mindspore/ops/composite/multitype_ops/add_impl.py +43 -4
  270. mindspore/ops/composite/multitype_ops/getitem_impl.py +42 -4
  271. mindspore/ops/composite/multitype_ops/ones_like_impl.py +6 -0
  272. mindspore/ops/composite/multitype_ops/setitem_impl.py +2 -1
  273. mindspore/ops/composite/multitype_ops/zeros_like_impl.py +9 -0
  274. mindspore/ops/deprecated.py +304 -0
  275. mindspore/ops/function/__init__.py +4 -1
  276. mindspore/ops/function/array_func.py +174 -193
  277. mindspore/ops/function/clip_func.py +81 -13
  278. mindspore/ops/function/debug_func.py +1 -1
  279. mindspore/ops/function/grad/grad_func.py +18 -9
  280. mindspore/ops/function/image_func.py +10 -4
  281. mindspore/ops/function/linalg_func.py +5 -5
  282. mindspore/ops/function/math_func.py +575 -386
  283. mindspore/ops/function/nn_func.py +568 -260
  284. mindspore/ops/function/random_func.py +88 -57
  285. mindspore/ops/function/sparse_func.py +1 -1
  286. mindspore/ops/function/sparse_unary_func.py +14 -12
  287. mindspore/ops/function/vmap_func.py +6 -5
  288. mindspore/ops/functional.py +15 -10
  289. mindspore/ops/op_info_register.py +244 -25
  290. mindspore/ops/operations/__init__.py +28 -19
  291. mindspore/ops/operations/_grad_ops.py +72 -7
  292. mindspore/ops/operations/_inner_ops.py +350 -17
  293. mindspore/ops/operations/_quant_ops.py +4 -8
  294. mindspore/ops/operations/_sequence_ops.py +42 -0
  295. mindspore/ops/operations/array_ops.py +68 -282
  296. mindspore/ops/operations/comm_ops.py +107 -59
  297. mindspore/ops/operations/custom_ops.py +94 -70
  298. mindspore/ops/operations/debug_ops.py +8 -4
  299. mindspore/ops/operations/image_ops.py +18 -12
  300. mindspore/ops/operations/inner_ops.py +26 -3
  301. mindspore/ops/operations/math_ops.py +189 -141
  302. mindspore/ops/operations/nn_ops.py +794 -489
  303. mindspore/ops/operations/other_ops.py +0 -22
  304. mindspore/ops/operations/random_ops.py +53 -111
  305. mindspore/ops/operations/sparse_ops.py +3 -1
  306. mindspore/ops/primitive.py +24 -18
  307. mindspore/parallel/_auto_parallel_context.py +68 -8
  308. mindspore/parallel/_cost_model_context.py +2 -2
  309. mindspore/parallel/_offload_context.py +17 -3
  310. mindspore/parallel/_parallel_serialization.py +12 -5
  311. mindspore/parallel/_ps_context.py +12 -0
  312. mindspore/parallel/_tensor.py +18 -13
  313. mindspore/parallel/_transformer/layers.py +5 -3
  314. mindspore/parallel/_transformer/loss.py +1 -0
  315. mindspore/parallel/_transformer/moe.py +2 -2
  316. mindspore/parallel/_transformer/op_parallel_config.py +12 -1
  317. mindspore/parallel/_transformer/transformer.py +23 -3
  318. mindspore/parallel/_utils.py +11 -7
  319. mindspore/parallel/algo_parameter_config.py +85 -5
  320. mindspore/parallel/checkpoint_transform.py +19 -12
  321. mindspore/parallel/shard.py +21 -14
  322. mindspore/pgodb140.dll +0 -0
  323. mindspore/pgort140.dll +0 -0
  324. mindspore/profiler/common/struct_type.py +3 -3
  325. mindspore/profiler/common/util.py +4 -2
  326. mindspore/profiler/envprofiling.py +1 -1
  327. mindspore/profiler/parser/aicpu_data_parser.py +5 -3
  328. mindspore/profiler/parser/ascend_flops_generator.py +2 -2
  329. mindspore/profiler/parser/ascend_fpbp_generator.py +1 -1
  330. mindspore/profiler/parser/ascend_hccl_generator.py +249 -12
  331. mindspore/profiler/parser/ascend_msprof_exporter.py +150 -255
  332. mindspore/profiler/parser/ascend_msprof_generator.py +204 -17
  333. mindspore/profiler/parser/ascend_op_generator.py +6 -6
  334. mindspore/profiler/parser/ascend_steptrace_generator.py +6 -4
  335. mindspore/profiler/parser/ascend_timeline_generator.py +14 -187
  336. mindspore/profiler/parser/base_timeline_generator.py +10 -8
  337. mindspore/profiler/parser/cpu_gpu_timeline_generator.py +16 -12
  338. mindspore/profiler/parser/flops_parser.py +15 -11
  339. mindspore/profiler/parser/framework_parser.py +38 -22
  340. mindspore/profiler/parser/hccl_parser.py +16 -12
  341. mindspore/profiler/parser/integrator.py +22 -11
  342. mindspore/profiler/parser/memory_usage_parser.py +2 -2
  343. mindspore/profiler/parser/minddata_analyzer.py +12 -14
  344. mindspore/profiler/parser/minddata_pipeline_parser.py +1 -1
  345. mindspore/profiler/parser/msadvisor_parser.py +8 -4
  346. mindspore/profiler/parser/op_intermediate_parser.py +5 -2
  347. mindspore/profiler/parser/optime_parser.py +1 -1
  348. mindspore/profiler/parser/profiler_info.py +21 -2
  349. mindspore/profiler/parser/step_trace_parser.py +11 -14
  350. mindspore/profiler/profiling.py +179 -89
  351. mindspore/rewrite/api/node.py +102 -19
  352. mindspore/rewrite/api/node_type.py +5 -1
  353. mindspore/rewrite/api/pattern_engine.py +1 -1
  354. mindspore/rewrite/api/scoped_value.py +9 -17
  355. mindspore/rewrite/api/symbol_tree.py +131 -47
  356. mindspore/rewrite/ast_helpers/__init__.py +2 -1
  357. mindspore/rewrite/ast_helpers/ast_finder.py +129 -0
  358. mindspore/rewrite/ast_helpers/ast_modifier.py +116 -104
  359. mindspore/rewrite/ast_transformers/flatten_recursive_stmt.py +93 -46
  360. mindspore/rewrite/common/rewrite_elog.py +5 -1
  361. mindspore/rewrite/namer.py +33 -24
  362. mindspore/rewrite/namespace.py +14 -5
  363. mindspore/{_extends/graph_kernel/expanders/complex → rewrite/node}/__init__.py +9 -9
  364. mindspore/rewrite/node/call_function.py +79 -0
  365. mindspore/rewrite/node/cell_container.py +135 -0
  366. mindspore/rewrite/node/control_flow.py +88 -0
  367. mindspore/rewrite/{node.py → node/node.py} +273 -234
  368. mindspore/rewrite/node/node_manager.py +254 -0
  369. mindspore/rewrite/{topological_manager.py → node/node_topological_manager.py} +13 -46
  370. mindspore/rewrite/parsers/arguments_parser.py +22 -21
  371. mindspore/rewrite/parsers/assign_parser.py +216 -221
  372. mindspore/rewrite/parsers/attribute_parser.py +9 -7
  373. mindspore/rewrite/parsers/class_def_parser.py +174 -113
  374. mindspore/rewrite/parsers/constant_parser.py +9 -6
  375. mindspore/rewrite/parsers/container_parser.py +9 -7
  376. mindspore/rewrite/parsers/for_parser.py +36 -15
  377. mindspore/rewrite/parsers/function_def_parser.py +24 -16
  378. mindspore/rewrite/parsers/if_parser.py +28 -24
  379. mindspore/rewrite/parsers/module_parser.py +196 -25
  380. mindspore/rewrite/{parser.py → parsers/parser.py} +4 -2
  381. mindspore/rewrite/{parser_register.py → parsers/parser_register.py} +1 -1
  382. mindspore/rewrite/parsers/return_parser.py +6 -6
  383. mindspore/rewrite/sparsify/sparse_transformer.py +12 -3
  384. mindspore/rewrite/sparsify/utils.py +1 -1
  385. mindspore/rewrite/symbol_tree.py +523 -578
  386. mindspore/rewrite/symbol_tree_builder.py +9 -193
  387. mindspore/rewrite/symbol_tree_dumper.py +2 -2
  388. mindspore/run_check/_check_version.py +6 -4
  389. mindspore/{ops/bprop_mindir → safeguard}/__init__.py +4 -3
  390. mindspore/safeguard/rewrite_obfuscation.py +541 -0
  391. mindspore/tbbmalloc.dll +0 -0
  392. mindspore/tinyxml2.dll +0 -0
  393. mindspore/train/_utils.py +7 -3
  394. mindspore/train/amp.py +323 -123
  395. mindspore/train/anf_ir_pb2.py +14 -2
  396. mindspore/train/callback/_backup_and_restore.py +2 -12
  397. mindspore/train/callback/_callback.py +29 -4
  398. mindspore/train/callback/_checkpoint.py +23 -8
  399. mindspore/train/callback/_early_stop.py +2 -2
  400. mindspore/train/callback/_landscape.py +4 -4
  401. mindspore/train/callback/_loss_monitor.py +2 -2
  402. mindspore/train/callback/_on_request_exit.py +2 -2
  403. mindspore/train/callback/_reduce_lr_on_plateau.py +3 -4
  404. mindspore/train/callback/_summary_collector.py +15 -8
  405. mindspore/train/callback/_time_monitor.py +58 -5
  406. mindspore/train/data_sink.py +5 -11
  407. mindspore/train/dataset_helper.py +84 -57
  408. mindspore/train/loss_scale_manager.py +2 -2
  409. mindspore/train/metrics/__init__.py +3 -3
  410. mindspore/train/metrics/cosine_similarity.py +1 -1
  411. mindspore/train/metrics/hausdorff_distance.py +3 -2
  412. mindspore/train/metrics/mean_surface_distance.py +3 -2
  413. mindspore/train/metrics/metric.py +39 -19
  414. mindspore/train/metrics/roc.py +2 -2
  415. mindspore/train/metrics/root_mean_square_surface_distance.py +4 -3
  416. mindspore/train/mind_ir_pb2.py +85 -36
  417. mindspore/train/model.py +187 -47
  418. mindspore/train/serialization.py +487 -161
  419. mindspore/train/summary/_summary_adapter.py +1 -1
  420. mindspore/train/summary/_writer_pool.py +3 -2
  421. mindspore/train/summary/summary_record.py +37 -17
  422. mindspore/train/train_thor/convert_utils.py +3 -3
  423. mindspore/train/train_thor/dataset_helper.py +1 -1
  424. mindspore/turbojpeg.dll +0 -0
  425. mindspore/vcmeta.dll +0 -0
  426. mindspore/vcruntime140.dll +0 -0
  427. mindspore/vcruntime140_1.dll +0 -0
  428. mindspore/version.py +1 -1
  429. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/METADATA +5 -3
  430. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/RECORD +433 -479
  431. mindspore/_extends/graph_kernel/expander.py +0 -80
  432. mindspore/_extends/graph_kernel/expanders/__init__.py +0 -54
  433. mindspore/_extends/graph_kernel/expanders/_utils.py +0 -269
  434. mindspore/_extends/graph_kernel/expanders/addn.py +0 -33
  435. mindspore/_extends/graph_kernel/expanders/batchnorm.py +0 -152
  436. mindspore/_extends/graph_kernel/expanders/batchnorm_grad.py +0 -105
  437. mindspore/_extends/graph_kernel/expanders/clip_by_norm_no_div_sum.py +0 -33
  438. mindspore/_extends/graph_kernel/expanders/complex/abs.py +0 -30
  439. mindspore/_extends/graph_kernel/expanders/complex/add.py +0 -44
  440. mindspore/_extends/graph_kernel/expanders/complex/div.py +0 -62
  441. mindspore/_extends/graph_kernel/expanders/complex/mul.py +0 -52
  442. mindspore/_extends/graph_kernel/expanders/complex/real_div.py +0 -62
  443. mindspore/_extends/graph_kernel/expanders/complex/sub.py +0 -45
  444. mindspore/_extends/graph_kernel/expanders/conv2d.py +0 -200
  445. mindspore/_extends/graph_kernel/expanders/dropout_grad.py +0 -30
  446. mindspore/_extends/graph_kernel/expanders/equal_count.py +0 -50
  447. mindspore/_extends/graph_kernel/expanders/erfc.py +0 -35
  448. mindspore/_extends/graph_kernel/expanders/expand_dims.py +0 -50
  449. mindspore/_extends/graph_kernel/expanders/fused_adam.py +0 -44
  450. mindspore/_extends/graph_kernel/expanders/fused_adam_weight_decay.py +0 -47
  451. mindspore/_extends/graph_kernel/expanders/fused_mul_add.py +0 -28
  452. mindspore/_extends/graph_kernel/expanders/gelu_grad.py +0 -70
  453. mindspore/_extends/graph_kernel/expanders/gkdropout.py +0 -40
  454. mindspore/_extends/graph_kernel/expanders/identity.py +0 -25
  455. mindspore/_extends/graph_kernel/expanders/layernorm.py +0 -93
  456. mindspore/_extends/graph_kernel/expanders/layernorm_grad.py +0 -113
  457. mindspore/_extends/graph_kernel/expanders/logsoftmax.py +0 -46
  458. mindspore/_extends/graph_kernel/expanders/logsoftmax_grad.py +0 -36
  459. mindspore/_extends/graph_kernel/expanders/matmul.py +0 -80
  460. mindspore/_extends/graph_kernel/expanders/maximum_grad.py +0 -59
  461. mindspore/_extends/graph_kernel/expanders/minimum_grad.py +0 -80
  462. mindspore/_extends/graph_kernel/expanders/oneslike.py +0 -26
  463. mindspore/_extends/graph_kernel/expanders/reduce_mean.py +0 -43
  464. mindspore/_extends/graph_kernel/expanders/relu_grad.py +0 -32
  465. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits.py +0 -41
  466. mindspore/_extends/graph_kernel/expanders/sigmoid_cross_entropy_with_logits_grad.py +0 -35
  467. mindspore/_extends/graph_kernel/expanders/sigmoid_grad.py +0 -31
  468. mindspore/_extends/graph_kernel/expanders/slice.py +0 -35
  469. mindspore/_extends/graph_kernel/expanders/softmax_cross_entropy_with_logits.py +0 -42
  470. mindspore/_extends/graph_kernel/expanders/softmax_grad_ext.py +0 -41
  471. mindspore/_extends/graph_kernel/expanders/softsign.py +0 -28
  472. mindspore/_extends/graph_kernel/expanders/sqrt_grad.py +0 -29
  473. mindspore/_extends/graph_kernel/expanders/square_sum_all.py +0 -44
  474. mindspore/_extends/graph_kernel/expanders/square_sum_v1.py +0 -37
  475. mindspore/_extends/graph_kernel/expanders/squared_difference.py +0 -43
  476. mindspore/_extends/graph_kernel/expanders/tanh_grad.py +0 -31
  477. mindspore/_extends/graph_kernel/model/op_infer.py +0 -506
  478. mindspore/dataset/datapreprocess/__init__.py +0 -20
  479. mindspore/dataset/datapreprocess/preprocess_imagenet_validate_dataset.py +0 -54
  480. mindspore/include/api/net.h +0 -142
  481. mindspore/nn/lr_scheduler.py +0 -262
  482. mindspore/ops/_grad_experimental/grad_image_ops.py +0 -248
  483. mindspore/ops/_grad_experimental/grad_linalg_ops.py +0 -181
  484. mindspore/ops/_grad_experimental/grad_other_ops.py +0 -72
  485. mindspore/ops/_grad_experimental/grad_scalar_ops.py +0 -112
  486. mindspore/ops/_grad_experimental/grad_sequence_ops.py +0 -351
  487. mindspore/ops/bprop_mindir/BNTrainingReduce_bprop.mindir +0 -0
  488. mindspore/ops/bprop_mindir/Broadcast_bprop.mindir +0 -0
  489. mindspore/ops/bprop_mindir/Depend_bprop.mindir +0 -0
  490. mindspore/ops/bprop_mindir/DepthwiseConv2dNative_bprop.mindir +0 -138
  491. mindspore/ops/bprop_mindir/EmbeddingLookup_bprop.mindir +0 -0
  492. mindspore/ops/bprop_mindir/Load_bprop.mindir +0 -0
  493. mindspore/ops/bprop_mindir/ScatterNonAliasingAdd_bprop.mindir +0 -0
  494. mindspore/ops/bprop_mindir/SparseGatherV2_bprop.mindir +0 -0
  495. mindspore/ops/bprop_mindir/SparseSoftmaxCrossEntropyWithLogits_bprop.mindir +0 -0
  496. mindspore/ops/bprop_mindir/Switch_bprop.mindir +0 -0
  497. mindspore/ops/bprop_mindir/TransShape_bprop.mindir +0 -0
  498. mindspore/ops/bprop_mindir/TupleGetItem_bprop.mindir +0 -0
  499. mindspore/ops/bprop_mindir/Unique_bprop.mindir +0 -0
  500. mindspore/ops/bprop_mindir/Unstack_bprop.mindir +0 -0
  501. mindspore/ops/bprop_mindir/generate_mindir.py +0 -114
  502. mindspore/rewrite/node_visitor.py +0 -44
  503. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/WHEEL +0 -0
  504. {mindspore-2.1.0.dist-info → mindspore-2.2.10.dist-info}/entry_points.txt +0 -0
  505. {mindspore-2.1.0.dist-info → mindspore-2.2.10.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())