tico 0.1.0.dev250616__py3-none-any.whl → 0.1.0.dev250618__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. tico/__init__.py +1 -1
  2. tico/experimental/quantization/passes/insert_quantize_on_dtype_mismatch.py +6 -2
  3. tico/experimental/quantization/passes/quantize_bias.py +123 -0
  4. tico/experimental/quantization/passes/remove_weight_dequant_op.py +3 -0
  5. tico/passes/cast_aten_where_arg_type.py +4 -1
  6. tico/passes/cast_mixed_type_args.py +4 -1
  7. tico/passes/convert_conv1d_to_conv2d.py +12 -4
  8. tico/passes/convert_layout_op_to_reshape.py +3 -2
  9. tico/passes/convert_repeat_to_expand_copy.py +5 -2
  10. tico/passes/convert_to_relu6.py +4 -3
  11. tico/passes/decompose_addmm.py +11 -7
  12. tico/passes/decompose_batch_norm.py +7 -11
  13. tico/passes/decompose_fake_quantize.py +12 -6
  14. tico/passes/decompose_fake_quantize_tensor_qparams.py +12 -6
  15. tico/passes/decompose_group_norm.py +50 -21
  16. tico/passes/decompose_grouped_conv2d.py +15 -7
  17. tico/passes/decompose_slice_scatter.py +9 -5
  18. tico/passes/fuse_leading_unsqueeze_reshape.py +8 -3
  19. tico/passes/legalize_predefined_layout_operators.py +33 -25
  20. tico/passes/lower_pow2_to_mul.py +3 -1
  21. tico/passes/lower_to_resize_nearest_neighbor.py +21 -10
  22. tico/passes/lower_to_slice.py +21 -11
  23. tico/passes/remove_redundant_permute.py +5 -3
  24. tico/passes/remove_redundant_reshape.py +5 -2
  25. tico/passes/remove_redundant_to_copy.py +4 -0
  26. tico/passes/restore_linear.py +7 -5
  27. tico/passes/segment_index_select.py +9 -5
  28. tico/utils/convert.py +2 -0
  29. tico/utils/graph.py +48 -2
  30. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/METADATA +1 -1
  31. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/RECORD +35 -34
  32. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/LICENSE +0 -0
  33. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/WHEEL +0 -0
  34. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/entry_points.txt +0 -0
  35. {tico-0.1.0.dev250616.dist-info → tico-0.1.0.dev250618.dist-info}/top_level.txt +0 -0
@@ -31,7 +31,7 @@ from torch.export import ExportedProgram
31
31
  from tico.passes import ops
32
32
  from tico.serialize.circle_graph import extract_shape
33
33
  from tico.utils import logging
34
- from tico.utils.graph import add_placeholder, is_single_value_tensor
34
+ from tico.utils.graph import add_placeholder, create_node, is_single_value_tensor
35
35
  from tico.utils.passes import PassBase, PassResult
36
36
  from tico.utils.trace_decorators import trace_const_diff_on_pass
37
37
  from tico.utils.utils import is_target_node
@@ -116,18 +116,22 @@ class SegmentIndexSelectConst(PassBase):
116
116
  exported_program, torch.tensor([i]), prefix="segm_index"
117
117
  )
118
118
  with graph.inserting_before(node):
