From f7a37a3b200fa0193c91419764382bb2ec0ebf51 Mon Sep 17 00:00:00 2001
From: Martin Larralde <martin.larralde@embl.de>
Date: Wed, 9 Oct 2024 01:38:25 +0200
Subject: [PATCH] Overload `SequenceFile.read_block` with concrete
 `SequenceBlock` types

---
 pyhmmer/easel.pyi | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/pyhmmer/easel.pyi b/pyhmmer/easel.pyi
index ddebcb35..ed2bd60e 100644
--- a/pyhmmer/easel.pyi
+++ b/pyhmmer/easel.pyi
@@ -583,7 +583,7 @@ class DigitalSequence(Sequence):
 # --- Sequence block ---------------------------------------------------------
 
 S = typing.TypeVar("S", TextSequence, DigitalSequence)
-B = typing.TypeVar("B")
+B = typing.TypeVar("B", SequenceBlock[TextSequence], SequenceBlock[DigitalSequence])
 
 class SequenceBlock(typing.MutableSequence[S], typing.Generic[S]):
     def __len__(self) -> int: ...
@@ -678,6 +678,19 @@ class SequenceFile(typing.Generic[S], typing.ContextManager[SequenceFile[S]], ty
     def readinto(
         self, seq: Sequence, skip_info: bool = False, skip_sequence: bool = False
     ) -> typing.Optional[S]: ...
+    @typing.overload
+    def read_block(
+        self: SequenceFile[TextSequence],
+        sequences: typing.Optional[int] = None,
+        residues: typing.Optional[int] = None,
+    ) -> TextSequenceBlock: ... 
+    @typing.overload
+    def read_block(
+        self: SequenceFile[DigitalSequence],
+        sequences: typing.Optional[int] = None,
+        residues: typing.Optional[int] = None,
+    ) -> DigitalSequenceBlock: ...
+    @typing.overload
     def read_block(
         self,
         sequences: typing.Optional[int] = None,
-- 
GitLab