code: def from_slice(cls, coord):
          
          if coord.step is not None:
              raise NotImplementedError('no slice step support')
          elif coord.start is not None and coord.stop is not None:
              return DoubleSlice.from_slice(coord)
          elif coord.start is not None:
              xcol, xrow, col, row = cls._parse(coord.start)
              if xcol is not None:
                  return StartCell(cls._cint(xcol), cls._rint(xrow))
              elif col is not None:
                  return StartCol(cls._cint(col))
              return StartRow(cls._rint(row))
          elif coord.stop is not None:
              xcol, xrow, col, row = cls._parse(coord.stop)
              if xcol is not None:
                  return StopCell(cls._cint(xcol) + 1, cls._rint(xrow) + 1)
              elif col is not None:
                  return StopCol(cls._cint(col) + 1)
              return StopRow(cls._rint(row) + 1)
          return cls()
docs: Return a value fetching callable given a slice of coordinate strings.