Skip to content

Commit 288dc8d

Browse files
feat: add more
1 parent c3e3414 commit 288dc8d

File tree

1 file changed

+159
-1
lines changed

1 file changed

+159
-1
lines changed

capnp/__init__.pyi

Lines changed: 159 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1098,6 +1098,62 @@ class _MessageReader:
10981098
"""
10991099
...
11001100

1101+
class _PackedFdMessageReader(_MessageReader):
1102+
"""Read a Cap'n Proto message from a file descriptor in packed format.
1103+
1104+
This class reads messages that were written with _write_packed_message_to_fd.
1105+
"""
1106+
1107+
def __init__(
1108+
self,
1109+
fd: int,
1110+
traversal_limit_in_words: int | None = None,
1111+
nesting_limit: int | None = None,
1112+
) -> None:
1113+
"""Create a reader from a file descriptor.
1114+
1115+
Args:
1116+
fd: File descriptor to read from
1117+
traversal_limit_in_words: Optional limit on pointer dereferences
1118+
nesting_limit: Optional limit on nesting depth
1119+
"""
1120+
...
1121+
1122+
class _StreamFdMessageReader(_MessageReader):
1123+
"""Read a Cap'n Proto message from a file descriptor in stream format.
1124+
1125+
This class reads messages that were written with _write_message_to_fd.
1126+
"""
1127+
1128+
def __init__(
1129+
self,
1130+
fd: int,
1131+
traversal_limit_in_words: int | None = None,
1132+
nesting_limit: int | None = None,
1133+
) -> None:
1134+
"""Create a reader from a file descriptor.
1135+
1136+
Args:
1137+
fd: File descriptor to read from
1138+
traversal_limit_in_words: Optional limit on pointer dereferences
1139+
nesting_limit: Optional limit on nesting depth
1140+
"""
1141+
...
1142+
1143+
class _PyCustomMessageBuilder(_MessageBuilder):
1144+
"""Custom message builder with user-provided segments.
1145+
1146+
This allows building messages with custom memory management.
1147+
"""
1148+
1149+
def __init__(self, segments: list[bytes]) -> None:
1150+
"""Create a message builder from pre-allocated segments.
1151+
1152+
Args:
1153+
segments: List of byte arrays for message segments
1154+
"""
1155+
...
1156+
11011157
class GeneratedModule(ModuleType):
11021158
schema: StructSchema
11031159
__file__: str | None
@@ -1232,6 +1288,49 @@ def read_multiple_bytes_packed(
12321288
"""
12331289
...
12341290

