| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- # 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/field_mask.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
- if TYPE_CHECKING:
- from protobuf import DescFile
- _FieldMaskFields: TypeAlias = Literal["paths"]
- class FieldMask(Message[_FieldMaskFields]):
- """
- `FieldMask` represents a set of symbolic field paths, for example:
- paths: "f.a"
- paths: "f.b.d"
- Here `f` represents a field in some root message, `a` and `b`
- fields in the message found in `f`, and `d` a field found in the
- message in `f.b`.
- Field masks are used to specify a subset of fields that should be
- returned by a get operation or modified by an update operation.
- Field masks also have a custom JSON encoding (see below).
- # Field Masks in Projections
- When used in the context of a projection, a response message or
- sub-message is filtered by the API to only contain those fields as
- specified in the mask. For example, if the mask in the previous
- example is applied to a response message as follows:
- f {
- a : 22
- b {
- d : 1
- x : 2
- }
- y : 13
- }
- z: 8
- The result will not contain specific values for fields x,y and z
- (their value will be set to the default, and omitted in proto text
- output):
- f {
- a : 22
- b {
- d : 1
- }
- }
- A repeated field is not allowed except at the last position of a
- paths string.
- If a FieldMask object is not present in a get operation, the
- operation applies to all fields (as if a FieldMask of all fields
- had been specified).
- Note that a field mask does not necessarily apply to the
- top-level response message. In case of a REST get operation, the
- field mask applies directly to the response, but in case of a REST
- list operation, the mask instead applies to each individual message
- in the returned resource list. In case of a REST custom method,
- other definitions may be used. Where the mask applies will be
- clearly documented together with its declaration in the API. In
- any case, the effect on the returned resource/resources is required
- behavior for APIs.
- # Field Masks in Update Operations
- A field mask in update operations specifies which fields of the
- targeted resource are going to be updated. The API is required
- to only change the values of the fields as specified in the mask
- and leave the others untouched. If a resource is passed in to
- describe the updated values, the API ignores the values of all
- fields not covered by the mask.
- If a repeated field is specified for an update operation, new values will
- be appended to the existing repeated field in the target resource. Note that
- a repeated field is only allowed in the last position of a `paths` string.
- If a sub-message is specified in the last position of the field mask for an
- update operation, then new value will be merged into the existing sub-message
- in the target resource.
- For example, given the target message:
- f {
- b {
- d: 1
- x: 2
- }
- c: [1]
- }
- And an update message:
- f {
- b {
- d: 10
- }
- c: [2]
- }
- then if the field mask is:
- paths: ["f.b", "f.c"]
- then the result will be:
- f {
- b {
- d: 10
- x: 2
- }
- c: [1, 2]
- }
- An implementation may provide options to override this default behavior for
- repeated and message fields.
- Note that libraries which implement FieldMask resolution have various
- different behaviors in the face of empty masks or the special "*" mask.
- When implementing a service you should confirm these cases have the
- appropriate behavior in the underlying FieldMask library that you desire,
- and you may need to special case those cases in your application code if
- the underlying field mask library behavior differs from your intended
- service semantics.
- Update methods implementing https://google.aip.dev/134
- - MUST support the special value * meaning "full replace"
- - MUST treat an omitted field mask as "replace fields which are present".
- Other methods implementing https://google.aip.dev/157
- - SHOULD support the special value "*" to mean "get all".
- - MUST treat an omitted field mask to mean "get all", unless otherwise
- documented.
- ## Considerations for HTTP REST
- The HTTP kind of an update operation which uses a field mask must
- be set to PATCH instead of PUT in order to satisfy HTTP semantics
- (PUT must only be used for full updates).
- # JSON Encoding of Field Masks
- In JSON, a field mask is encoded as a single string where paths are
- separated by a comma. Fields name in each path are converted
- to/from lower-camel naming conventions.
- As an example, consider the following message declarations:
- message Profile {
- User user = 1;
- Photo photo = 2;
- }
- message User {
- string display_name = 1;
- string address = 2;
- }
- In proto a field mask for `Profile` may look as such:
- mask {
- paths: "user.display_name"
- paths: "photo"
- }
- In JSON, the same mask is represented as below:
- {
- mask: "user.displayName,photo"
- }
- # Field Masks and Oneof Fields
- Field masks treat fields in oneofs just as regular fields. Consider the
- following message:
- message SampleMessage {
- oneof test_oneof {
- string name = 4;
- SubMessage sub_message = 9;
- }
- }
- The field mask can be:
- mask {
- paths: "name"
- }
- Or:
- mask {
- paths: "sub_message"
- }
- Note that oneof type names ("test_oneof" in this case) cannot be used in
- paths.
- ## Field Mask Verification
- The implementation of any API method which has a FieldMask type field in the
- request should verify the included field paths, and return an
- `INVALID_ARGUMENT` error if any path is unmappable.
- ```proto
- message google.protobuf.FieldMask
- ```
- Attributes:
- paths:
- The set of field mask paths.
- ```proto
- repeated string paths = 1;
- ```
- """
- __slots__ = ("paths",)
- if TYPE_CHECKING:
- def __init__(self, *, paths: list[str] | None = None) -> None:
- pass
- paths: list[str]
- _DESC = file_desc(
- b'\n google/protobuf/field_mask.proto\x12\x0fgoogle.protobuf"!\n\tFieldMask\x12\x14\n\x05paths\x18\x01 \x03(\tR\x05pathsB\x85\x01\n\x13com.google.protobufB\x0eFieldMaskProtoP\x01Z2google.golang.org/protobuf/types/known/fieldmaskpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3',
- [],
- {"FieldMask": FieldMask},
- )
- def desc() -> DescFile:
- """Returns the descriptor for the file `google/protobuf/field_mask.proto`."""
- return _DESC
|