code: def create(
      shape: Tuple[sint, ...],
      strides: Optional[Tuple[sint, ...]] = None,
      offset: sint = 0,
      mask: Optional[Tuple[Tuple[sint, sint], ...]] = None,
  ):
      strides = (
          canonicalize_strides(shape, strides)
          if strides
          else strides_for_shape(shape)
      )
      contiguous = (
          offset == 0
          and mask is None
          and strides == strides_for_shape(shape)
      )
      return View(shape, strides, offset, mask, contiguous)
  
imports: from __future__ import annotations
  import functools, operator, itertools
  from dataclasses import dataclass
  from typing import Tuple, List, Optional, Dict, cast
  from tinygrad.helpers import prod, all_int, argsort
  from tinygrad.shape.symbolic import Node, NumNode, Variable, Set, sint
label_desc: Use image node_id 2 for calling the View obj's underlying member method code with example usage: obj.create(shape, strides, offset, mask) and returns: View