1291+
def _write_message_to_fd(fd: int, message: _MessageBuilder) -> None:
1292+
"""Write a Cap'n Proto message to a file descriptor.
1293+
1294+
Writes the message in unpacked format with a segment table header.
1295+
1296+
Args:
1297+
fd: File descriptor to write to
1298+
message: Message to write
1299+
"""
1300+
...
1301+
1302+
def _write_packed_message_to_fd(fd: int, message: _MessageBuilder) -> None:
1303+
"""Write a Cap'n Proto message to a file descriptor in packed format.
1304+
1305+
Writes the message using Cap'n Proto's packing algorithm which compresses
1306+
runs of zero bytes.
1307+
1308+
Args:
1309+
fd: File descriptor to write to
1310+
message: Message to write
1311+
"""
1312+
...
1313+
1314+
def fill_context(method_name: str, context: _CallContext, returned_data: Any) -> None:
1315+
"""Internal helper for filling RPC call context with returned data.
1316+
1317+
Args:
1318+
method_name: Name of the RPC method
1319+
context: Call context to fill
1320+
returned_data: Data to return to the caller
1321+
"""
1322+
...
1323+
1324+
def void_task_done_callback(method_name: str, fulfiller: Any, task: Any) -> None:
1325+
"""Internal callback for void RPC methods when async task completes.
1326+
1327+
Args:
1328+
method_name: Name of the RPC method
1329+
fulfiller: Promise fulfiller to complete
1330+
task: Async task that completed
1331+
"""
1332+
...
1333+
12351334
class _CapnpLibCapnpModule:
12361335
"""The capnp.lib.capnp submodule containing implementation classes.
12371336
@@ -1269,7 +1368,10 @@ class _CapnpLibCapnpModule:
12691368
# Message types
12701369
_MessageBuilder: type[_MessageBuilder]
12711370
_MallocMessageBuilder: type[_MallocMessageBuilder]
1371+
_PyCustomMessageBuilder: type[_PyCustomMessageBuilder]
12721372
_MessageReader: type[_MessageReader]
1373+
_PackedFdMessageReader: type[_PackedFdMessageReader]
1374+
_StreamFdMessageReader: type[_StreamFdMessageReader]
12731375

12741376
# Exception types
12751377
KjException: type[KjException]
@@ -1283,6 +1385,17 @@ class _CapnpLibCapnpModule:
12831385
TwoPartyServer: type[TwoPartyServer]
12841386
AsyncIoStream: type[AsyncIoStream]
12851387

1388+
# Functions
1389+
_write_message_to_fd: Callable[[int, _MessageBuilder], None]
1390+
_write_packed_message_to_fd: Callable[[int, _MessageBuilder], None]
1391+
read_multiple_bytes_packed: Callable[
1392+
[bytes, int | None, int | None], Iterator[_DynamicStructReader]
1393+
]
1394+
1395+
# Module-level attributes
1396+
_global_schema_parser: SchemaParser | None
1397+
"""Global schema parser instance (may be None)."""
1398+
12861399
class _CapnpLibModule:
12871400
"""The capnp.lib submodule."""
12881401

@@ -1298,6 +1411,42 @@ class _CapnpLib:
12981411

12991412
lib: _CapnpLib
13001413

1414+
# Version information
1415+
__version__: str
1416+
"""Version string for pycapnp (e.g. '2.2.1')."""
1417+
1418+
class _VersionModule:
1419+
"""The capnp.version module containing version information."""
1420+
1421+
version: str
1422+
"""Version string for pycapnp (e.g. '2.2.1')."""
1423+
1424+
short_version: str
1425+
"""Short version string for pycapnp."""
1426+
1427+
LIBCAPNP_VERSION: int
1428+
"""Version number of the underlying libcapnp library (e.g. 1002000)."""
1429+
1430+
LIBCAPNP_VERSION_MAJOR: int
1431+
"""Major version of libcapnp."""
1432+
1433+
LIBCAPNP_VERSION_MINOR: int
1434+
"""Minor version of libcapnp."""
1435+
1436+
LIBCAPNP_VERSION_MICRO: int
1437+
"""Micro version of libcapnp."""
1438+
1439+
version: _VersionModule
1440+
"""Module containing version information."""
1441+
1442+
# Internal/private module attributes
1443+
_global_schema_parser: SchemaParser | None
1444+
"""Global schema parser instance used by import hooks and pickling (may be None).
1445+
1446+
Note: This is actually defined in capnp.lib.capnp but referenced at module level
1447+
in some internal code like pickle_helper.py.
1448+
"""
1449+
13011450
class _SchemaType:
13021451
"""Internal schema type representation.
13031452
@@ -1626,20 +1775,29 @@ __all__ = [
16261775
# Message types
16271776
"_MessageBuilder",
16281777
"_MallocMessageBuilder",
1778+
"_PyCustomMessageBuilder",
16291779
"_MessageReader",
1780+
"_PackedFdMessageReader",
1781+
"_StreamFdMessageReader",
16301782
# Exceptions
16311783
"KjException",
16321784
# Functions
16331785
"add_import_hook",
16341786
"cleanup_global_schema_parser",
16351787
"deregister_all_types",
1788+
"fill_context",
16361789
"kj_loop",
16371790
"load",
16381791
"read_multiple_bytes_packed",
16391792
"register_type",
16401793
"remove_import_hook",
16411794
"run",
1642-
# Modules
1795+
"void_task_done_callback",
1796+
"_write_message_to_fd",
1797+
"_write_packed_message_to_fd",
1798+
# Modules and version
16431799
"lib",
16441800
"types",
1801+
"version",
1802+
"__version__",
16451803
]

0 commit comments

Comments
 (0)