| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- # Copyright (c) 2025-2026 Buf Technologies, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- # Generated from google/protobuf/duration.proto. DO NOT EDIT.
- # Generated by protoc-gen-py v0.1.1 with parameter "no_fmt_off".
- # ruff: noqa: PGH004
- # ruff: noqa
- from __future__ import annotations
- from typing import Literal, TYPE_CHECKING, TypeAlias
- from protobuf import Message
- from protobuf._codegen import file_desc
- from protobuf.wkt._mixin import DurationMixin
- if TYPE_CHECKING:
- from protobuf import DescFile
- _DurationFields: TypeAlias = Literal["seconds", "nanos"]
- class Duration(Message[_DurationFields], DurationMixin):
- """
- A Duration represents a signed, fixed-length span of time represented
- as a count of seconds and fractions of seconds at nanosecond
- resolution. It is independent of any calendar and concepts like "day"
- or "month". It is related to Timestamp in that the difference between
- two Timestamp values is a Duration and it can be added or subtracted
- from a Timestamp. Range is approximately +-10,000 years.
- # Examples
- Example 1: Compute Duration from two Timestamps in pseudo code.
- Timestamp start = ...;
- Timestamp end = ...;
- Duration duration = ...;
- duration.seconds = end.seconds - start.seconds;
- duration.nanos = end.nanos - start.nanos;
- if (duration.seconds < 0 && duration.nanos > 0) {
- duration.seconds += 1;
- duration.nanos -= 1000000000;
- } else if (duration.seconds > 0 && duration.nanos < 0) {
- duration.seconds -= 1;
- duration.nanos += 1000000000;
- }
- Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
- Timestamp start = ...;
- Duration duration = ...;
- Timestamp end = ...;
- end.seconds = start.seconds + duration.seconds;
- end.nanos = start.nanos + duration.nanos;
- if (end.nanos < 0) {
- end.seconds -= 1;
- end.nanos += 1000000000;
- } else if (end.nanos >= 1000000000) {
- end.seconds += 1;
- end.nanos -= 1000000000;
- }
- Example 3: Compute Duration from datetime.timedelta in Python.
- td = datetime.timedelta(days=3, minutes=10)
- duration = Duration()
- duration.FromTimedelta(td)
- # JSON Mapping
- In JSON format, the Duration type is encoded as a string rather than an
- object, where the string ends in the suffix "s" (indicating seconds) and
- is preceded by the number of seconds, with nanoseconds expressed as
- fractional seconds. For example, 3 seconds with 0 nanoseconds should be
- encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
- be expressed in JSON format as "3.000000001s", and 3 seconds and 1
- microsecond should be expressed in JSON format as "3.000001s".
- ```proto
- message google.protobuf.Duration
- ```
- Attributes:
- seconds:
- Signed seconds of the span of time. Must be from -315,576,000,000
- to +315,576,000,000 inclusive. Note: these bounds are computed from:
- 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
- ```proto
- int64 seconds = 1;
- ```
- nanos:
- Signed fractions of a second at nanosecond resolution of the span
- of time. Durations less than one second are represented with a 0
- `seconds` field and a positive or negative `nanos` field. For durations
- of one second or more, a non-zero value for the `nanos` field must be
- of the same sign as the `seconds` field. Must be from -999,999,999
- to +999,999,999 inclusive.
- ```proto
- int32 nanos = 2;
- ```
- """
- __slots__ = ("seconds", "nanos")
- if TYPE_CHECKING:
- def __init__(self, *, seconds: int = 0, nanos: int = 0) -> None:
- pass
- seconds: int
- nanos: int
- _DESC = file_desc(
- b'\n\x1egoogle/protobuf/duration.proto\x12\x0fgoogle.protobuf":\n\x08Duration\x12\x18\n\x07seconds\x18\x01 \x01(\x03R\x07seconds\x12\x14\n\x05nanos\x18\x02 \x01(\x05R\x05nanosB\x83\x01\n\x13com.google.protobufB\rDurationProtoP\x01Z1google.golang.org/protobuf/types/known/durationpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3',
- [],
- {"Duration": Duration},
- )
- def desc() -> DescFile:
- """Returns the descriptor for the file `google/protobuf/duration.proto`."""
- return _DESC
|