From 8b901c6c1a09533f4527c20e14400207d64362f6 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Fri, 16 Jun 2023 15:12:39 -0500 Subject: [PATCH 01/22] Add service Annotation Support --- .../SampleMeasurement.serviceconfig | 7 ++++- .../_internal/discovery_client.py | 10 +++++- .../measurement/info.py | 7 ++++- .../measurement/service.py | 4 +++ tests/assets/example.serviceconfig | 7 ++++- tests/assets/example.v3.serviceconfig | 17 ++++++++++ tests/assets/example.v4.serviceconfig | 16 ++++++++++ tests/assets/example.v5.serviceconfig | 22 +++++++++++++ tests/unit/test_discovery_client.py | 20 ++++++++++-- tests/unit/test_service.py | 31 ++++++++++++++++--- 10 files changed, 129 insertions(+), 12 deletions(-) create mode 100644 tests/assets/example.v3.serviceconfig create mode 100644 tests/assets/example.v4.serviceconfig create mode 100644 tests/assets/example.v5.serviceconfig diff --git a/examples/sample_measurement/SampleMeasurement.serviceconfig b/examples/sample_measurement/SampleMeasurement.serviceconfig index 9be066988..911bdc02e 100644 --- a/examples/sample_measurement/SampleMeasurement.serviceconfig +++ b/examples/sample_measurement/SampleMeasurement.serviceconfig @@ -5,7 +5,12 @@ "serviceClass": "ni.examples.SampleMeasurement_Python", "descriptionUrl": "", "providedInterfaces": [ "ni.measurementlink.measurement.v1.MeasurementService" ], - "path": "start.bat" + "path": "start.bat", + "annotations": { + "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", + "ni/service.collection": "CurrentTests.Inrush", + "ni/service.tags": [ "powerup", "current" ] + } } ] } \ No newline at end of file diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index 8e2a4424c..a8483c667 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -107,6 +107,13 @@ def register_measurement_service( service_descriptor.description_url = service_info.description_url service_descriptor.provided_interfaces.extend(service_info.provided_interfaces) + ServiceInfoAnnotations = service_info.annotations + for keys in ServiceInfoAnnotations: + if isinstance(ServiceInfoAnnotations[keys], (int, float)): + service_descriptor.annotations[keys] = str(ServiceInfoAnnotations[keys]) + else: + service_descriptor.annotations[keys] = ' '.join([str(elem) for elem in ServiceInfoAnnotations[keys]]) + # Registration Request Creation request = discovery_service_pb2.RegisterServiceRequest( location=service_location, service_description=service_descriptor @@ -127,8 +134,9 @@ def register_measurement_service( _logger.error( "Unable to register with discovery service. Possible reason: discovery service not running." ) - except Exception: + except Exception as err: _logger.exception("Error in registering with discovery service.") + print(f"Unexpected {err=}, {type(err)=}") return False return True diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 1cb57e02c..632accb46 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -5,6 +5,7 @@ import typing from pathlib import Path from typing import NamedTuple +from typing import Dict from google.protobuf import type_pb2 @@ -44,12 +45,16 @@ class ServiceInfo(NamedTuple): For e.g., ni.measurementlink.measurement.v2.MeasurementService. Defaults to ["ni.measurementlink.measurement.v1.MeasurementService"]. + annotations (Dict): Dictionary that contains extra information of the measurement. + As default we added a (str) description, (str) collection and a (List[str]) list of tags. + Feel free to add your own Annotations as needed. + """ service_class: str description_url: str provided_interfaces: typing.List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] - + annotations: typing.Dict[str, str] = {} class TypeSpecialization(enum.Enum): """Enum that represents the type specializations for measurement parameters.""" diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 033f1ae6d..960758cd3 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -180,11 +180,15 @@ def __init__( version=version, ui_file_paths=ui_file_paths, ) + serviceAnnotations = Dict[str,str] + if "annotations" in service: + serviceAnnotations = service["annotations"] self.service_info = ServiceInfo( service_class=service["serviceClass"], description_url=service["descriptionUrl"], provided_interfaces=service["providedInterfaces"], + annotations=serviceAnnotations, ) self.configuration_parameter_list: list = [] diff --git a/tests/assets/example.serviceconfig b/tests/assets/example.serviceconfig index dead302af..305fd8840 100644 --- a/tests/assets/example.serviceconfig +++ b/tests/assets/example.serviceconfig @@ -8,7 +8,12 @@ "ni.measurementlink.measurement.v1.MeasurementService", "ni.measurementlink.measurement.v2.MeasurementService" ], - "path": "start.bat" + "path": "start.bat", + "annotations": { + "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", + "ni/service.collection": "CurrentTests.Inrush", + "ni/service.tags": [ "powerup", "current" ] + } } ] } \ No newline at end of file diff --git a/tests/assets/example.v3.serviceconfig b/tests/assets/example.v3.serviceconfig new file mode 100644 index 000000000..a571de04a --- /dev/null +++ b/tests/assets/example.v3.serviceconfig @@ -0,0 +1,17 @@ +{ + "services": [ + { + "displayName": "SampleMeasurement", + "serviceClass": "SampleMeasurement_Python", + "descriptionUrl": "https://www.example.com/SampleMeasurement.html", + "providedInterfaces": [ + "ni.measurementlink.measurement.v1.MeasurementService", + "ni.measurementlink.measurement.v2.MeasurementService" + ], + "path": "start.bat", + "annotations": { + "ni/service.collection": "CurrentTests.Inrush" + } + } + ] +} \ No newline at end of file diff --git a/tests/assets/example.v4.serviceconfig b/tests/assets/example.v4.serviceconfig new file mode 100644 index 000000000..2a262511d --- /dev/null +++ b/tests/assets/example.v4.serviceconfig @@ -0,0 +1,16 @@ +{ + "services": [ + { + "displayName": "SampleMeasurement", + "serviceClass": "SampleMeasurement_Python", + "descriptionUrl": "https://www.example.com/SampleMeasurement.html", + "providedInterfaces": [ + "ni.measurementlink.measurement.v2.MeasurementService" + ], + "path": "start.bat", + "annotations": { + "ni/service.tags": [ "powerup", "current", "voltage" ] + } + } + ] +} \ No newline at end of file diff --git a/tests/assets/example.v5.serviceconfig b/tests/assets/example.v5.serviceconfig new file mode 100644 index 000000000..cdf6af809 --- /dev/null +++ b/tests/assets/example.v5.serviceconfig @@ -0,0 +1,22 @@ +{ + "services": [ + { + "displayName": "SampleMeasurement", + "serviceClass": "SampleMeasurement_Python", + "descriptionUrl": "https://www.example.com/SampleMeasurement.html", + "providedInterfaces": [ + "ni.measurementlink.measurement.v2.MeasurementService" + ], + "path": "start.bat", + "annotations": { + "ni/service.description": "Testing extra Client info", + "client/extra.NumberID" : 500, + "client/extra.Parts" : [ "A25898", "A25412" ], + "client/extra.GroupName" : { + "SpeakerType": "true", + "PhoneType": "false" + } + } + } + ] +} \ No newline at end of file diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index e4cc597fc..d69777480 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -16,8 +16,20 @@ "ni.measurementlink.measurement.v2.MeasurementService", ] +_PROVIDED_ANNOTATIONS = { + "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", + "ni/service.collection": "CurrentTests.Inrush", + "ni/service.tags": [ "powerup", "current" ], + "client/extra.NumberID" : 500, + "client/extra.Parts" : [ "A25898", "A25412" ], + "client/extra.GroupName" : { + "SpeakerType": "true", + "PhoneType": "false" + } +} + _TEST_SERVICE_PORT = "9999" -_TEST_SERVICE_INFO = ServiceInfo("TestServiceClass", "TestUrl", _PROVIDED_MEASUREMENT_SERVICES) +_TEST_SERVICE_INFO = ServiceInfo("TestServiceClass", "TestUrl", _PROVIDED_MEASUREMENT_SERVICES, _PROVIDED_ANNOTATIONS) _TEST_MEASUREMENT_INFO = MeasurementInfo( display_name="TestMeasurement", version="1.0.0.0", @@ -86,6 +98,8 @@ def _validate_grpc_request(request): assert request.service_description.service_class == _TEST_SERVICE_INFO.service_class assert request.service_description.description_url == _TEST_SERVICE_INFO.description_url assert request.service_description.display_name == _TEST_MEASUREMENT_INFO.display_name - assert set(request.service_description.provided_interfaces) >= set( - _PROVIDED_MEASUREMENT_SERVICES + assert set(request.service_description.provided_interfaces) == set( + _PROVIDED_MEASUREMENT_SERVICES) + assert set(request.service_description.annotations) == set( + _PROVIDED_ANNOTATIONS ) diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 1e7249dc0..02bdbf5d3 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -1,6 +1,7 @@ """Tests to validated user facing decorators in service.py.""" import pathlib from enum import Enum +import typing from typing import List, Type import pytest @@ -246,9 +247,10 @@ def test___measurement_service___add_output__output_added( def _fake_measurement_function(): pass +noAnnotations : typing.Dict[str, str] = {} @pytest.mark.parametrize( - "service_config,provided_interfaces", + "service_config,provided_interfaces,provided_annotations", [ ( "example.serviceconfig", @@ -256,13 +258,31 @@ def _fake_measurement_function(): "ni.measurementlink.measurement.v1.MeasurementService", "ni.measurementlink.measurement.v2.MeasurementService", ], + { + "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", + "ni/service.collection": "CurrentTests.Inrush", + "ni/service.tags": [ "powerup", "current" ] + } + ), + ("example.v1.serviceconfig", ["ni.measurementlink.measurement.v1.MeasurementService"], noAnnotations), + ("example.v2.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], noAnnotations), + ("example.v3.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.collection": "CurrentTests.Inrush" }), + ("example.v4.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.tags": [ "powerup", "current", "voltage" ]}), + ("example.v5.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], + { + "ni/service.description": "Testing extra Client info", + "client/extra.NumberID" : "500", + "client/extra.Parts" : [ "A25898", "A25412" ], + "client/extra.GroupName" : { + "SpeakerType": "true", + "PhoneType": "false" + }, + } ), - ("example.v1.serviceconfig", ["ni.measurementlink.measurement.v1.MeasurementService"]), - ("example.v2.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"]), ], ) def test___service_config___create_measurement_service___service_info_matches_service_config( - test_assets_directory: pathlib.Path, service_config: str, provided_interfaces: List[str] + test_assets_directory: pathlib.Path, service_config: str, provided_interfaces: List[str], provided_annotations: typing.Dict[str,str] ): measurement_service = MeasurementService( service_config_path=test_assets_directory / service_config, @@ -276,7 +296,8 @@ def test___service_config___create_measurement_service___service_info_matches_se measurement_service.service_info.description_url == "https://www.example.com/SampleMeasurement.html" ) - + if (provided_annotations != {}): + assert set(measurement_service.service_info.annotations) == set(provided_annotations) @pytest.mark.parametrize( "display_name,type,default_value,enum_type", From 7e3b6b53519cb7a0ae57ec04d5ca71ac982be247 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Fri, 16 Jun 2023 15:25:00 -0500 Subject: [PATCH 02/22] Copy discovery_service.proto and run generate grpc stub --- .../discovery/v1/discovery_service_pb2.py | 46 ++++++++++--------- .../discovery/v1/discovery_service_pb2.pyi | 37 ++++++++++++++- .../discovery/v1/discovery_service.proto | 16 +++++++ 3 files changed, 77 insertions(+), 22 deletions(-) diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.py b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.py index cc41aff2b..78d4a8af1 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.py +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7ni/measurementlink/discovery/v1/discovery_service.proto\x12\x1fni.measurementlink.discovery.v1\"v\n\x11ServiceDescriptor\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65scription_url\x18\x02 \x01(\t\x12\x1b\n\x13provided_interfaces\x18\x03 \x03(\t\x12\x15\n\rservice_class\x18\x04 \x01(\t\"Z\n\x0fServiceLocation\x12\x10\n\x08location\x18\x01 \x01(\t\x12\x15\n\rinsecure_port\x18\x02 \x01(\t\x12\x1e\n\x16ssl_authenticated_port\x18\x03 \x01(\t\"\xad\x01\n\x16RegisterServiceRequest\x12O\n\x13service_description\x18\x01 \x01(\x0b\x32\x32.ni.measurementlink.discovery.v1.ServiceDescriptor\x12\x42\n\x08location\x18\x02 \x01(\x0b\x32\x30.ni.measurementlink.discovery.v1.ServiceLocation\"2\n\x17RegisterServiceResponse\x12\x17\n\x0fregistration_id\x18\x01 \x01(\t\"3\n\x18UnregisterServiceRequest\x12\x17\n\x0fregistration_id\x18\x01 \x01(\t\"\x1b\n\x19UnregisterServiceResponse\"6\n\x18\x45numerateServicesRequest\x12\x1a\n\x12provided_interface\x18\x01 \x01(\t\"k\n\x19\x45numerateServicesResponse\x12N\n\x12\x61vailable_services\x18\x01 \x03(\x0b\x32\x32.ni.measurementlink.discovery.v1.ServiceDescriptor\"J\n\x15ResolveServiceRequest\x12\x1a\n\x12provided_interface\x18\x01 \x01(\t\x12\x15\n\rservice_class\x18\x02 \x01(\t2\xaf\x04\n\x10\x44iscoveryService\x12\x84\x01\n\x0fRegisterService\x12\x37.ni.measurementlink.discovery.v1.RegisterServiceRequest\x1a\x38.ni.measurementlink.discovery.v1.RegisterServiceResponse\x12\x8a\x01\n\x11UnregisterService\x12\x39.ni.measurementlink.discovery.v1.UnregisterServiceRequest\x1a:.ni.measurementlink.discovery.v1.UnregisterServiceResponse\x12\x8a\x01\n\x11\x45numerateServices\x12\x39.ni.measurementlink.discovery.v1.EnumerateServicesRequest\x1a:.ni.measurementlink.discovery.v1.EnumerateServicesResponse\x12z\n\x0eResolveService\x12\x36.ni.measurementlink.discovery.v1.ResolveServiceRequest\x1a\x30.ni.measurementlink.discovery.v1.ServiceLocationB\xcc\x01\n#com.ni.measurementlink.discovery.v1B\x15\x44iscoveryServiceProtoP\x01Z\x0b\x64iscoveryv1\xa2\x02\x04NIMD\xaa\x02\x30NationalInstruments.MeasurementLink.Discovery.V1\xca\x02\x1fNI\\MeasurementLink\\Discovery\\V1\xea\x02\"NI::MeasurementLink::Discovery::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7ni/measurementlink/discovery/v1/discovery_service.proto\x12\x1fni.measurementlink.discovery.v1\"\x84\x02\n\x11ServiceDescriptor\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x17\n\x0f\x64\x65scription_url\x18\x02 \x01(\t\x12\x1b\n\x13provided_interfaces\x18\x03 \x03(\t\x12\x15\n\rservice_class\x18\x04 \x01(\t\x12X\n\x0b\x61nnotations\x18\x05 \x03(\x0b\x32\x43.ni.measurementlink.discovery.v1.ServiceDescriptor.AnnotationsEntry\x1a\x32\n\x10\x41nnotationsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"Z\n\x0fServiceLocation\x12\x10\n\x08location\x18\x01 \x01(\t\x12\x15\n\rinsecure_port\x18\x02 \x01(\t\x12\x1e\n\x16ssl_authenticated_port\x18\x03 \x01(\t\"\xad\x01\n\x16RegisterServiceRequest\x12O\n\x13service_description\x18\x01 \x01(\x0b\x32\x32.ni.measurementlink.discovery.v1.ServiceDescriptor\x12\x42\n\x08location\x18\x02 \x01(\x0b\x32\x30.ni.measurementlink.discovery.v1.ServiceLocation\"2\n\x17RegisterServiceResponse\x12\x17\n\x0fregistration_id\x18\x01 \x01(\t\"3\n\x18UnregisterServiceRequest\x12\x17\n\x0fregistration_id\x18\x01 \x01(\t\"\x1b\n\x19UnregisterServiceResponse\"6\n\x18\x45numerateServicesRequest\x12\x1a\n\x12provided_interface\x18\x01 \x01(\t\"k\n\x19\x45numerateServicesResponse\x12N\n\x12\x61vailable_services\x18\x01 \x03(\x0b\x32\x32.ni.measurementlink.discovery.v1.ServiceDescriptor\"J\n\x15ResolveServiceRequest\x12\x1a\n\x12provided_interface\x18\x01 \x01(\t\x12\x15\n\rservice_class\x18\x02 \x01(\t2\xaf\x04\n\x10\x44iscoveryService\x12\x84\x01\n\x0fRegisterService\x12\x37.ni.measurementlink.discovery.v1.RegisterServiceRequest\x1a\x38.ni.measurementlink.discovery.v1.RegisterServiceResponse\x12\x8a\x01\n\x11UnregisterService\x12\x39.ni.measurementlink.discovery.v1.UnregisterServiceRequest\x1a:.ni.measurementlink.discovery.v1.UnregisterServiceResponse\x12\x8a\x01\n\x11\x45numerateServices\x12\x39.ni.measurementlink.discovery.v1.EnumerateServicesRequest\x1a:.ni.measurementlink.discovery.v1.EnumerateServicesResponse\x12z\n\x0eResolveService\x12\x36.ni.measurementlink.discovery.v1.ResolveServiceRequest\x1a\x30.ni.measurementlink.discovery.v1.ServiceLocationB\xcc\x01\n#com.ni.measurementlink.discovery.v1B\x15\x44iscoveryServiceProtoP\x01Z\x0b\x64iscoveryv1\xa2\x02\x04NIMD\xaa\x02\x30NationalInstruments.MeasurementLink.Discovery.V1\xca\x02\x1fNI\\MeasurementLink\\Discovery\\V1\xea\x02\"NI::MeasurementLink::Discovery::V1b\x06proto3') _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ni.measurementlink.discovery.v1.discovery_service_pb2', globals()) @@ -21,24 +21,28 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n#com.ni.measurementlink.discovery.v1B\025DiscoveryServiceProtoP\001Z\013discoveryv1\242\002\004NIMD\252\0020NationalInstruments.MeasurementLink.Discovery.V1\312\002\037NI\\MeasurementLink\\Discovery\\V1\352\002\"NI::MeasurementLink::Discovery::V1' - _SERVICEDESCRIPTOR._serialized_start=92 - _SERVICEDESCRIPTOR._serialized_end=210 - _SERVICELOCATION._serialized_start=212 - _SERVICELOCATION._serialized_end=302 - _REGISTERSERVICEREQUEST._serialized_start=305 - _REGISTERSERVICEREQUEST._serialized_end=478 - _REGISTERSERVICERESPONSE._serialized_start=480 - _REGISTERSERVICERESPONSE._serialized_end=530 - _UNREGISTERSERVICEREQUEST._serialized_start=532 - _UNREGISTERSERVICEREQUEST._serialized_end=583 - _UNREGISTERSERVICERESPONSE._serialized_start=585 - _UNREGISTERSERVICERESPONSE._serialized_end=612 - _ENUMERATESERVICESREQUEST._serialized_start=614 - _ENUMERATESERVICESREQUEST._serialized_end=668 - _ENUMERATESERVICESRESPONSE._serialized_start=670 - _ENUMERATESERVICESRESPONSE._serialized_end=777 - _RESOLVESERVICEREQUEST._serialized_start=779 - _RESOLVESERVICEREQUEST._serialized_end=853 - _DISCOVERYSERVICE._serialized_start=856 - _DISCOVERYSERVICE._serialized_end=1415 + _SERVICEDESCRIPTOR_ANNOTATIONSENTRY._options = None + _SERVICEDESCRIPTOR_ANNOTATIONSENTRY._serialized_options = b'8\001' + _SERVICEDESCRIPTOR._serialized_start=93 + _SERVICEDESCRIPTOR._serialized_end=353 + _SERVICEDESCRIPTOR_ANNOTATIONSENTRY._serialized_start=303 + _SERVICEDESCRIPTOR_ANNOTATIONSENTRY._serialized_end=353 + _SERVICELOCATION._serialized_start=355 + _SERVICELOCATION._serialized_end=445 + _REGISTERSERVICEREQUEST._serialized_start=448 + _REGISTERSERVICEREQUEST._serialized_end=621 + _REGISTERSERVICERESPONSE._serialized_start=623 + _REGISTERSERVICERESPONSE._serialized_end=673 + _UNREGISTERSERVICEREQUEST._serialized_start=675 + _UNREGISTERSERVICEREQUEST._serialized_end=726 + _UNREGISTERSERVICERESPONSE._serialized_start=728 + _UNREGISTERSERVICERESPONSE._serialized_end=755 + _ENUMERATESERVICESREQUEST._serialized_start=757 + _ENUMERATESERVICESREQUEST._serialized_end=811 + _ENUMERATESERVICESRESPONSE._serialized_start=813 + _ENUMERATESERVICESRESPONSE._serialized_end=920 + _RESOLVESERVICEREQUEST._serialized_start=922 + _RESOLVESERVICEREQUEST._serialized_end=996 + _DISCOVERYSERVICE._serialized_start=999 + _DISCOVERYSERVICE._serialized_end=1558 # @@protoc_insertion_point(module_scope) diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi index 7af2d53c8..d900822bd 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi @@ -26,10 +26,27 @@ class ServiceDescriptor(google.protobuf.message.Message): DESCRIPTOR: google.protobuf.descriptor.Descriptor + @typing_extensions.final + class AnnotationsEntry(google.protobuf.message.Message): + DESCRIPTOR: google.protobuf.descriptor.Descriptor + + KEY_FIELD_NUMBER: builtins.int + VALUE_FIELD_NUMBER: builtins.int + key: builtins.str + value: builtins.str + def __init__( + self, + *, + key: builtins.str = ..., + value: builtins.str = ..., + ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + DISPLAY_NAME_FIELD_NUMBER: builtins.int DESCRIPTION_URL_FIELD_NUMBER: builtins.int PROVIDED_INTERFACES_FIELD_NUMBER: builtins.int SERVICE_CLASS_FIELD_NUMBER: builtins.int + ANNOTATIONS_FIELD_NUMBER: builtins.int display_name: builtins.str """Required. The user visible name of the service.""" description_url: builtins.str @@ -43,6 +60,23 @@ class ServiceDescriptor(google.protobuf.message.Message): """Required. The "class" of a service. The value of this field should be unique for a given interface in provided_interfaces. In effect, the .proto service declaration defines the interface, and this field defines a class or concrete type of the interface. """ + @property + def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + """Optional. Represents a set of annotations on the service. + Well-known annotations: + - Description + - Key: "ni/service.description" + - Expected format: string + - Example: "Measure inrush current with a shorted load and validate results against configured limits." + - Collection + - Key: "ni/service.collection" + - Expected format: "." delimited namespace/hierarchy case-insensitive string + - Example: "CurrentTests.Inrush" + - Tags + - Key: "ni/service.tags" + - Expected format: serialized JSON string of an array of strings + - Example: "[\\"powerup\\", \\"current\\"]" + """ def __init__( self, *, @@ -50,8 +84,9 @@ class ServiceDescriptor(google.protobuf.message.Message): description_url: builtins.str = ..., provided_interfaces: collections.abc.Iterable[builtins.str] | None = ..., service_class: builtins.str = ..., + annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["description_url", b"description_url", "display_name", b"display_name", "provided_interfaces", b"provided_interfaces", "service_class", b"service_class"]) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "description_url", b"description_url", "display_name", b"display_name", "provided_interfaces", b"provided_interfaces", "service_class", b"service_class"]) -> None: ... global___ServiceDescriptor = ServiceDescriptor diff --git a/ni_measurementlink_service/_internal/stubs/proto/ni/measurementlink/discovery/v1/discovery_service.proto b/ni_measurementlink_service/_internal/stubs/proto/ni/measurementlink/discovery/v1/discovery_service.proto index 5882a0469..5f2b93b5a 100644 --- a/ni_measurementlink_service/_internal/stubs/proto/ni/measurementlink/discovery/v1/discovery_service.proto +++ b/ni_measurementlink_service/_internal/stubs/proto/ni/measurementlink/discovery/v1/discovery_service.proto @@ -67,6 +67,22 @@ message ServiceDescriptor { // Required. The "class" of a service. The value of this field should be unique for a given interface in provided_interfaces. // In effect, the .proto service declaration defines the interface, and this field defines a class or concrete type of the interface. string service_class = 4; + + // Optional. Represents a set of annotations on the service. + // Well-known annotations: + // - Description + // - Key: "ni/service.description" + // - Expected format: string + // - Example: "Measure inrush current with a shorted load and validate results against configured limits." + // - Collection + // - Key: "ni/service.collection" + // - Expected format: "." delimited namespace/hierarchy case-insensitive string + // - Example: "CurrentTests.Inrush" + // - Tags + // - Key: "ni/service.tags" + // - Expected format: serialized JSON string of an array of strings + // - Example: "[\"powerup\", \"current\"]" + map annotations = 5; } // Represents the location of a service. The location generally includes the IP address and port number for the service From e324dce7c0eb7f6da60065f6145d79a56f971e01 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 22 Jun 2023 09:53:24 -0500 Subject: [PATCH 03/22] Fix style and running black. --- .../_internal/discovery_client.py | 12 +- .../discovery/v1/discovery_service_pb2.pyi | 83 ++++++-- .../v1/measurement_service_pb2.pyi | 140 +++++++++++-- .../v2/measurement_service_pb2.pyi | 148 ++++++++++++-- .../measurementlink/pin_map_context_pb2.pyi | 8 +- .../pinmap/v1/pin_map_service_pb2.pyi | 185 +++++++++++++++--- .../v1/session_management_service_pb2.pyi | 117 +++++++++-- .../_internal/stubs/session_pb2.pyi | 84 ++++++-- .../measurement/info.py | 2 +- .../measurement/service.py | 6 +- tests/assets/sample_measurement_test_pb2.pyi | 24 ++- .../sample_streaming_measurement_test_pb2.pyi | 27 ++- tests/assets/test_pb2.pyi | 73 +++++-- tests/assets/ui_progress_updates_test_pb2.pyi | 20 +- tests/unit/test_discovery_client.py | 20 +- tests/unit/test_service.py | 54 +++-- 16 files changed, 830 insertions(+), 173 deletions(-) diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index a8483c667..1e3d61d8d 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -107,12 +107,14 @@ def register_measurement_service( service_descriptor.description_url = service_info.description_url service_descriptor.provided_interfaces.extend(service_info.provided_interfaces) - ServiceInfoAnnotations = service_info.annotations - for keys in ServiceInfoAnnotations: - if isinstance(ServiceInfoAnnotations[keys], (int, float)): - service_descriptor.annotations[keys] = str(ServiceInfoAnnotations[keys]) + service_info_annotations = service_info.annotations + for keys in service_info_annotations: + if isinstance(service_info_annotations[keys], (int, float)): + service_descriptor.annotations[keys] = str(service_info_annotations[keys]) else: - service_descriptor.annotations[keys] = ' '.join([str(elem) for elem in ServiceInfoAnnotations[keys]]) + service_descriptor.annotations[keys] = " ".join( + [str(elem) for elem in service_info_annotations[keys]] + ) # Registration Request Creation request = discovery_service_pb2.RegisterServiceRequest( diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi index d900822bd..108f8d074 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi @@ -40,7 +40,9 @@ class ServiceDescriptor(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] + ) -> None: ... DISPLAY_NAME_FIELD_NUMBER: builtins.int DESCRIPTION_URL_FIELD_NUMBER: builtins.int @@ -52,7 +54,9 @@ class ServiceDescriptor(google.protobuf.message.Message): description_url: builtins.str """Optional. Url which provides descriptive information about the service""" @property - def provided_interfaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def provided_interfaces( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Required. The service interfaces provided by the service. This is the gRPC Full Name of the service. Registration can use the gRPC metadata to provide these names. """ @@ -61,7 +65,9 @@ class ServiceDescriptor(google.protobuf.message.Message): In effect, the .proto service declaration defines the interface, and this field defines a class or concrete type of the interface. """ @property - def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the service. Well-known annotations: - Description @@ -86,7 +92,21 @@ class ServiceDescriptor(google.protobuf.message.Message): service_class: builtins.str = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "description_url", b"description_url", "display_name", b"display_name", "provided_interfaces", b"provided_interfaces", "service_class", b"service_class"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "annotations", + b"annotations", + "description_url", + b"description_url", + "display_name", + b"display_name", + "provided_interfaces", + b"provided_interfaces", + "service_class", + b"service_class", + ], + ) -> None: ... global___ServiceDescriptor = ServiceDescriptor @@ -118,7 +138,17 @@ class ServiceLocation(google.protobuf.message.Message): insecure_port: builtins.str = ..., ssl_authenticated_port: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["insecure_port", b"insecure_port", "location", b"location", "ssl_authenticated_port", b"ssl_authenticated_port"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "insecure_port", + b"insecure_port", + "location", + b"location", + "ssl_authenticated_port", + b"ssl_authenticated_port", + ], + ) -> None: ... global___ServiceLocation = ServiceLocation @@ -140,8 +170,18 @@ class RegisterServiceRequest(google.protobuf.message.Message): service_description: global___ServiceDescriptor | None = ..., location: global___ServiceLocation | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["location", b"location", "service_description", b"service_description"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["location", b"location", "service_description", b"service_description"]) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "location", b"location", "service_description", b"service_description" + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "location", b"location", "service_description", b"service_description" + ], + ) -> None: ... global___RegisterServiceRequest = RegisterServiceRequest @@ -157,7 +197,9 @@ class RegisterServiceResponse(google.protobuf.message.Message): *, registration_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["registration_id", b"registration_id"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["registration_id", b"registration_id"] + ) -> None: ... global___RegisterServiceResponse = RegisterServiceResponse @@ -173,7 +215,9 @@ class UnregisterServiceRequest(google.protobuf.message.Message): *, registration_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["registration_id", b"registration_id"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["registration_id", b"registration_id"] + ) -> None: ... global___UnregisterServiceRequest = UnregisterServiceRequest @@ -201,7 +245,9 @@ class EnumerateServicesRequest(google.protobuf.message.Message): *, provided_interface: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface"] + ) -> None: ... global___EnumerateServicesRequest = EnumerateServicesRequest @@ -211,14 +257,20 @@ class EnumerateServicesResponse(google.protobuf.message.Message): AVAILABLE_SERVICES_FIELD_NUMBER: builtins.int @property - def available_services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceDescriptor]: + def available_services( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ServiceDescriptor + ]: """The list of available services which implement the specified service interface.""" def __init__( self, *, available_services: collections.abc.Iterable[global___ServiceDescriptor] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["available_services", b"available_services"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["available_services", b"available_services"] + ) -> None: ... global___EnumerateServicesResponse = EnumerateServicesResponse @@ -242,6 +294,11 @@ class ResolveServiceRequest(google.protobuf.message.Message): provided_interface: builtins.str = ..., service_class: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface", "service_class", b"service_class"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "provided_interface", b"provided_interface", "service_class", b"service_class" + ], + ) -> None: ... global___ResolveServiceRequest = ResolveServiceRequest diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi index 352c89551..fa8637dca 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi @@ -45,17 +45,40 @@ class GetMetadataResponse(google.protobuf.message.Message): def measurement_signature(self) -> global___MeasurementSignature: """Required. Specifies the signature of the measurement.""" @property - def user_interface_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UserInterfaceDetails]: + def user_interface_details( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___UserInterfaceDetails + ]: """Optional. Specifies the user interfaces available for use with the measurement, if any.""" def __init__( self, *, measurement_details: global___MeasurementDetails | None = ..., measurement_signature: global___MeasurementSignature | None = ..., - user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] | None = ..., + user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "measurement_details", + b"measurement_details", + "measurement_signature", + b"measurement_signature", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "measurement_details", + b"measurement_details", + "measurement_signature", + b"measurement_signature", + "user_interface_details", + b"user_interface_details", + ], ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature", "user_interface_details", b"user_interface_details"]) -> None: ... global___GetMetadataResponse = GetMetadataResponse @@ -83,8 +106,24 @@ class MeasureRequest(google.protobuf.message.Message): configuration_parameters: google.protobuf.any_pb2.Any | None = ..., pin_map_context: ni_measurementlink_pin_map_context_pb2.PinMapContext | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "configuration_parameters", + b"configuration_parameters", + "pin_map_context", + b"pin_map_context", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "configuration_parameters", + b"configuration_parameters", + "pin_map_context", + b"pin_map_context", + ], + ) -> None: ... global___MeasureRequest = MeasureRequest @@ -104,7 +143,9 @@ class MeasureResponse(google.protobuf.message.Message): *, outputs: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> builtins.bool: ... + def HasField( + self, field_name: typing_extensions.Literal["outputs", b"outputs"] + ) -> builtins.bool: ... def ClearField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> None: ... global___MeasureResponse = MeasureResponse @@ -127,7 +168,12 @@ class MeasurementDetails(google.protobuf.message.Message): display_name: builtins.str = ..., version: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "version", b"version"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", b"display_name", "version", b"version" + ], + ) -> None: ... global___MeasurementDetails = MeasurementDetails @@ -147,7 +193,11 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def configuration_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigurationParameter]: + def configuration_parameters( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ConfigurationParameter + ]: """Required. Defines the configuration parameters for the measurement.""" @property def configuration_defaults(self) -> google.protobuf.any_pb2.Any: @@ -160,19 +210,39 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: + def outputs( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: """Required. Defines the outputs for the measurement.""" def __init__( self, *, configuration_parameters_message_type: builtins.str = ..., - configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] | None = ..., + configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] + | None = ..., configuration_defaults: google.protobuf.any_pb2.Any | None = ..., outputs_message_type: builtins.str = ..., outputs: collections.abc.Iterable[global___Output] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults", "configuration_parameters", b"configuration_parameters", "configuration_parameters_message_type", b"configuration_parameters_message_type", "outputs", b"outputs", "outputs_message_type", b"outputs_message_type"]) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "configuration_defaults", + b"configuration_defaults", + "configuration_parameters", + b"configuration_parameters", + "configuration_parameters_message_type", + b"configuration_parameters_message_type", + "outputs", + b"outputs", + "outputs_message_type", + b"outputs_message_type", + ], + ) -> None: ... global___MeasurementSignature = MeasurementSignature @@ -190,7 +260,9 @@ class UserInterfaceDetails(google.protobuf.message.Message): *, file_url: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["file_url", b"file_url"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["file_url", b"file_url"] + ) -> None: ... global___UserInterfaceDetails = UserInterfaceDetails @@ -214,7 +286,9 @@ class ConfigurationParameter(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] + ) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -234,12 +308,14 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this configuration parameter represents repeated data and False if it represents a scalar value.""" @property - def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. Well-known annotations: - Type specialization. The keys to other annotations will be read based on the value of `ni/type_specialization` annotation. - Key: "ni/type_specialization" - - Common Values: "pin" ... + - Common Values: "pin" ... - For string parameter with ni/type_specialization annotation equals "pin" - Key: "ni/pin.instrument_type" - Common Values: "niDCPower", "niScope"... @@ -253,7 +329,21 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "annotations", + b"annotations", + "field_number", + b"field_number", + "name", + b"name", + "repeated", + b"repeated", + "type", + b"type", + ], + ) -> None: ... global___ConfigurationParameter = ConfigurationParameter @@ -287,6 +377,18 @@ class Output(google.protobuf.message.Message): name: builtins.str = ..., repeated: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "field_number", + b"field_number", + "name", + b"name", + "repeated", + b"repeated", + "type", + b"type", + ], + ) -> None: ... global___Output = Output diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi index 204cbf119..9c2d7c9c1 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi @@ -45,17 +45,40 @@ class GetMetadataResponse(google.protobuf.message.Message): def measurement_signature(self) -> global___MeasurementSignature: """Required. Specifies the signature of the measurement.""" @property - def user_interface_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UserInterfaceDetails]: + def user_interface_details( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___UserInterfaceDetails + ]: """Optional. Specifies the user interfaces available for use with the measurement, if any.""" def __init__( self, *, measurement_details: global___MeasurementDetails | None = ..., measurement_signature: global___MeasurementSignature | None = ..., - user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] | None = ..., + user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] + | None = ..., + ) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "measurement_details", + b"measurement_details", + "measurement_signature", + b"measurement_signature", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "measurement_details", + b"measurement_details", + "measurement_signature", + b"measurement_signature", + "user_interface_details", + b"user_interface_details", + ], ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature", "user_interface_details", b"user_interface_details"]) -> None: ... global___GetMetadataResponse = GetMetadataResponse @@ -83,8 +106,24 @@ class MeasureRequest(google.protobuf.message.Message): configuration_parameters: google.protobuf.any_pb2.Any | None = ..., pin_map_context: ni_measurementlink_pin_map_context_pb2.PinMapContext | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal[ + "configuration_parameters", + b"configuration_parameters", + "pin_map_context", + b"pin_map_context", + ], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "configuration_parameters", + b"configuration_parameters", + "pin_map_context", + b"pin_map_context", + ], + ) -> None: ... global___MeasureRequest = MeasureRequest @@ -104,7 +143,9 @@ class MeasureResponse(google.protobuf.message.Message): *, outputs: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> builtins.bool: ... + def HasField( + self, field_name: typing_extensions.Literal["outputs", b"outputs"] + ) -> builtins.bool: ... def ClearField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> None: ... global___MeasureResponse = MeasureResponse @@ -127,7 +168,12 @@ class MeasurementDetails(google.protobuf.message.Message): display_name: builtins.str = ..., version: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "version", b"version"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", b"display_name", "version", b"version" + ], + ) -> None: ... global___MeasurementDetails = MeasurementDetails @@ -147,7 +193,11 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def configuration_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigurationParameter]: + def configuration_parameters( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ConfigurationParameter + ]: """Required. Defines the configuration parameters for the measurement.""" @property def configuration_defaults(self) -> google.protobuf.any_pb2.Any: @@ -160,19 +210,39 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: + def outputs( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: """Required. Defines the outputs for the measurement.""" def __init__( self, *, configuration_parameters_message_type: builtins.str = ..., - configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] | None = ..., + configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] + | None = ..., configuration_defaults: google.protobuf.any_pb2.Any | None = ..., outputs_message_type: builtins.str = ..., outputs: collections.abc.Iterable[global___Output] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults", "configuration_parameters", b"configuration_parameters", "configuration_parameters_message_type", b"configuration_parameters_message_type", "outputs", b"outputs", "outputs_message_type", b"outputs_message_type"]) -> None: ... + def HasField( + self, + field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "configuration_defaults", + b"configuration_defaults", + "configuration_parameters", + b"configuration_parameters", + "configuration_parameters_message_type", + b"configuration_parameters_message_type", + "outputs", + b"outputs", + "outputs_message_type", + b"outputs_message_type", + ], + ) -> None: ... global___MeasurementSignature = MeasurementSignature @@ -190,7 +260,9 @@ class UserInterfaceDetails(google.protobuf.message.Message): *, file_url: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["file_url", b"file_url"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["file_url", b"file_url"] + ) -> None: ... global___UserInterfaceDetails = UserInterfaceDetails @@ -214,7 +286,9 @@ class ConfigurationParameter(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] + ) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -234,7 +308,9 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this configuration parameter represents repeated data and False if it represents a scalar value.""" @property - def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. Well-known annotations: - Type specialization. The keys to other annotations will be read based on the value of `ni/type_specialization` annotation. @@ -259,7 +335,21 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "annotations", + b"annotations", + "field_number", + b"field_number", + "name", + b"name", + "repeated", + b"repeated", + "type", + b"type", + ], + ) -> None: ... global___ConfigurationParameter = ConfigurationParameter @@ -283,7 +373,9 @@ class Output(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] + ) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -303,7 +395,9 @@ class Output(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this output represents repeated data and False if it represents a scalar value.""" @property - def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations( + self, + ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. See documentation for ConfigurationParameter annotations for more details and examples. """ @@ -316,6 +410,20 @@ class Output(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "annotations", + b"annotations", + "field_number", + b"field_number", + "name", + b"name", + "repeated", + b"repeated", + "type", + b"type", + ], + ) -> None: ... global___Output = Output diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi index 3adf1d25c..000c2a628 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi @@ -25,7 +25,9 @@ class PinMapContext(google.protobuf.message.Message): pin_map_id: builtins.str """Required. The resource id of the pin map in the Pin Map service that should be used for the call.""" @property - def sites(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + def sites( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: """Optional. List of site numbers being used for the call. If unspecified, use all sites in the pin map.""" def __init__( self, @@ -33,6 +35,8 @@ class PinMapContext(google.protobuf.message.Message): pin_map_id: builtins.str = ..., sites: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "sites", b"sites"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "sites", b"sites"] + ) -> None: ... global___PinMapContext = PinMapContext diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi index e47120cd1..df26f36e5 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi @@ -30,7 +30,9 @@ class PinMap(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] + ) -> None: ... global___PinMap = PinMap @@ -50,7 +52,12 @@ class CreatePinMapFromXmlRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., pin_map_xml: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml" + ], + ) -> None: ... global___CreatePinMapFromXmlRequest = CreatePinMapFromXmlRequest @@ -70,7 +77,12 @@ class UpdatePinMapFromXmlRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., pin_map_xml: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml" + ], + ) -> None: ... global___UpdatePinMapFromXmlRequest = UpdatePinMapFromXmlRequest @@ -86,7 +98,9 @@ class GetPinMapRequest(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] + ) -> None: ... global___GetPinMapRequest = GetPinMapRequest @@ -115,7 +129,12 @@ class QueryPinsRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id" + ], + ) -> None: ... global___QueryPinsRequest = QueryPinsRequest @@ -126,10 +145,18 @@ class QueryPinsResponse(google.protobuf.message.Message): PINS_FIELD_NUMBER: builtins.int PIN_GROUPS_FIELD_NUMBER: builtins.int @property - def pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinDefinition]: + def pins( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___PinDefinition + ]: """List of pins on the registered pin map resource. This list includes both DUT and System pins.""" @property - def pin_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinGroupDefinition]: + def pin_groups( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___PinGroupDefinition + ]: """List of pin groups on the registered pin map resource. When an instrument type id filter is specified, a pin group will only be included in the response if all pins in the pin group match the instrument type. @@ -140,7 +167,9 @@ class QueryPinsResponse(google.protobuf.message.Message): pins: collections.abc.Iterable[global___PinDefinition] | None = ..., pin_groups: collections.abc.Iterable[global___PinGroupDefinition] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_groups", b"pin_groups", "pins", b"pins"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["pin_groups", b"pin_groups", "pins", b"pins"] + ) -> None: ... global___QueryPinsResponse = QueryPinsResponse @@ -160,7 +189,12 @@ class PinDefinition(google.protobuf.message.Message): display_name: builtins.str = ..., is_system_pin: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "is_system_pin", b"is_system_pin"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", b"display_name", "is_system_pin", b"is_system_pin" + ], + ) -> None: ... global___PinDefinition = PinDefinition @@ -174,10 +208,14 @@ class PinGroupDefinition(google.protobuf.message.Message): display_name: builtins.str """Name of the pin group.""" @property - def pin_or_group_references(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_group_references( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of other pins or pin groups within this pin group.""" @property - def resolved_pins(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def resolved_pins( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Distinct union of pins within this pin group, including those within nested pin groups.""" def __init__( self, @@ -186,7 +224,17 @@ class PinGroupDefinition(google.protobuf.message.Message): pin_or_group_references: collections.abc.Iterable[builtins.str] | None = ..., resolved_pins: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "pin_or_group_references", b"pin_or_group_references", "resolved_pins", b"resolved_pins"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", + b"display_name", + "pin_or_group_references", + b"pin_or_group_references", + "resolved_pins", + b"resolved_pins", + ], + ) -> None: ... global___PinGroupDefinition = PinGroupDefinition @@ -202,7 +250,9 @@ class QueryRelaysRequest(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] + ) -> None: ... global___QueryRelaysRequest = QueryRelaysRequest @@ -213,10 +263,18 @@ class QueryRelaysResponse(google.protobuf.message.Message): RELAYS_FIELD_NUMBER: builtins.int RELAY_GROUPS_FIELD_NUMBER: builtins.int @property - def relays(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RelayDefinition]: + def relays( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___RelayDefinition + ]: """List of relays on the registered pin map resource. This list includes both Site relays and System relays.""" @property - def relay_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RelayGroupDefinition]: + def relay_groups( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___RelayGroupDefinition + ]: """List of relay groups on the registered pin map resource.""" def __init__( self, @@ -224,7 +282,10 @@ class QueryRelaysResponse(google.protobuf.message.Message): relays: collections.abc.Iterable[global___RelayDefinition] | None = ..., relay_groups: collections.abc.Iterable[global___RelayGroupDefinition] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["relay_groups", b"relay_groups", "relays", b"relays"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["relay_groups", b"relay_groups", "relays", b"relays"], + ) -> None: ... global___QueryRelaysResponse = QueryRelaysResponse @@ -244,7 +305,12 @@ class RelayDefinition(google.protobuf.message.Message): display_name: builtins.str = ..., is_system_relay: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "is_system_relay", b"is_system_relay"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", b"display_name", "is_system_relay", b"is_system_relay" + ], + ) -> None: ... global___RelayDefinition = RelayDefinition @@ -258,10 +324,14 @@ class RelayGroupDefinition(google.protobuf.message.Message): display_name: builtins.str """Name of the relay group.""" @property - def relay_or_group_references(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def relay_or_group_references( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of other relays or relay groups within this relay group.""" @property - def resolved_relays(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def resolved_relays( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Distinct union of relays within this relay group, including those within nested relay groups.""" def __init__( self, @@ -270,7 +340,17 @@ class RelayGroupDefinition(google.protobuf.message.Message): relay_or_group_references: collections.abc.Iterable[builtins.str] | None = ..., resolved_relays: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "relay_or_group_references", b"relay_or_group_references", "resolved_relays", b"resolved_relays"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "display_name", + b"display_name", + "relay_or_group_references", + b"relay_or_group_references", + "resolved_relays", + b"resolved_relays", + ], + ) -> None: ... global___RelayGroupDefinition = RelayGroupDefinition @@ -285,10 +365,14 @@ class QueryResourceAccessInformationRequest(google.protobuf.message.Message): pin_map_id: builtins.str """Required. The resource id of the registered pin map resource.""" @property - def sites(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + def sites( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: """Optional. The list of sites for which to get instrument resource access information. If unspecified, get instrument resource information for all sites in the registered pin map resource.""" @property - def pin_or_relay_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_relay_names( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Optional. The list of pins, pin groups, relays, or relay groups for which to get instrument resource access information. If unspecified, get instrument resource information for all pins and relays in the registered pin map resource.""" instrument_type_id: builtins.str """Optional. The instrument type for which to get instrument resource access information. If unspecified, get instrument resource information for all instrument types connected in the registered pin map resource. @@ -310,7 +394,19 @@ class QueryResourceAccessInformationRequest(google.protobuf.message.Message): pin_or_relay_names: collections.abc.Iterable[builtins.str] | None = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id", "pin_or_relay_names", b"pin_or_relay_names", "sites", b"sites"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "instrument_type_id", + b"instrument_type_id", + "pin_map_id", + b"pin_map_id", + "pin_or_relay_names", + b"pin_or_relay_names", + "sites", + b"sites", + ], + ) -> None: ... global___QueryResourceAccessInformationRequest = QueryResourceAccessInformationRequest @@ -320,14 +416,24 @@ class QueryResourceAccessInformationResponse(google.protobuf.message.Message): RESOURCE_ACCESS_INFORMATION_FIELD_NUMBER: builtins.int @property - def resource_access_information(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceAccessInformation]: + def resource_access_information( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ResourceAccessInformation + ]: """List of ResourceAccessInformation objects with instrument resource names and channels.""" def __init__( self, *, - resource_access_information: collections.abc.Iterable[global___ResourceAccessInformation] | None = ..., + resource_access_information: collections.abc.Iterable[global___ResourceAccessInformation] + | None = ..., + ) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "resource_access_information", b"resource_access_information" + ], ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["resource_access_information", b"resource_access_information"]) -> None: ... global___QueryResourceAccessInformationResponse = QueryResourceAccessInformationResponse @@ -364,7 +470,11 @@ class ResourceAccessInformation(google.protobuf.message.Message): For custom instruments the user defined instrument type id is defined in the pin map file. """ @property - def channel_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ChannelMapping]: + def channel_mappings( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ChannelMapping + ]: """List of site and pin/relay mappings that correspond to each channel in the channel_list. Each item contains a mapping corresponding to a channel in this instrument resource, in the order of the channel_list. """ @@ -376,7 +486,19 @@ class ResourceAccessInformation(google.protobuf.message.Message): instrument_type_id: builtins.str = ..., channel_mappings: collections.abc.Iterable[global___ChannelMapping] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["channel_list", b"channel_list", "channel_mappings", b"channel_mappings", "instrument_type_id", b"instrument_type_id", "resource_name", b"resource_name"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "channel_list", + b"channel_list", + "channel_mappings", + b"channel_mappings", + "instrument_type_id", + b"instrument_type_id", + "resource_name", + b"resource_name", + ], + ) -> None: ... global___ResourceAccessInformation = ResourceAccessInformation @@ -402,6 +524,11 @@ class ChannelMapping(google.protobuf.message.Message): site: builtins.int = ..., channel: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site" + ], + ) -> None: ... global___ChannelMapping = ChannelMapping diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi index a581c9a95..bb25e57cd 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi @@ -60,7 +60,11 @@ class SessionInformation(google.protobuf.message.Message): This field is readonly. """ @property - def channel_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ChannelMapping]: + def channel_mappings( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___ChannelMapping + ]: """List of site and pin/relay mappings that correspond to each channel in the channel_list. Each item contains a mapping corresponding to a channel in this instrument resource, in the order of the channel_list. This field is empty for any SessionInformation returned from ReserveAllRegisteredSessions. @@ -76,8 +80,26 @@ class SessionInformation(google.protobuf.message.Message): session_exists: builtins.bool = ..., channel_mappings: collections.abc.Iterable[global___ChannelMapping] | None = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["session", b"session"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["channel_list", b"channel_list", "channel_mappings", b"channel_mappings", "instrument_type_id", b"instrument_type_id", "resource_name", b"resource_name", "session", b"session", "session_exists", b"session_exists"]) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["session", b"session"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "channel_list", + b"channel_list", + "channel_mappings", + b"channel_mappings", + "instrument_type_id", + b"instrument_type_id", + "resource_name", + b"resource_name", + "session", + b"session", + "session_exists", + b"session_exists", + ], + ) -> None: ... global___SessionInformation = SessionInformation @@ -103,7 +125,12 @@ class ChannelMapping(google.protobuf.message.Message): site: builtins.int = ..., channel: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site" + ], + ) -> None: ... global___ChannelMapping = ChannelMapping @@ -119,7 +146,9 @@ class ReserveSessionsRequest(google.protobuf.message.Message): def pin_map_context(self) -> ni_measurementlink_pin_map_context_pb2.PinMapContext: """Required. Includes the pin map ID for the pin map in the Pin Map Service, as well as the list of sites for the measurement.""" @property - def pin_or_relay_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_relay_names( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Optional. List of pins, pin groups, relays, or relay groups to use for the measurement. If unspecified, reserve sessions for all pins and relays in the registered pin map resource.""" instrument_type_id: builtins.str """Optional. Instrument type ID for the measurement. If unspecified, reserve sessions for all instrument types connected in the registered pin map resource. @@ -145,8 +174,22 @@ class ReserveSessionsRequest(google.protobuf.message.Message): instrument_type_id: builtins.str = ..., timeout_in_milliseconds: builtins.int = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["pin_map_context", b"pin_map_context"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_context", b"pin_map_context", "pin_or_relay_names", b"pin_or_relay_names", "timeout_in_milliseconds", b"timeout_in_milliseconds"]) -> None: ... + def HasField( + self, field_name: typing_extensions.Literal["pin_map_context", b"pin_map_context"] + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "instrument_type_id", + b"instrument_type_id", + "pin_map_context", + b"pin_map_context", + "pin_or_relay_names", + b"pin_or_relay_names", + "timeout_in_milliseconds", + b"timeout_in_milliseconds", + ], + ) -> None: ... global___ReserveSessionsRequest = ReserveSessionsRequest @@ -156,7 +199,11 @@ class ReserveSessionsResponse(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: + def sessions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SessionInformation + ]: """List of information needed to create or use each session for the given pin, site, and instrument type ID. This field is readonly. """ @@ -165,7 +212,9 @@ class ReserveSessionsResponse(google.protobuf.message.Message): *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["sessions", b"sessions"] + ) -> None: ... global___ReserveSessionsResponse = ReserveSessionsResponse @@ -175,14 +224,20 @@ class UnreserveSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: + def sessions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SessionInformation + ]: """Required. List of information of sessions to be unreserved in the session management service.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["sessions", b"sessions"] + ) -> None: ... global___UnreserveSessionsRequest = UnreserveSessionsRequest @@ -202,14 +257,20 @@ class RegisterSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: + def sessions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SessionInformation + ]: """Required. List of sessions to register with the session management service to track as the sessions are open.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["sessions", b"sessions"] + ) -> None: ... global___RegisterSessionsRequest = RegisterSessionsRequest @@ -229,14 +290,20 @@ class UnregisterSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: + def sessions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SessionInformation + ]: """Required. List of sessions to unregister with the session management service to mark them as sessions were closed.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["sessions", b"sessions"] + ) -> None: ... global___UnregisterSessionsRequest = UnregisterSessionsRequest @@ -278,7 +345,15 @@ class ReserveAllRegisteredSessionsRequest(google.protobuf.message.Message): timeout_in_milliseconds: builtins.int = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "timeout_in_milliseconds", b"timeout_in_milliseconds"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "instrument_type_id", + b"instrument_type_id", + "timeout_in_milliseconds", + b"timeout_in_milliseconds", + ], + ) -> None: ... global___ReserveAllRegisteredSessionsRequest = ReserveAllRegisteredSessionsRequest @@ -288,13 +363,19 @@ class ReserveAllRegisteredSessionsResponse(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: + def sessions( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___SessionInformation + ]: """Sessions currently registered in the session management service.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["sessions", b"sessions"] + ) -> None: ... global___ReserveAllRegisteredSessionsResponse = ReserveAllRegisteredSessionsResponse diff --git a/ni_measurementlink_service/_internal/stubs/session_pb2.pyi b/ni_measurementlink_service/_internal/stubs/session_pb2.pyi index b42b9347c..a92c1a4d4 100644 --- a/ni_measurementlink_service/_internal/stubs/session_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/session_pb2.pyi @@ -22,13 +22,20 @@ class _SessionInitializationBehavior: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _SessionInitializationBehaviorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SessionInitializationBehavior.ValueType], builtins.type): +class _SessionInitializationBehaviorEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ + _SessionInitializationBehavior.ValueType + ], + builtins.type, +): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor SESSION_INITIALIZATION_BEHAVIOR_UNSPECIFIED: _SessionInitializationBehavior.ValueType # 0 SESSION_INITIALIZATION_BEHAVIOR_INITIALIZE_NEW: _SessionInitializationBehavior.ValueType # 1 SESSION_INITIALIZATION_BEHAVIOR_ATTACH_TO_EXISTING: _SessionInitializationBehavior.ValueType # 2 -class SessionInitializationBehavior(_SessionInitializationBehavior, metaclass=_SessionInitializationBehaviorEnumTypeWrapper): ... +class SessionInitializationBehavior( + _SessionInitializationBehavior, metaclass=_SessionInitializationBehaviorEnumTypeWrapper +): ... SESSION_INITIALIZATION_BEHAVIOR_UNSPECIFIED: SessionInitializationBehavior.ValueType # 0 SESSION_INITIALIZATION_BEHAVIOR_INITIALIZE_NEW: SessionInitializationBehavior.ValueType # 1 @@ -49,9 +56,17 @@ class Session(google.protobuf.message.Message): name: builtins.str = ..., id: builtins.int = ..., ) -> None: ... - def HasField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"]) -> builtins.bool: ... - def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"]) -> None: ... - def WhichOneof(self, oneof_group: typing_extensions.Literal["session", b"session"]) -> typing_extensions.Literal["name", "id"] | None: ... + def HasField( + self, + field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"], + ) -> builtins.bool: ... + def ClearField( + self, + field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"], + ) -> None: ... + def WhichOneof( + self, oneof_group: typing_extensions.Literal["session", b"session"] + ) -> typing_extensions.Literal["name", "id"] | None: ... global___Session = Session @@ -78,7 +93,21 @@ class DeviceProperties(google.protobuf.message.Message): serial_number: builtins.str = ..., product_id: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["model", b"model", "name", b"name", "product_id", b"product_id", "serial_number", b"serial_number", "vendor", b"vendor"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "model", + b"model", + "name", + b"name", + "product_id", + b"product_id", + "serial_number", + b"serial_number", + "vendor", + b"vendor", + ], + ) -> None: ... global___DeviceProperties = DeviceProperties @@ -98,7 +127,11 @@ class EnumerateDevicesResponse(google.protobuf.message.Message): DEVICES_FIELD_NUMBER: builtins.int @property - def devices(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeviceProperties]: ... + def devices( + self, + ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ + global___DeviceProperties + ]: ... def __init__( self, *, @@ -124,7 +157,12 @@ class ReserveRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "client_id", b"client_id", "reservation_id", b"reservation_id" + ], + ) -> None: ... global___ReserveRequest = ReserveRequest @@ -139,7 +177,9 @@ class ReserveResponse(google.protobuf.message.Message): *, is_reserved: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"] + ) -> None: ... global___ReserveResponse = ReserveResponse @@ -159,7 +199,12 @@ class IsReservedByClientRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "client_id", b"client_id", "reservation_id", b"reservation_id" + ], + ) -> None: ... global___IsReservedByClientRequest = IsReservedByClientRequest @@ -174,7 +219,9 @@ class IsReservedByClientResponse(google.protobuf.message.Message): *, is_reserved: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"] + ) -> None: ... global___IsReservedByClientResponse = IsReservedByClientResponse @@ -194,7 +241,12 @@ class UnreserveRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "client_id", b"client_id", "reservation_id", b"reservation_id" + ], + ) -> None: ... global___UnreserveRequest = UnreserveRequest @@ -209,7 +261,9 @@ class UnreserveResponse(google.protobuf.message.Message): *, is_unreserved: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_unreserved", b"is_unreserved"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["is_unreserved", b"is_unreserved"] + ) -> None: ... global___UnreserveResponse = UnreserveResponse @@ -234,6 +288,8 @@ class ResetServerResponse(google.protobuf.message.Message): *, is_server_reset: builtins.bool = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["is_server_reset", b"is_server_reset"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["is_server_reset", b"is_server_reset"] + ) -> None: ... global___ResetServerResponse = ResetServerResponse diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 632accb46..ca0142da3 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -5,7 +5,6 @@ import typing from pathlib import Path from typing import NamedTuple -from typing import Dict from google.protobuf import type_pb2 @@ -56,6 +55,7 @@ class ServiceInfo(NamedTuple): provided_interfaces: typing.List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] annotations: typing.Dict[str, str] = {} + class TypeSpecialization(enum.Enum): """Enum that represents the type specializations for measurement parameters.""" diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 960758cd3..4d3bdeee9 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -180,15 +180,15 @@ def __init__( version=version, ui_file_paths=ui_file_paths, ) - serviceAnnotations = Dict[str,str] + service_annotations = Dict[str, str] if "annotations" in service: - serviceAnnotations = service["annotations"] + service_annotations = service["annotations"] self.service_info = ServiceInfo( service_class=service["serviceClass"], description_url=service["descriptionUrl"], provided_interfaces=service["providedInterfaces"], - annotations=serviceAnnotations, + annotations=service_annotations, ) self.configuration_parameter_list: list = [] diff --git a/tests/assets/sample_measurement_test_pb2.pyi b/tests/assets/sample_measurement_test_pb2.pyi index cd131c6e8..0c00eae4a 100644 --- a/tests/assets/sample_measurement_test_pb2.pyi +++ b/tests/assets/sample_measurement_test_pb2.pyi @@ -54,12 +54,16 @@ class SampleMeasurementParameter(google.protobuf.message.Message): STRING_ARRAY_IN_FIELD_NUMBER: builtins.int float_in: builtins.float @property - def double_array_in(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def double_array_in( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... bool_in: builtins.bool string_in: builtins.str enum_in: global___Color.ValueType @property - def string_array_in(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def string_array_in( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( self, *, @@ -70,6 +74,20 @@ class SampleMeasurementParameter(google.protobuf.message.Message): enum_in: global___Color.ValueType = ..., string_array_in: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bool_in", b"bool_in", "double_array_in", b"double_array_in", "enum_in", b"enum_in", "float_in", b"float_in", "string_array_in", b"string_array_in", "string_in", b"string_in"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "bool_in", + b"bool_in", + "double_array_in", + b"double_array_in", + "float_in", + b"float_in", + "string_array_in", + b"string_array_in", + "string_in", + b"string_in", + ], + ) -> None: ... global___SampleMeasurementParameter = SampleMeasurementParameter diff --git a/tests/assets/sample_streaming_measurement_test_pb2.pyi b/tests/assets/sample_streaming_measurement_test_pb2.pyi index 7f93b49e6..5a3f7f290 100644 --- a/tests/assets/sample_streaming_measurement_test_pb2.pyi +++ b/tests/assets/sample_streaming_measurement_test_pb2.pyi @@ -48,7 +48,23 @@ class SampleStreamingMeasurementParameter(google.protobuf.message.Message): response_interval_in_ms: builtins.int = ..., error_on_index: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["cumulative_data", b"cumulative_data", "data_size", b"data_size", "error_on_index", b"error_on_index", "name", b"name", "num_responses", b"num_responses", "response_interval_in_ms", b"response_interval_in_ms"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "cumulative_data", + b"cumulative_data", + "data_size", + b"data_size", + "error_on_index", + b"error_on_index", + "name", + b"name", + "num_responses", + b"num_responses", + "response_interval_in_ms", + b"response_interval_in_ms", + ], + ) -> None: ... global___SampleStreamingMeasurementParameter = SampleStreamingMeasurementParameter @@ -62,7 +78,9 @@ class SampleStreamingMeasurementOutput(google.protobuf.message.Message): name: builtins.str index: builtins.int @property - def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... def __init__( self, *, @@ -70,6 +88,9 @@ class SampleStreamingMeasurementOutput(google.protobuf.message.Message): index: builtins.int = ..., data: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "index", b"index", "name", b"name"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal["data", b"data", "index", b"index", "name", b"name"], + ) -> None: ... global___SampleStreamingMeasurementOutput = SampleStreamingMeasurementOutput diff --git a/tests/assets/test_pb2.pyi b/tests/assets/test_pb2.pyi index e712c61c3..3431ffe94 100644 --- a/tests/assets/test_pb2.pyi +++ b/tests/assets/test_pb2.pyi @@ -73,24 +73,37 @@ class MeasurementParameter(google.protobuf.message.Message): bool_data: builtins.bool string_data: builtins.str @property - def double_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... - @property - def float_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def double_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... @property - def int32_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def float_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... @property - def uint32_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def int32_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def int64_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def uint32_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def uint64_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def int64_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def bool_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... + def uint64_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def string_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - enum_data: global___DifferentColor.ValueType + def bool_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... @property - def enum_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___DifferentColor.ValueType]: ... + def string_array_data( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( self, *, @@ -113,6 +126,42 @@ class MeasurementParameter(google.protobuf.message.Message): enum_data: global___DifferentColor.ValueType = ..., enum_array_data: collections.abc.Iterable[global___DifferentColor.ValueType] | None = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["bool_array_data", b"bool_array_data", "bool_data", b"bool_data", "double_array_data", b"double_array_data", "double_data", b"double_data", "enum_array_data", b"enum_array_data", "enum_data", b"enum_data", "float_array_data", b"float_array_data", "float_data", b"float_data", "int32_array_data", b"int32_array_data", "int32_data", b"int32_data", "int64_array_data", b"int64_array_data", "int64_data", b"int64_data", "string_array_data", b"string_array_data", "string_data", b"string_data", "uint32_array_data", b"uint32_array_data", "uint32_data", b"uint32_data", "uint64_array_data", b"uint64_array_data", "uint64_data", b"uint64_data"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "bool_array_data", + b"bool_array_data", + "bool_data", + b"bool_data", + "double_array_data", + b"double_array_data", + "double_data", + b"double_data", + "float_array_data", + b"float_array_data", + "float_data", + b"float_data", + "int32_array_data", + b"int32_array_data", + "int32_data", + b"int32_data", + "int64_array_data", + b"int64_array_data", + "int64_data", + b"int64_data", + "string_array_data", + b"string_array_data", + "string_data", + b"string_data", + "uint32_array_data", + b"uint32_array_data", + "uint32_data", + b"uint32_data", + "uint64_array_data", + b"uint64_array_data", + "uint64_data", + b"uint64_data", + ], + ) -> None: ... global___MeasurementParameter = MeasurementParameter diff --git a/tests/assets/ui_progress_updates_test_pb2.pyi b/tests/assets/ui_progress_updates_test_pb2.pyi index 1ef8ac68e..20641043a 100644 --- a/tests/assets/ui_progress_updates_test_pb2.pyi +++ b/tests/assets/ui_progress_updates_test_pb2.pyi @@ -33,7 +33,9 @@ class UIProgressUpdatesParameter(google.protobuf.message.Message): *, time_in_seconds: builtins.float = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["time_in_seconds", b"time_in_seconds"]) -> None: ... + def ClearField( + self, field_name: typing_extensions.Literal["time_in_seconds", b"time_in_seconds"] + ) -> None: ... global___UIProgressUpdatesParameter = UIProgressUpdatesParameter @@ -46,7 +48,9 @@ class UIProgressUpdatesOutput(google.protobuf.message.Message): STATUS_FIELD_NUMBER: builtins.int elapsed_time_in_seconds: builtins.float @property - def random_numbers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def random_numbers( + self, + ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... status: builtins.str def __init__( self, @@ -55,6 +59,16 @@ class UIProgressUpdatesOutput(google.protobuf.message.Message): random_numbers: collections.abc.Iterable[builtins.float] | None = ..., status: builtins.str = ..., ) -> None: ... - def ClearField(self, field_name: typing_extensions.Literal["elapsed_time_in_seconds", b"elapsed_time_in_seconds", "random_numbers", b"random_numbers", "status", b"status"]) -> None: ... + def ClearField( + self, + field_name: typing_extensions.Literal[ + "elapsed_time_in_seconds", + b"elapsed_time_in_seconds", + "random_numbers", + b"random_numbers", + "status", + b"status", + ], + ) -> None: ... global___UIProgressUpdatesOutput = UIProgressUpdatesOutput diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index d69777480..9b79fca24 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -19,17 +19,16 @@ _PROVIDED_ANNOTATIONS = { "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": [ "powerup", "current" ], - "client/extra.NumberID" : 500, - "client/extra.Parts" : [ "A25898", "A25412" ], - "client/extra.GroupName" : { - "SpeakerType": "true", - "PhoneType": "false" - } + "ni/service.tags": ["powerup", "current"], + "client/extra.NumberID": 500, + "client/extra.Parts": ["A25898", "A25412"], + "client/extra.GroupName": {"SpeakerType": "true", "PhoneType": "false"}, } _TEST_SERVICE_PORT = "9999" -_TEST_SERVICE_INFO = ServiceInfo("TestServiceClass", "TestUrl", _PROVIDED_MEASUREMENT_SERVICES, _PROVIDED_ANNOTATIONS) +_TEST_SERVICE_INFO = ServiceInfo( + "TestServiceClass", "TestUrl", _PROVIDED_MEASUREMENT_SERVICES, _PROVIDED_ANNOTATIONS +) _TEST_MEASUREMENT_INFO = MeasurementInfo( display_name="TestMeasurement", version="1.0.0.0", @@ -99,7 +98,6 @@ def _validate_grpc_request(request): assert request.service_description.description_url == _TEST_SERVICE_INFO.description_url assert request.service_description.display_name == _TEST_MEASUREMENT_INFO.display_name assert set(request.service_description.provided_interfaces) == set( - _PROVIDED_MEASUREMENT_SERVICES) - assert set(request.service_description.annotations) == set( - _PROVIDED_ANNOTATIONS + _PROVIDED_MEASUREMENT_SERVICES ) + assert set(request.service_description.annotations) == set(_PROVIDED_ANNOTATIONS) diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 02bdbf5d3..d698a9d73 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -247,7 +247,9 @@ def test___measurement_service___add_output__output_added( def _fake_measurement_function(): pass -noAnnotations : typing.Dict[str, str] = {} + +no_annotations: typing.Dict[str, str] = {} + @pytest.mark.parametrize( "service_config,provided_interfaces,provided_annotations", @@ -261,28 +263,46 @@ def _fake_measurement_function(): { "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": [ "powerup", "current" ] - } + "ni/service.tags": ["powerup", "current"], + }, + ), + ( + "example.v1.serviceconfig", + ["ni.measurementlink.measurement.v1.MeasurementService"], + no_annotations, + ), + ( + "example.v2.serviceconfig", + ["ni.measurementlink.measurement.v2.MeasurementService"], + no_annotations, ), - ("example.v1.serviceconfig", ["ni.measurementlink.measurement.v1.MeasurementService"], noAnnotations), - ("example.v2.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], noAnnotations), - ("example.v3.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.collection": "CurrentTests.Inrush" }), - ("example.v4.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.tags": [ "powerup", "current", "voltage" ]}), - ("example.v5.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], + ( + "example.v3.serviceconfig", + ["ni.measurementlink.measurement.v2.MeasurementService"], + {"ni/service.collection": "CurrentTests.Inrush"}, + ), + ( + "example.v4.serviceconfig", + ["ni.measurementlink.measurement.v2.MeasurementService"], + {"ni/service.tags": ["powerup", "current", "voltage"]}, + ), + ( + "example.v5.serviceconfig", + ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.description": "Testing extra Client info", - "client/extra.NumberID" : "500", - "client/extra.Parts" : [ "A25898", "A25412" ], - "client/extra.GroupName" : { - "SpeakerType": "true", - "PhoneType": "false" - }, - } + "client/extra.NumberID": "500", + "client/extra.Parts": ["A25898", "A25412"], + "client/extra.GroupName": {"SpeakerType": "true", "PhoneType": "false"}, + }, ), ], ) def test___service_config___create_measurement_service___service_info_matches_service_config( - test_assets_directory: pathlib.Path, service_config: str, provided_interfaces: List[str], provided_annotations: typing.Dict[str,str] + test_assets_directory: pathlib.Path, + service_config: str, + provided_interfaces: List[str], + provided_annotations: typing.Dict[str, str], ): measurement_service = MeasurementService( service_config_path=test_assets_directory / service_config, @@ -296,7 +316,7 @@ def test___service_config___create_measurement_service___service_info_matches_se measurement_service.service_info.description_url == "https://www.example.com/SampleMeasurement.html" ) - if (provided_annotations != {}): + if provided_annotations != {}: assert set(measurement_service.service_info.annotations) == set(provided_annotations) @pytest.mark.parametrize( From f5d92c02c64507cd4923746606bf0b7804ae5ee0 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 22 Jun 2023 10:09:18 -0500 Subject: [PATCH 04/22] Fix mypy errors. --- ni_measurementlink_service/measurement/info.py | 9 ++++----- ni_measurementlink_service/measurement/service.py | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index ca0142da3..683784ff2 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -2,9 +2,8 @@ from __future__ import annotations import enum -import typing from pathlib import Path -from typing import NamedTuple +from typing import Dict, List, NamedTuple from google.protobuf import type_pb2 @@ -25,7 +24,7 @@ class MeasurementInfo(NamedTuple): display_name: str version: str - ui_file_paths: typing.List[Path] + ui_file_paths: List[Path] class ServiceInfo(NamedTuple): @@ -52,8 +51,8 @@ class ServiceInfo(NamedTuple): service_class: str description_url: str - provided_interfaces: typing.List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] - annotations: typing.Dict[str, str] = {} + provided_interfaces: List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] + annotations: Dict[str, str] = {} class TypeSpecialization(enum.Enum): diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 4d3bdeee9..94aeb2550 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -180,7 +180,7 @@ def __init__( version=version, ui_file_paths=ui_file_paths, ) - service_annotations = Dict[str, str] + service_annotations: Dict[str, str] = {} if "annotations" in service: service_annotations = service["annotations"] From 1b205ed3c336e955d7925b424558a1c8747894b3 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 22 Jun 2023 10:20:47 -0500 Subject: [PATCH 05/22] Fix mypy on Tests --- ni_measurementlink_service/_internal/discovery_client.py | 2 +- ni_measurementlink_service/measurement/info.py | 4 ++-- ni_measurementlink_service/measurement/service.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index 1e3d61d8d..fb1f4b66a 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -113,7 +113,7 @@ def register_measurement_service( service_descriptor.annotations[keys] = str(service_info_annotations[keys]) else: service_descriptor.annotations[keys] = " ".join( - [str(elem) for elem in service_info_annotations[keys]] + [str(elem) for elem in str(service_info_annotations[keys])] ) # Registration Request Creation diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 683784ff2..5b4127342 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -43,7 +43,7 @@ class ServiceInfo(NamedTuple): For e.g., ni.measurementlink.measurement.v2.MeasurementService. Defaults to ["ni.measurementlink.measurement.v1.MeasurementService"]. - annotations (Dict): Dictionary that contains extra information of the measurement. + annotations (Dict): Dictionary that contains extra information of the measurement. As default we added a (str) description, (str) collection and a (List[str]) list of tags. Feel free to add your own Annotations as needed. @@ -52,7 +52,7 @@ class ServiceInfo(NamedTuple): service_class: str description_url: str provided_interfaces: List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] - annotations: Dict[str, str] = {} + annotations: Dict[str, object] = {} class TypeSpecialization(enum.Enum): diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 94aeb2550..6bfc4d6d0 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -180,7 +180,7 @@ def __init__( version=version, ui_file_paths=ui_file_paths, ) - service_annotations: Dict[str, str] = {} + service_annotations: Dict[str, object] = {} if "annotations" in service: service_annotations = service["annotations"] From f527443642de9fe44ade12cb67c65a3ef7be82d0 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 22 Jun 2023 10:25:41 -0500 Subject: [PATCH 06/22] Too many characters in single line --- ni_measurementlink_service/measurement/info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 5b4127342..76ef80420 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -43,7 +43,7 @@ class ServiceInfo(NamedTuple): For e.g., ni.measurementlink.measurement.v2.MeasurementService. Defaults to ["ni.measurementlink.measurement.v1.MeasurementService"]. - annotations (Dict): Dictionary that contains extra information of the measurement. + annotations (Dict): Dict that contains extra information of the measurement. As default we added a (str) description, (str) collection and a (List[str]) list of tags. Feel free to add your own Annotations as needed. From 0907c30c13eba6f1906f695224c9492fb41c946e Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Fri, 23 Jun 2023 10:11:50 -0500 Subject: [PATCH 07/22] Fix mypy, black --- .../v1/discovery_service_pb2_grpc.pyi | 4 +++- .../v1/measurement_service_pb2_grpc.pyi | 4 +++- .../v2/measurement_service_pb2_grpc.pyi | 8 +++++-- .../pinmap/v1/pin_map_service_pb2_grpc.pyi | 4 +++- .../session_management_service_pb2_grpc.pyi | 24 ++++++++++++++----- .../_internal/stubs/session_pb2_grpc.pyi | 4 +++- tests/assets/sample_measurement_test_pb2.pyi | 4 +++- tests/assets/test_pb2.pyi | 7 +++++- tests/unit/test_serializer.py | 2 +- tests/unit/test_service.py | 2 +- 10 files changed, 47 insertions(+), 16 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..fbba79393 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 @@ -111,4 +111,6 @@ 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: grpc.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..2314eeee4 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 @@ -45,4 +45,6 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): ) -> 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: grpc.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..9978efa4b 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 @@ -43,7 +43,11 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureRequest, context: grpc.ServicerContext, - ) -> collections.abc.Iterator[ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse]: + ) -> collections.abc.Iterator[ + 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: grpc.Server +) -> None: ... 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..59074adfd 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 @@ -137,4 +137,6 @@ 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: grpc.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..019c4ce12 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 @@ -69,7 +69,9 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse: + ) -> ( + 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: @@ -87,7 +89,9 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsRequest, context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse: + ) -> ( + 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. @@ -97,7 +101,9 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsRequest, context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse: + ) -> ( + 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: @@ -110,14 +116,18 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsRequest, context: grpc.ServicerContext, - ) -> ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse: + ) -> ( + 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: + ) -> ( + 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 +135,6 @@ 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: grpc.Server +) -> None: ... diff --git a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi index b3d1f09fc..45a56b03d 100644 --- a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi @@ -75,4 +75,6 @@ class SessionUtilitiesServicer(metaclass=abc.ABCMeta): ) -> 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: grpc.Server +) -> None: ... diff --git a/tests/assets/sample_measurement_test_pb2.pyi b/tests/assets/sample_measurement_test_pb2.pyi index 0c00eae4a..982f242bf 100644 --- a/tests/assets/sample_measurement_test_pb2.pyi +++ b/tests/assets/sample_measurement_test_pb2.pyi @@ -24,7 +24,9 @@ class _Color: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _ColorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Color.ValueType], builtins.type): +class _ColorEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Color.ValueType], builtins.type +): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor NONE: _Color.ValueType # 0 RED: _Color.ValueType # 1 diff --git a/tests/assets/test_pb2.pyi b/tests/assets/test_pb2.pyi index 3431ffe94..c307160ea 100644 --- a/tests/assets/test_pb2.pyi +++ b/tests/assets/test_pb2.pyi @@ -24,7 +24,10 @@ class _DifferentColor: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _DifferentColorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DifferentColor.ValueType], builtins.type): +class _DifferentColorEnumTypeWrapper( + google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_DifferentColor.ValueType], + builtins.type, +): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor PURPLE: _DifferentColor.ValueType # 0 ORANGE: _DifferentColor.ValueType # 1 @@ -72,6 +75,8 @@ class MeasurementParameter(google.protobuf.message.Message): uint64_data: builtins.int bool_data: builtins.bool string_data: builtins.str + enum_data: builtins.str + enum_array_data: builtins.list @property def double_array_data( self, diff --git a/tests/unit/test_serializer.py b/tests/unit/test_serializer.py index ce12aff5b..695b8af9d 100644 --- a/tests/unit/test_serializer.py +++ b/tests/unit/test_serializer.py @@ -336,4 +336,4 @@ def _get_test_grpc_message(test_values): parameter.string_array_data.extend(test_values[15]) parameter.enum_data = test_values[16].value parameter.enum_array_data.extend(list(map(lambda x: x.value, test_values[17]))) - return parameter + return parameter \ No newline at end of file diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index d698a9d73..fbee9e815 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -1,7 +1,7 @@ """Tests to validated user facing decorators in service.py.""" import pathlib -from enum import Enum import typing +from enum import Enum from typing import List, Type import pytest From c5453419595f62b3fb72f313d70ffdcbac32fc42 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Fri, 23 Jun 2023 10:13:31 -0500 Subject: [PATCH 08/22] Revert Update to Example --- .../sample_measurement/SampleMeasurement.serviceconfig | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/examples/sample_measurement/SampleMeasurement.serviceconfig b/examples/sample_measurement/SampleMeasurement.serviceconfig index 911bdc02e..9be066988 100644 --- a/examples/sample_measurement/SampleMeasurement.serviceconfig +++ b/examples/sample_measurement/SampleMeasurement.serviceconfig @@ -5,12 +5,7 @@ "serviceClass": "ni.examples.SampleMeasurement_Python", "descriptionUrl": "", "providedInterfaces": [ "ni.measurementlink.measurement.v1.MeasurementService" ], - "path": "start.bat", - "annotations": { - "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", - "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": [ "powerup", "current" ] - } + "path": "start.bat" } ] } \ No newline at end of file From 3932dea4b42f950e24d358710eb8ccb16569b162 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Fri, 23 Jun 2023 10:20:45 -0500 Subject: [PATCH 09/22] Reran Black --- tests/unit/test_serializer.py | 2 +- tests/unit/test_service.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/unit/test_serializer.py b/tests/unit/test_serializer.py index 695b8af9d..ce12aff5b 100644 --- a/tests/unit/test_serializer.py +++ b/tests/unit/test_serializer.py @@ -336,4 +336,4 @@ def _get_test_grpc_message(test_values): parameter.string_array_data.extend(test_values[15]) parameter.enum_data = test_values[16].value parameter.enum_array_data.extend(list(map(lambda x: x.value, test_values[17]))) - return parameter \ No newline at end of file + return parameter diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index fbee9e815..b22f1a468 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -319,6 +319,7 @@ def test___service_config___create_measurement_service___service_info_matches_se if provided_annotations != {}: assert set(measurement_service.service_info.annotations) == set(provided_annotations) + @pytest.mark.parametrize( "display_name,type,default_value,enum_type", [ From ab61d7ff6c275fc8cc2ee4f698c27a94a47a8d53 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Tue, 27 Jun 2023 15:38:27 -0500 Subject: [PATCH 10/22] Fix comments --- .../_internal/discovery_client.py | 7 +---- .../measurement/info.py | 4 +-- .../measurement/service.py | 7 ++++- tests/assets/example.v6.serviceconfig | 30 +++++++++++++++++++ tests/unit/test_discovery_client.py | 12 ++++---- tests/unit/test_service.py | 30 +++++++++++++------ 6 files changed, 67 insertions(+), 23 deletions(-) create mode 100644 tests/assets/example.v6.serviceconfig diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index fb1f4b66a..0de3f0bd7 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -109,12 +109,7 @@ def register_measurement_service( service_info_annotations = service_info.annotations for keys in service_info_annotations: - if isinstance(service_info_annotations[keys], (int, float)): - service_descriptor.annotations[keys] = str(service_info_annotations[keys]) - else: - service_descriptor.annotations[keys] = " ".join( - [str(elem) for elem in str(service_info_annotations[keys])] - ) + service_descriptor.annotations[keys] = service_info_annotations[keys] # Registration Request Creation request = discovery_service_pb2.RegisterServiceRequest( diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 76ef80420..263a3106a 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -43,7 +43,7 @@ class ServiceInfo(NamedTuple): For e.g., ni.measurementlink.measurement.v2.MeasurementService. Defaults to ["ni.measurementlink.measurement.v1.MeasurementService"]. - annotations (Dict): Dict that contains extra information of the measurement. + annotations (Dict): Dict that contains extra information of the measurement. As default we added a (str) description, (str) collection and a (List[str]) list of tags. Feel free to add your own Annotations as needed. @@ -52,7 +52,7 @@ class ServiceInfo(NamedTuple): service_class: str description_url: str provided_interfaces: List[str] = ["ni.measurementlink.measurement.v1.MeasurementService"] - annotations: Dict[str, object] = {} + annotations: Dict[str, str] = {} class TypeSpecialization(enum.Enum): diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 6bfc4d6d0..f5cb87c06 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -181,14 +181,19 @@ def __init__( ui_file_paths=ui_file_paths, ) service_annotations: Dict[str, object] = {} + service_annotations_string: Dict[str, str] = {} if "annotations" in service: service_annotations = service["annotations"] + for keys in service_annotations: + service_annotations_string[keys] = json.dumps( + service_annotations[keys], separators=(",", ":") + ) self.service_info = ServiceInfo( service_class=service["serviceClass"], description_url=service["descriptionUrl"], provided_interfaces=service["providedInterfaces"], - annotations=service_annotations, + annotations=service_annotations_string, ) self.configuration_parameter_list: list = [] diff --git a/tests/assets/example.v6.serviceconfig b/tests/assets/example.v6.serviceconfig new file mode 100644 index 000000000..b832cc244 --- /dev/null +++ b/tests/assets/example.v6.serviceconfig @@ -0,0 +1,30 @@ +{ + "services": [ + { + "displayName": "SampleMeasurement", + "serviceClass": "SampleMeasurement_Python", + "descriptionUrl": "https://www.example.com/SampleMeasurement.html", + "providedInterfaces": [ + "ni.measurementlink.measurement.v1.MeasurementService" + ], + "path": "NoFile.exe", + "annotations": { + "description": "An annotated test measurement service.", + "collection": "Tests.Measurements", + "tags": [ + "test", + "measurement" + ], + "custom": { + "foo": "bar", + "baz": [ "qux", "quux", "quuux" ], + "snork": { + "blarg": "flarp", + "oogle": [ "foogle", "boogle" ], + "ork": [ "zork", "gork", "bork" ] + } + } + } + } + ] +} diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index 9b79fca24..ccf1cb60c 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -19,12 +19,13 @@ _PROVIDED_ANNOTATIONS = { "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": ["powerup", "current"], - "client/extra.NumberID": 500, - "client/extra.Parts": ["A25898", "A25412"], - "client/extra.GroupName": {"SpeakerType": "true", "PhoneType": "false"}, + "ni/service.tags": '["powerup", "current"]', + "client/extra.NumberID": "500", + "client/extra.Parts": '["A25898", "A25412"]', + "custom": '{"foo":"bar","baz":["qux","quux","quuux"],"snork":{"blarg":"flarp","oogle":["foogle","boogle"],"ork":["zork","gork","bork"]}}', } + _TEST_SERVICE_PORT = "9999" _TEST_SERVICE_INFO = ServiceInfo( "TestServiceClass", "TestUrl", _PROVIDED_MEASUREMENT_SERVICES, _PROVIDED_ANNOTATIONS @@ -100,4 +101,5 @@ def _validate_grpc_request(request): assert set(request.service_description.provided_interfaces) == set( _PROVIDED_MEASUREMENT_SERVICES ) - assert set(request.service_description.annotations) == set(_PROVIDED_ANNOTATIONS) + for keys in _PROVIDED_ANNOTATIONS: + assert request.service_description.annotations[keys] == _PROVIDED_ANNOTATIONS[keys] diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index b22f1a468..281aa1cb9 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -261,9 +261,9 @@ def _fake_measurement_function(): "ni.measurementlink.measurement.v2.MeasurementService", ], { - "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", - "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": ["powerup", "current"], + "ni/service.description": '"Measure inrush current with a shorted load and validate results against configured limits."', + "ni/service.collection": '"CurrentTests.Inrush"', + "ni/service.tags": '["powerup","current"]', }, ), ( @@ -279,21 +279,32 @@ def _fake_measurement_function(): ( "example.v3.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], - {"ni/service.collection": "CurrentTests.Inrush"}, + {"ni/service.collection": '"CurrentTests.Inrush"'}, ), ( "example.v4.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], - {"ni/service.tags": ["powerup", "current", "voltage"]}, + {"ni/service.tags": '["powerup","current","voltage"]'}, ), ( "example.v5.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { - "ni/service.description": "Testing extra Client info", + "ni/service.description": '"Testing extra Client info"', "client/extra.NumberID": "500", - "client/extra.Parts": ["A25898", "A25412"], - "client/extra.GroupName": {"SpeakerType": "true", "PhoneType": "false"}, + "client/extra.Parts": '["A25898","A25412"]', + "client/extra.GroupName": '{"SpeakerType":"true","PhoneType":"false"}', + }, + ), + ( + "example.v6.serviceconfig", + ["ni.measurementlink.measurement.v1.MeasurementService"], + { + "description": '"An annotated test measurement service."', + "collection": '"Tests.Measurements"', + "tags": '["test","measurement"]', + "custom": '{"foo":"bar","baz":["qux","quux","quuux"],"snork":{"blarg":"flarp","oogle":' + + '["foogle","boogle"],"ork":["zork","gork","bork"]}}', }, ), ], @@ -317,7 +328,8 @@ def test___service_config___create_measurement_service___service_info_matches_se == "https://www.example.com/SampleMeasurement.html" ) if provided_annotations != {}: - assert set(measurement_service.service_info.annotations) == set(provided_annotations) + for keys in provided_annotations: + assert measurement_service.service_info.annotations[keys] == provided_annotations[keys] @pytest.mark.parametrize( From 91f13284b9b667b5d917764244f326bc5f9d8d29 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Tue, 27 Jun 2023 15:57:58 -0500 Subject: [PATCH 11/22] Fix comments --- ni_measurementlink_service/measurement/service.py | 7 +++---- tests/unit/test_discovery_client.py | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index f5cb87c06..3f14402f7 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -180,13 +180,12 @@ def __init__( version=version, ui_file_paths=ui_file_paths, ) - service_annotations: Dict[str, object] = {} + service_annotations_string: Dict[str, str] = {} if "annotations" in service: - service_annotations = service["annotations"] - for keys in service_annotations: + for keys in service["annotations"]: service_annotations_string[keys] = json.dumps( - service_annotations[keys], separators=(",", ":") + service["annotations"][keys], separators=(",", ":") ) self.service_info = ServiceInfo( diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index ccf1cb60c..8f7af5d85 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -19,9 +19,9 @@ _PROVIDED_ANNOTATIONS = { "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": '["powerup", "current"]', + "ni/service.tags": '["powerup","current"]', "client/extra.NumberID": "500", - "client/extra.Parts": '["A25898", "A25412"]', + "client/extra.Parts": '["A25898","A25412"]', "custom": '{"foo":"bar","baz":["qux","quux","quuux"],"snork":{"blarg":"flarp","oogle":["foogle","boogle"],"ork":["zork","gork","bork"]}}', } From c079fb4ded966a8953817e49f6eb157a7fef6511 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 14:57:09 -0500 Subject: [PATCH 12/22] Fix comments --- ni_measurementlink_service/_internal/discovery_client.py | 6 +----- ni_measurementlink_service/measurement/info.py | 2 +- pyproject.toml | 2 +- tests/unit/test_discovery_client.py | 5 ++--- tests/unit/test_service.py | 4 +--- 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index 0de3f0bd7..c314be781 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -106,10 +106,7 @@ def register_measurement_service( service_descriptor.service_class = service_info.service_class service_descriptor.description_url = service_info.description_url service_descriptor.provided_interfaces.extend(service_info.provided_interfaces) - - service_info_annotations = service_info.annotations - for keys in service_info_annotations: - service_descriptor.annotations[keys] = service_info_annotations[keys] + service_descriptor.annotations.update(service_info.annotations) # Registration Request Creation request = discovery_service_pb2.RegisterServiceRequest( @@ -133,7 +130,6 @@ def register_measurement_service( ) except Exception as err: _logger.exception("Error in registering with discovery service.") - print(f"Unexpected {err=}, {type(err)=}") return False return True diff --git a/ni_measurementlink_service/measurement/info.py b/ni_measurementlink_service/measurement/info.py index 263a3106a..b54cf55b5 100644 --- a/ni_measurementlink_service/measurement/info.py +++ b/ni_measurementlink_service/measurement/info.py @@ -43,7 +43,7 @@ class ServiceInfo(NamedTuple): For e.g., ni.measurementlink.measurement.v2.MeasurementService. Defaults to ["ni.measurementlink.measurement.v1.MeasurementService"]. - annotations (Dict): Dict that contains extra information of the measurement. + annotations (Dict[str,str]): Dict that contains extra information of the measurement. As default we added a (str) description, (str) collection and a (List[str]) list of tags. Feel free to add your own Annotations as needed. diff --git a/pyproject.toml b/pyproject.toml index 9a2bc950e..ae448427a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [tool.black] -extend-exclude ='((.+_pb2_grpc)|(.+_pb2))+(.py)$' # Regex to files with _pb2_grpc.py and _pb2.py Auto Generated Code are excluded +extend-exclude ='((.+_pb2_grpc)|(.+_pb2))+(.py)$|(.pyi)' # Regex to files with _pb2_grpc.py and _pb2.py Auto Generated Code are excluded line-length = 100 exclude = ''' ( diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index 8f7af5d85..26901f132 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -98,8 +98,7 @@ def _validate_grpc_request(request): assert request.service_description.service_class == _TEST_SERVICE_INFO.service_class assert request.service_description.description_url == _TEST_SERVICE_INFO.description_url assert request.service_description.display_name == _TEST_MEASUREMENT_INFO.display_name - assert set(request.service_description.provided_interfaces) == set( + assert set(request.service_description.provided_interfaces) >= set( _PROVIDED_MEASUREMENT_SERVICES ) - for keys in _PROVIDED_ANNOTATIONS: - assert request.service_description.annotations[keys] == _PROVIDED_ANNOTATIONS[keys] + assert request.service_description.annotations == _PROVIDED_ANNOTATIONS diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 281aa1cb9..825f76195 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -327,9 +327,7 @@ def test___service_config___create_measurement_service___service_info_matches_se measurement_service.service_info.description_url == "https://www.example.com/SampleMeasurement.html" ) - if provided_annotations != {}: - for keys in provided_annotations: - assert measurement_service.service_info.annotations[keys] == provided_annotations[keys] + assert measurement_service.service_info.annotations == provided_annotations @pytest.mark.parametrize( From 2bbf37d9b605773c4d327523caaa66724584b1f5 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 15:02:46 -0500 Subject: [PATCH 13/22] Revert "Fix style and running black." This reverts commit e324dce7c0eb7f6da60065f6145d79a56f971e01. --- .../discovery/v1/discovery_service_pb2.pyi | 83 ++------ .../v1/measurement_service_pb2.pyi | 140 ++----------- .../v2/measurement_service_pb2.pyi | 148 ++------------ .../measurementlink/pin_map_context_pb2.pyi | 8 +- .../pinmap/v1/pin_map_service_pb2.pyi | 185 +++--------------- .../v1/session_management_service_pb2.pyi | 117 ++--------- .../_internal/stubs/session_pb2.pyi | 84 ++------ tests/assets/sample_measurement_test_pb2.pyi | 24 +-- .../sample_streaming_measurement_test_pb2.pyi | 27 +-- tests/assets/test_pb2.pyi | 73 ++----- tests/assets/ui_progress_updates_test_pb2.pyi | 20 +- 11 files changed, 136 insertions(+), 773 deletions(-) diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi index 108f8d074..d900822bd 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/discovery/v1/discovery_service_pb2.pyi @@ -40,9 +40,7 @@ class ServiceDescriptor(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... DISPLAY_NAME_FIELD_NUMBER: builtins.int DESCRIPTION_URL_FIELD_NUMBER: builtins.int @@ -54,9 +52,7 @@ class ServiceDescriptor(google.protobuf.message.Message): description_url: builtins.str """Optional. Url which provides descriptive information about the service""" @property - def provided_interfaces( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def provided_interfaces(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Required. The service interfaces provided by the service. This is the gRPC Full Name of the service. Registration can use the gRPC metadata to provide these names. """ @@ -65,9 +61,7 @@ class ServiceDescriptor(google.protobuf.message.Message): In effect, the .proto service declaration defines the interface, and this field defines a class or concrete type of the interface. """ @property - def annotations( - self, - ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the service. Well-known annotations: - Description @@ -92,21 +86,7 @@ class ServiceDescriptor(google.protobuf.message.Message): service_class: builtins.str = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "annotations", - b"annotations", - "description_url", - b"description_url", - "display_name", - b"display_name", - "provided_interfaces", - b"provided_interfaces", - "service_class", - b"service_class", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "description_url", b"description_url", "display_name", b"display_name", "provided_interfaces", b"provided_interfaces", "service_class", b"service_class"]) -> None: ... global___ServiceDescriptor = ServiceDescriptor @@ -138,17 +118,7 @@ class ServiceLocation(google.protobuf.message.Message): insecure_port: builtins.str = ..., ssl_authenticated_port: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "insecure_port", - b"insecure_port", - "location", - b"location", - "ssl_authenticated_port", - b"ssl_authenticated_port", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["insecure_port", b"insecure_port", "location", b"location", "ssl_authenticated_port", b"ssl_authenticated_port"]) -> None: ... global___ServiceLocation = ServiceLocation @@ -170,18 +140,8 @@ class RegisterServiceRequest(google.protobuf.message.Message): service_description: global___ServiceDescriptor | None = ..., location: global___ServiceLocation | None = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal[ - "location", b"location", "service_description", b"service_description" - ], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "location", b"location", "service_description", b"service_description" - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["location", b"location", "service_description", b"service_description"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["location", b"location", "service_description", b"service_description"]) -> None: ... global___RegisterServiceRequest = RegisterServiceRequest @@ -197,9 +157,7 @@ class RegisterServiceResponse(google.protobuf.message.Message): *, registration_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["registration_id", b"registration_id"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["registration_id", b"registration_id"]) -> None: ... global___RegisterServiceResponse = RegisterServiceResponse @@ -215,9 +173,7 @@ class UnregisterServiceRequest(google.protobuf.message.Message): *, registration_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["registration_id", b"registration_id"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["registration_id", b"registration_id"]) -> None: ... global___UnregisterServiceRequest = UnregisterServiceRequest @@ -245,9 +201,7 @@ class EnumerateServicesRequest(google.protobuf.message.Message): *, provided_interface: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface"]) -> None: ... global___EnumerateServicesRequest = EnumerateServicesRequest @@ -257,20 +211,14 @@ class EnumerateServicesResponse(google.protobuf.message.Message): AVAILABLE_SERVICES_FIELD_NUMBER: builtins.int @property - def available_services( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ServiceDescriptor - ]: + def available_services(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ServiceDescriptor]: """The list of available services which implement the specified service interface.""" def __init__( self, *, available_services: collections.abc.Iterable[global___ServiceDescriptor] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["available_services", b"available_services"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["available_services", b"available_services"]) -> None: ... global___EnumerateServicesResponse = EnumerateServicesResponse @@ -294,11 +242,6 @@ class ResolveServiceRequest(google.protobuf.message.Message): provided_interface: builtins.str = ..., service_class: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "provided_interface", b"provided_interface", "service_class", b"service_class" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["provided_interface", b"provided_interface", "service_class", b"service_class"]) -> None: ... global___ResolveServiceRequest = ResolveServiceRequest diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi index fa8637dca..352c89551 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v1/measurement_service_pb2.pyi @@ -45,40 +45,17 @@ class GetMetadataResponse(google.protobuf.message.Message): def measurement_signature(self) -> global___MeasurementSignature: """Required. Specifies the signature of the measurement.""" @property - def user_interface_details( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___UserInterfaceDetails - ]: + def user_interface_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UserInterfaceDetails]: """Optional. Specifies the user interfaces available for use with the measurement, if any.""" def __init__( self, *, measurement_details: global___MeasurementDetails | None = ..., measurement_signature: global___MeasurementSignature | None = ..., - user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] - | None = ..., - ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal[ - "measurement_details", - b"measurement_details", - "measurement_signature", - b"measurement_signature", - ], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "measurement_details", - b"measurement_details", - "measurement_signature", - b"measurement_signature", - "user_interface_details", - b"user_interface_details", - ], + user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] | None = ..., ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature", "user_interface_details", b"user_interface_details"]) -> None: ... global___GetMetadataResponse = GetMetadataResponse @@ -106,24 +83,8 @@ class MeasureRequest(google.protobuf.message.Message): configuration_parameters: google.protobuf.any_pb2.Any | None = ..., pin_map_context: ni_measurementlink_pin_map_context_pb2.PinMapContext | None = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal[ - "configuration_parameters", - b"configuration_parameters", - "pin_map_context", - b"pin_map_context", - ], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "configuration_parameters", - b"configuration_parameters", - "pin_map_context", - b"pin_map_context", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> None: ... global___MeasureRequest = MeasureRequest @@ -143,9 +104,7 @@ class MeasureResponse(google.protobuf.message.Message): *, outputs: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField( - self, field_name: typing_extensions.Literal["outputs", b"outputs"] - ) -> builtins.bool: ... + def HasField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> builtins.bool: ... def ClearField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> None: ... global___MeasureResponse = MeasureResponse @@ -168,12 +127,7 @@ class MeasurementDetails(google.protobuf.message.Message): display_name: builtins.str = ..., version: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", b"display_name", "version", b"version" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "version", b"version"]) -> None: ... global___MeasurementDetails = MeasurementDetails @@ -193,11 +147,7 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def configuration_parameters( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ConfigurationParameter - ]: + def configuration_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigurationParameter]: """Required. Defines the configuration parameters for the measurement.""" @property def configuration_defaults(self) -> google.protobuf.any_pb2.Any: @@ -210,39 +160,19 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def outputs( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: + def outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: """Required. Defines the outputs for the measurement.""" def __init__( self, *, configuration_parameters_message_type: builtins.str = ..., - configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] - | None = ..., + configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] | None = ..., configuration_defaults: google.protobuf.any_pb2.Any | None = ..., outputs_message_type: builtins.str = ..., outputs: collections.abc.Iterable[global___Output] | None = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "configuration_defaults", - b"configuration_defaults", - "configuration_parameters", - b"configuration_parameters", - "configuration_parameters_message_type", - b"configuration_parameters_message_type", - "outputs", - b"outputs", - "outputs_message_type", - b"outputs_message_type", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults", "configuration_parameters", b"configuration_parameters", "configuration_parameters_message_type", b"configuration_parameters_message_type", "outputs", b"outputs", "outputs_message_type", b"outputs_message_type"]) -> None: ... global___MeasurementSignature = MeasurementSignature @@ -260,9 +190,7 @@ class UserInterfaceDetails(google.protobuf.message.Message): *, file_url: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["file_url", b"file_url"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["file_url", b"file_url"]) -> None: ... global___UserInterfaceDetails = UserInterfaceDetails @@ -286,9 +214,7 @@ class ConfigurationParameter(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -308,14 +234,12 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this configuration parameter represents repeated data and False if it represents a scalar value.""" @property - def annotations( - self, - ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. Well-known annotations: - Type specialization. The keys to other annotations will be read based on the value of `ni/type_specialization` annotation. - Key: "ni/type_specialization" - - Common Values: "pin" ... + - Common Values: "pin" ... - For string parameter with ni/type_specialization annotation equals "pin" - Key: "ni/pin.instrument_type" - Common Values: "niDCPower", "niScope"... @@ -329,21 +253,7 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "annotations", - b"annotations", - "field_number", - b"field_number", - "name", - b"name", - "repeated", - b"repeated", - "type", - b"type", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... global___ConfigurationParameter = ConfigurationParameter @@ -377,18 +287,6 @@ class Output(google.protobuf.message.Message): name: builtins.str = ..., repeated: builtins.bool = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "field_number", - b"field_number", - "name", - b"name", - "repeated", - b"repeated", - "type", - b"type", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... global___Output = Output diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi index 9c2d7c9c1..204cbf119 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/measurement/v2/measurement_service_pb2.pyi @@ -45,40 +45,17 @@ class GetMetadataResponse(google.protobuf.message.Message): def measurement_signature(self) -> global___MeasurementSignature: """Required. Specifies the signature of the measurement.""" @property - def user_interface_details( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___UserInterfaceDetails - ]: + def user_interface_details(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UserInterfaceDetails]: """Optional. Specifies the user interfaces available for use with the measurement, if any.""" def __init__( self, *, measurement_details: global___MeasurementDetails | None = ..., measurement_signature: global___MeasurementSignature | None = ..., - user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] - | None = ..., - ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal[ - "measurement_details", - b"measurement_details", - "measurement_signature", - b"measurement_signature", - ], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "measurement_details", - b"measurement_details", - "measurement_signature", - b"measurement_signature", - "user_interface_details", - b"user_interface_details", - ], + user_interface_details: collections.abc.Iterable[global___UserInterfaceDetails] | None = ..., ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["measurement_details", b"measurement_details", "measurement_signature", b"measurement_signature", "user_interface_details", b"user_interface_details"]) -> None: ... global___GetMetadataResponse = GetMetadataResponse @@ -106,24 +83,8 @@ class MeasureRequest(google.protobuf.message.Message): configuration_parameters: google.protobuf.any_pb2.Any | None = ..., pin_map_context: ni_measurementlink_pin_map_context_pb2.PinMapContext | None = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal[ - "configuration_parameters", - b"configuration_parameters", - "pin_map_context", - b"pin_map_context", - ], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "configuration_parameters", - b"configuration_parameters", - "pin_map_context", - b"pin_map_context", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["configuration_parameters", b"configuration_parameters", "pin_map_context", b"pin_map_context"]) -> None: ... global___MeasureRequest = MeasureRequest @@ -143,9 +104,7 @@ class MeasureResponse(google.protobuf.message.Message): *, outputs: google.protobuf.any_pb2.Any | None = ..., ) -> None: ... - def HasField( - self, field_name: typing_extensions.Literal["outputs", b"outputs"] - ) -> builtins.bool: ... + def HasField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> builtins.bool: ... def ClearField(self, field_name: typing_extensions.Literal["outputs", b"outputs"]) -> None: ... global___MeasureResponse = MeasureResponse @@ -168,12 +127,7 @@ class MeasurementDetails(google.protobuf.message.Message): display_name: builtins.str = ..., version: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", b"display_name", "version", b"version" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "version", b"version"]) -> None: ... global___MeasurementDetails = MeasurementDetails @@ -193,11 +147,7 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def configuration_parameters( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ConfigurationParameter - ]: + def configuration_parameters(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ConfigurationParameter]: """Required. Defines the configuration parameters for the measurement.""" @property def configuration_defaults(self) -> google.protobuf.any_pb2.Any: @@ -210,39 +160,19 @@ class MeasurementSignature(google.protobuf.message.Message): This is the gRPC full name for the message. """ @property - def outputs( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: + def outputs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Output]: """Required. Defines the outputs for the measurement.""" def __init__( self, *, configuration_parameters_message_type: builtins.str = ..., - configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] - | None = ..., + configuration_parameters: collections.abc.Iterable[global___ConfigurationParameter] | None = ..., configuration_defaults: google.protobuf.any_pb2.Any | None = ..., outputs_message_type: builtins.str = ..., outputs: collections.abc.Iterable[global___Output] | None = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "configuration_defaults", - b"configuration_defaults", - "configuration_parameters", - b"configuration_parameters", - "configuration_parameters_message_type", - b"configuration_parameters_message_type", - "outputs", - b"outputs", - "outputs_message_type", - b"outputs_message_type", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["configuration_defaults", b"configuration_defaults", "configuration_parameters", b"configuration_parameters", "configuration_parameters_message_type", b"configuration_parameters_message_type", "outputs", b"outputs", "outputs_message_type", b"outputs_message_type"]) -> None: ... global___MeasurementSignature = MeasurementSignature @@ -260,9 +190,7 @@ class UserInterfaceDetails(google.protobuf.message.Message): *, file_url: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["file_url", b"file_url"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["file_url", b"file_url"]) -> None: ... global___UserInterfaceDetails = UserInterfaceDetails @@ -286,9 +214,7 @@ class ConfigurationParameter(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -308,9 +234,7 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this configuration parameter represents repeated data and False if it represents a scalar value.""" @property - def annotations( - self, - ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. Well-known annotations: - Type specialization. The keys to other annotations will be read based on the value of `ni/type_specialization` annotation. @@ -335,21 +259,7 @@ class ConfigurationParameter(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "annotations", - b"annotations", - "field_number", - b"field_number", - "name", - b"name", - "repeated", - b"repeated", - "type", - b"type", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... global___ConfigurationParameter = ConfigurationParameter @@ -373,9 +283,7 @@ class Output(google.protobuf.message.Message): key: builtins.str = ..., value: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ... FIELD_NUMBER_FIELD_NUMBER: builtins.int TYPE_FIELD_NUMBER: builtins.int @@ -395,9 +303,7 @@ class Output(google.protobuf.message.Message): repeated: builtins.bool """Required. True if this output represents repeated data and False if it represents a scalar value.""" @property - def annotations( - self, - ) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: + def annotations(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: """Optional. Represents a set of annotations on the type. See documentation for ConfigurationParameter annotations for more details and examples. """ @@ -410,20 +316,6 @@ class Output(google.protobuf.message.Message): repeated: builtins.bool = ..., annotations: collections.abc.Mapping[builtins.str, builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "annotations", - b"annotations", - "field_number", - b"field_number", - "name", - b"name", - "repeated", - b"repeated", - "type", - b"type", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["annotations", b"annotations", "field_number", b"field_number", "name", b"name", "repeated", b"repeated", "type", b"type"]) -> None: ... global___Output = Output diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi index 000c2a628..3adf1d25c 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pin_map_context_pb2.pyi @@ -25,9 +25,7 @@ class PinMapContext(google.protobuf.message.Message): pin_map_id: builtins.str """Required. The resource id of the pin map in the Pin Map service that should be used for the call.""" @property - def sites( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + def sites(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: """Optional. List of site numbers being used for the call. If unspecified, use all sites in the pin map.""" def __init__( self, @@ -35,8 +33,6 @@ class PinMapContext(google.protobuf.message.Message): pin_map_id: builtins.str = ..., sites: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "sites", b"sites"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "sites", b"sites"]) -> None: ... global___PinMapContext = PinMapContext diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi index df26f36e5..e47120cd1 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/pinmap/v1/pin_map_service_pb2.pyi @@ -30,9 +30,7 @@ class PinMap(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... global___PinMap = PinMap @@ -52,12 +50,7 @@ class CreatePinMapFromXmlRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., pin_map_xml: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml"]) -> None: ... global___CreatePinMapFromXmlRequest = CreatePinMapFromXmlRequest @@ -77,12 +70,7 @@ class UpdatePinMapFromXmlRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., pin_map_xml: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id", "pin_map_xml", b"pin_map_xml"]) -> None: ... global___UpdatePinMapFromXmlRequest = UpdatePinMapFromXmlRequest @@ -98,9 +86,7 @@ class GetPinMapRequest(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... global___GetPinMapRequest = GetPinMapRequest @@ -129,12 +115,7 @@ class QueryPinsRequest(google.protobuf.message.Message): pin_map_id: builtins.str = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id"]) -> None: ... global___QueryPinsRequest = QueryPinsRequest @@ -145,18 +126,10 @@ class QueryPinsResponse(google.protobuf.message.Message): PINS_FIELD_NUMBER: builtins.int PIN_GROUPS_FIELD_NUMBER: builtins.int @property - def pins( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___PinDefinition - ]: + def pins(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinDefinition]: """List of pins on the registered pin map resource. This list includes both DUT and System pins.""" @property - def pin_groups( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___PinGroupDefinition - ]: + def pin_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PinGroupDefinition]: """List of pin groups on the registered pin map resource. When an instrument type id filter is specified, a pin group will only be included in the response if all pins in the pin group match the instrument type. @@ -167,9 +140,7 @@ class QueryPinsResponse(google.protobuf.message.Message): pins: collections.abc.Iterable[global___PinDefinition] | None = ..., pin_groups: collections.abc.Iterable[global___PinGroupDefinition] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["pin_groups", b"pin_groups", "pins", b"pins"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_groups", b"pin_groups", "pins", b"pins"]) -> None: ... global___QueryPinsResponse = QueryPinsResponse @@ -189,12 +160,7 @@ class PinDefinition(google.protobuf.message.Message): display_name: builtins.str = ..., is_system_pin: builtins.bool = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", b"display_name", "is_system_pin", b"is_system_pin" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "is_system_pin", b"is_system_pin"]) -> None: ... global___PinDefinition = PinDefinition @@ -208,14 +174,10 @@ class PinGroupDefinition(google.protobuf.message.Message): display_name: builtins.str """Name of the pin group.""" @property - def pin_or_group_references( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_group_references(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of other pins or pin groups within this pin group.""" @property - def resolved_pins( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def resolved_pins(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Distinct union of pins within this pin group, including those within nested pin groups.""" def __init__( self, @@ -224,17 +186,7 @@ class PinGroupDefinition(google.protobuf.message.Message): pin_or_group_references: collections.abc.Iterable[builtins.str] | None = ..., resolved_pins: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", - b"display_name", - "pin_or_group_references", - b"pin_or_group_references", - "resolved_pins", - b"resolved_pins", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "pin_or_group_references", b"pin_or_group_references", "resolved_pins", b"resolved_pins"]) -> None: ... global___PinGroupDefinition = PinGroupDefinition @@ -250,9 +202,7 @@ class QueryRelaysRequest(google.protobuf.message.Message): *, pin_map_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["pin_map_id", b"pin_map_id"]) -> None: ... global___QueryRelaysRequest = QueryRelaysRequest @@ -263,18 +213,10 @@ class QueryRelaysResponse(google.protobuf.message.Message): RELAYS_FIELD_NUMBER: builtins.int RELAY_GROUPS_FIELD_NUMBER: builtins.int @property - def relays( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___RelayDefinition - ]: + def relays(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RelayDefinition]: """List of relays on the registered pin map resource. This list includes both Site relays and System relays.""" @property - def relay_groups( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___RelayGroupDefinition - ]: + def relay_groups(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___RelayGroupDefinition]: """List of relay groups on the registered pin map resource.""" def __init__( self, @@ -282,10 +224,7 @@ class QueryRelaysResponse(google.protobuf.message.Message): relays: collections.abc.Iterable[global___RelayDefinition] | None = ..., relay_groups: collections.abc.Iterable[global___RelayGroupDefinition] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal["relay_groups", b"relay_groups", "relays", b"relays"], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["relay_groups", b"relay_groups", "relays", b"relays"]) -> None: ... global___QueryRelaysResponse = QueryRelaysResponse @@ -305,12 +244,7 @@ class RelayDefinition(google.protobuf.message.Message): display_name: builtins.str = ..., is_system_relay: builtins.bool = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", b"display_name", "is_system_relay", b"is_system_relay" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "is_system_relay", b"is_system_relay"]) -> None: ... global___RelayDefinition = RelayDefinition @@ -324,14 +258,10 @@ class RelayGroupDefinition(google.protobuf.message.Message): display_name: builtins.str """Name of the relay group.""" @property - def relay_or_group_references( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def relay_or_group_references(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """List of other relays or relay groups within this relay group.""" @property - def resolved_relays( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def resolved_relays(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Distinct union of relays within this relay group, including those within nested relay groups.""" def __init__( self, @@ -340,17 +270,7 @@ class RelayGroupDefinition(google.protobuf.message.Message): relay_or_group_references: collections.abc.Iterable[builtins.str] | None = ..., resolved_relays: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "display_name", - b"display_name", - "relay_or_group_references", - b"relay_or_group_references", - "resolved_relays", - b"resolved_relays", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["display_name", b"display_name", "relay_or_group_references", b"relay_or_group_references", "resolved_relays", b"resolved_relays"]) -> None: ... global___RelayGroupDefinition = RelayGroupDefinition @@ -365,14 +285,10 @@ class QueryResourceAccessInformationRequest(google.protobuf.message.Message): pin_map_id: builtins.str """Required. The resource id of the registered pin map resource.""" @property - def sites( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: + def sites(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: """Optional. The list of sites for which to get instrument resource access information. If unspecified, get instrument resource information for all sites in the registered pin map resource.""" @property - def pin_or_relay_names( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_relay_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Optional. The list of pins, pin groups, relays, or relay groups for which to get instrument resource access information. If unspecified, get instrument resource information for all pins and relays in the registered pin map resource.""" instrument_type_id: builtins.str """Optional. The instrument type for which to get instrument resource access information. If unspecified, get instrument resource information for all instrument types connected in the registered pin map resource. @@ -394,19 +310,7 @@ class QueryResourceAccessInformationRequest(google.protobuf.message.Message): pin_or_relay_names: collections.abc.Iterable[builtins.str] | None = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "instrument_type_id", - b"instrument_type_id", - "pin_map_id", - b"pin_map_id", - "pin_or_relay_names", - b"pin_or_relay_names", - "sites", - b"sites", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_id", b"pin_map_id", "pin_or_relay_names", b"pin_or_relay_names", "sites", b"sites"]) -> None: ... global___QueryResourceAccessInformationRequest = QueryResourceAccessInformationRequest @@ -416,24 +320,14 @@ class QueryResourceAccessInformationResponse(google.protobuf.message.Message): RESOURCE_ACCESS_INFORMATION_FIELD_NUMBER: builtins.int @property - def resource_access_information( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ResourceAccessInformation - ]: + def resource_access_information(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ResourceAccessInformation]: """List of ResourceAccessInformation objects with instrument resource names and channels.""" def __init__( self, *, - resource_access_information: collections.abc.Iterable[global___ResourceAccessInformation] - | None = ..., - ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "resource_access_information", b"resource_access_information" - ], + resource_access_information: collections.abc.Iterable[global___ResourceAccessInformation] | None = ..., ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["resource_access_information", b"resource_access_information"]) -> None: ... global___QueryResourceAccessInformationResponse = QueryResourceAccessInformationResponse @@ -470,11 +364,7 @@ class ResourceAccessInformation(google.protobuf.message.Message): For custom instruments the user defined instrument type id is defined in the pin map file. """ @property - def channel_mappings( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ChannelMapping - ]: + def channel_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ChannelMapping]: """List of site and pin/relay mappings that correspond to each channel in the channel_list. Each item contains a mapping corresponding to a channel in this instrument resource, in the order of the channel_list. """ @@ -486,19 +376,7 @@ class ResourceAccessInformation(google.protobuf.message.Message): instrument_type_id: builtins.str = ..., channel_mappings: collections.abc.Iterable[global___ChannelMapping] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "channel_list", - b"channel_list", - "channel_mappings", - b"channel_mappings", - "instrument_type_id", - b"instrument_type_id", - "resource_name", - b"resource_name", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["channel_list", b"channel_list", "channel_mappings", b"channel_mappings", "instrument_type_id", b"instrument_type_id", "resource_name", b"resource_name"]) -> None: ... global___ResourceAccessInformation = ResourceAccessInformation @@ -524,11 +402,6 @@ class ChannelMapping(google.protobuf.message.Message): site: builtins.int = ..., channel: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site"]) -> None: ... global___ChannelMapping = ChannelMapping diff --git a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi index bb25e57cd..a581c9a95 100644 --- a/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/ni/measurementlink/sessionmanagement/v1/session_management_service_pb2.pyi @@ -60,11 +60,7 @@ class SessionInformation(google.protobuf.message.Message): This field is readonly. """ @property - def channel_mappings( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___ChannelMapping - ]: + def channel_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___ChannelMapping]: """List of site and pin/relay mappings that correspond to each channel in the channel_list. Each item contains a mapping corresponding to a channel in this instrument resource, in the order of the channel_list. This field is empty for any SessionInformation returned from ReserveAllRegisteredSessions. @@ -80,26 +76,8 @@ class SessionInformation(google.protobuf.message.Message): session_exists: builtins.bool = ..., channel_mappings: collections.abc.Iterable[global___ChannelMapping] | None = ..., ) -> None: ... - def HasField( - self, field_name: typing_extensions.Literal["session", b"session"] - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "channel_list", - b"channel_list", - "channel_mappings", - b"channel_mappings", - "instrument_type_id", - b"instrument_type_id", - "resource_name", - b"resource_name", - "session", - b"session", - "session_exists", - b"session_exists", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["session", b"session"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["channel_list", b"channel_list", "channel_mappings", b"channel_mappings", "instrument_type_id", b"instrument_type_id", "resource_name", b"resource_name", "session", b"session", "session_exists", b"session_exists"]) -> None: ... global___SessionInformation = SessionInformation @@ -125,12 +103,7 @@ class ChannelMapping(google.protobuf.message.Message): site: builtins.int = ..., channel: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["channel", b"channel", "pin_or_relay_name", b"pin_or_relay_name", "site", b"site"]) -> None: ... global___ChannelMapping = ChannelMapping @@ -146,9 +119,7 @@ class ReserveSessionsRequest(google.protobuf.message.Message): def pin_map_context(self) -> ni_measurementlink_pin_map_context_pb2.PinMapContext: """Required. Includes the pin map ID for the pin map in the Pin Map Service, as well as the list of sites for the measurement.""" @property - def pin_or_relay_names( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: + def pin_or_relay_names(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: """Optional. List of pins, pin groups, relays, or relay groups to use for the measurement. If unspecified, reserve sessions for all pins and relays in the registered pin map resource.""" instrument_type_id: builtins.str """Optional. Instrument type ID for the measurement. If unspecified, reserve sessions for all instrument types connected in the registered pin map resource. @@ -174,22 +145,8 @@ class ReserveSessionsRequest(google.protobuf.message.Message): instrument_type_id: builtins.str = ..., timeout_in_milliseconds: builtins.int = ..., ) -> None: ... - def HasField( - self, field_name: typing_extensions.Literal["pin_map_context", b"pin_map_context"] - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "instrument_type_id", - b"instrument_type_id", - "pin_map_context", - b"pin_map_context", - "pin_or_relay_names", - b"pin_or_relay_names", - "timeout_in_milliseconds", - b"timeout_in_milliseconds", - ], - ) -> None: ... + def HasField(self, field_name: typing_extensions.Literal["pin_map_context", b"pin_map_context"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "pin_map_context", b"pin_map_context", "pin_or_relay_names", b"pin_or_relay_names", "timeout_in_milliseconds", b"timeout_in_milliseconds"]) -> None: ... global___ReserveSessionsRequest = ReserveSessionsRequest @@ -199,11 +156,7 @@ class ReserveSessionsResponse(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___SessionInformation - ]: + def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: """List of information needed to create or use each session for the given pin, site, and instrument type ID. This field is readonly. """ @@ -212,9 +165,7 @@ class ReserveSessionsResponse(google.protobuf.message.Message): *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["sessions", b"sessions"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... global___ReserveSessionsResponse = ReserveSessionsResponse @@ -224,20 +175,14 @@ class UnreserveSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___SessionInformation - ]: + def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: """Required. List of information of sessions to be unreserved in the session management service.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["sessions", b"sessions"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... global___UnreserveSessionsRequest = UnreserveSessionsRequest @@ -257,20 +202,14 @@ class RegisterSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___SessionInformation - ]: + def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: """Required. List of sessions to register with the session management service to track as the sessions are open.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["sessions", b"sessions"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... global___RegisterSessionsRequest = RegisterSessionsRequest @@ -290,20 +229,14 @@ class UnregisterSessionsRequest(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___SessionInformation - ]: + def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: """Required. List of sessions to unregister with the session management service to mark them as sessions were closed.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["sessions", b"sessions"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... global___UnregisterSessionsRequest = UnregisterSessionsRequest @@ -345,15 +278,7 @@ class ReserveAllRegisteredSessionsRequest(google.protobuf.message.Message): timeout_in_milliseconds: builtins.int = ..., instrument_type_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "instrument_type_id", - b"instrument_type_id", - "timeout_in_milliseconds", - b"timeout_in_milliseconds", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["instrument_type_id", b"instrument_type_id", "timeout_in_milliseconds", b"timeout_in_milliseconds"]) -> None: ... global___ReserveAllRegisteredSessionsRequest = ReserveAllRegisteredSessionsRequest @@ -363,19 +288,13 @@ class ReserveAllRegisteredSessionsResponse(google.protobuf.message.Message): SESSIONS_FIELD_NUMBER: builtins.int @property - def sessions( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___SessionInformation - ]: + def sessions(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___SessionInformation]: """Sessions currently registered in the session management service.""" def __init__( self, *, sessions: collections.abc.Iterable[global___SessionInformation] | None = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["sessions", b"sessions"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["sessions", b"sessions"]) -> None: ... global___ReserveAllRegisteredSessionsResponse = ReserveAllRegisteredSessionsResponse diff --git a/ni_measurementlink_service/_internal/stubs/session_pb2.pyi b/ni_measurementlink_service/_internal/stubs/session_pb2.pyi index a92c1a4d4..b42b9347c 100644 --- a/ni_measurementlink_service/_internal/stubs/session_pb2.pyi +++ b/ni_measurementlink_service/_internal/stubs/session_pb2.pyi @@ -22,20 +22,13 @@ class _SessionInitializationBehavior: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _SessionInitializationBehaviorEnumTypeWrapper( - google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[ - _SessionInitializationBehavior.ValueType - ], - builtins.type, -): +class _SessionInitializationBehaviorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SessionInitializationBehavior.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor SESSION_INITIALIZATION_BEHAVIOR_UNSPECIFIED: _SessionInitializationBehavior.ValueType # 0 SESSION_INITIALIZATION_BEHAVIOR_INITIALIZE_NEW: _SessionInitializationBehavior.ValueType # 1 SESSION_INITIALIZATION_BEHAVIOR_ATTACH_TO_EXISTING: _SessionInitializationBehavior.ValueType # 2 -class SessionInitializationBehavior( - _SessionInitializationBehavior, metaclass=_SessionInitializationBehaviorEnumTypeWrapper -): ... +class SessionInitializationBehavior(_SessionInitializationBehavior, metaclass=_SessionInitializationBehaviorEnumTypeWrapper): ... SESSION_INITIALIZATION_BEHAVIOR_UNSPECIFIED: SessionInitializationBehavior.ValueType # 0 SESSION_INITIALIZATION_BEHAVIOR_INITIALIZE_NEW: SessionInitializationBehavior.ValueType # 1 @@ -56,17 +49,9 @@ class Session(google.protobuf.message.Message): name: builtins.str = ..., id: builtins.int = ..., ) -> None: ... - def HasField( - self, - field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"], - ) -> builtins.bool: ... - def ClearField( - self, - field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"], - ) -> None: ... - def WhichOneof( - self, oneof_group: typing_extensions.Literal["session", b"session"] - ) -> typing_extensions.Literal["name", "id"] | None: ... + def HasField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"]) -> builtins.bool: ... + def ClearField(self, field_name: typing_extensions.Literal["id", b"id", "name", b"name", "session", b"session"]) -> None: ... + def WhichOneof(self, oneof_group: typing_extensions.Literal["session", b"session"]) -> typing_extensions.Literal["name", "id"] | None: ... global___Session = Session @@ -93,21 +78,7 @@ class DeviceProperties(google.protobuf.message.Message): serial_number: builtins.str = ..., product_id: builtins.int = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "model", - b"model", - "name", - b"name", - "product_id", - b"product_id", - "serial_number", - b"serial_number", - "vendor", - b"vendor", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["model", b"model", "name", b"name", "product_id", b"product_id", "serial_number", b"serial_number", "vendor", b"vendor"]) -> None: ... global___DeviceProperties = DeviceProperties @@ -127,11 +98,7 @@ class EnumerateDevicesResponse(google.protobuf.message.Message): DEVICES_FIELD_NUMBER: builtins.int @property - def devices( - self, - ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[ - global___DeviceProperties - ]: ... + def devices(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___DeviceProperties]: ... def __init__( self, *, @@ -157,12 +124,7 @@ class ReserveRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "client_id", b"client_id", "reservation_id", b"reservation_id" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... global___ReserveRequest = ReserveRequest @@ -177,9 +139,7 @@ class ReserveResponse(google.protobuf.message.Message): *, is_reserved: builtins.bool = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"]) -> None: ... global___ReserveResponse = ReserveResponse @@ -199,12 +159,7 @@ class IsReservedByClientRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "client_id", b"client_id", "reservation_id", b"reservation_id" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... global___IsReservedByClientRequest = IsReservedByClientRequest @@ -219,9 +174,7 @@ class IsReservedByClientResponse(google.protobuf.message.Message): *, is_reserved: builtins.bool = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["is_reserved", b"is_reserved"]) -> None: ... global___IsReservedByClientResponse = IsReservedByClientResponse @@ -241,12 +194,7 @@ class UnreserveRequest(google.protobuf.message.Message): reservation_id: builtins.str = ..., client_id: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "client_id", b"client_id", "reservation_id", b"reservation_id" - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["client_id", b"client_id", "reservation_id", b"reservation_id"]) -> None: ... global___UnreserveRequest = UnreserveRequest @@ -261,9 +209,7 @@ class UnreserveResponse(google.protobuf.message.Message): *, is_unreserved: builtins.bool = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["is_unreserved", b"is_unreserved"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["is_unreserved", b"is_unreserved"]) -> None: ... global___UnreserveResponse = UnreserveResponse @@ -288,8 +234,6 @@ class ResetServerResponse(google.protobuf.message.Message): *, is_server_reset: builtins.bool = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["is_server_reset", b"is_server_reset"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["is_server_reset", b"is_server_reset"]) -> None: ... global___ResetServerResponse = ResetServerResponse diff --git a/tests/assets/sample_measurement_test_pb2.pyi b/tests/assets/sample_measurement_test_pb2.pyi index 982f242bf..3ad141ded 100644 --- a/tests/assets/sample_measurement_test_pb2.pyi +++ b/tests/assets/sample_measurement_test_pb2.pyi @@ -56,16 +56,12 @@ class SampleMeasurementParameter(google.protobuf.message.Message): STRING_ARRAY_IN_FIELD_NUMBER: builtins.int float_in: builtins.float @property - def double_array_in( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def double_array_in(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... bool_in: builtins.bool string_in: builtins.str enum_in: global___Color.ValueType @property - def string_array_in( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def string_array_in(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... def __init__( self, *, @@ -76,20 +72,6 @@ class SampleMeasurementParameter(google.protobuf.message.Message): enum_in: global___Color.ValueType = ..., string_array_in: collections.abc.Iterable[builtins.str] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "bool_in", - b"bool_in", - "double_array_in", - b"double_array_in", - "float_in", - b"float_in", - "string_array_in", - b"string_array_in", - "string_in", - b"string_in", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bool_in", b"bool_in", "double_array_in", b"double_array_in", "enum_in", b"enum_in", "float_in", b"float_in", "string_array_in", b"string_array_in", "string_in", b"string_in"]) -> None: ... global___SampleMeasurementParameter = SampleMeasurementParameter diff --git a/tests/assets/sample_streaming_measurement_test_pb2.pyi b/tests/assets/sample_streaming_measurement_test_pb2.pyi index 5a3f7f290..7f93b49e6 100644 --- a/tests/assets/sample_streaming_measurement_test_pb2.pyi +++ b/tests/assets/sample_streaming_measurement_test_pb2.pyi @@ -48,23 +48,7 @@ class SampleStreamingMeasurementParameter(google.protobuf.message.Message): response_interval_in_ms: builtins.int = ..., error_on_index: builtins.int = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "cumulative_data", - b"cumulative_data", - "data_size", - b"data_size", - "error_on_index", - b"error_on_index", - "name", - b"name", - "num_responses", - b"num_responses", - "response_interval_in_ms", - b"response_interval_in_ms", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["cumulative_data", b"cumulative_data", "data_size", b"data_size", "error_on_index", b"error_on_index", "name", b"name", "num_responses", b"num_responses", "response_interval_in_ms", b"response_interval_in_ms"]) -> None: ... global___SampleStreamingMeasurementParameter = SampleStreamingMeasurementParameter @@ -78,9 +62,7 @@ class SampleStreamingMeasurementOutput(google.protobuf.message.Message): name: builtins.str index: builtins.int @property - def data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... def __init__( self, *, @@ -88,9 +70,6 @@ class SampleStreamingMeasurementOutput(google.protobuf.message.Message): index: builtins.int = ..., data: collections.abc.Iterable[builtins.int] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal["data", b"data", "index", b"index", "name", b"name"], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["data", b"data", "index", b"index", "name", b"name"]) -> None: ... global___SampleStreamingMeasurementOutput = SampleStreamingMeasurementOutput diff --git a/tests/assets/test_pb2.pyi b/tests/assets/test_pb2.pyi index c307160ea..d6603a477 100644 --- a/tests/assets/test_pb2.pyi +++ b/tests/assets/test_pb2.pyi @@ -78,37 +78,24 @@ class MeasurementParameter(google.protobuf.message.Message): enum_data: builtins.str enum_array_data: builtins.list @property - def double_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def double_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... @property - def float_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def float_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... @property - def int32_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def int32_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def uint32_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def uint32_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def int64_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def int64_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def uint64_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... + def uint64_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]: ... @property - def bool_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... + def bool_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... @property - def string_array_data( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + def string_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... + enum_data: global___DifferentColor.ValueType + @property + def enum_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___DifferentColor.ValueType]: ... def __init__( self, *, @@ -131,42 +118,6 @@ class MeasurementParameter(google.protobuf.message.Message): enum_data: global___DifferentColor.ValueType = ..., enum_array_data: collections.abc.Iterable[global___DifferentColor.ValueType] | None = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "bool_array_data", - b"bool_array_data", - "bool_data", - b"bool_data", - "double_array_data", - b"double_array_data", - "double_data", - b"double_data", - "float_array_data", - b"float_array_data", - "float_data", - b"float_data", - "int32_array_data", - b"int32_array_data", - "int32_data", - b"int32_data", - "int64_array_data", - b"int64_array_data", - "int64_data", - b"int64_data", - "string_array_data", - b"string_array_data", - "string_data", - b"string_data", - "uint32_array_data", - b"uint32_array_data", - "uint32_data", - b"uint32_data", - "uint64_array_data", - b"uint64_array_data", - "uint64_data", - b"uint64_data", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["bool_array_data", b"bool_array_data", "bool_data", b"bool_data", "double_array_data", b"double_array_data", "double_data", b"double_data", "enum_array_data", b"enum_array_data", "enum_data", b"enum_data", "float_array_data", b"float_array_data", "float_data", b"float_data", "int32_array_data", b"int32_array_data", "int32_data", b"int32_data", "int64_array_data", b"int64_array_data", "int64_data", b"int64_data", "string_array_data", b"string_array_data", "string_data", b"string_data", "uint32_array_data", b"uint32_array_data", "uint32_data", b"uint32_data", "uint64_array_data", b"uint64_array_data", "uint64_data", b"uint64_data"]) -> None: ... global___MeasurementParameter = MeasurementParameter diff --git a/tests/assets/ui_progress_updates_test_pb2.pyi b/tests/assets/ui_progress_updates_test_pb2.pyi index 20641043a..1ef8ac68e 100644 --- a/tests/assets/ui_progress_updates_test_pb2.pyi +++ b/tests/assets/ui_progress_updates_test_pb2.pyi @@ -33,9 +33,7 @@ class UIProgressUpdatesParameter(google.protobuf.message.Message): *, time_in_seconds: builtins.float = ..., ) -> None: ... - def ClearField( - self, field_name: typing_extensions.Literal["time_in_seconds", b"time_in_seconds"] - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["time_in_seconds", b"time_in_seconds"]) -> None: ... global___UIProgressUpdatesParameter = UIProgressUpdatesParameter @@ -48,9 +46,7 @@ class UIProgressUpdatesOutput(google.protobuf.message.Message): STATUS_FIELD_NUMBER: builtins.int elapsed_time_in_seconds: builtins.float @property - def random_numbers( - self, - ) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... + def random_numbers(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ... status: builtins.str def __init__( self, @@ -59,16 +55,6 @@ class UIProgressUpdatesOutput(google.protobuf.message.Message): random_numbers: collections.abc.Iterable[builtins.float] | None = ..., status: builtins.str = ..., ) -> None: ... - def ClearField( - self, - field_name: typing_extensions.Literal[ - "elapsed_time_in_seconds", - b"elapsed_time_in_seconds", - "random_numbers", - b"random_numbers", - "status", - b"status", - ], - ) -> None: ... + def ClearField(self, field_name: typing_extensions.Literal["elapsed_time_in_seconds", b"elapsed_time_in_seconds", "random_numbers", b"random_numbers", "status", b"status"]) -> None: ... global___UIProgressUpdatesOutput = UIProgressUpdatesOutput From f99083169af958c70087c36e669d541baeb28b9f Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 15:18:09 -0500 Subject: [PATCH 14/22] Fix comments --- .../_internal/discovery_client.py | 2 +- pyproject.toml | 15 ++++----------- tests/assets/test_pb2.pyi | 2 -- 3 files changed, 5 insertions(+), 14 deletions(-) diff --git a/ni_measurementlink_service/_internal/discovery_client.py b/ni_measurementlink_service/_internal/discovery_client.py index c314be781..69b2ccb70 100644 --- a/ni_measurementlink_service/_internal/discovery_client.py +++ b/ni_measurementlink_service/_internal/discovery_client.py @@ -128,7 +128,7 @@ def register_measurement_service( _logger.error( "Unable to register with discovery service. Possible reason: discovery service not running." ) - except Exception as err: + except Exception: _logger.exception("Error in registering with discovery service.") return False return True diff --git a/pyproject.toml b/pyproject.toml index ae448427a..8521b09c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,13 +1,9 @@ [tool.black] -extend-exclude ='((.+_pb2_grpc)|(.+_pb2))+(.py)$|(.pyi)' # Regex to files with _pb2_grpc.py and _pb2.py Auto Generated Code are excluded +extend-exclude ='((.+_pb2_grpc)|(.+_pb2))+(.py|.pyi)$' # Regex to files with _pb2_grpc.py and _pb2.py Auto Generated Code are excluded line-length = 100 -exclude = ''' -( -\.git # root of the project -| \.venv -| venv -) -''' + +[tool.ni-python-styleguide] +extend_exclude = "*_pb2_grpc.py,*_pb2.py,venv,ni_measurementlink_generator,*.pyi" [tool.poetry] name = "ni_measurementlink_service" @@ -69,9 +65,6 @@ sphinx-click = "^4.1.0" requires = ["poetry-core>=1.2.0"] build-backend = "poetry.core.masonry.api" -[tool.ni-python-styleguide] -extend_exclude = "*_pb2_grpc.py,*_pb2.py,venv,ni_measurementlink_generator/*" - [tool.pytest.ini_options] addopts = "--doctest-modules --strict-markers" filterwarnings = ["always::ImportWarning", "always::ResourceWarning"] diff --git a/tests/assets/test_pb2.pyi b/tests/assets/test_pb2.pyi index d6603a477..226de9dd9 100644 --- a/tests/assets/test_pb2.pyi +++ b/tests/assets/test_pb2.pyi @@ -93,9 +93,7 @@ class MeasurementParameter(google.protobuf.message.Message): def bool_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.bool]: ... @property def string_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ... - enum_data: global___DifferentColor.ValueType @property - def enum_array_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___DifferentColor.ValueType]: ... def __init__( self, *, From 38bd275c2ec6af26a6d3a2ce2caaa76c4111d50c Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 15:31:54 -0500 Subject: [PATCH 15/22] Simplify regex --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8521b09c2..48adcfb16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [tool.black] -extend-exclude ='((.+_pb2_grpc)|(.+_pb2))+(.py|.pyi)$' # Regex to files with _pb2_grpc.py and _pb2.py Auto Generated Code are excluded +extend_exclude = '((_pb2_grpc)|(_pb2))+(.py|.pyi)$' # Regex to files with _pb2_grpc.py(pyi) and _pb2.py(pyi) Auto Generated Code are excluded line-length = 100 [tool.ni-python-styleguide] -extend_exclude = "*_pb2_grpc.py,*_pb2.py,venv,ni_measurementlink_generator,*.pyi" +extend_exclude = "*_pb2_grpc.py,*_pb2.py,venv,ni_measurementlink_generator" [tool.poetry] name = "ni_measurementlink_service" From 11756b01ceba120cbb9e42ca8cc10a6f09de85b0 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 15:43:16 -0500 Subject: [PATCH 16/22] Revert changes made by black --- .../v1/discovery_service_pb2_grpc.pyi | 4 +--- .../v1/measurement_service_pb2_grpc.pyi | 4 +--- .../v2/measurement_service_pb2_grpc.pyi | 8 ++------ .../pinmap/v1/pin_map_service_pb2_grpc.pyi | 4 +--- .../session_management_service_pb2_grpc.pyi | 20 +++++-------------- .../_internal/stubs/session_pb2_grpc.pyi | 4 +--- 6 files changed, 11 insertions(+), 33 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 fbba79393..31ff7feda 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 @@ -111,6 +111,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: grpc.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 2314eeee4..7973d910f 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 @@ -45,6 +45,4 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): ) -> 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: grpc.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 9978efa4b..91ef0e059 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 @@ -43,11 +43,7 @@ class MeasurementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureRequest, context: grpc.ServicerContext, - ) -> collections.abc.Iterator[ - ni_measurementlink_measurement_v2_measurement_service_pb2.MeasureResponse - ]: + ) -> collections.abc.Iterator[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: grpc.Server) -> None: ... 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 59074adfd..3b30e2bdd 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 @@ -137,6 +137,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: grpc.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 019c4ce12..c8755cb75 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 @@ -69,9 +69,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, context: grpc.ServicerContext, - ) -> ( - ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse - ): + ) -> (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: @@ -89,9 +87,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsRequest, context: grpc.ServicerContext, - ) -> ( - ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse - ): + ) -> (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. @@ -101,9 +97,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsRequest, context: grpc.ServicerContext, - ) -> ( - ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse - ): + ) -> (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: @@ -116,18 +110,14 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsRequest, context: grpc.ServicerContext, - ) -> ( - ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse - ): + ) -> (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 - ): + ) -> (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. diff --git a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi index 45a56b03d..b3d1f09fc 100644 --- a/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi +++ b/ni_measurementlink_service/_internal/stubs/session_pb2_grpc.pyi @@ -75,6 +75,4 @@ class SessionUtilitiesServicer(metaclass=abc.ABCMeta): ) -> 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: grpc.Server) -> None: ... From b91174ab40ed40275e082fa0695cc22b339c88db Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 15:44:56 -0500 Subject: [PATCH 17/22] Simplify Regex --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 48adcfb16..0f9af5672 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,9 @@ [tool.black] -extend_exclude = '((_pb2_grpc)|(_pb2))+(.py|.pyi)$' # Regex to files with _pb2_grpc.py(pyi) and _pb2.py(pyi) Auto Generated Code are excluded +extend_exclude = '_pb2(_grpc)?\.(py|pyi)$|ni_measurementlink_generator/' line-length = 100 [tool.ni-python-styleguide] -extend_exclude = "*_pb2_grpc.py,*_pb2.py,venv,ni_measurementlink_generator" +extend_exclude = '*_pb2_grpc.py,*_pb2_grpc.pyi,*_pb2.py,*_pb2.pyi,ni_measurementlink_generator/' [tool.poetry] name = "ni_measurementlink_service" From 7e22decf683492b4a25da388846f2dc2b01ad5c3 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 16:16:43 -0500 Subject: [PATCH 18/22] Revert more black change simplify code --- .../v1/session_management_service_pb2_grpc.pyi | 10 +++++----- ni_measurementlink_service/measurement/service.py | 10 ++++------ 2 files changed, 9 insertions(+), 11 deletions(-) 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 c8755cb75..85aadf60c 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 @@ -69,7 +69,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsRequest, context: grpc.ServicerContext, - ) -> (ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.ReserveSessionsResponse): + ) -> 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: @@ -87,7 +87,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsRequest, context: grpc.ServicerContext, - ) -> (ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnreserveSessionsResponse): + ) -> 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. @@ -97,7 +97,7 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsRequest, context: grpc.ServicerContext, - ) -> (ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.RegisterSessionsResponse): + ) -> 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: @@ -110,14 +110,14 @@ class SessionManagementServiceServicer(metaclass=abc.ABCMeta): self, request: ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsRequest, context: grpc.ServicerContext, - ) -> (ni_measurementlink_sessionmanagement_v1_session_management_service_pb2.UnregisterSessionsResponse): + ) -> 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): + ) -> 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. diff --git a/ni_measurementlink_service/measurement/service.py b/ni_measurementlink_service/measurement/service.py index 3f14402f7..c48168195 100644 --- a/ni_measurementlink_service/measurement/service.py +++ b/ni_measurementlink_service/measurement/service.py @@ -181,12 +181,10 @@ def __init__( ui_file_paths=ui_file_paths, ) - service_annotations_string: Dict[str, str] = {} - if "annotations" in service: - for keys in service["annotations"]: - service_annotations_string[keys] = json.dumps( - service["annotations"][keys], separators=(",", ":") - ) + service_annotations_string = { + key: json.dumps(value, separators=(",", ":")) + for key, value in service.get("annotations", {}).items() + } self.service_info = ServiceInfo( service_class=service["serviceClass"], From 3c2ac07f8274e87582b6d76ae51e07f516fe4c51 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 16:28:22 -0500 Subject: [PATCH 19/22] Revert Black --- .../v1/session_management_service_pb2_grpc.pyi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 85aadf60c..8e6fcad03 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 @@ -125,6 +125,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: grpc.Server) -> None: ... From a3568e684a0c1d51886f0b5fbf7238c2fd6b073b Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Wed, 28 Jun 2023 17:11:53 -0500 Subject: [PATCH 20/22] revert black changes --- tests/assets/sample_measurement_test_pb2.pyi | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/assets/sample_measurement_test_pb2.pyi b/tests/assets/sample_measurement_test_pb2.pyi index 3ad141ded..cd131c6e8 100644 --- a/tests/assets/sample_measurement_test_pb2.pyi +++ b/tests/assets/sample_measurement_test_pb2.pyi @@ -24,9 +24,7 @@ class _Color: ValueType = typing.NewType("ValueType", builtins.int) V: typing_extensions.TypeAlias = ValueType -class _ColorEnumTypeWrapper( - google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Color.ValueType], builtins.type -): +class _ColorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Color.ValueType], builtins.type): DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor NONE: _Color.ValueType # 0 RED: _Color.ValueType # 1 From 5e5b92146df0b60c5f80aa66d50a8df9a937208e Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 29 Jun 2023 10:36:15 -0500 Subject: [PATCH 21/22] Change annotation from test to avoid confusion --- tests/unit/test_discovery_client.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/unit/test_discovery_client.py b/tests/unit/test_discovery_client.py index 26901f132..cfb8595bf 100644 --- a/tests/unit/test_discovery_client.py +++ b/tests/unit/test_discovery_client.py @@ -17,12 +17,11 @@ ] _PROVIDED_ANNOTATIONS = { - "ni/service.description": "Measure inrush current with a shorted load and validate results against configured limits.", + "ni/service.description": "This annotation is just an example for this test", "ni/service.collection": "CurrentTests.Inrush", - "ni/service.tags": '["powerup","current"]', + "ni/service.tags": '["NI_Example","Voltage"]', "client/extra.NumberID": "500", - "client/extra.Parts": '["A25898","A25412"]', - "custom": '{"foo":"bar","baz":["qux","quux","quuux"],"snork":{"blarg":"flarp","oogle":["foogle","boogle"],"ork":["zork","gork","bork"]}}', + "client/extra.Parts": '["PartNumber_25898","PartNumber_25412"]', } From f91e23f3d154995fe6ff871b09f9dfe93f521517 Mon Sep 17 00:00:00 2001 From: Gonzalo Pacheco Date: Thu, 29 Jun 2023 10:45:06 -0500 Subject: [PATCH 22/22] Fix naming of tests examples. --- ...serviceconfig => example.AllAnnotations.serviceconfig} | 0 ...viceconfig => example.CustomAnnotations.serviceconfig} | 0 ...serviceconfig => example.OnlyCollection.serviceconfig} | 0 ...le.v4.serviceconfig => example.OnlyTags.serviceconfig} | 0 tests/unit/test_service.py | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) rename tests/assets/{example.v5.serviceconfig => example.AllAnnotations.serviceconfig} (100%) rename tests/assets/{example.v6.serviceconfig => example.CustomAnnotations.serviceconfig} (100%) rename tests/assets/{example.v3.serviceconfig => example.OnlyCollection.serviceconfig} (100%) rename tests/assets/{example.v4.serviceconfig => example.OnlyTags.serviceconfig} (100%) diff --git a/tests/assets/example.v5.serviceconfig b/tests/assets/example.AllAnnotations.serviceconfig similarity index 100% rename from tests/assets/example.v5.serviceconfig rename to tests/assets/example.AllAnnotations.serviceconfig diff --git a/tests/assets/example.v6.serviceconfig b/tests/assets/example.CustomAnnotations.serviceconfig similarity index 100% rename from tests/assets/example.v6.serviceconfig rename to tests/assets/example.CustomAnnotations.serviceconfig diff --git a/tests/assets/example.v3.serviceconfig b/tests/assets/example.OnlyCollection.serviceconfig similarity index 100% rename from tests/assets/example.v3.serviceconfig rename to tests/assets/example.OnlyCollection.serviceconfig diff --git a/tests/assets/example.v4.serviceconfig b/tests/assets/example.OnlyTags.serviceconfig similarity index 100% rename from tests/assets/example.v4.serviceconfig rename to tests/assets/example.OnlyTags.serviceconfig diff --git a/tests/unit/test_service.py b/tests/unit/test_service.py index 825f76195..5dc9344e1 100644 --- a/tests/unit/test_service.py +++ b/tests/unit/test_service.py @@ -277,17 +277,17 @@ def _fake_measurement_function(): no_annotations, ), ( - "example.v3.serviceconfig", + "example.OnlyCollection.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], {"ni/service.collection": '"CurrentTests.Inrush"'}, ), ( - "example.v4.serviceconfig", + "example.OnlyTags.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], {"ni/service.tags": '["powerup","current","voltage"]'}, ), ( - "example.v5.serviceconfig", + "example.AllAnnotations.serviceconfig", ["ni.measurementlink.measurement.v2.MeasurementService"], { "ni/service.description": '"Testing extra Client info"', @@ -297,7 +297,7 @@ def _fake_measurement_function(): }, ), ( - "example.v6.serviceconfig", + "example.CustomAnnotations.serviceconfig", ["ni.measurementlink.measurement.v1.MeasurementService"], { "description": '"An annotated test measurement service."',