code: def set_tile(self, codepoint: int, tile: np.array) -> None:
          
          tile = np.ascontiguousarray(tile, dtype=np.uint8)
          if tile.shape == self.tile_shape:
              full_tile = np.empty(self.tile_shape + (4,), dtype=np.uint8)
              full_tile[:, :, :3] = 255
              full_tile[:, :, 3] = tile
              return self.set_tile(codepoint, full_tile)
          required = self.tile_shape + (4,)
          if tile.shape != required:
              raise ValueError(
                  "Tile shape must be %r or %r, got %r."
                  % (required, self.tile_shape, tile.shape)
              )
          lib.TCOD_tileset_set_tile_(
              self._tileset_p,
              codepoint,
              ffi.cast("struct TCOD_ColorRGBA*", tile.ctypes.data),
          )
docs: Upload a tile into this array.
  
          The tile can be in 32-bit color (height, width, rgba), or grey-scale
          (height, width).  The tile should have a dtype of ``np.uint8``.
  
          This data may need to be sent to graphics card memory, this is a slow
          operation.