Skip to content

Commit 8e879ad

Browse files
fix docs generation
1 parent 1256929 commit 8e879ad

2 files changed

Lines changed: 32 additions & 38 deletions

File tree

docs/stubs_to_sources.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
PACKAGE = (Path(__file__) / "../../zenoh").resolve()
3030
__INIT__ = PACKAGE / "__init__.py"
31+
EXT = PACKAGE / "ext.py"
3132

3233

3334
def _unstable(item):
@@ -98,23 +99,26 @@ def visit_FunctionDef(self, node: ast.FunctionDef):
9899

99100

100101
def main():
101-
# remove __init__.pyi
102-
__INIT__.unlink()
102+
fnames = [__INIT__, EXT]
103+
for fname in fnames:
104+
# remove *.py
105+
fname.unlink()
103106
# rename stubs
104107
for entry in PACKAGE.glob("*.pyi"):
105108
entry.rename(PACKAGE / f"{entry.stem}.py")
106-
# read stub code
107-
with open(__INIT__) as f:
108-
stub: ast.Module = ast.parse(f.read())
109-
# replace _unstable
110-
for i, stmt in enumerate(stub.body):
111-
if isinstance(stmt, ast.FunctionDef) and stmt.name == "_unstable":
112-
stub.body[i] = ast.parse(inspect.getsource(_unstable))
113-
# remove overload
114-
stub = RemoveOverload().visit(stub)
115-
# write modified code
116-
with open(__INIT__, "w") as f:
117-
f.write(ast.unparse(stub))
109+
for fname in fnames:
110+
# read stub code
111+
with open(fname) as f:
112+
stub: ast.Module = ast.parse(f.read())
113+
# replace _unstable
114+
for i, stmt in enumerate(stub.body):
115+
if isinstance(stmt, ast.FunctionDef) and stmt.name == "_unstable":
116+
stub.body[i] = ast.parse(inspect.getsource(_unstable))
117+
# remove overload
118+
stub = RemoveOverload().visit(stub)
119+
# write modified code
120+
with open(fname, "w") as f:
121+
f.write(ast.unparse(stub))
118122

119123

120124
if __name__ == "__main__":

zenoh/ext.pyi

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -246,46 +246,37 @@ class Miss:
246246
@_unstable
247247
@final
248248
class MissDetectionConfig:
249-
@overload
250-
def __new__(cls) -> Self: ...
251-
@overload
252-
def __new__(cls, *, heartbeat: float | int) -> Self:
249+
def __new__(cls, *, heartbeat: float | int | None, sporadic_heartbeat: float | int | None) -> Self:
253250
"""
254251
:param heartbeat: period in seconds, allow last sample miss detection through periodic heartbeat;
255-
periodically send the last published Sample's sequence number to allow last sample recovery
256-
`AdvancedSubscriber`(crate::AdvancedSubscriber) can recover the last sample with the `heartbeat` option
257-
"""
252+
periodically send the last published Sample's sequence number to allow last sample recovery.
253+
`AdvancedSubscriber can only recover the last sample with the `heartbeat` option enabled.
254+
This option can not be set simultaneously with `sporadic_heartbeat`.
258255
259-
@overload
260-
def __new__(cls, sporadic_heartbeat: float | int) -> Self:
261-
"""
262256
:param sporadic_heartbeat: period in seconds, allow last sample miss detection through sporadic heartbeat;
263257
each period, the last published Sample's sequence number is sent with `CongestionControl.Block` but only if
264258
it has changed since the last period.
259+
`AdvancedSubscriber can only recover the last sample with the `heartbeat` option enabled.
260+
This option can not be set simultaneously with `heartbeat`.
265261
"""
266262

267263
@_unstable
268264
@final
269265
class RecoveryConfig:
270-
@overload
271-
def __new__(cls) -> Self: ...
272-
@overload
273-
def __new__(cls, *, periodic_queries: float | int) -> Self:
266+
def __new__(cls, *, periodic_queries: float | int | None, heartbeat: Literal[True] | None) -> Self:
274267
"""
275268
:param periodic_queries: enable periodic queries for not yet received Samples and specify their period;
276269
it allows retrieving the last Sample(s) if the last Sample(s) is/are lost,
277270
so it is useful for sporadic publications but useless for periodic publications
278-
with a period smaller or equal to this period
279-
retransmission can only be achieved by `AdvancedPublisher` that enable `cache` and `sample_miss_detection`
280-
"""
271+
with a period smaller or equal to this period.
272+
Retransmission can only be achieved by `AdvancedPublisher` that enable `cache` and `sample_miss_detection`.
273+
This option can not be set simultaneously with `heartbeat`.
281274
282-
@overload
283-
def __new__(cls, *, heartbeat: Literal[True]) -> Self:
284-
"""
285275
:param heartbeat: subscribe to heartbeats of `AdvancedPublisher`;
286-
it allows receiving the last published Sample's sequence number and check for misses
287-
heartbeat subscriber must be paired with `AdvancedPublishers` that enable `cache` and
288-
`sample_miss_detection` with `heartbeat` or `sporadic_heartbeat`
276+
it allows receiving the last published Sample's sequence number and check for misses.
277+
Heartbeat subscriber must be paired with `AdvancedPublishers` that enable `cache` and
278+
`sample_miss_detection` with `heartbeat` or `sporadic_heartbeat`.
279+
This option can not be set simultaneously with `periodic_queries`.
289280
"""
290281

291282
@_unstable
@@ -302,7 +293,6 @@ class RepliesConfig:
302293
@_unstable
303294
@final
304295
class SampleMissListener(Generic[_H]):
305-
@property
306296
def undeclare(self): ...
307297
@overload
308298
def try_recv(self: SampleMissListener[Handler[Miss]]) -> Miss | None: ...

0 commit comments

Comments
 (0)