torch.UnpackShape
export type UnpackShape<S extends Shape, Pattern extends string = '* ...'> =
SplitSpace<Pattern> extends infer Tokens extends string[]
? CountBeforeStar<Tokens> extends infer Before extends number
? TakeFirst<S, Before> extends infer BeforeShape extends readonly number[]
? DropFirst<S, Add<Before, 1>> extends infer AfterShape extends readonly number[]
? readonly [...BeforeShape, ...AfterShape]
: S extends readonly [number, ...infer Rest extends number[]]
? Rest
: DynamicShape
: S extends readonly [number, ...infer Rest extends number[]]
? Rest
: DynamicShape
: S extends readonly [number, ...infer Rest extends number[]]
? Rest
: DynamicShape
: S extends readonly [number, ...infer Rest extends number[]]
? Rest
: DynamicShape;Sextends ShapePatternextends stringCompute unpack output shape based on pattern. Removes the dimension at the * position.