onnx 1.16.2__cp39-cp39-win32.whl → 1.17.0__cp39-cp39-win32.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 onnx might be problematic. Click here for more details.

Files changed (843) hide show
  1. onnx/__init__.py +3 -1
  2. onnx/_custom_element_types.py +63 -0
  3. onnx/backend/base.py +17 -15
  4. onnx/backend/sample/ops/__init__.py +4 -4
  5. onnx/backend/sample/ops/abs.py +1 -0
  6. onnx/backend/test/__init__.py +1 -0
  7. onnx/backend/test/case/__init__.py +2 -2
  8. onnx/backend/test/case/base.py +6 -5
  9. onnx/backend/test/case/model/__init__.py +4 -3
  10. onnx/backend/test/case/model/expand.py +1 -0
  11. onnx/backend/test/case/model/gradient.py +1 -0
  12. onnx/backend/test/case/model/sequence.py +3 -1
  13. onnx/backend/test/case/model/shrink.py +1 -0
  14. onnx/backend/test/case/model/sign.py +1 -0
  15. onnx/backend/test/case/model/single-relu.py +1 -0
  16. onnx/backend/test/case/model/stringnormalizer.py +1 -1
  17. onnx/backend/test/case/node/__init__.py +31 -22
  18. onnx/backend/test/case/node/_image_decoder_data.py +1 -0
  19. onnx/backend/test/case/node/abs.py +1 -0
  20. onnx/backend/test/case/node/acos.py +1 -0
  21. onnx/backend/test/case/node/acosh.py +1 -0
  22. onnx/backend/test/case/node/adagrad.py +2 -1
  23. onnx/backend/test/case/node/adam.py +4 -1
  24. onnx/backend/test/case/node/add.py +1 -0
  25. onnx/backend/test/case/node/affinegrid.py +1 -0
  26. onnx/backend/test/case/node/ai_onnx_ml/array_feature_extractor.py +1 -0
  27. onnx/backend/test/case/node/ai_onnx_ml/binarizer.py +1 -0
  28. onnx/backend/test/case/node/ai_onnx_ml/label_encoder.py +1 -0
  29. onnx/backend/test/case/node/ai_onnx_ml/tree_ensemble.py +1 -0
  30. onnx/backend/test/case/node/and.py +1 -0
  31. onnx/backend/test/case/node/argmax.py +1 -0
  32. onnx/backend/test/case/node/argmin.py +1 -0
  33. onnx/backend/test/case/node/asin.py +1 -0
  34. onnx/backend/test/case/node/asinh.py +1 -0
  35. onnx/backend/test/case/node/atan.py +1 -0
  36. onnx/backend/test/case/node/atanh.py +1 -0
  37. onnx/backend/test/case/node/averagepool.py +1 -0
  38. onnx/backend/test/case/node/batchnorm.py +1 -0
  39. onnx/backend/test/case/node/bernoulli.py +1 -0
  40. onnx/backend/test/case/node/bitshift.py +1 -0
  41. onnx/backend/test/case/node/bitwiseand.py +1 -0
  42. onnx/backend/test/case/node/bitwisenot.py +1 -0
  43. onnx/backend/test/case/node/bitwiseor.py +1 -0
  44. onnx/backend/test/case/node/bitwisexor.py +1 -0
  45. onnx/backend/test/case/node/blackmanwindow.py +13 -3
  46. onnx/backend/test/case/node/cast.py +2 -1
  47. onnx/backend/test/case/node/castlike.py +1 -0
  48. onnx/backend/test/case/node/ceil.py +1 -0
  49. onnx/backend/test/case/node/celu.py +1 -0
  50. onnx/backend/test/case/node/center_crop_pad.py +1 -0
  51. onnx/backend/test/case/node/clip.py +1 -0
  52. onnx/backend/test/case/node/col2im.py +1 -1
  53. onnx/backend/test/case/node/compress.py +1 -0
  54. onnx/backend/test/case/node/concat.py +3 -2
  55. onnx/backend/test/case/node/constant.py +1 -0
  56. onnx/backend/test/case/node/constantofshape.py +1 -0
  57. onnx/backend/test/case/node/conv.py +1 -0
  58. onnx/backend/test/case/node/convinteger.py +1 -0
  59. onnx/backend/test/case/node/convtranspose.py +135 -0
  60. onnx/backend/test/case/node/cos.py +1 -0
  61. onnx/backend/test/case/node/cosh.py +1 -0
  62. onnx/backend/test/case/node/cumsum.py +1 -0
  63. onnx/backend/test/case/node/deformconv.py +17 -26
  64. onnx/backend/test/case/node/depthtospace.py +1 -0
  65. onnx/backend/test/case/node/dequantizelinear.py +1 -0
  66. onnx/backend/test/case/node/det.py +1 -0
  67. onnx/backend/test/case/node/dft.py +1 -0
  68. onnx/backend/test/case/node/div.py +1 -0
  69. onnx/backend/test/case/node/dropout.py +1 -0
  70. onnx/backend/test/case/node/dynamicquantizelinear.py +1 -0
  71. onnx/backend/test/case/node/einsum.py +2 -3
  72. onnx/backend/test/case/node/elu.py +1 -0
  73. onnx/backend/test/case/node/equal.py +1 -0
  74. onnx/backend/test/case/node/erf.py +1 -0
  75. onnx/backend/test/case/node/exp.py +1 -0
  76. onnx/backend/test/case/node/expand.py +1 -0
  77. onnx/backend/test/case/node/eyelike.py +1 -0
  78. onnx/backend/test/case/node/flatten.py +1 -0
  79. onnx/backend/test/case/node/floor.py +1 -0
  80. onnx/backend/test/case/node/gather.py +1 -0
  81. onnx/backend/test/case/node/gatherelements.py +1 -0
  82. onnx/backend/test/case/node/gathernd.py +1 -0
  83. onnx/backend/test/case/node/gelu.py +1 -0
  84. onnx/backend/test/case/node/gemm.py +3 -4
  85. onnx/backend/test/case/node/globalaveragepool.py +1 -0
  86. onnx/backend/test/case/node/globalmaxpool.py +1 -0
  87. onnx/backend/test/case/node/greater.py +1 -0
  88. onnx/backend/test/case/node/greater_equal.py +1 -0
  89. onnx/backend/test/case/node/gridsample.py +1 -0
  90. onnx/backend/test/case/node/groupnormalization.py +1 -0
  91. onnx/backend/test/case/node/gru.py +3 -2
  92. onnx/backend/test/case/node/hammingwindow.py +13 -2
  93. onnx/backend/test/case/node/hannwindow.py +10 -2
  94. onnx/backend/test/case/node/hardmax.py +1 -0
  95. onnx/backend/test/case/node/hardsigmoid.py +1 -0
  96. onnx/backend/test/case/node/hardswish.py +1 -0
  97. onnx/backend/test/case/node/identity.py +1 -0
  98. onnx/backend/test/case/node/if.py +1 -0
  99. onnx/backend/test/case/node/instancenorm.py +1 -0
  100. onnx/backend/test/case/node/isinf.py +1 -0
  101. onnx/backend/test/case/node/isnan.py +1 -0
  102. onnx/backend/test/case/node/layernormalization.py +1 -0
  103. onnx/backend/test/case/node/leakyrelu.py +1 -0
  104. onnx/backend/test/case/node/less.py +1 -0
  105. onnx/backend/test/case/node/less_equal.py +1 -0
  106. onnx/backend/test/case/node/log.py +1 -0
  107. onnx/backend/test/case/node/logsoftmax.py +1 -0
  108. onnx/backend/test/case/node/loop.py +4 -3
  109. onnx/backend/test/case/node/lppool.py +1 -0
  110. onnx/backend/test/case/node/lrn.py +1 -0
  111. onnx/backend/test/case/node/lstm.py +3 -2
  112. onnx/backend/test/case/node/matmul.py +1 -0
  113. onnx/backend/test/case/node/matmulinteger.py +1 -0
  114. onnx/backend/test/case/node/max.py +1 -0
  115. onnx/backend/test/case/node/maxpool.py +1 -0
  116. onnx/backend/test/case/node/maxunpool.py +1 -0
  117. onnx/backend/test/case/node/mean.py +1 -0
  118. onnx/backend/test/case/node/meanvariancenormalization.py +1 -0
  119. onnx/backend/test/case/node/melweightmatrix.py +1 -0
  120. onnx/backend/test/case/node/min.py +1 -0
  121. onnx/backend/test/case/node/mish.py +1 -0
  122. onnx/backend/test/case/node/mod.py +1 -0
  123. onnx/backend/test/case/node/momentum.py +1 -0
  124. onnx/backend/test/case/node/mul.py +1 -0
  125. onnx/backend/test/case/node/neg.py +1 -0
  126. onnx/backend/test/case/node/negativeloglikelihoodloss.py +4 -1
  127. onnx/backend/test/case/node/nonmaxsuppression.py +1 -0
  128. onnx/backend/test/case/node/nonzero.py +1 -0
  129. onnx/backend/test/case/node/not.py +1 -0
  130. onnx/backend/test/case/node/onehot.py +1 -0
  131. onnx/backend/test/case/node/optionalgetelement.py +3 -2
  132. onnx/backend/test/case/node/optionalhaselement.py +2 -3
  133. onnx/backend/test/case/node/or.py +1 -0
  134. onnx/backend/test/case/node/pad.py +2 -1
  135. onnx/backend/test/case/node/pow.py +1 -0
  136. onnx/backend/test/case/node/prelu.py +1 -0
  137. onnx/backend/test/case/node/qlinearconv.py +1 -0
  138. onnx/backend/test/case/node/qlinearmatmul.py +1 -0
  139. onnx/backend/test/case/node/quantizelinear.py +1 -0
  140. onnx/backend/test/case/node/rangeop.py +1 -0
  141. onnx/backend/test/case/node/reciprocal.py +1 -0
  142. onnx/backend/test/case/node/reduce_log_sum.py +1 -0
  143. onnx/backend/test/case/node/reduce_log_sum_exp.py +1 -0
  144. onnx/backend/test/case/node/reducel1.py +1 -0
  145. onnx/backend/test/case/node/reducel2.py +1 -0
  146. onnx/backend/test/case/node/reducemax.py +2 -1
  147. onnx/backend/test/case/node/reducemean.py +1 -0
  148. onnx/backend/test/case/node/reducemin.py +1 -0
  149. onnx/backend/test/case/node/reduceprod.py +1 -0
  150. onnx/backend/test/case/node/reducesum.py +2 -1
  151. onnx/backend/test/case/node/reducesumsquare.py +1 -0
  152. onnx/backend/test/case/node/regex_full_match.py +1 -0
  153. onnx/backend/test/case/node/relu.py +1 -0
  154. onnx/backend/test/case/node/reshape.py +1 -0
  155. onnx/backend/test/case/node/resize.py +3 -2
  156. onnx/backend/test/case/node/reversesequence.py +1 -0
  157. onnx/backend/test/case/node/rnn.py +3 -2
  158. onnx/backend/test/case/node/roialign.py +1 -0
  159. onnx/backend/test/case/node/round.py +4 -3
  160. onnx/backend/test/case/node/scan.py +1 -0
  161. onnx/backend/test/case/node/scatter.py +1 -0
  162. onnx/backend/test/case/node/scatterelements.py +7 -3
  163. onnx/backend/test/case/node/scatternd.py +1 -0
  164. onnx/backend/test/case/node/selu.py +1 -0
  165. onnx/backend/test/case/node/sequence_map.py +1 -0
  166. onnx/backend/test/case/node/sequenceinsert.py +4 -3
  167. onnx/backend/test/case/node/shape.py +1 -0
  168. onnx/backend/test/case/node/shrink.py +1 -0
  169. onnx/backend/test/case/node/sigmoid.py +1 -0
  170. onnx/backend/test/case/node/sign.py +1 -0
  171. onnx/backend/test/case/node/sin.py +1 -0
  172. onnx/backend/test/case/node/sinh.py +1 -0
  173. onnx/backend/test/case/node/size.py +1 -0
  174. onnx/backend/test/case/node/slice.py +1 -0
  175. onnx/backend/test/case/node/softmax.py +1 -0
  176. onnx/backend/test/case/node/softmaxcrossentropy.py +4 -1
  177. onnx/backend/test/case/node/softplus.py +1 -0
  178. onnx/backend/test/case/node/softsign.py +1 -0
  179. onnx/backend/test/case/node/spacetodepth.py +1 -0
  180. onnx/backend/test/case/node/split.py +1 -0
  181. onnx/backend/test/case/node/splittosequence.py +1 -0
  182. onnx/backend/test/case/node/sqrt.py +1 -0
  183. onnx/backend/test/case/node/squeeze.py +1 -0
  184. onnx/backend/test/case/node/stft.py +4 -1
  185. onnx/backend/test/case/node/string_concat.py +1 -0
  186. onnx/backend/test/case/node/string_split.py +1 -0
  187. onnx/backend/test/case/node/stringnormalizer.py +1 -0
  188. onnx/backend/test/case/node/sub.py +1 -0
  189. onnx/backend/test/case/node/sum.py +1 -0
  190. onnx/backend/test/case/node/tan.py +1 -0
  191. onnx/backend/test/case/node/tanh.py +1 -0
  192. onnx/backend/test/case/node/tfidfvectorizer.py +1 -0
  193. onnx/backend/test/case/node/thresholdedrelu.py +1 -0
  194. onnx/backend/test/case/node/tile.py +1 -0
  195. onnx/backend/test/case/node/topk.py +1 -0
  196. onnx/backend/test/case/node/transpose.py +1 -0
  197. onnx/backend/test/case/node/trilu.py +1 -0
  198. onnx/backend/test/case/node/unique.py +7 -0
  199. onnx/backend/test/case/node/unsqueeze.py +1 -0
  200. onnx/backend/test/case/node/upsample.py +1 -0
  201. onnx/backend/test/case/node/where.py +1 -0
  202. onnx/backend/test/case/node/xor.py +1 -0
  203. onnx/backend/test/case/test_case.py +6 -5
  204. onnx/backend/test/case/utils.py +2 -2
  205. onnx/backend/test/cmd_tools.py +1 -0
  206. onnx/backend/test/data/node/test_acos/model.onnx +0 -0
  207. onnx/backend/test/data/node/test_acos/test_data_set_0/output_0.pb +0 -0
  208. onnx/backend/test/data/node/test_acos_example/model.onnx +0 -0
  209. onnx/backend/test/data/node/test_acosh/model.onnx +0 -0
  210. onnx/backend/test/data/node/test_acosh/test_data_set_0/output_0.pb +1 -1
  211. onnx/backend/test/data/node/test_acosh_example/model.onnx +0 -0
  212. onnx/backend/test/data/node/test_asin/model.onnx +0 -0
  213. onnx/backend/test/data/node/test_asin/test_data_set_0/output_0.pb +1 -1
  214. onnx/backend/test/data/node/test_asin_example/model.onnx +0 -0
  215. onnx/backend/test/data/node/test_asinh/model.onnx +0 -0
  216. onnx/backend/test/data/node/test_asinh/test_data_set_0/output_0.pb +1 -1
  217. onnx/backend/test/data/node/test_asinh_example/model.onnx +0 -0
  218. onnx/backend/test/data/node/test_atan/model.onnx +0 -0
  219. onnx/backend/test/data/node/test_atan/test_data_set_0/output_0.pb +1 -1
  220. onnx/backend/test/data/node/test_atan_example/model.onnx +0 -0
  221. onnx/backend/test/data/node/test_atanh/model.onnx +0 -0
  222. onnx/backend/test/data/node/test_atanh/test_data_set_0/output_0.pb +2 -2
  223. onnx/backend/test/data/node/test_atanh_example/model.onnx +0 -0
  224. onnx/backend/test/data/node/test_averagepool_1d_default/model.onnx +0 -0
  225. onnx/backend/test/data/node/test_averagepool_2d_ceil/model.onnx +0 -0
  226. onnx/backend/test/data/node/test_averagepool_2d_default/model.onnx +0 -0
  227. onnx/backend/test/data/node/test_averagepool_2d_dilations/model.onnx +0 -0
  228. onnx/backend/test/data/node/test_averagepool_2d_pads/model.onnx +0 -0
  229. onnx/backend/test/data/node/test_averagepool_2d_pads_count_include_pad/model.onnx +0 -0
  230. onnx/backend/test/data/node/test_averagepool_2d_precomputed_pads/model.onnx +0 -0
  231. onnx/backend/test/data/node/test_averagepool_2d_precomputed_pads_count_include_pad/model.onnx +0 -0
  232. onnx/backend/test/data/node/test_averagepool_2d_precomputed_same_upper/model.onnx +0 -0
  233. onnx/backend/test/data/node/test_averagepool_2d_precomputed_strides/model.onnx +0 -0
  234. onnx/backend/test/data/node/test_averagepool_2d_same_lower/model.onnx +0 -0
  235. onnx/backend/test/data/node/test_averagepool_2d_same_upper/model.onnx +0 -0
  236. onnx/backend/test/data/node/test_averagepool_2d_strides/model.onnx +0 -0
  237. onnx/backend/test/data/node/test_averagepool_3d_default/model.onnx +0 -0
  238. onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_False/model.onnx +0 -0
  239. onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_0_ceil_mode_is_True/model.onnx +0 -0
  240. onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_False/model.onnx +0 -0
  241. onnx/backend/test/data/node/test_averagepool_3d_dilations_large_count_include_pad_is_1_ceil_mode_is_True/model.onnx +0 -0
  242. onnx/backend/test/data/node/test_averagepool_3d_dilations_small/model.onnx +0 -0
  243. onnx/backend/test/data/node/test_basic_conv_with_padding/model.onnx +0 -0
  244. onnx/backend/test/data/node/test_basic_conv_without_padding/model.onnx +0 -0
  245. onnx/backend/test/data/node/test_basic_deform_conv_with_padding/model.onnx +0 -0
  246. onnx/backend/test/data/node/test_basic_deform_conv_without_padding/model.onnx +0 -0
  247. onnx/backend/test/data/node/test_bernoulli/model.onnx +0 -0
  248. onnx/backend/test/data/node/test_bernoulli_double/model.onnx +0 -0
  249. onnx/backend/test/data/node/test_bernoulli_double_expanded/model.onnx +0 -0
  250. onnx/backend/test/data/node/test_bernoulli_expanded/model.onnx +0 -0
  251. onnx/backend/test/data/node/test_bernoulli_seed/model.onnx +0 -0
  252. onnx/backend/test/data/node/test_bernoulli_seed_expanded/model.onnx +0 -0
  253. onnx/backend/test/data/node/test_blackmanwindow/test_data_set_0/output_0.pb +0 -0
  254. onnx/backend/test/data/node/test_blackmanwindow_expanded/test_data_set_0/output_0.pb +0 -0
  255. onnx/backend/test/data/node/test_blackmanwindow_symmetric/test_data_set_0/output_0.pb +0 -0
  256. onnx/backend/test/data/node/test_blackmanwindow_symmetric_expanded/test_data_set_0/output_0.pb +0 -0
  257. onnx/backend/test/data/node/test_cast_FLOAT16_to_INT4/test_data_set_0/output_0.pb +1 -1
  258. onnx/backend/test/data/node/test_cast_FLOAT_to_INT4/test_data_set_0/output_0.pb +1 -1
  259. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT/test_data_set_0/input_0.pb +1 -1
  260. onnx/backend/test/data/node/test_cast_INT4_to_FLOAT16/test_data_set_0/input_0.pb +1 -1
  261. onnx/backend/test/data/node/test_cast_INT4_to_INT8/test_data_set_0/input_0.pb +1 -1
  262. onnx/backend/test/data/node/test_conv_with_autopad_same/model.onnx +0 -0
  263. onnx/backend/test/data/node/test_conv_with_strides_and_asymmetric_padding/model.onnx +0 -0
  264. onnx/backend/test/data/node/test_conv_with_strides_no_padding/model.onnx +0 -0
  265. onnx/backend/test/data/node/test_conv_with_strides_padding/model.onnx +0 -0
  266. onnx/backend/test/data/node/test_convtranspose/model.onnx +0 -0
  267. onnx/backend/test/data/node/test_convtranspose_1d/model.onnx +0 -0
  268. onnx/backend/test/data/node/test_convtranspose_3d/model.onnx +0 -0
  269. onnx/backend/test/data/node/test_convtranspose_autopad_same/model.onnx +0 -0
  270. onnx/backend/test/data/node/test_convtranspose_dilations/model.onnx +0 -0
  271. onnx/backend/test/data/node/test_convtranspose_group_2/model.onnx +0 -0
  272. onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/input_0.pb +0 -0
  273. onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/input_1.pb +0 -0
  274. onnx/backend/test/data/node/test_convtranspose_group_2/test_data_set_0/output_0.pb +0 -0
  275. onnx/backend/test/data/node/test_convtranspose_group_2_image_3/model.onnx +0 -0
  276. onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/input_0.pb +0 -0
  277. onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/input_1.pb +0 -0
  278. onnx/backend/test/data/node/test_convtranspose_group_2_image_3/test_data_set_0/output_0.pb +0 -0
  279. onnx/backend/test/data/node/test_convtranspose_kernel_shape/model.onnx +0 -0
  280. onnx/backend/test/data/node/test_convtranspose_output_shape/model.onnx +0 -0
  281. onnx/backend/test/data/node/test_convtranspose_pad/model.onnx +0 -0
  282. onnx/backend/test/data/node/test_convtranspose_pads/model.onnx +0 -0
  283. onnx/backend/test/data/node/test_cos/model.onnx +0 -0
  284. onnx/backend/test/data/node/test_cos_example/model.onnx +0 -0
  285. onnx/backend/test/data/node/test_cosh/model.onnx +0 -0
  286. onnx/backend/test/data/node/test_cosh/test_data_set_0/output_0.pb +1 -1
  287. onnx/backend/test/data/node/test_cosh_example/model.onnx +0 -0
  288. onnx/backend/test/data/node/test_cosh_example/test_data_set_0/output_0.pb +0 -0
  289. onnx/backend/test/data/node/test_deform_conv_with_mask_bias/model.onnx +0 -0
  290. onnx/backend/test/data/node/test_deform_conv_with_multiple_offset_groups/model.onnx +0 -0
  291. onnx/backend/test/data/node/test_dequantizelinear_int4/test_data_set_0/input_0.pb +1 -1
  292. onnx/backend/test/data/node/test_det_2d/model.onnx +0 -0
  293. onnx/backend/test/data/node/test_det_nd/model.onnx +0 -0
  294. onnx/backend/test/data/node/test_dft/test_data_set_0/output_0.pb +0 -0
  295. onnx/backend/test/data/node/test_dft_axis/test_data_set_0/output_0.pb +0 -0
  296. onnx/backend/test/data/node/test_dft_axis_opset19/test_data_set_0/output_0.pb +0 -0
  297. onnx/backend/test/data/node/test_dft_inverse/test_data_set_0/output_0.pb +0 -0
  298. onnx/backend/test/data/node/test_dft_inverse_opset19/test_data_set_0/output_0.pb +0 -0
  299. onnx/backend/test/data/node/test_dft_opset19/test_data_set_0/output_0.pb +0 -0
  300. onnx/backend/test/data/node/test_dropout_default/model.onnx +0 -0
  301. onnx/backend/test/data/node/test_dropout_default_mask/model.onnx +0 -0
  302. onnx/backend/test/data/node/test_dropout_default_mask_ratio/model.onnx +0 -0
  303. onnx/backend/test/data/node/test_dropout_default_ratio/model.onnx +0 -0
  304. onnx/backend/test/data/node/test_elu/model.onnx +0 -0
  305. onnx/backend/test/data/node/test_elu_default/model.onnx +0 -0
  306. onnx/backend/test/data/node/test_elu_example/model.onnx +0 -0
  307. onnx/backend/test/data/node/test_eyelike_populate_off_main_diagonal/model.onnx +0 -0
  308. onnx/backend/test/data/node/test_eyelike_with_dtype/model.onnx +0 -0
  309. onnx/backend/test/data/node/test_eyelike_without_dtype/model.onnx +0 -0
  310. onnx/backend/test/data/node/test_gelu_default_1/test_data_set_0/output_0.pb +0 -0
  311. onnx/backend/test/data/node/test_gelu_default_1_expanded/test_data_set_0/output_0.pb +0 -0
  312. onnx/backend/test/data/node/test_gelu_default_2/test_data_set_0/output_0.pb +4 -3
  313. onnx/backend/test/data/node/test_gelu_default_2_expanded/test_data_set_0/output_0.pb +4 -3
  314. onnx/backend/test/data/node/test_gelu_tanh_2/test_data_set_0/output_0.pb +0 -0
  315. onnx/backend/test/data/node/test_gelu_tanh_2_expanded/test_data_set_0/output_0.pb +0 -0
  316. onnx/backend/test/data/node/test_globalaveragepool/model.onnx +0 -0
  317. onnx/backend/test/data/node/test_globalaveragepool_precomputed/model.onnx +0 -0
  318. onnx/backend/test/data/node/test_globalmaxpool/model.onnx +0 -0
  319. onnx/backend/test/data/node/test_globalmaxpool_precomputed/model.onnx +0 -0
  320. onnx/backend/test/data/node/test_gridsample/model.onnx +0 -0
  321. onnx/backend/test/data/node/test_gridsample_aligncorners_true/model.onnx +0 -0
  322. onnx/backend/test/data/node/test_gridsample_bicubic/model.onnx +0 -0
  323. onnx/backend/test/data/node/test_gridsample_bicubic_align_corners_0_additional_1/model.onnx +0 -0
  324. onnx/backend/test/data/node/test_gridsample_bicubic_align_corners_1_additional_1/model.onnx +0 -0
  325. onnx/backend/test/data/node/test_gridsample_bilinear/model.onnx +0 -0
  326. onnx/backend/test/data/node/test_gridsample_bilinear_align_corners_0_additional_1/model.onnx +0 -0
  327. onnx/backend/test/data/node/test_gridsample_bilinear_align_corners_1_additional_1/model.onnx +0 -0
  328. onnx/backend/test/data/node/test_gridsample_border_padding/model.onnx +0 -0
  329. onnx/backend/test/data/node/test_gridsample_nearest/model.onnx +0 -0
  330. onnx/backend/test/data/node/test_gridsample_nearest_align_corners_0_additional_1/model.onnx +0 -0
  331. onnx/backend/test/data/node/test_gridsample_nearest_align_corners_1_additional_1/model.onnx +0 -0
  332. onnx/backend/test/data/node/test_gridsample_reflection_padding/model.onnx +0 -0
  333. onnx/backend/test/data/node/test_gridsample_volumetric_bilinear_align_corners_0/model.onnx +0 -0
  334. onnx/backend/test/data/node/test_gridsample_volumetric_bilinear_align_corners_1/model.onnx +0 -0
  335. onnx/backend/test/data/node/test_gridsample_volumetric_nearest_align_corners_0/model.onnx +0 -0
  336. onnx/backend/test/data/node/test_gridsample_volumetric_nearest_align_corners_1/model.onnx +0 -0
  337. onnx/backend/test/data/node/test_gridsample_zeros_padding/model.onnx +0 -0
  338. onnx/backend/test/data/node/test_gru_batchwise/model.onnx +0 -0
  339. onnx/backend/test/data/node/test_gru_defaults/model.onnx +0 -0
  340. onnx/backend/test/data/node/test_gru_seq_length/model.onnx +0 -0
  341. onnx/backend/test/data/node/test_gru_with_initial_bias/model.onnx +0 -0
  342. onnx/backend/test/data/node/test_hammingwindow/test_data_set_0/output_0.pb +0 -0
  343. onnx/backend/test/data/node/test_hammingwindow_expanded/test_data_set_0/output_0.pb +0 -0
  344. onnx/backend/test/data/node/test_hammingwindow_symmetric/test_data_set_0/output_0.pb +1 -1
  345. onnx/backend/test/data/node/test_hammingwindow_symmetric_expanded/test_data_set_0/output_0.pb +1 -1
  346. onnx/backend/test/data/node/test_hannwindow/test_data_set_0/output_0.pb +0 -0
  347. onnx/backend/test/data/node/test_hannwindow_expanded/test_data_set_0/output_0.pb +0 -0
  348. onnx/backend/test/data/node/test_hannwindow_symmetric/test_data_set_0/output_0.pb +0 -0
  349. onnx/backend/test/data/node/test_hannwindow_symmetric_expanded/test_data_set_0/output_0.pb +0 -0
  350. onnx/backend/test/data/node/test_hardsigmoid/model.onnx +0 -0
  351. onnx/backend/test/data/node/test_hardsigmoid_default/model.onnx +0 -0
  352. onnx/backend/test/data/node/test_hardsigmoid_example/model.onnx +0 -0
  353. onnx/backend/test/data/node/test_hardswish/model.onnx +0 -0
  354. onnx/backend/test/data/node/test_hardswish_expanded/model.onnx +0 -0
  355. onnx/backend/test/data/node/test_image_decoder_decode_jpeg2k_rgb/test_data_set_0/input_0.pb +0 -0
  356. onnx/backend/test/data/node/test_instancenorm_epsilon/model.onnx +0 -0
  357. onnx/backend/test/data/node/test_instancenorm_example/model.onnx +0 -0
  358. onnx/backend/test/data/node/test_lppool_1d_default/model.onnx +0 -0
  359. onnx/backend/test/data/node/test_lppool_1d_default/test_data_set_0/output_0.pb +2 -2
  360. onnx/backend/test/data/node/test_lppool_2d_default/model.onnx +0 -0
  361. onnx/backend/test/data/node/test_lppool_2d_default/test_data_set_0/output_0.pb +0 -0
  362. onnx/backend/test/data/node/test_lppool_2d_dilations/model.onnx +0 -0
  363. onnx/backend/test/data/node/test_lppool_2d_pads/model.onnx +0 -0
  364. onnx/backend/test/data/node/test_lppool_2d_pads/test_data_set_0/output_0.pb +0 -0
  365. onnx/backend/test/data/node/test_lppool_2d_same_lower/model.onnx +0 -0
  366. onnx/backend/test/data/node/test_lppool_2d_same_lower/test_data_set_0/output_0.pb +0 -0
  367. onnx/backend/test/data/node/test_lppool_2d_same_upper/model.onnx +0 -0
  368. onnx/backend/test/data/node/test_lppool_2d_same_upper/test_data_set_0/output_0.pb +0 -0
  369. onnx/backend/test/data/node/test_lppool_2d_strides/model.onnx +0 -0
  370. onnx/backend/test/data/node/test_lppool_2d_strides/test_data_set_0/output_0.pb +0 -0
  371. onnx/backend/test/data/node/test_lppool_3d_default/model.onnx +0 -0
  372. onnx/backend/test/data/node/test_lppool_3d_default/test_data_set_0/output_0.pb +0 -0
  373. onnx/backend/test/data/node/test_lstm_batchwise/model.onnx +0 -0
  374. onnx/backend/test/data/node/test_lstm_defaults/model.onnx +0 -0
  375. onnx/backend/test/data/node/test_lstm_with_initial_bias/model.onnx +0 -0
  376. onnx/backend/test/data/node/test_lstm_with_peepholes/model.onnx +0 -0
  377. onnx/backend/test/data/node/test_maxpool_1d_default/model.onnx +0 -0
  378. onnx/backend/test/data/node/test_maxpool_2d_ceil/model.onnx +0 -0
  379. onnx/backend/test/data/node/test_maxpool_2d_ceil_output_size_reduce_by_one/model.onnx +0 -0
  380. onnx/backend/test/data/node/test_maxpool_2d_default/model.onnx +0 -0
  381. onnx/backend/test/data/node/test_maxpool_2d_dilations/model.onnx +0 -0
  382. onnx/backend/test/data/node/test_maxpool_2d_pads/model.onnx +0 -0
  383. onnx/backend/test/data/node/test_maxpool_2d_precomputed_pads/model.onnx +0 -0
  384. onnx/backend/test/data/node/test_maxpool_2d_precomputed_same_upper/model.onnx +0 -0
  385. onnx/backend/test/data/node/test_maxpool_2d_precomputed_strides/model.onnx +0 -0
  386. onnx/backend/test/data/node/test_maxpool_2d_same_lower/model.onnx +0 -0
  387. onnx/backend/test/data/node/test_maxpool_2d_same_upper/model.onnx +0 -0
  388. onnx/backend/test/data/node/test_maxpool_2d_strides/model.onnx +0 -0
  389. onnx/backend/test/data/node/test_maxpool_2d_uint8/model.onnx +0 -0
  390. onnx/backend/test/data/node/test_maxpool_3d_default/model.onnx +0 -0
  391. onnx/backend/test/data/node/test_maxpool_3d_dilations/model.onnx +0 -0
  392. onnx/backend/test/data/node/test_maxpool_3d_dilations_use_ref_impl/model.onnx +0 -0
  393. onnx/backend/test/data/node/test_maxpool_3d_dilations_use_ref_impl_large/model.onnx +0 -0
  394. onnx/backend/test/data/node/test_maxpool_with_argmax_2d_precomputed_pads/model.onnx +0 -0
  395. onnx/backend/test/data/node/test_maxpool_with_argmax_2d_precomputed_strides/model.onnx +0 -0
  396. onnx/backend/test/data/node/test_maxunpool_export_with_output_shape/model.onnx +0 -0
  397. onnx/backend/test/data/node/test_maxunpool_export_without_output_shape/model.onnx +0 -0
  398. onnx/backend/test/data/node/test_mish/model.onnx +0 -0
  399. onnx/backend/test/data/node/test_mish/test_data_set_0/output_0.pb +0 -0
  400. onnx/backend/test/data/node/test_mish_expanded/model.onnx +0 -0
  401. onnx/backend/test/data/node/test_mish_expanded/test_data_set_0/output_0.pb +0 -0
  402. onnx/backend/test/data/node/test_nllloss_NC/model.onnx +0 -0
  403. onnx/backend/test/data/node/test_nllloss_NC_expanded/model.onnx +0 -0
  404. onnx/backend/test/data/node/test_nllloss_NCd1/model.onnx +0 -0
  405. onnx/backend/test/data/node/test_nllloss_NCd1_expanded/model.onnx +0 -0
  406. onnx/backend/test/data/node/test_nllloss_NCd1_ii/model.onnx +0 -0
  407. onnx/backend/test/data/node/test_nllloss_NCd1_ii_expanded/model.onnx +0 -0
  408. onnx/backend/test/data/node/test_nllloss_NCd1_mean_weight_negative_ii/model.onnx +0 -0
  409. onnx/backend/test/data/node/test_nllloss_NCd1_mean_weight_negative_ii_expanded/model.onnx +0 -0
  410. onnx/backend/test/data/node/test_nllloss_NCd1_weight/model.onnx +0 -0
  411. onnx/backend/test/data/node/test_nllloss_NCd1_weight_expanded/model.onnx +0 -0
  412. onnx/backend/test/data/node/test_nllloss_NCd1_weight_ii/model.onnx +0 -0
  413. onnx/backend/test/data/node/test_nllloss_NCd1_weight_ii_expanded/model.onnx +0 -0
  414. onnx/backend/test/data/node/test_nllloss_NCd1d2/model.onnx +0 -0
  415. onnx/backend/test/data/node/test_nllloss_NCd1d2_expanded/model.onnx +0 -0
  416. onnx/backend/test/data/node/test_nllloss_NCd1d2_no_weight_reduction_mean_ii/model.onnx +0 -0
  417. onnx/backend/test/data/node/test_nllloss_NCd1d2_no_weight_reduction_mean_ii_expanded/model.onnx +0 -0
  418. onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_mean/model.onnx +0 -0
  419. onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_mean_expanded/model.onnx +0 -0
  420. onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_sum/model.onnx +0 -0
  421. onnx/backend/test/data/node/test_nllloss_NCd1d2_reduction_sum_expanded/model.onnx +0 -0
  422. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight/model.onnx +0 -0
  423. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_expanded/model.onnx +0 -0
  424. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_mean/model.onnx +0 -0
  425. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_mean_expanded/model.onnx +0 -0
  426. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum/model.onnx +0 -0
  427. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_expanded/model.onnx +0 -0
  428. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_ii/model.onnx +0 -0
  429. onnx/backend/test/data/node/test_nllloss_NCd1d2_with_weight_reduction_sum_ii_expanded/model.onnx +0 -0
  430. onnx/backend/test/data/node/test_nllloss_NCd1d2d3_none_no_weight_negative_ii/model.onnx +0 -0
  431. onnx/backend/test/data/node/test_nllloss_NCd1d2d3_none_no_weight_negative_ii_expanded/model.onnx +0 -0
  432. onnx/backend/test/data/node/test_nllloss_NCd1d2d3_sum_weight_high_ii/model.onnx +0 -0
  433. onnx/backend/test/data/node/test_nllloss_NCd1d2d3_sum_weight_high_ii_expanded/model.onnx +0 -0
  434. onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_mean_weight/model.onnx +0 -0
  435. onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_mean_weight_expanded/model.onnx +0 -0
  436. onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_none_no_weight/model.onnx +0 -0
  437. onnx/backend/test/data/node/test_nllloss_NCd1d2d3d4d5_none_no_weight_expanded/model.onnx +0 -0
  438. onnx/backend/test/data/node/test_quantizelinear_int4/test_data_set_0/output_0.pb +1 -1
  439. onnx/backend/test/data/node/test_reduce_log_sum_exp_do_not_keepdims_random/test_data_set_0/output_0.pb +1 -1
  440. onnx/backend/test/data/node/test_reduce_log_sum_exp_do_not_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
  441. onnx/backend/test/data/node/test_reduce_log_sum_exp_keepdims_random/test_data_set_0/output_0.pb +1 -1
  442. onnx/backend/test/data/node/test_reduce_log_sum_exp_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
  443. onnx/backend/test/data/node/test_reduce_log_sum_exp_negative_axes_keepdims_random/test_data_set_0/output_0.pb +1 -1
  444. onnx/backend/test/data/node/test_reduce_log_sum_exp_negative_axes_keepdims_random_expanded/test_data_set_0/output_0.pb +1 -1
  445. onnx/backend/test/data/node/test_reduce_max_empty_set/model.onnx +0 -0
  446. onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/input_0.pb +0 -0
  447. onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/input_1.pb +0 -0
  448. onnx/backend/test/data/node/test_reduce_max_empty_set/test_data_set_0/output_0.pb +0 -0
  449. onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/model.onnx +0 -0
  450. onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/input_0.pb +1 -0
  451. onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/input_1.pb +0 -0
  452. onnx/backend/test/data/node/test_reduce_sum_empty_axes_input_noop/test_data_set_0/output_0.pb +1 -0
  453. onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/model.onnx +0 -0
  454. onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/test_data_set_0/input_1.pb +0 -0
  455. onnx/backend/test/data/node/test_reduce_sum_negative_axes_keepdims_random/test_data_set_0/output_0.pb +1 -1
  456. onnx/backend/test/data/node/test_resize_tf_crop_and_resize/model.onnx +0 -0
  457. onnx/backend/test/data/node/test_resize_tf_crop_and_resize/test_data_set_0/input_1.pb +0 -0
  458. onnx/backend/test/data/node/test_resize_tf_crop_and_resize/test_data_set_0/output_0.pb +0 -0
  459. onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/model.onnx +0 -0
  460. onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_0.pb +0 -0
  461. onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_1.pb +0 -0
  462. onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/input_2.pb +0 -0
  463. onnx/backend/test/data/node/test_resize_tf_crop_and_resize_extrapolation_value/test_data_set_0/output_0.pb +0 -0
  464. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_larger/model.onnx +0 -0
  465. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_larger/test_data_set_0/output_0.pb +0 -0
  466. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/model.onnx +0 -0
  467. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/input_0.pb +0 -0
  468. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/input_1.pb +0 -0
  469. onnx/backend/test/data/node/test_resize_upsample_sizes_nearest_not_smaller/test_data_set_0/output_0.pb +0 -0
  470. onnx/backend/test/data/node/test_rnn_seq_length/model.onnx +0 -0
  471. onnx/backend/test/data/node/test_roialign_aligned_false/model.onnx +0 -0
  472. onnx/backend/test/data/node/test_roialign_aligned_true/model.onnx +0 -0
  473. onnx/backend/test/data/node/test_roialign_mode_max/model.onnx +0 -0
  474. onnx/backend/test/data/node/test_round/model.onnx +0 -0
  475. onnx/backend/test/data/node/test_selu/model.onnx +0 -0
  476. onnx/backend/test/data/node/test_selu_default/model.onnx +0 -0
  477. onnx/backend/test/data/node/test_selu_example/model.onnx +0 -0
  478. onnx/backend/test/data/node/test_simple_rnn_batchwise/model.onnx +0 -0
  479. onnx/backend/test/data/node/test_simple_rnn_defaults/model.onnx +0 -0
  480. onnx/backend/test/data/node/test_simple_rnn_with_initial_bias/model.onnx +0 -0
  481. onnx/backend/test/data/node/test_sin/model.onnx +0 -0
  482. onnx/backend/test/data/node/test_sin_example/model.onnx +0 -0
  483. onnx/backend/test/data/node/test_sinh/model.onnx +0 -0
  484. onnx/backend/test/data/node/test_sinh/test_data_set_0/output_0.pb +1 -1
  485. onnx/backend/test/data/node/test_sinh_example/model.onnx +0 -0
  486. onnx/backend/test/data/node/test_softplus/model.onnx +0 -0
  487. onnx/backend/test/data/node/test_softplus_example/model.onnx +0 -0
  488. onnx/backend/test/data/node/test_softsign/model.onnx +0 -0
  489. onnx/backend/test/data/node/test_softsign_example/model.onnx +0 -0
  490. onnx/backend/test/data/node/test_stft_with_window/test_data_set_0/input_2.pb +0 -0
  491. onnx/backend/test/data/node/test_stft_with_window/test_data_set_0/output_0.pb +0 -0
  492. onnx/backend/test/data/node/test_tan/model.onnx +0 -0
  493. onnx/backend/test/data/node/test_tan/test_data_set_0/output_0.pb +1 -1
  494. onnx/backend/test/data/node/test_tan_example/model.onnx +0 -0
  495. onnx/backend/test/data/node/test_thresholdedrelu/model.onnx +0 -0
  496. onnx/backend/test/data/node/test_thresholdedrelu_default/model.onnx +0 -0
  497. onnx/backend/test/data/node/test_thresholdedrelu_example/model.onnx +0 -0
  498. onnx/backend/test/data/node/test_training_dropout/model.onnx +0 -0
  499. onnx/backend/test/data/node/test_training_dropout_default/model.onnx +0 -0
  500. onnx/backend/test/data/node/test_training_dropout_default_mask/model.onnx +0 -0
  501. onnx/backend/test/data/node/test_training_dropout_mask/model.onnx +0 -0
  502. onnx/backend/test/data/node/test_training_dropout_zero_ratio/model.onnx +0 -0
  503. onnx/backend/test/data/node/test_training_dropout_zero_ratio_mask/model.onnx +0 -0
  504. onnx/backend/test/loader/__init__.py +11 -6
  505. onnx/backend/test/report/__init__.py +4 -3
  506. onnx/backend/test/report/base.py +1 -0
  507. onnx/backend/test/report/coverage.py +21 -20
  508. onnx/backend/test/runner/__init__.py +12 -8
  509. onnx/backend/test/runner/item.py +3 -2
  510. onnx/backend/test/stat_coverage.py +6 -5
  511. onnx/bin/checker.py +1 -0
  512. onnx/checker.cc +6 -1
  513. onnx/common/version.h +1 -1
  514. onnx/compose.py +66 -50
  515. onnx/cpp2py_export.cc +4 -0
  516. onnx/defs/__init__.py +2 -2
  517. onnx/defs/data_type_utils.cc +0 -1
  518. onnx/defs/gen_doc.py +9 -8
  519. onnx/defs/gen_shape_inference_information.py +1 -0
  520. onnx/defs/generator/defs.cc +32 -84
  521. onnx/defs/generator/old.cc +389 -0
  522. onnx/defs/math/defs.cc +308 -313
  523. onnx/defs/math/old.cc +989 -7
  524. onnx/defs/math/utils.cc +12 -1
  525. onnx/defs/math/utils.h +2 -0
  526. onnx/defs/nn/defs.cc +57 -75
  527. onnx/defs/nn/old.cc +1536 -2
  528. onnx/defs/object_detection/defs.cc +4 -7
  529. onnx/defs/object_detection/old.cc +117 -0
  530. onnx/defs/operator_sets.h +108 -1
  531. onnx/defs/parser.cc +10 -1
  532. onnx/defs/quantization/defs.cc +3 -2
  533. onnx/defs/quantization/old.cc +4 -1
  534. onnx/defs/rnn/defs.cc +10 -13
  535. onnx/defs/rnn/old.cc +517 -2
  536. onnx/defs/schema.cc +53 -59
  537. onnx/defs/schema.h +58 -2
  538. onnx/defs/shape_inference.h +67 -18
  539. onnx/defs/tensor/defs.cc +22 -20
  540. onnx/defs/tensor/old.cc +111 -0
  541. onnx/external_data_helper.py +27 -14
  542. onnx/gen_proto.py +3 -2
  543. onnx/helper.py +86 -61
  544. onnx/hub.py +30 -28
  545. onnx/inliner/inliner.cc +0 -1
  546. onnx/mapping.py +3 -2
  547. onnx/numpy_helper.py +159 -23
  548. onnx/onnx-ml.proto +1 -1
  549. onnx/onnx.in.proto +1 -1
  550. onnx/onnx.proto +1 -1
  551. onnx/onnx_cpp2py_export/defs.pyi +0 -2
  552. onnx/onnx_cpp2py_export/inliner.pyi +0 -4
  553. onnx/onnx_cpp2py_export/parser.pyi +0 -4
  554. onnx/onnx_cpp2py_export.cp39-win32.pyd +0 -0
  555. onnx/parser.py +1 -0
  556. onnx/printer.py +2 -3
  557. onnx/reference/__init__.py +1 -0
  558. onnx/reference/custom_element_types.py +73 -8
  559. onnx/reference/op_run.py +13 -58
  560. onnx/reference/ops/__init__.py +1 -0
  561. onnx/reference/ops/_helpers.py +6 -4
  562. onnx/reference/ops/_op.py +16 -5
  563. onnx/reference/ops/_op_common_indices.py +1 -1
  564. onnx/reference/ops/_op_common_pool.py +38 -29
  565. onnx/reference/ops/_op_common_random.py +1 -1
  566. onnx/reference/ops/_op_common_window.py +2 -2
  567. onnx/reference/ops/_op_list.py +9 -6
  568. onnx/reference/ops/aionnx_preview_training/__init__.py +1 -0
  569. onnx/reference/ops/aionnx_preview_training/_op_list.py +5 -7
  570. onnx/reference/ops/aionnx_preview_training/_op_run_training.py +1 -1
  571. onnx/reference/ops/aionnx_preview_training/op_adagrad.py +14 -5
  572. onnx/reference/ops/aionnx_preview_training/op_adam.py +2 -2
  573. onnx/reference/ops/aionnx_preview_training/op_momentum.py +14 -2
  574. onnx/reference/ops/aionnxml/__init__.py +1 -0
  575. onnx/reference/ops/aionnxml/_common_classifier.py +1 -0
  576. onnx/reference/ops/aionnxml/_op_list.py +5 -6
  577. onnx/reference/ops/aionnxml/_op_run_aionnxml.py +1 -1
  578. onnx/reference/ops/aionnxml/op_array_feature_extractor.py +1 -1
  579. onnx/reference/ops/aionnxml/op_binarizer.py +1 -1
  580. onnx/reference/ops/aionnxml/op_dict_vectorizer.py +2 -2
  581. onnx/reference/ops/aionnxml/op_feature_vectorizer.py +1 -1
  582. onnx/reference/ops/aionnxml/op_imputer.py +3 -3
  583. onnx/reference/ops/aionnxml/op_label_encoder.py +1 -1
  584. onnx/reference/ops/aionnxml/op_linear_classifier.py +2 -2
  585. onnx/reference/ops/aionnxml/op_linear_regressor.py +1 -1
  586. onnx/reference/ops/aionnxml/op_normalizer.py +1 -1
  587. onnx/reference/ops/aionnxml/op_one_hot_encoder.py +1 -1
  588. onnx/reference/ops/aionnxml/op_scaler.py +1 -1
  589. onnx/reference/ops/aionnxml/op_svm_classifier.py +10 -7
  590. onnx/reference/ops/aionnxml/op_svm_helper.py +2 -2
  591. onnx/reference/ops/aionnxml/op_svm_regressor.py +1 -1
  592. onnx/reference/ops/aionnxml/op_tree_ensemble.py +3 -3
  593. onnx/reference/ops/aionnxml/op_tree_ensemble_classifier.py +1 -1
  594. onnx/reference/ops/aionnxml/op_tree_ensemble_helper.py +2 -2
  595. onnx/reference/ops/aionnxml/op_tree_ensemble_regressor.py +5 -3
  596. onnx/reference/ops/experimental/__init__.py +1 -0
  597. onnx/reference/ops/experimental/_op_list.py +6 -12
  598. onnx/reference/ops/experimental/_op_run_experimental.py +1 -1
  599. onnx/reference/ops/experimental/op_im2col.py +1 -1
  600. onnx/reference/ops/op_abs.py +1 -1
  601. onnx/reference/ops/op_acos.py +1 -1
  602. onnx/reference/ops/op_acosh.py +1 -1
  603. onnx/reference/ops/op_add.py +1 -1
  604. onnx/reference/ops/op_affine_grid.py +1 -1
  605. onnx/reference/ops/op_and.py +1 -1
  606. onnx/reference/ops/op_argmax.py +1 -1
  607. onnx/reference/ops/op_argmin.py +1 -1
  608. onnx/reference/ops/op_asin.py +1 -1
  609. onnx/reference/ops/op_asinh.py +1 -1
  610. onnx/reference/ops/op_atan.py +1 -1
  611. onnx/reference/ops/op_atanh.py +1 -1
  612. onnx/reference/ops/op_attribute_has_value.py +15 -15
  613. onnx/reference/ops/op_average_pool.py +1 -1
  614. onnx/reference/ops/op_batch_normalization.py +13 -2
  615. onnx/reference/ops/op_bernoulli.py +1 -1
  616. onnx/reference/ops/op_bitshift.py +1 -1
  617. onnx/reference/ops/op_bitwise_and.py +1 -1
  618. onnx/reference/ops/op_bitwise_not.py +1 -1
  619. onnx/reference/ops/op_bitwise_or.py +1 -1
  620. onnx/reference/ops/op_bitwise_xor.py +1 -1
  621. onnx/reference/ops/op_blackman_window.py +1 -1
  622. onnx/reference/ops/op_cast.py +11 -10
  623. onnx/reference/ops/op_cast_like.py +1 -1
  624. onnx/reference/ops/op_ceil.py +1 -1
  625. onnx/reference/ops/op_celu.py +1 -1
  626. onnx/reference/ops/op_center_crop_pad.py +1 -1
  627. onnx/reference/ops/op_clip.py +1 -1
  628. onnx/reference/ops/op_col2im.py +10 -4
  629. onnx/reference/ops/op_compress.py +1 -1
  630. onnx/reference/ops/op_concat.py +1 -1
  631. onnx/reference/ops/op_concat_from_sequence.py +3 -3
  632. onnx/reference/ops/op_constant.py +2 -2
  633. onnx/reference/ops/op_constant_of_shape.py +1 -1
  634. onnx/reference/ops/op_conv.py +22 -17
  635. onnx/reference/ops/op_conv_integer.py +1 -1
  636. onnx/reference/ops/op_conv_transpose.py +37 -6
  637. onnx/reference/ops/op_cos.py +1 -1
  638. onnx/reference/ops/op_cosh.py +1 -1
  639. onnx/reference/ops/op_cum_sum.py +1 -1
  640. onnx/reference/ops/op_deform_conv.py +1 -1
  641. onnx/reference/ops/op_depth_to_space.py +1 -1
  642. onnx/reference/ops/op_dequantize_linear.py +7 -9
  643. onnx/reference/ops/op_det.py +1 -1
  644. onnx/reference/ops/op_dft.py +16 -2
  645. onnx/reference/ops/op_div.py +1 -1
  646. onnx/reference/ops/op_dropout.py +9 -8
  647. onnx/reference/ops/op_dynamic_quantize_linear.py +1 -1
  648. onnx/reference/ops/op_einsum.py +1 -1
  649. onnx/reference/ops/op_elu.py +1 -1
  650. onnx/reference/ops/op_equal.py +1 -1
  651. onnx/reference/ops/op_erf.py +1 -1
  652. onnx/reference/ops/op_exp.py +1 -1
  653. onnx/reference/ops/op_expand.py +1 -1
  654. onnx/reference/ops/op_eyelike.py +2 -2
  655. onnx/reference/ops/op_flatten.py +1 -1
  656. onnx/reference/ops/op_floor.py +1 -1
  657. onnx/reference/ops/op_gather.py +1 -1
  658. onnx/reference/ops/op_gather_elements.py +3 -3
  659. onnx/reference/ops/op_gathernd.py +2 -4
  660. onnx/reference/ops/op_gemm.py +12 -2
  661. onnx/reference/ops/op_global_average_pool.py +1 -1
  662. onnx/reference/ops/op_global_max_pool.py +1 -1
  663. onnx/reference/ops/op_greater.py +1 -1
  664. onnx/reference/ops/op_greater_or_equal.py +1 -1
  665. onnx/reference/ops/op_grid_sample.py +2 -3
  666. onnx/reference/ops/op_gru.py +7 -7
  667. onnx/reference/ops/op_hamming_window.py +1 -1
  668. onnx/reference/ops/op_hann_window.py +1 -1
  669. onnx/reference/ops/op_hard_sigmoid.py +1 -1
  670. onnx/reference/ops/op_hardmax.py +5 -2
  671. onnx/reference/ops/op_identity.py +3 -3
  672. onnx/reference/ops/op_if.py +2 -2
  673. onnx/reference/ops/op_instance_normalization.py +1 -1
  674. onnx/reference/ops/op_isinf.py +1 -1
  675. onnx/reference/ops/op_isnan.py +1 -1
  676. onnx/reference/ops/op_layer_normalization.py +2 -4
  677. onnx/reference/ops/op_leaky_relu.py +1 -1
  678. onnx/reference/ops/op_less.py +1 -1
  679. onnx/reference/ops/op_less_or_equal.py +1 -1
  680. onnx/reference/ops/op_log.py +1 -1
  681. onnx/reference/ops/op_log_softmax.py +1 -1
  682. onnx/reference/ops/op_loop.py +4 -2
  683. onnx/reference/ops/op_lp_normalization.py +1 -1
  684. onnx/reference/ops/op_lp_pool.py +4 -2
  685. onnx/reference/ops/op_lrn.py +1 -1
  686. onnx/reference/ops/op_lstm.py +9 -11
  687. onnx/reference/ops/op_matmul.py +1 -1
  688. onnx/reference/ops/op_matmul_integer.py +1 -1
  689. onnx/reference/ops/op_max.py +1 -1
  690. onnx/reference/ops/op_max_pool.py +8 -8
  691. onnx/reference/ops/op_max_unpool.py +5 -3
  692. onnx/reference/ops/op_mean.py +1 -1
  693. onnx/reference/ops/op_mel_weight_matrix.py +1 -1
  694. onnx/reference/ops/op_min.py +1 -1
  695. onnx/reference/ops/op_mod.py +1 -1
  696. onnx/reference/ops/op_mul.py +1 -1
  697. onnx/reference/ops/op_neg.py +1 -1
  698. onnx/reference/ops/op_negative_log_likelihood_loss.py +4 -2
  699. onnx/reference/ops/op_non_max_suppression.py +10 -11
  700. onnx/reference/ops/op_non_zero.py +1 -1
  701. onnx/reference/ops/op_not.py +1 -1
  702. onnx/reference/ops/op_one_hot.py +1 -1
  703. onnx/reference/ops/op_optional.py +1 -1
  704. onnx/reference/ops/op_optional_get_element.py +1 -1
  705. onnx/reference/ops/op_optional_has_element.py +1 -1
  706. onnx/reference/ops/op_or.py +1 -1
  707. onnx/reference/ops/op_pad.py +1 -1
  708. onnx/reference/ops/op_pool_common.py +7 -6
  709. onnx/reference/ops/op_pow.py +1 -1
  710. onnx/reference/ops/op_prelu.py +3 -3
  711. onnx/reference/ops/op_qlinear_conv.py +1 -1
  712. onnx/reference/ops/op_qlinear_matmul.py +1 -1
  713. onnx/reference/ops/op_quantize_linear.py +15 -9
  714. onnx/reference/ops/op_random_normal.py +1 -1
  715. onnx/reference/ops/op_random_normal_like.py +1 -1
  716. onnx/reference/ops/op_random_uniform.py +1 -1
  717. onnx/reference/ops/op_random_uniform_like.py +1 -1
  718. onnx/reference/ops/op_range.py +1 -1
  719. onnx/reference/ops/op_reciprocal.py +1 -1
  720. onnx/reference/ops/op_reduce_l1.py +1 -1
  721. onnx/reference/ops/op_reduce_l2.py +1 -1
  722. onnx/reference/ops/op_reduce_log_sum.py +1 -1
  723. onnx/reference/ops/op_reduce_log_sum_exp.py +1 -1
  724. onnx/reference/ops/op_reduce_max.py +1 -1
  725. onnx/reference/ops/op_reduce_mean.py +2 -2
  726. onnx/reference/ops/op_reduce_min.py +1 -1
  727. onnx/reference/ops/op_reduce_prod.py +1 -1
  728. onnx/reference/ops/op_reduce_sum.py +2 -2
  729. onnx/reference/ops/op_reduce_sum_square.py +1 -1
  730. onnx/reference/ops/op_regex_full_match.py +1 -1
  731. onnx/reference/ops/op_relu.py +1 -1
  732. onnx/reference/ops/op_reshape.py +1 -1
  733. onnx/reference/ops/op_reverse_sequence.py +1 -1
  734. onnx/reference/ops/op_rnn.py +10 -8
  735. onnx/reference/ops/op_roi_align.py +5 -5
  736. onnx/reference/ops/op_round.py +1 -1
  737. onnx/reference/ops/op_scan.py +8 -8
  738. onnx/reference/ops/op_scatter_elements.py +19 -50
  739. onnx/reference/ops/op_scatternd.py +1 -1
  740. onnx/reference/ops/op_selu.py +1 -1
  741. onnx/reference/ops/op_sequence_at.py +1 -1
  742. onnx/reference/ops/op_sequence_construct.py +1 -1
  743. onnx/reference/ops/op_sequence_empty.py +2 -2
  744. onnx/reference/ops/op_sequence_erase.py +1 -1
  745. onnx/reference/ops/op_sequence_insert.py +6 -6
  746. onnx/reference/ops/op_sequence_length.py +1 -1
  747. onnx/reference/ops/op_sequence_map.py +1 -1
  748. onnx/reference/ops/op_shape.py +2 -6
  749. onnx/reference/ops/op_shrink.py +1 -1
  750. onnx/reference/ops/op_sigmoid.py +1 -1
  751. onnx/reference/ops/op_sign.py +1 -1
  752. onnx/reference/ops/op_sin.py +1 -1
  753. onnx/reference/ops/op_sinh.py +1 -1
  754. onnx/reference/ops/op_size.py +1 -1
  755. onnx/reference/ops/op_slice.py +3 -5
  756. onnx/reference/ops/op_softmax.py +1 -1
  757. onnx/reference/ops/op_softmax_cross_entropy_loss.py +1 -1
  758. onnx/reference/ops/op_softplus.py +1 -1
  759. onnx/reference/ops/op_softsign.py +1 -1
  760. onnx/reference/ops/op_space_to_depth.py +1 -1
  761. onnx/reference/ops/op_split.py +1 -1
  762. onnx/reference/ops/op_split_to_sequence.py +5 -7
  763. onnx/reference/ops/op_sqrt.py +1 -1
  764. onnx/reference/ops/op_squeeze.py +1 -1
  765. onnx/reference/ops/op_stft.py +3 -2
  766. onnx/reference/ops/op_string_concat.py +1 -1
  767. onnx/reference/ops/op_string_normalizer.py +8 -8
  768. onnx/reference/ops/op_string_split.py +2 -4
  769. onnx/reference/ops/op_sub.py +1 -1
  770. onnx/reference/ops/op_sum.py +1 -1
  771. onnx/reference/ops/op_tan.py +1 -1
  772. onnx/reference/ops/op_tanh.py +1 -1
  773. onnx/reference/ops/op_tfidf_vectorizer.py +11 -12
  774. onnx/reference/ops/op_thresholded_relu.py +1 -1
  775. onnx/reference/ops/op_tile.py +1 -1
  776. onnx/reference/ops/op_topk.py +7 -2
  777. onnx/reference/ops/op_transpose.py +1 -1
  778. onnx/reference/ops/op_trilu.py +1 -1
  779. onnx/reference/ops/op_unique.py +3 -1
  780. onnx/reference/ops/op_unsqueeze.py +2 -2
  781. onnx/reference/ops/op_upsample.py +1 -1
  782. onnx/reference/ops/op_where.py +1 -1
  783. onnx/reference/ops/op_xor.py +1 -1
  784. onnx/reference/ops_optimized/__init__.py +1 -0
  785. onnx/reference/ops_optimized/op_conv_optimized.py +1 -1
  786. onnx/reference/reference_evaluator.py +27 -13
  787. onnx/serialization.py +1 -1
  788. onnx/shape_inference/implementation.cc +15 -1
  789. onnx/shape_inference/implementation.h +15 -1
  790. onnx/shape_inference.py +1 -1
  791. onnx/subbyte.py +6 -6
  792. onnx/test/basic_test.py +1 -0
  793. onnx/test/checker_test.py +37 -2
  794. onnx/test/compose_test.py +12 -11
  795. onnx/test/cpp/schema_registration_test.cc +3 -3
  796. onnx/test/cpp/shape_inference_test.cc +38 -2
  797. onnx/test/elu_test.py +2 -0
  798. onnx/test/function_inference_test.py +2 -0
  799. onnx/test/function_test.py +1 -0
  800. onnx/test/helper_test.py +77 -16
  801. onnx/test/hub_test.py +1 -1
  802. onnx/test/inference_function_test.py +25 -8
  803. onnx/test/inliner_test.py +2 -0
  804. onnx/test/model_container_refeval_test.py +2 -1
  805. onnx/test/model_container_test.py +1 -0
  806. onnx/test/model_inference_test.py +2 -0
  807. onnx/test/numpy_helper_test.py +56 -1
  808. onnx/test/parser_test.py +48 -2
  809. onnx/test/printer_test.py +2 -0
  810. onnx/test/reference_evaluator_ml_test.py +2 -3
  811. onnx/test/reference_evaluator_model_test.py +2 -0
  812. onnx/test/reference_evaluator_test.py +173 -19
  813. onnx/test/relu_test.py +2 -0
  814. onnx/test/schema_test.py +4 -2
  815. onnx/test/serialization_test.py +2 -0
  816. onnx/test/shape_inference_test.py +349 -19
  817. onnx/test/symbolic_shape_test.py +3 -3
  818. onnx/test/test_backend_onnxruntime.py +272 -1
  819. onnx/test/test_backend_reference.py +24 -3
  820. onnx/test/test_backend_test.py +6 -5
  821. onnx/test/test_external_data.py +91 -2
  822. onnx/test/test_with_ort.py +1 -0
  823. onnx/test/tools_test.py +15 -14
  824. onnx/test/training_tool_test.py +1 -0
  825. onnx/test/utils_test.py +1 -0
  826. onnx/test/version_converter/automatic_downgrade_test.py +2 -0
  827. onnx/test/version_converter/automatic_upgrade_test.py +2 -0
  828. onnx/test/version_converter_test.py +26 -7
  829. onnx/test/version_utils.py +8 -0
  830. onnx/tools/net_drawer.py +6 -5
  831. onnx/tools/replace_constants.py +11 -11
  832. onnx/tools/update_model_dims.py +7 -6
  833. onnx/utils.py +41 -21
  834. onnx/version.py +2 -2
  835. onnx/version_converter/adapters/split_17_18.h +1 -1
  836. onnx/version_converter/convert.h +107 -2
  837. onnx/version_converter.py +3 -2
  838. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/METADATA +9 -12
  839. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/RECORD +843 -817
  840. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/WHEEL +1 -1
  841. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/LICENSE +0 -0
  842. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/entry_points.txt +0 -0
  843. {onnx-1.16.2.dist-info → onnx-1.17.0.dist-info}/top_level.txt +0 -0
