Skip to content

Commit 4592ebf

Browse files
fix docs generation
1 parent 1256929 commit 4592ebf

2 files changed

Lines changed: 36 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: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -246,46 +246,41 @@ 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__(
250+
cls, *, heartbeat: float | int | None, sporadic_heartbeat: float | int | None
251+
) -> Self:
253252
"""
254253
: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-
"""
254+
periodically send the last published Sample's sequence number to allow last sample recovery.
255+
`AdvancedSubscriber can only recover the last sample with the `heartbeat` option enabled.
256+
This option can not be enabled simultaneously with `sporadic_heartbeat`.
258257
259-
@overload
260-
def __new__(cls, sporadic_heartbeat: float | int) -> Self:
261-
"""
262258
:param sporadic_heartbeat: period in seconds, allow last sample miss detection through sporadic heartbeat;
263259
each period, the last published Sample's sequence number is sent with `CongestionControl.Block` but only if
264260
it has changed since the last period.
261+
`AdvancedSubscriber can only recover the last sample with the `heartbeat` option enabled.
262+
This option can not be enabled simultaneously with `heartbeat`.
265263
"""
266264

267265
@_unstable
268266
@final
269267
class RecoveryConfig:
270-
@overload
271-
def __new__(cls) -> Self: ...
272-
@overload
273-
def __new__(cls, *, periodic_queries: float | int) -> Self:
268+
def __new__(
269+
cls, *, periodic_queries: float | int | None, heartbeat: Literal[True] | None
270+
) -> Self:
274271
"""
275272
:param periodic_queries: enable periodic queries for not yet received Samples and specify their period;
276273
it allows retrieving the last Sample(s) if the last Sample(s) is/are lost,
277274
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-
"""
275+
with a period smaller or equal to this period.
276+
Retransmission can only be achieved by `AdvancedPublisher` that enable `cache` and `sample_miss_detection`.
277+
This option can not be enabled simultaneously with `heartbeat`.
281278
282-
@overload
283-
def __new__(cls, *, heartbeat: Literal[True]) -> Self:
284-
"""
285279
: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`
280+
it allows receiving the last published Sample's sequence number and check for misses.
281+
Heartbeat subscriber must be paired with `AdvancedPublishers` that enable `cache` and
282+
`sample_miss_detection` with `heartbeat` or `sporadic_heartbeat`.
283+
This option can not be enabled simultaneously with `periodic_queries`.
289284
"""
290285

291286
@_unstable
@@ -302,7 +297,6 @@ class RepliesConfig:
302297
@_unstable
303298
@final
304299
class SampleMissListener(Generic[_H]):
305-
@property
306300
def undeclare(self): ...
307301
@overload
308302
def try_recv(self: SampleMissListener[Handler[Miss]]) -> Miss | None: ...

0 commit comments

Comments
 (0)