Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion megstore/indexed/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
SliceAccessible,
T,
smart_limited_seekable_open,
validate_index,
)

INDEX_FILE_FORMAT = "Q"
Expand All @@ -48,6 +47,21 @@
# data through recorded file pointer positions


def validate_index(handler, index: int) -> int:
length = len(handler)
if index >= length or index + length < 0:
if hasattr(handler, "name"):
name = handler.name
else:
name = repr(handler)
raise IndexError(
"index out of range: %r, index: %d, length: %d" % (name, index, length)
)
if index < 0:
index += length
return index


class BaseIndexedReader(BaseReader[T], ABC):
"""Random reading for files

Expand Down
46 changes: 0 additions & 46 deletions megstore/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,37 +57,6 @@ def __len__(self) -> int:
return self.count()


class Readable(Generic[VT], ABC):
@property
def _offset(self) -> int:
return getattr(self, "__offset__", 0)

@_offset.setter
def _offset(self, value: int):
setattr(self, "__offset__", value)

def tell(self) -> int:
return self._offset

@abstractmethod
def _read(self) -> VT:
""":raises: EOFError when nothing left"""

def read(self) -> VT:
data = self._read()
self._offset += 1
return data

def __next__(self) -> VT:
try:
return self.read()
except EOFError:
raise StopIteration

def __iter__(self) -> Iterator[VT]:
return self


def make_slice(index: range) -> slice:
stop = None if index.stop == -1 else index.stop
return slice(index.start, stop, index.step)
Expand Down Expand Up @@ -246,18 +215,3 @@ def _close(self):


smart_limited_seekable_open = partial(smart_open, limited_seekable=True)


def validate_index(handler, index: int) -> int:
length = len(handler)
if index >= length or index + length < 0:
if hasattr(handler, "name"):
name = handler.name
else:
name = repr(handler)
raise IndexError(
"index out of range: %r, index: %d, length: %d" % (name, index, length)
)
if index < 0:
index += length
return index
Loading
Loading