Skip to content

Commit 6316e96

Browse files
authored
PUBLICAPI-1013: support reset mask annotation (#136)
1 parent e56f958 commit 6316e96

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/nebius/api/nebius/maintenance/v1alpha1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import nebius.api.nebius.common.v1.metadata_pb2 as metadata_pb2
1818
import nebius.api.nebius.maintenance.v1alpha1.maintenance_pb2 as maintenance_pb2
1919
import nebius.api.nebius.maintenance.v1alpha1.maintenance_service_pb2 as maintenance_service_pb2
20+
import nebius.base.fieldmask_protobuf as fieldmask_protobuf
2021
import nebius.base.protos.descriptor as descriptor
2122
import nebius.base.protos.pb_classes as pb_classes
2223
import nebius.base.protos.pb_enum as pb_enum
@@ -673,6 +674,7 @@ def update(self,
673674
:class:`nebius.api.nebius.maintenance.v1alpha1.UpdateMaintenanceResponse`.
674675
"""
675676

677+
kwargs['metadata'] = fieldmask_protobuf.ensure_reset_mask_in_metadata(request, kwargs.get('metadata', None))
676678
return super().request(
677679
method="Update",
678680
request=request,

src/nebius/base/protos/compiler/generators.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
from logging import getLogger
2+
from typing import Any, cast
23

34
from nebius.api.nebius import (
45
FieldBehavior,
56
enum_value_deprecation_details,
67
field_deprecation_details,
78
message_deprecation_details,
89
method_deprecation_details,
10+
send_reset_mask,
911
service_deprecation_details,
1012
)
1113

@@ -755,6 +757,24 @@ def is_operation_output(method: Method) -> bool:
755757
)
756758

757759

760+
def _send_reset_mask_setting(method: Method) -> bool | None:
761+
"""
762+
Returns True/False when annotation is set, otherwise None.
763+
"""
764+
ext = cast(Any, send_reset_mask)
765+
options = method.descriptor.options
766+
if not options.HasExtension(ext):
767+
return None
768+
return bool(options.Extensions[ext])
769+
770+
771+
def _should_add_reset_mask(method: Method) -> bool:
772+
setting = _send_reset_mask_setting(method)
773+
if setting is None:
774+
return method.name == "Update"
775+
return setting
776+
777+
758778
def generate_service(srv: Service, g: PyGenFile) -> None:
759779
operation_type = None
760780
operation_source_method = None
@@ -882,7 +902,7 @@ def generate_service(srv: Service, g: PyGenFile) -> None:
882902
g.p(", stack_info=True, stacklevel=2)")
883903
g.p()
884904

885-
if method.name == "Update" and is_operation_output(method):
905+
if _should_add_reset_mask(method):
886906
g.p(
887907
"kwargs['metadata'] = ",
888908
ImportedSymbol(

0 commit comments

Comments
 (0)