Skip to content

Update docstrings for TimeInt and TimeRangeBoundary #9191

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions rerun_py/rerun_sdk/rerun/datatypes/time_int_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,31 @@ def __init__(self: Any, *, seq: int | None = None, seconds: float | None = None,
"""
Create a new instance of the TimeInt datatype.

Exactly one of `seq`, `seconds`, or `nanos` must be provided.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should be able to roll the @overload stuff on __init__ here too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather not take the time to do that now. That's an orthogonal improvement


Parameters
----------
seq:
Time as a sequence number. Mutually exclusive with seconds and nanos.
Time as a sequence number.

seconds:
Time in seconds. Mutually exclusive with seq and nanos.
Time in seconds.

Interpreted either as a duration or time since unix epoch (depending on timeline type).

nanos:
Time in nanoseconds. Mutually exclusive with seq and seconds.
Time in nanoseconds.

Interpreted either as a duration or time since unix epoch (depending on timeline type).

"""

if sum(x is not None for x in (seq, seconds, nanos)) != 1:
raise ValueError("Exactly one of 'seq', 'seconds', or 'nanos' must be provided.")

if seq is not None:
if seconds is not None or nanos is not None:
raise ValueError("Only one of seq, seconds, or nanos can be provided.")
self.__attrs_init__(value=seq)
elif seconds is not None:
if nanos is not None:
raise ValueError("Only one of seq, seconds, or nanos can be provided.")
self.__attrs_init__(value=int(seconds * 1e9))
elif nanos is not None:
self.__attrs_init__(value=int(nanos))
else:
raise ValueError("One of seq, seconds, or nanos must be provided.")
21 changes: 12 additions & 9 deletions rerun_py/rerun_sdk/rerun/datatypes/time_range_boundary_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,35 +76,38 @@ def absolute(
"""
Boundary that is at an absolute time.

Exactly one of 'time', 'seq', 'seconds', or 'nanos' must be provided.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto. and on __init__ too.


Parameters
----------
time:
Absolute time.

Mutually exclusive with seq, seconds and nanos.
seq:
Absolute time in sequence numbers.

Use this for sequence timelines.
Mutually exclusive with time, seconds and nanos.
Not compatible with temporal timelines.

seconds:
Absolute time in seconds.

Use this for time based timelines.
Mutually exclusive with time, seq and nanos.
Interpreted either as a duration or time since unix epoch (depending on timeline type).
Not compatible with sequence timelines.

nanos:
Absolute time in nanoseconds.

Use this for time based timelines.
Mutually exclusive with time, seq and seconds.
Interpreted either as a duration or time since unix epoch (depending on timeline type).
Not compatible with sequence timelines.

"""

if sum(x is not None for x in (time, seq, seconds, nanos)) != 1:
raise ValueError("Exactly one of 'time', 'seq', 'seconds', or 'nanos' must be provided.")

from .time_range_boundary import TimeRangeBoundary

if time is None:
time = TimeInt(seq=seq, seconds=seconds, nanos=nanos)
elif seq is not None or seconds is not None or nanos is not None:
raise ValueError("Only one of time, seq, seconds, or nanos can be provided.")

return TimeRangeBoundary(inner=time, kind="absolute")
Loading