The class to Wrap `trt.DimsExprs` to support more pythonic methods.
| 175 | |
| 176 | |
| 177 | class ShapeExpr: |
| 178 | """The class to Wrap `trt.DimsExprs` to support more pythonic methods.""" |
| 179 | |
| 180 | def __init__( |
| 181 | self, |
| 182 | dims: Union[Sequence[trt.IDimensionExpr], Sequence[int], Sequence[type[None]]], |
| 183 | exprBuilder: Union[trt.IExprBuilder, type[None]], |
| 184 | ): |
| 185 | self.exprBuilder = exprBuilder |
| 186 | self.dims = dims |
| 187 | |
| 188 | @property |
| 189 | def dims(self): |
| 190 | return self._dims |
| 191 | |
| 192 | @dims.setter |
| 193 | def dims( |
| 194 | self, |
| 195 | dims: Sequence[Union["DimensionExpr", trt.IDimensionExpr, int, Type[None]]], |
| 196 | ): |
| 197 | if dims is not None: |
| 198 | self._dims = [ |
| 199 | DimensionExpr(make_expr(self.exprBuilder, i), self.exprBuilder) for i in dims |
| 200 | ] |
| 201 | else: |
| 202 | self._dims = None |
| 203 | |
| 204 | def __getitem__(self, index: int): |
| 205 | if self._dims is not None: |
| 206 | return self._dims[index] |
| 207 | else: |
| 208 | return DimensionExpr(None, self.exprBuilder) |
| 209 | |
| 210 | def __setitem__( |
| 211 | self, |
| 212 | index: int, |
| 213 | value: Union["DimensionExpr", trt.IDimensionExpr, int, Type[None]], |
| 214 | ): |
| 215 | if self._dims is None: |
| 216 | return |
| 217 | assert index < len(self._dims) |
| 218 | value = DimensionExpr(make_expr(self.exprBuilder, value), self.exprBuilder) |
| 219 | self._dims[index] = value |
| 220 | |
| 221 | def __len__(self): |
| 222 | if self._dims is None: |
| 223 | return 0 |
| 224 | else: |
| 225 | return len(self._dims) |
| 226 | |
| 227 | def to_trt(self) -> trt.DimsExprs: |
| 228 | return trt.DimsExprs([i.expr for i in self.dims]) |
| 229 | |
| 230 | |
| 231 | class SymTensor: |
no outgoing calls
no test coverage detected