From 38f49603bdc364364b4f41b8a9f9586d2dbfbc08 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Fri, 8 Dec 2023 14:53:12 -0600 Subject: [PATCH 1/3] service: Regenerate gRPC stubs --- .../v1/discovery_service_pb2_grpc.pyi | 78 +++++++++++++-- .../v1/measurement_service_pb2_grpc.pyi | 39 ++++++-- .../v2/measurement_service_pb2_grpc.pyi | 38 +++++-- .../pin_map_context_pb2_grpc.pyi | 13 +++ .../pinmap/v1/pin_map_service_pb2_grpc.pyi | 98 ++++++++++++++++--- .../session_management_service_pb2_grpc.pyi | 89 ++++++++++++++--- .../ni/protobuf/types/xydata_pb2_grpc.pyi | 13 +++ .../_internal/stubs/session_pb2_grpc.pyi | 64 +++++++++--- .../sample_measurement_test_pb2_grpc.pyi | 13 +++ ...le_streaming_measurement_test_pb2_grpc.pyi | 13 +++ tests/assets/test_pb2_grpc.pyi | 13 +++ .../ui_progress_updates_test_pb2_grpc.pyi | 13 +++ 12 files changed, 424 insertions(+), 60 deletions(-) diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2_grpc.pyi index 31ff7feda..80893a90b 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2_grpc.pyi @@ -5,15 +5,26 @@ isort:skip_file --------------------------------------------------------------------- """ import abc +import collections.abc import grpc +import grpc.aio import ni_measurementlink_service._internal.stubs.ni.measurementlink.discovery.v1.discovery_service_pb2 as ni_measurementlink_discovery_v1_discovery_service_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class DiscoveryServiceStub: """The service used as a registry for other services. This service can be used to discover and activate other services present in the system. """ - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... RegisterService: grpc.UnaryUnaryMultiCallable[ ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceRequest, ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceResponse, @@ -56,6 +67,53 @@ class DiscoveryServiceStub: - FAILED_PRECONDITION: More than one service matching the resolve request was found """ +class DiscoveryServiceAsyncStub: + """The service used as a registry for other services. This service can be used to discover + and activate other services present in the system. + """ + + RegisterService: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceRequest, + ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceResponse, + ] + """Registers a service instance with the discovery service. + Status Codes for errors: + - INVALID_ARGUMENT: + - ServiceDescriptor.display_name is empty + - ServiceDescriptor.provided_interfaces is empty + - ServiceDescriptor.service_class is empty + - ServiceLocation.location is empty + - Both ServiceLocation.insecure_port and ServiceLocation.ssl_authenticated_port are empty + - Either ServiceLocation.insecure_port or ServiceLocation.ssl_authenticated_port contain an invalid port number + """ + UnregisterService: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceRequest, + ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceResponse, + ] + """Unregisters a service instance with the discovery service.""" + EnumerateServices: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesRequest, + ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesResponse, + ] + """Enumerate all services which implement a specific service interface. + This is useful for plugin type systems where the possible services are not known ahead of time. + """ + ResolveService: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_discovery_v1_discovery_service_pb2.ResolveServiceRequest, + ni_measurementlink_discovery_v1_discovery_service_pb2.ServiceLocation, + ] + """Given a description of a service, returns information that can be used to establish communication + with that service. If necessary, the service will be started by the discovery service if it has not + already been started. Activation of the service is accomplished through use of a .serviceconfig file + which includes information describing the service. Services that register a .serviceconfig file must + call RegisterService when their service is started or this call will never complete successfully when + the discovery service attempts to start it. + Status Codes for errors: + - INVALID_ARGUMENT: provided_interfaces is empty + - NOT_FOUND: No service matching the resolve request was found + - FAILED_PRECONDITION: More than one service matching the resolve request was found + """ + class DiscoveryServiceServicer(metaclass=abc.ABCMeta): """The service used as a registry for other services. This service can be used to discover and activate other services present in the system. @@ -65,8 +123,8 @@ class DiscoveryServiceServicer(metaclass=abc.ABCMeta): def RegisterService( self, request: ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceResponse, collections.abc.Awaitable[ni_measurementlink_discovery_v1_discovery_service_pb2.RegisterServiceResponse]]: """Registers a service instance with the discovery service. Status Codes for errors: - INVALID_ARGUMENT: @@ -81,15 +139,15 @@ class DiscoveryServiceServicer(metaclass=abc.ABCMeta): def UnregisterService( self, request: ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceResponse, collections.abc.Awaitable[ni_measurementlink_discovery_v1_discovery_service_pb2.UnregisterServiceResponse]]: """Unregisters a service instance with the discovery service.""" @abc.abstractmethod def EnumerateServices( self, request: ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesResponse, collections.abc.Awaitable[ni_measurementlink_discovery_v1_discovery_service_pb2.EnumerateServicesResponse]]: """Enumerate all services which implement a specific service interface. This is useful for plugin type systems where the possible services are not known ahead of time. """ @@ -97,8 +155,8 @@ class DiscoveryServiceServicer(metaclass=abc.ABCMeta): def ResolveService( self, request: ni_measurementlink_discovery_v1_discovery_service_pb2.ResolveServiceRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_discovery_v1_discovery_service_pb2.ServiceLocation: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_discovery_v1_discovery_service_pb2.ServiceLocation, collections.abc.Awaitable[ni_measurementlink_discovery_v1_discovery_service_pb2.ServiceLocation]]: """Given a description of a service, returns information that can be used to establish communication with that service. If necessary, the service will be started by the discovery service if it has not already been started. Activation of the service is accomplished through use of a .serviceconfig file @@ -111,4 +169,4 @@ class DiscoveryServiceServicer(metaclass=abc.ABCMeta): - FAILED_PRECONDITION: More than one service matching the resolve request was found """ -def add_DiscoveryServiceServicer_to_server(servicer: DiscoveryServiceServicer, server: grpc.Server) -> None: ... +def add_DiscoveryServiceServicer_to_server(servicer: DiscoveryServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2_grpc.pyi index 7973d910f..e64dbe33f 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2_grpc.pyi @@ -5,15 +5,26 @@ isort:skip_file --------------------------------------------------------------------- """ import abc +import collections.abc import grpc +import grpc.aio import ni_measurementlink_service._internal.stubs.ni.measurementlink.measurement.v1.measurement_service_pb2 as ni_measurementlink_measurement_v1_measurement_service_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class MeasurementServiceStub: """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin where there can be multiple implementations of the service that provide different measurement capabilities. """ - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... GetMetadata: grpc.UnaryUnaryMultiCallable[ ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataRequest, ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataResponse, @@ -25,6 +36,22 @@ class MeasurementServiceStub: ] """API used to perform a measurement.""" +class MeasurementServiceAsyncStub: + """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin + where there can be multiple implementations of the service that provide different measurement capabilities. + """ + + GetMetadata: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataRequest, + ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataResponse, + ] + """Returns information that describes the measurement.""" + Measure: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureRequest, + ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureResponse, + ] + """API used to perform a measurement.""" + class MeasurementServiceServicer(metaclass=abc.ABCMeta): """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin where there can be multiple implementations of the service that provide different measurement capabilities. @@ -34,15 +61,15 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): def GetMetadata( self, request: ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataResponse, collections.abc.Awaitable[ni_measurementlink_measurement_v1_measurement_service_pb2.GetMetadataResponse]]: """Returns information that describes the measurement.""" @abc.abstractmethod def Measure( self, request: ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureResponse, collections.abc.Awaitable[ni_measurementlink_measurement_v1_measurement_service_pb2.MeasureResponse]]: """API used to perform a measurement.""" -def add_MeasurementServiceServicer_to_server(servicer: MeasurementServiceServicer, server: grpc.Server) -> None: ... +def add_MeasurementServiceServicer_to_server(servicer: MeasurementServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2_grpc.pyi index 91ef0e059..3b07ca839 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2_grpc.pyi @@ -7,14 +7,24 @@ isort:skip_file import abc import collections.abc import grpc +import grpc.aio import ni_measurementlink_service._internal.stubs.ni.measurementlink.measurement.v2.measurement_service_pb2 as ni_measurementlink_measurement_v2_measurement_service_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class MeasurementServiceStub: """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin where there can be multiple implementations of the service that provide different measurement capabilities. """ - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... GetMetadata: grpc.UnaryUnaryMultiCallable[ ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataRequest, ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataResponse, @@ -26,6 +36,22 @@ class MeasurementServiceStub: ] """API used to perform a measurement.""" +class MeasurementServiceAsyncStub: + """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin + where there can be multiple implementations of the service that provide different measurement capabilities. + """ + + GetMetadata: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataRequest, + ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataResponse, + ] + """Returns information that describes the measurement.""" + Measure: grpc.aio.UnaryStreamMultiCallable[ + ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureRequest, + ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse, + ] + """API used to perform a measurement.""" + class MeasurementServiceServicer(metaclass=abc.ABCMeta): """Service that implements a measurement. Unlike other services, a MeasurementService is designed to be a plugin where there can be multiple implementations of the service that provide different measurement capabilities. @@ -35,15 +61,15 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): def GetMetadata( self, request: ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataResponse, collections.abc.Awaitable[ni_measurementlink_measurement_v2_measurement_service_pb2.GetMetadataResponse]]: """Returns information that describes the measurement.""" @abc.abstractmethod def Measure( self, request: ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureRequest, - context: grpc.ServicerContext, - ) -> collections.abc.Iterator[ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse]: + context: _ServicerContext, + ) -> typing.Union[collections.abc.Iterator[ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse], collections.abc.AsyncIterator[ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse]]: """API used to perform a measurement.""" -def add_MeasurementServiceServicer_to_server(servicer: MeasurementServiceServicer, server: grpc.Server) -> None: ... +def add_MeasurementServiceServicer_to_server(servicer: MeasurementServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2_grpc.pyi index f3a5a087e..b13382f6a 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2_grpc.pyi @@ -2,3 +2,16 @@ @generated by mypy-protobuf. Do not edit manually! isort:skip_file """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2_grpc.pyi index 3b30e2bdd..10cdb86dc 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2_grpc.pyi @@ -3,13 +3,24 @@ isort:skip_file """ import abc +import collections.abc import grpc +import grpc.aio import ni_measurementlink_service._internal.stubs.ni.measurementlink.pinmap.v1.pin_map_service_pb2 as ni_measurementlink_pinmap_v1_pin_map_service_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class PinMapServiceStub: """Service to keep track of pin map resources.""" - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... CreatePinMapFromXml: grpc.UnaryUnaryMultiCallable[ ni_measurementlink_pinmap_v1_pin_map_service_pb2.CreatePinMapFromXmlRequest, ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, @@ -66,6 +77,65 @@ class PinMapServiceStub: - Empty string specified for a pin or relay name. """ +class PinMapServiceAsyncStub: + """Service to keep track of pin map resources.""" + + CreatePinMapFromXml: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.CreatePinMapFromXmlRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, + ] + """Registers pin map with the PinMapService and returns a pin map resource. + Status Codes for errors: + - INVALID_ARGUMENT: Pin map id is empty or has whitespace, or pin map xml string is not valid + - ALREADY_EXISTS: Pin map resource with the specified pin map id already exists + """ + UpdatePinMapFromXml: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.UpdatePinMapFromXmlRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, + ] + """Updates registered pin map contents and returns it. + Creates and registers a pin map if a pin map resource for the specified pin map id is not found. + Status Codes for errors: + - INVALID_ARGUMENT: Pin map xml string is not valid + """ + GetPinMap: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.GetPinMapRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, + ] + """Get registered pin map resource. + Status Codes for errors: + - NOT_FOUND: Pin map resource for the specified pin map id is not found + """ + QueryPins: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsResponse, + ] + """Returns list of pins from the registered pin map resource. + Status Codes for errors: + - NOT_FOUND: Pin map resource for the specified pin map id is not found + """ + QueryRelays: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysResponse, + ] + """Returns list of relays from the registered pin map resource. + Status Codes for errors: + - NOT_FOUND: Pin map resource for the specified pin map id is not found + """ + QueryResourceAccessInformation: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationRequest, + ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationResponse, + ] + """Get instrument resource names, channels, and instrument type for the specified sites, pins or pin groups, relays or relay groups, instrument type in the registered pin map resource. + Status Codes for errors: + - NOT_FOUND: + - Pin map resource for the specified pin map id is not found. + - Specified site number is not in the valid range for the registered pin map. + - INVALID_ARGUMENT: + - Specified pin or relay is not present in the registered pin map resource. + - Empty string specified for a pin or relay name. + """ + class PinMapServiceServicer(metaclass=abc.ABCMeta): """Service to keep track of pin map resources.""" @@ -73,8 +143,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def CreatePinMapFromXml( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.CreatePinMapFromXmlRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap]]: """Registers pin map with the PinMapService and returns a pin map resource. Status Codes for errors: - INVALID_ARGUMENT: Pin map id is empty or has whitespace, or pin map xml string is not valid @@ -84,8 +154,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def UpdatePinMapFromXml( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.UpdatePinMapFromXmlRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap]]: """Updates registered pin map contents and returns it. Creates and registers a pin map if a pin map resource for the specified pin map id is not found. Status Codes for errors: @@ -95,8 +165,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def GetPinMap( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.GetPinMapRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.PinMap]]: """Get registered pin map resource. Status Codes for errors: - NOT_FOUND: Pin map resource for the specified pin map id is not found @@ -105,8 +175,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def QueryPins( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsResponse, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryPinsResponse]]: """Returns list of pins from the registered pin map resource. Status Codes for errors: - NOT_FOUND: Pin map resource for the specified pin map id is not found @@ -115,8 +185,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def QueryRelays( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysResponse, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryRelaysResponse]]: """Returns list of relays from the registered pin map resource. Status Codes for errors: - NOT_FOUND: Pin map resource for the specified pin map id is not found @@ -125,8 +195,8 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): def QueryResourceAccessInformation( self, request: ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationResponse, collections.abc.Awaitable[ni_measurementlink_pinmap_v1_pin_map_service_pb2.QueryResourceAccessInformationResponse]]: """Get instrument resource names, channels, and instrument type for the specified sites, pins or pin groups, relays or relay groups, instrument type in the registered pin map resource. Status Codes for errors: - NOT_FOUND: @@ -137,4 +207,4 @@ class PinMapServiceServicer(metaclass=abc.ABCMeta): - Empty string specified for a pin or relay name. """ -def add_PinMapServiceServicer_to_server(servicer: PinMapServiceServicer, server: grpc.Server) -> None: ... +def add_PinMapServiceServicer_to_server(servicer: PinMapServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2_grpc.pyi index 8e6fcad03..6c869150f 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2_grpc.pyi @@ -3,13 +3,24 @@ isort:skip_file """ import abc +import collections.abc import grpc +import grpc.aio import ni_measurementlink_service._internal.stubs.ni.measurementlink.sessionmanagement.v1.session_management_service_pb2 as ni_measurementlink_sessionmanagement_v1_session_management_service_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class SessionManagementServiceStub: """Service to keep track of open sessions used by measurement services, and to allow measurement services to access sessions by pin and site.""" - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... ReserveSessions: grpc.UnaryUnaryMultiCallable[ ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse, @@ -61,6 +72,60 @@ class SessionManagementServiceStub: - Session(s) were already reserved and didn't become available before the specified timeout expired. """ +class SessionManagementServiceAsyncStub: + """Service to keep track of open sessions used by measurement services, and to allow measurement services to access sessions by pin and site.""" + + ReserveSessions: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse, + ] + """Reserve session(s) for the given pins or relays, sites, and instrument type ID and returns the information needed to create or access the session. + (Will be implemented in AB#2046548) Also reserves the session so other processes cannot access it with a ReserveSessions() call. + Status Codes for errors: + - INVALID_ARGUMENT: + - Pin Map Context references a site number that is not defined in the pin map + - Pin or relay name does not match any pin, pin group, relay, or relay group names in the pin map + - Timeout specified is less than -1. + - NOT_FOUND: + - Pin Map Context has a pin map ID that does not match any pin maps registered with the Pin Map Service. + - UNAVAILABLE: + - Session(s) were already reserved and didn't become available before the specified timeout expired. + """ + UnreserveSessions: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsRequest, + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse, + ] + """Unreserves sessions so they can be accessed by other clients. + - RESOURCE_EXHAUSTED: + - Error occurred while unreserving sessions. + """ + RegisterSessions: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsRequest, + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse, + ] + """Registers the sessions with this service. Indicates that the sessions are open and will need to be closed later. + Status Codes for errors: + - ALREADY_EXISTS: + - Session by the same name is already registered. + - INVALID_ARGUMENT: + - Session names list has an empty string. + """ + UnregisterSessions: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsRequest, + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse, + ] + """Unregisters the sessions with this service. Indicates that the sessions have been closed and will need to be reopened before they can be used again.""" + ReserveAllRegisteredSessions: grpc.aio.UnaryUnaryMultiCallable[ + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsRequest, + ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsResponse, + ] + """Reserves and gets all sessions currently registered with this service. + - INVALID_ARGUMENT: + - Timeout specified is less than -1. + - UNAVAILABLE: + - Session(s) were already reserved and didn't become available before the specified timeout expired. + """ + class SessionManagementServiceServicer(metaclass=abc.ABCMeta): """Service to keep track of open sessions used by measurement services, and to allow measurement services to access sessions by pin and site.""" @@ -68,8 +133,8 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): def ReserveSessions( self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse, collections.abc.Awaitable[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse]]: """Reserve session(s) for the given pins or relays, sites, and instrument type ID and returns the information needed to create or access the session. (Will be implemented in AB#2046548) Also reserves the session so other processes cannot access it with a ReserveSessions() call. Status Codes for errors: @@ -86,8 +151,8 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): def UnreserveSessions( self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse, collections.abc.Awaitable[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse]]: """Unreserves sessions so they can be accessed by other clients. - RESOURCE_EXHAUSTED: - Error occurred while unreserving sessions. @@ -96,8 +161,8 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): def RegisterSessions( self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse, collections.abc.Awaitable[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse]]: """Registers the sessions with this service. Indicates that the sessions are open and will need to be closed later. Status Codes for errors: - ALREADY_EXISTS: @@ -109,15 +174,15 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): def UnregisterSessions( self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse, collections.abc.Awaitable[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse]]: """Unregisters the sessions with this service. Indicates that the sessions have been closed and will need to be reopened before they can be used again.""" @abc.abstractmethod def ReserveAllRegisteredSessions( self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsRequest, - context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsResponse: + context: _ServicerContext, + ) -> typing.Union[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsResponse, collections.abc.Awaitable[ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveAllRegisteredSessionsResponse]]: """Reserves and gets all sessions currently registered with this service. - INVALID_ARGUMENT: - Timeout specified is less than -1. @@ -125,4 +190,4 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): - Session(s) were already reserved and didn't become available before the specified timeout expired. """ -def add_SessionManagementServiceServicer_to_server(servicer: SessionManagementServiceServicer, server: grpc.Server) -> None: ... +def add_SessionManagementServiceServicer_to_server(servicer: SessionManagementServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/ni/protobuf/types/xydata_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/ni/protobuf/types/xydata_pb2_grpc.pyi index f99de6c86..05e8369cc 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/protobuf/types/xydata_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/protobuf/types/xydata_pb2_grpc.pyi @@ -4,3 +4,16 @@ isort:skip_file --------------------------------------------------------------------- --------------------------------------------------------------------- """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... diff --git a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi index b3d1f09fc..135840dd2 100644 --- a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi @@ -3,11 +3,22 @@ isort:skip_file """ import abc +import collections.abc import grpc +import grpc.aio from ni_measurementlink_service._internal.stubs import session_pb2 +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... class SessionUtilitiesStub: - def __init__(self, channel: grpc.Channel) -> None: ... + def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ... EnumerateDevices: grpc.UnaryUnaryMultiCallable[ session_pb2.EnumerateDevicesRequest, session_pb2.EnumerateDevicesResponse, @@ -36,27 +47,56 @@ class SessionUtilitiesStub: ] """Resets the server to a default state with no open sessions""" +class SessionUtilitiesAsyncStub: + EnumerateDevices: grpc.aio.UnaryUnaryMultiCallable[ + session_pb2.EnumerateDevicesRequest, + session_pb2.EnumerateDevicesResponse, + ] + """Provides a list of devices or chassis connected to server under localhost""" + Reserve: grpc.aio.UnaryUnaryMultiCallable[ + session_pb2.ReserveRequest, + session_pb2.ReserveResponse, + ] + """Reserve a set of client defined resources for exclusive use""" + IsReservedByClient: grpc.aio.UnaryUnaryMultiCallable[ + session_pb2.IsReservedByClientRequest, + session_pb2.IsReservedByClientResponse, + ] + """Determines if a set of client defined resources is currently reserved by a + specific client + """ + Unreserve: grpc.aio.UnaryUnaryMultiCallable[ + session_pb2.UnreserveRequest, + session_pb2.UnreserveResponse, + ] + """Unreserves a previously reserved resource""" + ResetServer: grpc.aio.UnaryUnaryMultiCallable[ + session_pb2.ResetServerRequest, + session_pb2.ResetServerResponse, + ] + """Resets the server to a default state with no open sessions""" + class SessionUtilitiesServicer(metaclass=abc.ABCMeta): @abc.abstractmethod def EnumerateDevices( self, request: session_pb2.EnumerateDevicesRequest, - context: grpc.ServicerContext, - ) -> session_pb2.EnumerateDevicesResponse: + context: _ServicerContext, + ) -> typing.Union[session_pb2.EnumerateDevicesResponse, collections.abc.Awaitable[session_pb2.EnumerateDevicesResponse]]: """Provides a list of devices or chassis connected to server under localhost""" @abc.abstractmethod def Reserve( self, request: session_pb2.ReserveRequest, - context: grpc.ServicerContext, - ) -> session_pb2.ReserveResponse: + context: _ServicerContext, + ) -> typing.Union[session_pb2.ReserveResponse, collections.abc.Awaitable[session_pb2.ReserveResponse]]: """Reserve a set of client defined resources for exclusive use""" @abc.abstractmethod def IsReservedByClient( self, request: session_pb2.IsReservedByClientRequest, - context: grpc.ServicerContext, - ) -> session_pb2.IsReservedByClientResponse: + context: _ServicerContext, + ) -> typing.Union[session_pb2.IsReservedByClientResponse, collections.abc.Awaitable[session_pb2.IsReservedByClientResponse]]: """Determines if a set of client defined resources is currently reserved by a specific client """ @@ -64,15 +104,15 @@ class SessionUtilitiesServicer(metaclass=abc.ABCMeta): def Unreserve( self, request: session_pb2.UnreserveRequest, - context: grpc.ServicerContext, - ) -> session_pb2.UnreserveResponse: + context: _ServicerContext, + ) -> typing.Union[session_pb2.UnreserveResponse, collections.abc.Awaitable[session_pb2.UnreserveResponse]]: """Unreserves a previously reserved resource""" @abc.abstractmethod def ResetServer( self, request: session_pb2.ResetServerRequest, - context: grpc.ServicerContext, - ) -> session_pb2.ResetServerResponse: + context: _ServicerContext, + ) -> typing.Union[session_pb2.ResetServerResponse, collections.abc.Awaitable[session_pb2.ResetServerResponse]]: """Resets the server to a default state with no open sessions""" -def add_SessionUtilitiesServicer_to_server(servicer: SessionUtilitiesServicer, server: grpc.Server) -> None: ... +def add_SessionUtilitiesServicer_to_server(servicer: SessionUtilitiesServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ... diff --git a/tests/assets/sample_measurement_test_pb2_grpc.pyi b/tests/assets/sample_measurement_test_pb2_grpc.pyi index f99de6c86..05e8369cc 100644 --- a/tests/assets/sample_measurement_test_pb2_grpc.pyi +++ b/tests/assets/sample_measurement_test_pb2_grpc.pyi @@ -4,3 +4,16 @@ isort:skip_file --------------------------------------------------------------------- --------------------------------------------------------------------- """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... diff --git a/tests/assets/sample_streaming_measurement_test_pb2_grpc.pyi b/tests/assets/sample_streaming_measurement_test_pb2_grpc.pyi index f99de6c86..05e8369cc 100644 --- a/tests/assets/sample_streaming_measurement_test_pb2_grpc.pyi +++ b/tests/assets/sample_streaming_measurement_test_pb2_grpc.pyi @@ -4,3 +4,16 @@ isort:skip_file --------------------------------------------------------------------- --------------------------------------------------------------------- """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... diff --git a/tests/assets/test_pb2_grpc.pyi b/tests/assets/test_pb2_grpc.pyi index f99de6c86..05e8369cc 100644 --- a/tests/assets/test_pb2_grpc.pyi +++ b/tests/assets/test_pb2_grpc.pyi @@ -4,3 +4,16 @@ isort:skip_file --------------------------------------------------------------------- --------------------------------------------------------------------- """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... diff --git a/tests/assets/ui_progress_updates_test_pb2_grpc.pyi b/tests/assets/ui_progress_updates_test_pb2_grpc.pyi index f99de6c86..05e8369cc 100644 --- a/tests/assets/ui_progress_updates_test_pb2_grpc.pyi +++ b/tests/assets/ui_progress_updates_test_pb2_grpc.pyi @@ -4,3 +4,16 @@ isort:skip_file --------------------------------------------------------------------- --------------------------------------------------------------------- """ +import abc +import collections.abc +import grpc +import grpc.aio +import typing + +_T = typing.TypeVar('_T') + +class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): + ... + +class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore + ... From e1315e0413dfdd452191c1738ef90ca33cd7f2fc Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Fri, 8 Dec 2023 15:03:35 -0600 Subject: [PATCH 2/3] github: Update check_nims.yml to regenerate gRPC stubs and check for modifications --- .github/workflows/check_nims.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/check_nims.yml b/.github/workflows/check_nims.yml index 21f9d5a95..5e6f362ed 100644 --- a/.github/workflows/check_nims.yml +++ b/.github/workflows/check_nims.yml @@ -74,3 +74,11 @@ jobs: poetry run sphinx-build _docs_source docs -b html -W --keep-going - name: Revert docs run: git clean -dfx docs/ && git restore docs/ + - name: Generate gRPC stubs + run: | + find . -name \*_pb2.py\* -o -name \*_pb2_grpc.py\* -delete + poetry run python scripts/generate_grpc_stubs.py + - name: Check for out-of-date gRPC stubs + run: git diff --exit-code + - name: Revert gRPC stubs + run: git clean -dfx . && git restore . \ No newline at end of file From 1f9afe18ba7b767a4709459124111564475120a6 Mon Sep 17 00:00:00 2001 From: Brad Keryan Date: Fri, 8 Dec 2023 15:15:16 -0600 Subject: [PATCH 3/3] github: Be more selective about which stubs to delete (not examples) --- .github/workflows/check_nims.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_nims.yml b/.github/workflows/check_nims.yml index 5e6f362ed..8b06b8b73 100644 --- a/.github/workflows/check_nims.yml +++ b/.github/workflows/check_nims.yml @@ -76,9 +76,12 @@ jobs: run: git clean -dfx docs/ && git restore docs/ - name: Generate gRPC stubs run: | - find . -name \*_pb2.py\* -o -name \*_pb2_grpc.py\* -delete + find ni_measurementlink_service/_internal/stubs/ -name \*_pb2.py\* -o -name \*_pb2_grpc.py\* -delete + find tests/assets/stubs/ -name \*_pb2.py\* -o -name \*_pb2_grpc.py\* -delete poetry run python scripts/generate_grpc_stubs.py - name: Check for out-of-date gRPC stubs run: git diff --exit-code - name: Revert gRPC stubs - run: git clean -dfx . && git restore . \ No newline at end of file + run: | + git clean -dfx ni_measurementlink_service/_internal/stubs/ tests/assets/stubs/ + git restore ni_measurementlink_service/_internal/stubs/ tests/assets/stubs/ \ No newline at end of file