119
- index_select_node = graph.call_function(
119
+ index_select_node = create_node(
120
+ graph,
120
121
  torch.ops.aten.index_select.default,
121
122
  args=(input, dim, index_node),
123
+ origin=node,
122
124
  )
123
125
  index_select_node_list.append(index_select_node)
124
126
 
125
127
  with graph.inserting_before(node):
126
- concat_node = graph.call_function(
127
- torch.ops.aten.cat.default, args=(index_select_node_list, dim)
128
+ concat_node = create_node(
129
+ graph,
130
+ torch.ops.aten.cat.default,
131
+ args=(index_select_node_list, dim),
128
132
  )
129
133
 
130
- node.replace_all_uses_with(concat_node, propagate_meta=False)
134
+ node.replace_all_uses_with(concat_node, propagate_meta=True)
131
135
 
132
136
  modified = True
133
137
  logger.debug(
tico/utils/convert.py CHANGED
@@ -30,6 +30,7 @@ from tico.experimental.quantization.passes.propagate_qparam_backward import (
30
30
  from tico.experimental.quantization.passes.propagate_qparam_forward import (
31
31
  PropagateQParamForward,
32
32
  )
33
+ from tico.experimental.quantization.passes.quantize_bias import QuantizeBias
33
34
  from tico.experimental.quantization.passes.remove_weight_dequant_op import (
34
35
  RemoveWeightDequantOp,
35
36
  )
@@ -250,6 +251,7 @@ def convert_exported_module_to_circle(
250
251
  RemoveWeightDequantOp(),
251
252
  PropagateQParamForward(),
252
253
  PropagateQParamBackward(),
254
+ QuantizeBias(),
253
255
  InsertQuantizeOnDtypeMismatch(),
254
256
  ]
255
257
  )
tico/utils/graph.py CHANGED
@@ -16,7 +16,7 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
- from typing import Optional, TYPE_CHECKING
19
+ from typing import Any, Dict, Optional, Tuple, TYPE_CHECKING
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  import torch.fx
@@ -24,7 +24,7 @@ import torch
24
24
  from torch.export import ExportedProgram
25
25
  from torch.export.exported_program import InputKind, InputSpec, TensorArgument
26
26
 
27
- from tico.utils.utils import get_fake_mode
27
+ from tico.utils.utils import get_fake_mode, set_new_meta_val
28
28
 
29
29
 
30
30
  def is_torch_param(node: torch.fx.Node, ep: ExportedProgram):
@@ -234,3 +234,49 @@ def get_module_name_chain(node: Optional[torch.fx.Node]) -> str:
234
234
  return next(reversed(stack.values()))[1]
235
235
  else:
236
236
  return "unknown"
237
+
238
+
239
+ def create_node(
240
+ graph: torch.fx.Graph,
241
+ target: torch._ops.OpOverload,
242
+ args: Optional[Tuple[Any, ...]] = None,
243
+ kwargs: Optional[Dict[str, Any]] = None,
244
+ *,
245
+ origin: Optional[torch.fx.Node] = None,
246
+ ) -> torch.fx.Node:
247
+ """
248
+ Insert a new node into graph and propagate metadata from *origin*.
249
+
250
+ Parameters
251
+ ----------
252
+ graph : torch.fx.Graph
253
+ The graph that will own the newly-created node.
254
+
255
+ target : torch._ops.OpOverload
256
+ The op to call (e.g. `torch.add` or "call_function" target).
257
+
258
+ args : Tuple[Any, ...], optional
259
+ Positional arguments for the new node.
260
+
261
+ kwargs : Dict[str, Any], optional
262
+ Keyword arguments for the new node.
263
+
264
+ origin : torch.fx.Node, optional
265
+ If given, every key in `origin.meta` **except** "val" is copied
266
+ onto the new node. "val" is recomputed from *args* /*kwargs* using
267
+ the internal meta-inference helper.
268
+
269
+ Returns
270
+ -------
271
+ torch.fx.Node
272
+ The freshly inserted node with fully-populated `.meta`.
273
+ """
274
+ new_node = graph.call_function(target, args=args, kwargs=kwargs)
275
+ if origin:
276
+ assert isinstance(origin, torch.fx.Node), type(origin)
277
+ # Propagate "nn_module_stack" to retain the originating module context
278
+ # for meaningful node names.
279
+ if "nn_module_stack" in origin.meta:
280
+ new_node.meta["nn_module_stack"] = origin.meta["nn_module_stack"]
281
+
282
+ return new_node
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tico
3
- Version: 0.1.0.dev250616
3
+ Version: 0.1.0.dev250618
4
4
  Summary: Convert exported Torch module to circle
5
5
  Home-page: UNKNOWN
6
6
  License: UNKNOWN
@@ -1,4 +1,4 @@
1
- tico/__init__.py,sha256=C7LzUiiXkYNLAtSEQwbhwUac4-sXXzDB7nzZccomIWo,1743
1
+ tico/__init__.py,sha256=RrIXtcajfToey4BPf7DPtQpe9D5Ds438M8cEHimbNC8,1743
2
2
  tico/pt2_to_circle.py,sha256=PPmFNw20jw2Z2VyM3ln9pX__jTzBOAZiv0gT5a-p-Y8,2666
3
3
  tico/config/__init__.py,sha256=xZzCXjZ84qE-CsBi-dfaL05bqpQ3stKKfTXhnrJRyVs,142
4
4
  tico/config/base.py,sha256=anwOiJFkUxUi7Cef573JgQcjk6S-FSi6O_TLjYASW-g,1244
@@ -51,48 +51,49 @@ tico/experimental/quantization/evaluation/executor/circle_executor.py,sha256=eCC
51
51
  tico/experimental/quantization/evaluation/executor/triv24_executor.py,sha256=sUoXl6oOO2arAKaNjOBg7HiQja145_Jv6qgY7XtR7A8,5159
52
52
  tico/experimental/quantization/passes/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
53
53
  tico/experimental/quantization/passes/fold_quant_ops.py,sha256=OYUndHaSL3GiL8koIG9_pqavW-hghrs0kkpvounsh1g,3312
54
- tico/experimental/quantization/passes/insert_quantize_on_dtype_mismatch.py,sha256=i4rkM1vlN85fXA9oOrU25o8KWAaqA65NKngTX6MgctQ,12960
54
+ tico/experimental/quantization/passes/insert_quantize_on_dtype_mismatch.py,sha256=AbNcI7rfIwHsQna_rFuwqFdOzFAU2lIB3sMK-vns8Dc,13072
55
55
  tico/experimental/quantization/passes/propagate_qparam_backward.py,sha256=TGtyW0Z2qOTgVIasBdGRgbwH31YYd6ek7OvLTmCV614,3118
56
56
  tico/experimental/quantization/passes/propagate_qparam_forward.py,sha256=RhUHGCR2RpBO5KYkQ7Z8U5u7HEwDq2wdKHLKAJCi-5c,5138
57
- tico/experimental/quantization/passes/remove_weight_dequant_op.py,sha256=ZIwzuRXyCg6xN5pEUVV1LXsZpu0NkTcTUI6gc1VTuXs,6452
57
+ tico/experimental/quantization/passes/quantize_bias.py,sha256=ZQ3rETYStpW28JUbODRixbq5sDEOiIOB_qWA-Jzuu-Y,4337
58
+ tico/experimental/quantization/passes/remove_weight_dequant_op.py,sha256=Klc_9-94tl0_AuAToKOjsWED_YPk5RB67eum0ddPX7o,6588
58
59
  tico/interpreter/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
59
60
  tico/interpreter/infer.py,sha256=vJ3b69ce9HrxNT0gFwbEhHpAyvVyuiunTgAeiqn5t64,4350
60
61
  tico/interpreter/interpreter.py,sha256=tGbluCbrehTCqBu8mtGDNzby_ieJ2ry8_RH_eC0CQxk,3828
61
62
  tico/passes/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
62
- tico/passes/cast_aten_where_arg_type.py,sha256=VDgLcsh3EpxLuGMSgEcLUZe2_iVYVyUf75XK9AQB_qM,7146
63
- tico/passes/cast_mixed_type_args.py,sha256=khj0m2EIJoqxADUeAAVZl6_T30-hhcIkwDSDZlknblk,7479
63
+ tico/passes/cast_aten_where_arg_type.py,sha256=ybtGj1L7_2zGyfb_G-_y1N1mRgKHVq6fBZc-9-fH9sA,7229
64
+ tico/passes/cast_mixed_type_args.py,sha256=s1lAwYvJdYdkE11fK2n1faybPyA5CJtZkOkU46rhXXA,7590
64
65
  tico/passes/const_prop_pass.py,sha256=QOeR2u3fo9ZhWXRhfAUW1dTtuWgqgoqdDJoQ516UDbQ,11532
65
- tico/passes/convert_conv1d_to_conv2d.py,sha256=RJVLrY0_Quj90EpUzdlBCepKbqcfArQ3fdnsfYV89YA,5092
66
- tico/passes/convert_layout_op_to_reshape.py,sha256=FJUrTbquGTJhK2ig1kBci0DjBjk6hfoajLSrQDlJD8o,2904
67
- tico/passes/convert_repeat_to_expand_copy.py,sha256=f9Vt2OGFcvUZP0i0qxvh5LfwCpgecr8RkfIrzZMDV0M,3156
68
- tico/passes/convert_to_relu6.py,sha256=3sfKfggvjbl9N73pLOwgUTNyoecODsy367nwoX2S-EE,6404
69
- tico/passes/decompose_addmm.py,sha256=4gkRIjWnlP5ODuIoo4cpyJpvIv2YVfJehmTQd_8X2JE,3924
70
- tico/passes/decompose_batch_norm.py,sha256=y1Ez7BPr5EnbIoc_E3kX_KysT_rFkQnQK1QSzoeZcgY,6691
71
- tico/passes/decompose_fake_quantize.py,sha256=mOMZAVYDAqclDCCVkbMWWjg2iGBdxURHD7fyyTjV4IU,5316
72
- tico/passes/decompose_fake_quantize_tensor_qparams.py,sha256=Pul2E3RJ6a6p5lpPY8ac6urINWlFaGZtxJ3sOmagylM,13962
73
- tico/passes/decompose_group_norm.py,sha256=s3lRFqoUIBbxofacwKHY7-vop8_X1WgjqEZBnv09Tgw,9448
74
- tico/passes/decompose_grouped_conv2d.py,sha256=hPRK9D9RDjmJ3mv0Wx17zeNW4xXT2jTQDHfOKIGgV60,8260
75
- tico/passes/decompose_slice_scatter.py,sha256=mnfEt58PAelJdheD0cJ5C66w_3yqSngCsfM-Auy9ADU,5563
66
+ tico/passes/convert_conv1d_to_conv2d.py,sha256=2AAs8q9BYuvMr0F1Mrua1rpGvwxOVIE10c798P5sFf8,5231
67
+ tico/passes/convert_layout_op_to_reshape.py,sha256=sCAFjkmVtiKjvDQSAgnjNBHl3_hWXJZElGDXQiTH-7s,2963
68
+ tico/passes/convert_repeat_to_expand_copy.py,sha256=JbtFTmWyfJS2SSd_higP1IEhQeh7wHdN5dmTbbiFVCs,3237
69
+ tico/passes/convert_to_relu6.py,sha256=1BJpUwUb6Zli_1y3eyJQo7dg9B1xvZ7sYjMbvEQsFJM,6442
70
+ tico/passes/decompose_addmm.py,sha256=0IUZjRS8G-h7LPeYu27gxWyTKi3pKAF1uNU1y-mHLL0,4056
71
+ tico/passes/decompose_batch_norm.py,sha256=hWR6PMqgzMuNME7oLiNaxDJl5ZwXZeqxSkcNEMW4vAE,6514
72
+ tico/passes/decompose_fake_quantize.py,sha256=Y29HncMwgRffwmzl5-iua8MhWLd9zEAUWqlNhGhmoHg,5368
73
+ tico/passes/decompose_fake_quantize_tensor_qparams.py,sha256=lHFp42OZpQS5bZ5o2GLZX10RozCl7JoOMGgkoC55j10,14006
74
+ tico/passes/decompose_group_norm.py,sha256=rtjv3PrcFTtZ68uCsmE2LibnWaQU-e8NdKkblL4LqxE,10197
75
+ tico/passes/decompose_grouped_conv2d.py,sha256=n2qv320akL1ju33ucZ6lU1cKEAaj0NI8YZ5CrUnkRLM,8512
76
+ tico/passes/decompose_slice_scatter.py,sha256=xqMHKhW2595YoAeubKZ4jRhYW4TQ09EXPgLNgODqXG8,5653
76
77
  tico/passes/extract_dtype_kwargs.py,sha256=ObpsaFlrTPYQw2hJ7UsC5CocyAtBkT_bMtzkMUqAyKc,4333
77
78
  tico/passes/fill_meta_val.py,sha256=Xbam6Aq90ZfWItZw1dgLIwH_q8RCiU5JodKNqkj-ink,1797
78
- tico/passes/fuse_leading_unsqueeze_reshape.py,sha256=Y5732qd0MilMQsnPiw--lxTy2lywomKVNoFt2212lLQ,4150
79
+ tico/passes/fuse_leading_unsqueeze_reshape.py,sha256=88jwTP35yRyXOk9xdO6YW2OEfdKAws3KFRT16WQz0RI,4291
79
80
  tico/passes/fuse_redundant_reshape_to_mean.py,sha256=2SEZ0TfXsmUkuqUdNtS_mQzLd49su5TsQViCLMGL4f4,3691
80
81
  tico/passes/legalize_causal_mask_value.py,sha256=xKdFwwMaSFCSQpSk8xISOAqFpZ1jIhgbBIqf7KTSGuk,4017
81
- tico/passes/legalize_predefined_layout_operators.py,sha256=4AAqYvwMvtuAQ8mdpTJI6oIgcBL_iSMzB0pmcvJ6i3Y,15887
82
- tico/passes/lower_pow2_to_mul.py,sha256=gFuVw3xa2WwXUrxMcqH_Y4Vb8vInuUIGjrpAC7ia9ig,2342
83
- tico/passes/lower_to_resize_nearest_neighbor.py,sha256=Cy90yIrZt58L1Hh7k4-uUfclNBBpNoJaQQwL7a5A8wo,8840
84
- tico/passes/lower_to_slice.py,sha256=iYDE_xmiIFfURE5ZLfZICEwWRqwPWXLLL4y5Dbc0rb8,7023
82
+ tico/passes/legalize_predefined_layout_operators.py,sha256=oUwog9TGHT86MMy-T_ymTh5pQN0srSefiAA6CNiWVgA,15826
83
+ tico/passes/lower_pow2_to_mul.py,sha256=nfJXa9ZTZMiLg6ownSyvkM4KF2z9tZW34Q3CCWI_vmQ,2402
84
+ tico/passes/lower_to_resize_nearest_neighbor.py,sha256=N6F56Of8Aiv-KIiYLHnh33WX72W60ZVQSBEYWHdYqNQ,9005
85
+ tico/passes/lower_to_slice.py,sha256=0qAX3WzZdyMFDW4DiO9b5JFXd4rL1-0doBT6lJvaw_I,7260
85
86
  tico/passes/merge_consecutive_cat.py,sha256=BYmiU170DsrHQMj7gMe7U6ZpndrX-S4OpvJweDdspec,2701
86
87
  tico/passes/ops.py,sha256=XzaKC_FpsfJLpnU4JlL9X-HVarWKm8cX0iiRgx9bMOs,2909
87
88
  tico/passes/remove_nop.py,sha256=Hf91p_EJAOC6DyWNthash0_UWtEcNc_M7znamQfYQ5Y,2686
88
89
  tico/passes/remove_redundant_assert_nodes.py,sha256=IONd3xBy6I8tH6_Y1eN3_eCHH7WTC8soBgjXzOju9cQ,1612
89
90
  tico/passes/remove_redundant_expand.py,sha256=5SIqN7eIIcqF68tlrB31n1482jSBSBOgKb1wddLX6lw,2197
90
- tico/passes/remove_redundant_permute.py,sha256=ovrEpB9x_Pjdfq6N35cDyURjP8ZBlAqgFiitPxTvUlI,4204
91
- tico/passes/remove_redundant_reshape.py,sha256=MMd9NWf9iTNIWqizFjC7ykA-JipmMMLCfkrGinSsfno,16227
91
+ tico/passes/remove_redundant_permute.py,sha256=98UsaZzFZdQzEEAR1pIzRisAf6hgfXLa88aayjalt3E,4292
92
+ tico/passes/remove_redundant_reshape.py,sha256=inp5fMNXM675Rj29wmHn5xoPmOqbiDkgMmmsqguCeMk,16308
92
93
  tico/passes/remove_redundant_slice.py,sha256=Iv7TbB39fktNb4eq0VdyZnwxL_VsKLJ90diMmaf3kZk,2087
93
- tico/passes/remove_redundant_to_copy.py,sha256=JMDnca2f9OE58ejdMEoZ1O0l-rGAc5T91BT-dFk7FGk,3114
94
- tico/passes/restore_linear.py,sha256=UMMHdLmRGq9bfJx_0L9lL2UQBd51PGNP0WywO8KdrDM,4066
95
- tico/passes/segment_index_select.py,sha256=TmkuXPhagCaj6eo_odxIThCsoB-9r4Kkqzt1ATDukpQ,5075
94
+ tico/passes/remove_redundant_to_copy.py,sha256=tKy4XKkO2l33fMxVPQ_iFkUeFvP15kbPvzPPhT_g0c8,3292
95
+ tico/passes/restore_linear.py,sha256=xGJdNb-1CrkOKS9BnLbcblkZc6P2vVjKIi-7lRcs7Bk,4111
96
+ tico/passes/segment_index_select.py,sha256=jn0M2sdUcDyjrvxfvM40wt5644iPQMY_ud0uvptXN84,5187
96
97
  tico/serialize/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
97
98
  tico/serialize/circle_graph.py,sha256=_u0vFDhPdOhEkucmaEhqILo13NKbjyVemPYFfC5YCZg,11619
98
99
  tico/serialize/circle_mapping.py,sha256=C9C3ORACQOdvBdnt5KRzlT8zao_TvzQklIxH794OhP0,5719
@@ -178,11 +179,11 @@ tico/serialize/operators/op_view.py,sha256=5EMww-ve17Vm9XPuV03Tn7vJsjpU2J8U4d_FO
178
179
  tico/serialize/operators/op_where.py,sha256=doE81GSwygrPBm3JIfN9w7kKXxeIYKxgk0eoY22QIcg,2845
179
180
  tico/serialize/operators/utils.py,sha256=lXGpEJW1h8U_-gfc6EWjvvSiq3yJ9P-v1v3EMRT_pSk,2954
180
181
  tico/utils/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
181
- tico/utils/convert.py,sha256=nbpBJue9_ezb8Dj9L9dWcNeVlZd0soGJu_fvrL6-c5c,11810
182
+ tico/utils/convert.py,sha256=gh_EcWwjZZ5IyQKtazfiZ1_FvAMXe0leu5nPN-0OcHg,11919
182
183
  tico/utils/define.py,sha256=Ypgp7YffM4pgPl4Zh6TmogSn1OxGBMRw_e09qYGflZk,1467
183
184
  tico/utils/diff_graph.py,sha256=_eDGGPDPYQD4b--MXX0DLoVgSt_wLfNPt47UlolLLR4,5272
184
185
  tico/utils/errors.py,sha256=f3csJjgbXG9W1aHhqEcou008Aor19W57X8oT5Hx8w1M,954
185
- tico/utils/graph.py,sha256=qQIz78XfJK1rrGyq00f-ArqxACItiS-oHbN2nE4xQrY,7653
186
+ tico/utils/graph.py,sha256=Y6aODsnc_-9l61oanknb7K1jqJ8B35iPypOKkM0Qkk0,9149
186
187
  tico/utils/logging.py,sha256=IlbBWscsaHidI0dNqro1HEXAbIcbkR3BD5ukLy2m95k,1286
187
188
  tico/utils/model.py,sha256=Uqc92AnJXQ2pbvctS2z2F3Ku3yNrwXZ9O33hZVis7is,1250
188
189
  tico/utils/padding.py,sha256=GGO27VbaOvtaMYLDrSaKv7uxjeet566aMJD0PyYeMvQ,1484
@@ -196,9 +197,9 @@ tico/utils/mx/__init__.py,sha256=IO6FP_xYbGy0dW0HL26GXD3ouxARaxCK7bz9dn4blPQ,26
196
197
  tico/utils/mx/elemwise_ops.py,sha256=V6glyAHsVR1joqpsgnNytatCD_ew92xNWZ19UFDoMTA,10281
197
198
  tico/utils/mx/formats.py,sha256=uzNWyu-1onUlwQfX5cZ6fZSUfHMRqorper7_T1k3jfk,3404
198
199
  tico/utils/mx/mx_ops.py,sha256=RcfUTYVi-wilGB2sC35OeARdwDqnixv7dG5iyZ-fQT8,8555
199
- tico-0.1.0.dev250616.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
200
- tico-0.1.0.dev250616.dist-info/METADATA,sha256=gEVJ9bVRXMqIw5UOqPGS-j3CV7dkmpuFC35cZxg3sBk,8846
201
- tico-0.1.0.dev250616.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
202
- tico-0.1.0.dev250616.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
203
- tico-0.1.0.dev250616.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
204
- tico-0.1.0.dev250616.dist-info/RECORD,,
200
+ tico-0.1.0.dev250618.dist-info/LICENSE,sha256=kp4JLII7bzRhPb0CPD5XTDZMh22BQ7h3k3B7t8TiSbw,12644
201
+ tico-0.1.0.dev250618.dist-info/METADATA,sha256=3mRIOovwnOiIsT7YPmmjWd_UPnZYKk08Kz-rvj5E7gE,8846
202
+ tico-0.1.0.dev250618.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
203
+ tico-0.1.0.dev250618.dist-info/entry_points.txt,sha256=kBKYSS_IYrSXmUYevmmepqIVPScq5vF8ulQRu3I_Zf0,59
204
+ tico-0.1.0.dev250618.dist-info/top_level.txt,sha256=oqs7UPoNSKZEwqsX8B-KAWdQwfAa7i60pbxW_Jk7P3w,5
205
+ tico-0.1.0.dev250618.dist-info/RECORD,,