From 38bd1a30f708565c187e254152f7e451dbbea5c5 Mon Sep 17 00:00:00 2001 From: Daniel Pressler Date: Thu, 11 Jun 2026 07:21:55 -0700 Subject: [PATCH] Bugfix: SubFile.seek for unsignedinteger --- CHANGELOG.md | 3 +++ jbpy/core.py | 10 +++++----- test/test_core.py | 6 ++++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ff2ff7..cf4b800 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed +- `SubFile.seek` for some integer-like scalar types (e.g. `numpy.unsignedinteger`) + ## [0.6.0] - 2026-02-03 diff --git a/jbpy/core.py b/jbpy/core.py index 5dc2d9a..cb37f32 100644 --- a/jbpy/core.py +++ b/jbpy/core.py @@ -61,8 +61,8 @@ class SubFile: def __init__(self, file: Any, start: int, length: int): self._file = file - self._start = start - self._length = length + self._start = int(start) + self._length = int(length) self._pos = 0 # position within the subfile def seek(self, offset: int, whence: int = 0) -> int: @@ -82,11 +82,11 @@ def seek(self, offset: int, whence: int = 0) -> int: Current offset in the SubFile """ if whence == 0: - new_pos = offset + new_pos = int(offset) elif whence == 1: - new_pos = self._pos + offset + new_pos = self._pos + int(offset) elif whence == 2: - new_pos = self._length + offset + new_pos = self._length + int(offset) else: raise ValueError(f"whence value {whence} unsupported") diff --git a/test/test_core.py b/test/test_core.py index e0d8921..8f7b277 100644 --- a/test/test_core.py +++ b/test/test_core.py @@ -9,6 +9,7 @@ import string import tempfile +import numpy as np import pytest import jbpy.core @@ -784,6 +785,11 @@ def test_subfile(tmp_path): subfile.seek(length + 100) assert subfile.read() == b"" + # seeking works with int-like + subfile.seek(np.uint8(24), os.SEEK_SET) + subfile.seek(-8, os.SEEK_CUR) + assert subfile.tell() == 16 + assert subfile.readable()