onnx/numpy_helper.py CHANGED
@@ -1,24 +1,25 @@
1
1
  # Copyright (c) ONNX Project Contributors
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
-
4
+ from __future__ import annotations
5
5
 
6
6
  import sys
7
- from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
7
+ from typing import Any, Sequence
8
8
 
9
9
  import numpy as np
10
10
 
11
+ import onnx._custom_element_types as custom_np_types
11
12
  from onnx import MapProto, OptionalProto, SequenceProto, TensorProto, helper, subbyte
12
13
  from onnx.external_data_helper import load_external_data_for_tensor, uses_external_data
13
14
 
14
15
 
15
- def combine_pairs_to_complex(fa: Sequence[int]) -> List[complex]:
16
+ def combine_pairs_to_complex(fa: Sequence[int]) -> list[complex]:
16
17
  return [complex(fa[i * 2], fa[i * 2 + 1]) for i in range(len(fa) // 2)]
17
18
 
18
19
 
19
20
  def bfloat16_to_float32(
20
- data: Union[np.int16, np.int32, np.ndarray],
21
- dims: Optional[Union[int, Sequence[int]]] = None,
21
+ data: np.int16 | np.int32 | np.ndarray,
22
+ dims: int | Sequence[int] | None = None,
22
23
  ) -> np.ndarray:
23
24
  """Converts ndarray of bf16 (as uint32) to f32 (as uint32).
24
25
 
@@ -55,6 +56,7 @@ def _float8e4m3_to_float32_scalar(ival: int, fn: bool, uz: bool) -> np.float32:
55
56
  if ival == 127: # noqa: PLR2004
56
57
  return np.float32(np.nan)
57
58
 
59
+ ival = np.uint32(ival) # type: ignore[assignment]
58
60
  expo = (ival & 0x78) >> 3
59
61
  mant = ival & 0x07
60
62
  sign = ival & 0x80
@@ -86,8 +88,8 @@ _float8e4m3_to_float32 = np.vectorize(
86
88
 
87
89
 
88
90
  def float8e4m3_to_float32(
89
- data: Union[np.int16, np.int32, np.ndarray],
90
- dims: Optional[Union[int, Sequence[int]]] = None,
91
+ data: np.int16 | np.int32 | np.ndarray,
92
+ dims: int | Sequence[int] | None = None,
91
93
  fn: bool = True,
92
94
  uz: bool = False,
93
95
  ) -> np.ndarray:
@@ -133,6 +135,7 @@ def _float8e5m2_to_float32_scalar(ival: int, fn: bool, uz: bool) -> np.float32:
133
135
  else:
134
136
  raise NotImplementedError("fn and uz must be both False or True.")
135
137
 
138
+ ival = np.uint32(ival) # type: ignore[assignment]
136
139
  expo = (ival & 0x7C) >> 2
137
140
  mant = ival & 0x03
138
141
  sign = ival & 0x80
@@ -160,8 +163,8 @@ _float8e5m2_to_float32 = np.vectorize(
160
163
 
161
164
 
162
165
  def float8e5m2_to_float32(
163
- data: Union[np.int16, np.int32, np.ndarray],
164
- dims: Optional[Union[int, Sequence[int]]] = None,
166
+ data: np.int16 | np.int32 | np.ndarray,
167
+ dims: int | Sequence[int] | None = None,
165
168
  fn: bool = False,
166
169
  uz: bool = False,
167
170
  ) -> np.ndarray:
@@ -186,8 +189,8 @@ def float8e5m2_to_float32(
186
189
 
187
190
 
188
191
  def unpack_int4(
189
- data: Union[np.int32, np.ndarray],
190
- dims: Union[int, Sequence[int]],
192
+ data: np.int32 | np.ndarray,
193
+ dims: int | Sequence[int],
191
194
  signed: bool,
192
195
  ) -> np.ndarray:
193
196
  """Converts ndarray of int4 (as packed uint8) to f32
@@ -218,7 +221,7 @@ def unpack_int4(
218
221
  return res
219
222
 
220
223
 
221
- def to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray: # noqa: PLR0911
224
+ def _to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray: # noqa: PLR0911
222
225
  """Converts a tensor def object to a numpy array.
223
226
 
224
227
  Args:
@@ -332,7 +335,79 @@ def to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray: # noqa: PL
332
335
  return np.asarray(data, dtype=storage_np_dtype).astype(np_dtype).reshape(dims)
333
336
 
334
337
 
335
- def from_array(arr: np.ndarray, name: Optional[str] = None) -> TensorProto:
338
+ def to_array(tensor: TensorProto, base_dir: str = "") -> np.ndarray:
339
+ """Converts a tensor def object to a numpy array.
340
+ Supports types defined in :mod:`onnx._custom_element_types`.
341
+
342
+ Args:
343
+ tensor: a TensorProto object.
344
+ base_dir: if external tensor exists, base_dir can help to find the path to it
345
+
346
+ Returns:
347
+ arr: the converted array.
348
+ """
349
+ elem_type = tensor.data_type
350
+ if elem_type == TensorProto.BFLOAT16:
351
+ if uses_external_data(tensor):
352
+ load_external_data_for_tensor(tensor, base_dir)
353
+ data = tensor.int32_data
354
+ shape = tuple(tensor.dims)
355
+ y = np.empty(shape, dtype=custom_np_types.bfloat16).ravel()
356
+ for i, d in enumerate(data):
357
+ y[i] = d
358
+ return y.reshape(shape)
359
+
360
+ if elem_type in (
361
+ TensorProto.FLOAT8E4M3FN,
362
+ TensorProto.FLOAT8E4M3FNUZ,
363
+ TensorProto.FLOAT8E5M2,
364
+ TensorProto.FLOAT8E5M2FNUZ,
365
+ ):
366
+ m = {
367
+ TensorProto.FLOAT8E4M3FN: custom_np_types.float8e4m3fn,
368
+ TensorProto.FLOAT8E4M3FNUZ: custom_np_types.float8e4m3fnuz,
369
+ TensorProto.FLOAT8E5M2: custom_np_types.float8e5m2,
370
+ TensorProto.FLOAT8E5M2FNUZ: custom_np_types.float8e5m2fnuz,
371
+ }
372
+
373
+ if uses_external_data(tensor):
374
+ load_external_data_for_tensor(tensor, base_dir)
375
+ if tensor.HasField("raw_data"):
376
+ data = tensor.raw_data # type: ignore[assignment]
377
+ else:
378
+ data = tensor.int32_data
379
+ shape = tuple(tensor.dims)
380
+ y = np.empty(shape, dtype=m[elem_type]).ravel() # type: ignore[index]
381
+ for i, d in enumerate(data):
382
+ y[i] = d
383
+ return y.reshape(shape)
384
+
385
+ if elem_type in (TensorProto.UINT4, TensorProto.INT4):
386
+ if uses_external_data(tensor):
387
+ load_external_data_for_tensor(tensor, base_dir)
388
+ if tensor.HasField("raw_data"):
389
+ data = tensor.raw_data # type: ignore[assignment]
390
+ else:
391
+ data = tensor.int32_data
392
+ shape = tuple(tensor.dims)
393
+ m = {
394
+ TensorProto.INT4: custom_np_types.int4,
395
+ TensorProto.UINT4: custom_np_types.uint4,
396
+ }
397
+ dtype = m[elem_type] # type: ignore[index]
398
+ signed = elem_type == TensorProto.INT4
399
+ # 2 packed int4 elements must be represented as a single uint8 value.
400
+ # Therefore, y is np.uint8 (not the dtype to which the int4 maps)
401
+ y = np.empty(len(data), dtype=np.uint8).ravel() # type: ignore[assignment]
402
+ for i, d in enumerate(data):
403
+ y[i] = d
404
+ unpacked_data = unpack_int4(y, dims=shape, signed=signed)
405
+ return unpacked_data.astype(dtype)
406
+
407
+ return _to_array(tensor, base_dir=base_dir)
408
+
409
+
410
+ def _from_array(arr: np.ndarray, name: str | None = None) -> TensorProto:
336
411
  """Converts a numpy array to a tensor def.
337
412
 
338
413
  Args:
@@ -352,7 +427,7 @@ def from_array(arr: np.ndarray, name: Optional[str] = None) -> TensorProto:
352
427
  if name:
353
428
  tensor.name = name
354
429
 
355
- if arr.dtype == object:
430
+ if arr.dtype == object or np.issubdtype(arr.dtype, np.str_):
356
431
  # Special care for strings.
357
432
  tensor.data_type = helper.np_dtype_to_tensor_dtype(arr.dtype)
358
433
  # TODO: Introduce full string support.
@@ -397,7 +472,68 @@ def from_array(arr: np.ndarray, name: Optional[str] = None) -> TensorProto:
397
472
  return tensor
398
473
 
399
474
 
400
- def to_list(sequence: SequenceProto) -> List[Any]:
475
+ def from_array(tensor: np.ndarray, name: str | None = None) -> TensorProto:
476
+ """Converts an array into a TensorProto including
477
+ supported type defined in :mod:`onnx._custom_element_types`.
478
+
479
+ Args:
480
+ tensor: a numpy array.
481
+ name: (optional) the name of the tensor.
482
+
483
+ Returns:
484
+ TensorProto: the converted tensor def.
485
+ """
486
+ if not isinstance(tensor, np.ndarray):
487
+ return _from_array(tensor, name)
488
+
489
+ dt = tensor.dtype
490
+ if dt == custom_np_types.float8e4m3fn and dt.descr[0][0] == "e4m3fn":
491
+ to = TensorProto.FLOAT8E4M3FN
492
+ dt_to = np.uint8 # type: ignore[assignment]
493
+ elif dt == custom_np_types.float8e4m3fnuz and dt.descr[0][0] == "e4m3fnuz":
494
+ to = TensorProto.FLOAT8E4M3FNUZ
495
+ dt_to = np.uint8 # type: ignore[assignment]
496
+ elif dt == custom_np_types.float8e5m2 and dt.descr[0][0] == "e5m2":
497
+ to = TensorProto.FLOAT8E5M2
498
+ dt_to = np.uint8 # type: ignore[assignment]
499
+ elif dt == custom_np_types.float8e5m2fnuz and dt.descr[0][0] == "e5m2fnuz":
500
+ to = TensorProto.FLOAT8E5M2FNUZ
501
+ dt_to = np.uint8 # type: ignore[assignment]
502
+ elif dt == custom_np_types.bfloat16 and dt.descr[0][0] == "bfloat16":
503
+ to = TensorProto.BFLOAT16
504
+ dt_to = np.uint16 # type: ignore[assignment]
505
+ elif dt == custom_np_types.int4 and dt.descr[0][0] == "int4":
506
+ to = TensorProto.INT4
507
+ dt_to = np.int8 # type: ignore[assignment]
508
+ elif dt == custom_np_types.uint4 and dt.descr[0][0] == "uint4":
509
+ to = TensorProto.UINT4
510
+ dt_to = np.uint8 # type: ignore[assignment]
511
+ else:
512
+ return _from_array(tensor, name)
513
+
514
+ if to in (TensorProto.UINT4, TensorProto.INT4):
515
+ value = tensor.astype(dt_to).ravel()
516
+ if value.size % 2 == 1:
517
+ raise ValueError(
518
+ f"The conversion of a tensor of INT4 or UINT4 requires an even size "
519
+ f"(shape={tensor.shape}). Every byte stores two INT4 or two UINT4."
520
+ )
521
+ buffer = (value[::2] & 0x0F) + (value[1::2] << 4)
522
+
523
+ pb = TensorProto()
524
+ pb.dims.extend(tensor.shape)
525
+ if name:
526
+ pb.name = name
527
+ pb.raw_data = buffer.tobytes()
528
+ pb.data_type = to
529
+ return pb
530
+
531
+ t = _from_array(tensor.astype(dt_to), name)
532
+ t.data_type = to
533
+ return t
534
+
535
+
536
+ def to_list(sequence: SequenceProto) -> list[Any]:
401
537
  """Converts a sequence def to a Python list.
402
538
 
403
539
  Args:
@@ -419,7 +555,7 @@ def to_list(sequence: SequenceProto) -> List[Any]:
419
555
 
420
556
 
421
557
  def from_list(
422
- lst: List[Any], name: Optional[str] = None, dtype: Optional[int] = None
558
+ lst: list[Any], name: str | None = None, dtype: int | None = None
423
559
  ) -> SequenceProto:
424
560
  """Converts a list into a sequence def.
425
561
 
@@ -475,7 +611,7 @@ def from_list(
475
611
  return sequence
476
612
 
477
613
 
478
- def to_dict(map_proto: MapProto) -> Dict[Any, Any]:
614
+ def to_dict(map_proto: MapProto) -> dict[Any, Any]:
479
615
  """Converts a map def to a Python dictionary.
480
616
 
481
617
  Args:
@@ -484,7 +620,7 @@ def to_dict(map_proto: MapProto) -> Dict[Any, Any]:
484
620
  Returns:
485
621
  The converted dictionary.
486
622
  """
487
- key_list: List[Any] = []
623
+ key_list: list[Any] = []
488
624
  if map_proto.key_type == TensorProto.STRING:
489
625
  key_list = list(map_proto.string_keys)
490
626
  else:
@@ -501,7 +637,7 @@ def to_dict(map_proto: MapProto) -> Dict[Any, Any]:
501
637
  return dictionary
502
638
 
503
639
 
504
- def from_dict(dict_: Dict[Any, Any], name: Optional[str] = None) -> MapProto:
640
+ def from_dict(dict_: dict[Any, Any], name: str | None = None) -> MapProto:
505
641
  """Converts a Python dictionary into a map def.
506
642
 
507
643
  Args:
@@ -559,7 +695,7 @@ def from_dict(dict_: Dict[Any, Any], name: Optional[str] = None) -> MapProto:
559
695
  return map_proto
560
696
 
561
697
 
562
- def to_optional(optional: OptionalProto) -> Optional[Any]:
698
+ def to_optional(optional: OptionalProto) -> Any | None:
563
699
  """Converts an optional def to a Python optional.
564
700
 
565
701
  Args:
@@ -585,7 +721,7 @@ def to_optional(optional: OptionalProto) -> Optional[Any]:
585
721
 
586
722
 
587
723
  def from_optional(
588
- opt: Optional[Any], name: Optional[str] = None, dtype: Optional[int] = None
724
+ opt: Any | None, name: str | None = None, dtype: int | None = None
589
725
  ) -> OptionalProto:
590
726
  """Converts an optional value into a Optional def.
591
727
 
@@ -637,7 +773,7 @@ def from_optional(
637
773
 
638
774
 
639
775
  def convert_endian(tensor: TensorProto) -> None:
640
- """Call to convert endianess of raw data in tensor.
776
+ """Call to convert endianness of raw data in tensor.
641
777
 
642
778
  Args:
643
779
  tensor: TensorProto to be converted.
@@ -650,7 +786,7 @@ def convert_endian(tensor: TensorProto) -> None:
650
786
 
651
787
 
652
788
  def create_random_int(
653
- input_shape: Tuple[int], dtype: np.dtype, seed: int = 1
789
+ input_shape: tuple[int], dtype: np.dtype, seed: int = 1
654
790
  ) -> np.ndarray:
655
791
  """Create random integer array for backend/test/case/node.
656
792
 
onnx/onnx-ml.proto CHANGED
@@ -212,7 +212,7 @@ message NodeProto {
212
212
  repeated string output = 2; // namespace Value
213
213
 
214
214
  // An optional identifier for this node in a graph.
215
- // This field MAY be absent in ths version of the IR.
215
+ // This field MAY be absent in this version of the IR.
216
216
  optional string name = 3; // namespace Node
217
217
 
218
218
  // The symbolic identifier of the Operator to execute.
onnx/onnx.in.proto CHANGED
@@ -209,7 +209,7 @@ message NodeProto {
209
209
  repeated string output = 2; // namespace Value
210
210
 
211
211
  // An optional identifier for this node in a graph.
212
- // This field MAY be absent in ths version of the IR.
212
+ // This field MAY be absent in this version of the IR.
213
213
  optional string name = 3; // namespace Node
214
214
 
215
215
  // The symbolic identifier of the Operator to execute.
onnx/onnx.proto CHANGED
@@ -210,7 +210,7 @@ message NodeProto {
210
210
  repeated string output = 2; // namespace Value
211
211
 
212
212
  // An optional identifier for this node in a graph.
213
- // This field MAY be absent in ths version of the IR.
213
+ // This field MAY be absent in this version of the IR.
214
214
  optional string name = 3; // namespace Node
215
215
 
216
216
  // The symbolic identifier of the Operator to execute.
@@ -1,6 +1,4 @@
1
1
  """Submodule containing all the ONNX schema definitions."""
2
- from __future__ import annotations
3
-
4
2
  from typing import Sequence, overload
5
3
 
6
4
  from onnx import AttributeProto, FunctionProto
@@ -2,13 +2,10 @@
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
 
5
- from __future__ import annotations
6
-
7
5
  def inline_local_functions(model: bytes, convert_version: bool) -> bytes:
8
6
  """Inlines calls to model-local function in input model and returns it.
9
7
  Both input and output are serialized ModelProtos.
10
8
  """
11
- ...
12
9
 
13
10
  def inline_selected_functions(model: bytes, function_ids: list[tuple[str,str]], exclude: bool) -> bytes:
14
11
  """Inlines calls to selected model-local functions in input model and returns it.
@@ -16,4 +13,3 @@ def inline_selected_functions(model: bytes, function_ids: list[tuple[str,str]],
16
13
  case it inlines all functions except those specified in function_ids.
17
14
  Both input and output are serialized ModelProtos.
18
15
  """
19
- ...
@@ -5,7 +5,6 @@ def parse_model(model: str) -> tuple[bool, bytes, bytes]:
5
5
  If success-flag is true, then serialized-proto contains the parsed ModelProto.
6
6
  Otherwise, error-message contains a string describing the parse error.
7
7
  """
8
- ...
9
8
 
10
9
  def parse_graph(graph: str) -> tuple[bool, bytes, bytes]:
11
10
  """Returns (success-flag, error-message, serialized-proto).
@@ -13,7 +12,6 @@ def parse_graph(graph: str) -> tuple[bool, bytes, bytes]:
13
12
  If success-flag is true, then serialized-proto contains the parsed GraphProto.
14
13
  Otherwise, error-message contains a string describing the parse error.
15
14
  """
16
- ...
17
15
 
18
16
  def parse_function(function: str) -> tuple[bool, bytes, bytes]:
19
17
  """Returns (success-flag, error-message, serialized-proto).
@@ -21,7 +19,6 @@ def parse_function(function: str) -> tuple[bool, bytes, bytes]:
21
19
  If success-flag is true, then serialized-proto contains the parsed FunctionProto.
22
20
  Otherwise, error-message contains a string describing the parse error.
23
21
  """
24
- ...
25
22
 
26
23
  def parse_node(node: str) -> tuple[bool, bytes, bytes]:
27
24
  """Returns (success-flag, error-message, serialized-proto).
@@ -29,4 +26,3 @@ def parse_node(node: str) -> tuple[bool, bytes, bytes]:
29
26
  If success-flag is true, then serialized-proto contains the parsed NodeProto.
30
27
  Otherwise, error-message contains a string describing the parse error.
31
28
  """
32
- ...
Binary file
onnx/parser.py CHANGED
@@ -1,6 +1,7 @@
1
1
  # Copyright (c) ONNX Project Contributors
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
+ from __future__ import annotations
4
5
 
5
6
  import onnx
6
7
  import onnx.onnx_cpp2py_export.parser as C # noqa: N812
onnx/printer.py CHANGED
@@ -1,14 +1,13 @@
1
1
  # Copyright (c) ONNX Project Contributors
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
-
5
- from typing import Union
4
+ from __future__ import annotations
6
5
 
7
6
  import onnx
8
7
  import onnx.onnx_cpp2py_export.printer as C # noqa: N812
9
8
 
10
9
 
11
- def to_text(proto: Union[onnx.ModelProto, onnx.FunctionProto, onnx.GraphProto]) -> str:
10
+ def to_text(proto: onnx.ModelProto | onnx.FunctionProto | onnx.GraphProto) -> str:
12
11
  if isinstance(proto, onnx.ModelProto):
13
12
  return C.model_to_text(proto.SerializeToString())
14
13
  if isinstance(proto, onnx.FunctionProto):
@@ -1,6 +1,7 @@
1
1
  # Copyright (c) ONNX Project Contributors
2
2
  #
3
3
  # SPDX-License-Identifier: Apache-2.0
4
+ from __future__ import annotations
4
5
 
5
6
  __all__ = ["ReferenceEvaluator"]
6
7
 
@@ -1,13 +1,78 @@
1
1
  # Copyright (c) ONNX Project Contributors
2
- #
2
+
3
3
  # SPDX-License-Identifier: Apache-2.0
4
+ from __future__ import annotations
4
5
 
5
6
  import numpy as np
6
7
 
7
- bfloat16 = np.dtype((np.uint16, {"bfloat16": (np.uint16, 0)}))
8
- float8e4m3fn = np.dtype((np.uint8, {"e4m3fn": (np.uint8, 0)}))
9
- float8e4m3fnuz = np.dtype((np.uint8, {"e4m3fnuz": (np.uint8, 0)}))
10
- float8e5m2 = np.dtype((np.uint8, {"e5m2": (np.uint8, 0)}))
11
- float8e5m2fnuz = np.dtype((np.uint8, {"e5m2fnuz": (np.uint8, 0)}))
12
- uint4 = np.dtype((np.uint8, {"uint4": (np.uint8, 0)}))
13
- int4 = np.dtype((np.int8, {"int4": (np.int8, 0)}))
8
+ try:
9
+ import ml_dtypes
10
+ except ImportError:
11
+ ml_dtypes = None # type: ignore[assignment]
12
+
13
+ from onnx._custom_element_types import (
14
+ bfloat16,
15
+ float8e4m3fn,
16
+ float8e4m3fnuz,
17
+ float8e5m2,
18
+ float8e5m2fnuz,
19
+ int4,
20
+ uint4,
21
+ )
22
+
23
+ _supported_types = [
24
+ (bfloat16, "bfloat16", "bfloat16"),
25
+ (float8e4m3fn, "e4m3fn", "float8_e4m3fn"),
26
+ (float8e4m3fnuz, "e4m3fnuz", "float8_e4m3fnuz"),
27
+ (float8e5m2, "e5m2", "float8_e5m2"),
28
+ (float8e5m2fnuz, "e5m2fnuz", "float8_e5m2fnuz"),
29
+ (int4, "int4", "int4"),
30
+ (uint4, "uint4", "uint4"),
31
+ ]
32
+
33
+
34
+ def convert_from_ml_dtypes(array: np.ndarray) -> np.ndarray:
35
+ """Detects the type and changes into one of the ONNX
36
+ defined custom types when ``ml_dtypes`` is installed.
37
+
38
+ Args:
39
+ array: Numpy array with a dtype from ml_dtypes.
40
+
41
+ Returns:
42
+ numpy array
43
+ """
44
+ if not ml_dtypes:
45
+ return array
46
+ for dtype, _, ml_name in _supported_types:
47
+ if array.dtype == getattr(ml_dtypes, ml_name):
48
+ return array.view(dtype=dtype)
49
+ return array
50
+
51
+
52
+ def convert_to_ml_dtypes(array: np.ndarray) -> np.ndarray:
53
+ """Detects the type and changes into one of the type
54
+ defined in ``ml_dtypes`` if installed.
55
+
56
+ Args:
57
+ array: array
58
+
59
+ Returns:
60
+ numpy Numpy array with a dtype from ml_dtypes.
61
+ """
62
+ new_dt = None
63
+
64
+ for dtype, name, ml_name in _supported_types:
65
+ if array.dtype == dtype and array.dtype.descr[0][0] == name:
66
+ assert ml_dtypes, (
67
+ f"ml_dtypes is not installed and the tensor cannot "
68
+ f"be converted into ml_dtypes.{array.dtype.descr[0][0]}"
69
+ )
70
+ new_dt = getattr(ml_dtypes, ml_name)
71
+ break
72
+
73
+ if new_dt:
74
+ # int4, uint4, the representation uses 1 byte per element,
75
+ # only onnx storage uses 1 byte for two elements
76
+ return array.view(dtype=new_dt)
77
+
78
+ return array
onnx/reference/op_run.py CHANGED
@@ -9,11 +9,7 @@ from typing import Any, ClassVar, Iterable
9
9
  import numpy as np
10
10
 
11
11
  from onnx import TensorProto
12
- from onnx.defs import get_all_schemas_with_history, get_schema, onnx_opset_version
13
- from onnx.helper import make_node, make_tensor_type_proto, np_dtype_to_tensor_dtype
14
- from onnx.numpy_helper import to_array, unpack_int4
15
- from onnx.onnx_pb import AttributeProto, GraphProto, NodeProto, TypeProto
16
- from onnx.reference.custom_element_types import (
12
+ from onnx._custom_element_types import (
17
13
  bfloat16,
18
14
  float8e4m3fn,
19
15
  float8e4m3fnuz,
@@ -22,6 +18,10 @@ from onnx.reference.custom_element_types import (
22
18
  int4,
23
19
  uint4,
24
20
  )
21
+ from onnx.defs import get_all_schemas_with_history, get_schema, onnx_opset_version
22
+ from onnx.helper import make_node, make_tensor_type_proto, np_dtype_to_tensor_dtype
23
+ from onnx.numpy_helper import to_array
24
+ from onnx.onnx_pb import AttributeProto, GraphProto, NodeProto, TypeProto
25
25
 
26
26
 
27
27
  def _split_class_name(name): # type: ignore
@@ -121,55 +121,7 @@ def to_sparse_tensor(att: AttributeProto) -> SparseTensor:
121
121
 
122
122
 
123
123
  def to_array_extended(tensor: TensorProto) -> np.ndarray:
124
- """Similar to :func:`to_array` but deals with non-numpy types bfloat16,
125
- float8e4m3fn, float8e4m3fnuz, float8e5m2, float8e5m2fnuz, uint4, int4.
126
- """
127
- elem_type = tensor.data_type
128
- if elem_type == TensorProto.BFLOAT16:
129
- data = tensor.int32_data
130
- shape = tuple(tensor.dims)
131
- y = np.empty(shape, dtype=bfloat16).ravel()
132
- for i, d in enumerate(data):
133
- y[i] = d
134
- return y.reshape(shape)
135
-
136
- if elem_type in (
137
- TensorProto.FLOAT8E4M3FN,
138
- TensorProto.FLOAT8E4M3FNUZ,
139
- TensorProto.FLOAT8E5M2,
140
- TensorProto.FLOAT8E5M2FNUZ,
141
- ):
142
- m = {
143
- TensorProto.FLOAT8E4M3FN: float8e4m3fn,
144
- TensorProto.FLOAT8E4M3FNUZ: float8e4m3fnuz,
145
- TensorProto.FLOAT8E5M2: float8e5m2,
146
- TensorProto.FLOAT8E5M2FNUZ: float8e5m2fnuz,
147
- }
148
-
149
- if tensor.HasField("raw_data"):
150
- data = tensor.raw_data # type: ignore[assignment]
151
- else:
152
- data = tensor.int32_data
153
- shape = tuple(tensor.dims)
154
- y = np.empty(shape, dtype=m[elem_type]).ravel() # type: ignore[index]
155
- for i, d in enumerate(data):
156
- y[i] = d
157
- return y.reshape(shape)
158
- if elem_type in (TensorProto.UINT4, TensorProto.INT4):
159
- if tensor.HasField("raw_data"):
160
- data = tensor.raw_data # type: ignore[assignment]
161
- else:
162
- data = tensor.int32_data
163
- shape = tuple(tensor.dims)
164
- m = {TensorProto.INT4: int4, TensorProto.UINT4: uint4}
165
- dtype = m[elem_type] # type: ignore[index]
166
- signed = elem_type == TensorProto.INT4
167
- y = np.empty(len(data), dtype=dtype).ravel()
168
- for i, d in enumerate(data):
169
- y[i] = d
170
-
171
- unpacked_data = unpack_int4(y, dims=shape, signed=signed)
172
- return unpacked_data.astype(dtype)
124
+ """Alias for :func:`to_array`."""
173
125
  return to_array(tensor)
174
126
 
175
127
 
@@ -652,13 +604,16 @@ class OpRunExpand(OpRun):
652
604
  """Class any operator to avoid must inherit from."""
653
605
 
654
606
  def __init__(
655
- self, onnx_node: NodeProto, run_params: dict[str, Any], impl: Any = None
607
+ self,
608
+ onnx_node: NodeProto, # noqa: ARG002
609
+ run_params: dict[str, Any], # noqa: ARG002
610
+ impl: Any = None, # noqa: ARG002
656
611
  ):
657
612
  raise RuntimeError(
658
613
  f"The reference implementation must not use this node ({type(self)})."
659
614
  )
660
615
 
661
- def _run(self, *inputs, **kwargs):
616
+ def _run(self, *inputs, **kwargs): # noqa: ARG002
662
617
  raise RuntimeError(
663
618
  f"The reference implementation must not use this node ({type(self)})."
664
619
  )
@@ -735,7 +690,7 @@ class OpFunctionContextDependant(OpFunction):
735
690
  for t in inputs:
736
691
  try:
737
692
  ttype = np_dtype_to_tensor_dtype(t.dtype)
738
- except KeyError as e:
693
+ except KeyError:
739
694
  if t.dtype == float8e4m3fn:
740
695
  ttype = TensorProto.FLOAT8E4M3FN # type: ignore[attr-defined]
741
696
  elif t.dtype == float8e4m3fnuz:
@@ -751,7 +706,7 @@ class OpFunctionContextDependant(OpFunction):
751
706
  elif t.dtype == int4:
752
707
  ttype = TensorProto.INT4 # type: ignore[attr-defined]
753
708
  else:
754
- raise e
709
+ raise
755
710
  types.append(make_tensor_type_proto(ttype, t.shape))
756
711
  cl = self.parent._load_impl(self.onnx_node, types)
757
712
  inst = cl(self.onnx_node, self.run_params)
@@ -3,5 +3,6 @@
3
3
  # Copyright (c) ONNX Project Contributors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
+ from __future__ import annotations
6
7
 
7
8
  from onnx.reference.ops._op_list import load_op
@@ -3,16 +3,17 @@
3
3
  # Copyright (c) ONNX Project Contributors
4
4
  #
5
5
  # SPDX-License-Identifier: Apache-2.0
6
+ from __future__ import annotations
6
7
 
7
- from typing import Any, Dict, Union
8
+ from typing import Any
8
9
 
9
10
  from onnx.reference.op_run import OpRun, _split_class_name
10
11
 
11
12
 
12
13
  def build_registered_operators_any_domain(
13
- module_context: Dict[str, Any]
14
- ) -> Dict[str, Dict[Union[int, None], OpRun]]:
15
- reg_ops: Dict[str, Dict[Union[int, None], OpRun]] = {}
14
+ module_context: dict[str, Any],
15
+ ) -> dict[str, dict[int | None, OpRun]]:
16
+ reg_ops: dict[str, dict[int | None, OpRun]] = {}
16
17
  for class_name, class_type in module_context.items():
17
18
  if class_name.startswith("_") or class_name in {
18
19
  "Any",
@@ -20,6 +21,7 @@ def build_registered_operators_any_domain(
20
21
  "List",
21
22
  "TOptional",
22
23
  "Union",
24
+ "annotations",
23
25
  "cl",
24
26
  "class_name",
25
27
  "get_schema",