diff --git a/sdk/pyproject.toml b/sdk/pyproject.toml index b4c60fb..f10b331 100644 --- a/sdk/pyproject.toml +++ b/sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "opendecree" -version = "0.1.0" +version = "0.2.0a1" description = "Python SDK for OpenDecree — schema-driven configuration management (alpha)" readme = "README.md" license = "Apache-2.0" diff --git a/sdk/src/opendecree/_compat.py b/sdk/src/opendecree/_compat.py index 6d54263..ea12dd6 100644 --- a/sdk/src/opendecree/_compat.py +++ b/sdk/src/opendecree/_compat.py @@ -1,6 +1,6 @@ """Server version compatibility checking. -Provides runtime version checking against the VersionService endpoint. +Provides runtime version checking against the ServerService endpoint. Results are cached per client instance. """ @@ -15,17 +15,17 @@ def fetch_server_version(stub: Any, pb2: Any, timeout: float) -> ServerVersion: - """Call VersionService.GetServerVersion and return a ServerVersion. + """Call ServerService.GetServerInfo and return a ServerVersion. Args: - stub: VersionServiceStub instance. - pb2: version_service_pb2 module. + stub: ServerServiceStub instance. + pb2: server_service_pb2 module. timeout: RPC timeout in seconds. Returns: ServerVersion with version and commit strings. """ - resp = stub.GetServerVersion(pb2.GetServerVersionRequest(), timeout=timeout) + resp = stub.GetServerInfo(pb2.GetServerInfoRequest(), timeout=timeout) return ServerVersion(version=resp.version, commit=resp.commit) @@ -33,14 +33,14 @@ async def async_fetch_server_version(stub: Any, pb2: Any, timeout: float) -> Ser """Async variant of fetch_server_version. Args: - stub: VersionServiceStub instance (async). - pb2: version_service_pb2 module. + stub: ServerServiceStub instance (async). + pb2: server_service_pb2 module. timeout: RPC timeout in seconds. Returns: ServerVersion with version and commit strings. """ - resp = await stub.GetServerVersion(pb2.GetServerVersionRequest(), timeout=timeout) + resp = await stub.GetServerInfo(pb2.GetServerInfoRequest(), timeout=timeout) return ServerVersion(version=resp.version, commit=resp.commit) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.py b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.py new file mode 100644 index 0000000..96d3f93 --- /dev/null +++ b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# NO CHECKED-IN PROTOBUF GENCODE +# source: centralconfig/v1/server_service.proto +# Protobuf Python Version: 6.31.1 +"""Generated protocol buffer code.""" +from google.protobuf import descriptor as _descriptor +from google.protobuf import descriptor_pool as _descriptor_pool +from google.protobuf import runtime_version as _runtime_version +from google.protobuf import symbol_database as _symbol_database +from google.protobuf.internal import builder as _builder +_runtime_version.ValidateProtobufRuntimeVersion( + _runtime_version.Domain.PUBLIC, + 6, + 31, + 1, + '', + 'centralconfig/v1/server_service.proto' +) +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 + + +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%centralconfig/v1/server_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1cgoogle/api/annotations.proto\"\x16\n\x14GetServerInfoRequest\"\xb2\x01\n\x15GetServerInfoResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t\x12G\n\x08\x66\x65\x61tures\x18\x03 \x03(\x0b\x32\x35.centralconfig.v1.GetServerInfoResponse.FeaturesEntry\x1a/\n\rFeaturesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x32\x8a\x01\n\rServerService\x12y\n\rGetServerInfo\x12&.centralconfig.v1.GetServerInfoRequest\x1a\'.centralconfig.v1.GetServerInfoResponse\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/v1/server/infob\x06proto3') + +_globals = globals() +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'centralconfig.v1.server_service_pb2', _globals) +if not _descriptor._USE_C_DESCRIPTORS: + DESCRIPTOR._loaded_options = None + _globals['_GETSERVERINFORESPONSE_FEATURESENTRY']._loaded_options = None + _globals['_GETSERVERINFORESPONSE_FEATURESENTRY']._serialized_options = b'8\001' + _globals['_SERVERSERVICE'].methods_by_name['GetServerInfo']._loaded_options = None + _globals['_SERVERSERVICE'].methods_by_name['GetServerInfo']._serialized_options = b'\202\323\344\223\002\021\022\017/v1/server/info' + _globals['_GETSERVERINFOREQUEST']._serialized_start=89 + _globals['_GETSERVERINFOREQUEST']._serialized_end=111 + _globals['_GETSERVERINFORESPONSE']._serialized_start=114 + _globals['_GETSERVERINFORESPONSE']._serialized_end=292 + _globals['_GETSERVERINFORESPONSE_FEATURESENTRY']._serialized_start=245 + _globals['_GETSERVERINFORESPONSE_FEATURESENTRY']._serialized_end=292 + _globals['_SERVERSERVICE']._serialized_start=295 + _globals['_SERVERSERVICE']._serialized_end=433 +# @@protoc_insertion_point(module_scope) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.pyi new file mode 100644 index 0000000..b8b4a53 --- /dev/null +++ b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2.pyi @@ -0,0 +1,75 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +from collections import abc as _abc +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf.internal import containers as _containers +import builtins as _builtins +import sys +import typing as _typing + +if sys.version_info >= (3, 10): + from typing import TypeAlias as _TypeAlias +else: + from typing_extensions import TypeAlias as _TypeAlias + +DESCRIPTOR: _descriptor.FileDescriptor + +@_typing.final +class GetServerInfoRequest(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + def __init__( + self, + ) -> None: ... + +Global___GetServerInfoRequest: _TypeAlias = GetServerInfoRequest # noqa: Y015 + +@_typing.final +class GetServerInfoResponse(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + @_typing.final + class FeaturesEntry(_message.Message): + DESCRIPTOR: _descriptor.Descriptor + + KEY_FIELD_NUMBER: _builtins.int + VALUE_FIELD_NUMBER: _builtins.int + key: _builtins.str + value: _builtins.bool + def __init__( + self, + *, + key: _builtins.str = ..., + value: _builtins.bool = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["key", b"key", "value", b"value"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + + VERSION_FIELD_NUMBER: _builtins.int + COMMIT_FIELD_NUMBER: _builtins.int + FEATURES_FIELD_NUMBER: _builtins.int + version: _builtins.str + """Semantic version string (e.g. "1.2.3" or "dev").""" + commit: _builtins.str + """Git commit hash.""" + @_builtins.property + def features(self) -> _containers.ScalarMap[_builtins.str, _builtins.bool]: + """Enabled server features. Keys are feature names, values indicate enabled state. + Known features: schema, config, audit, usage_tracking, jwt_auth, http_gateway. + """ + + def __init__( + self, + *, + version: _builtins.str = ..., + commit: _builtins.str = ..., + features: _abc.Mapping[_builtins.str, _builtins.bool] | None = ..., + ) -> None: ... + _ClearFieldArgType: _TypeAlias = _typing.Literal["commit", b"commit", "features", b"features", "version", b"version"] # noqa: Y015 + def ClearField(self, field_name: _ClearFieldArgType) -> None: ... + +Global___GetServerInfoResponse: _TypeAlias = GetServerInfoResponse # noqa: Y015 diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.py b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.py similarity index 53% rename from sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.py rename to sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.py index 3f707ff..39852aa 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.py +++ b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.py @@ -3,7 +3,7 @@ import grpc import warnings -from centralconfig.v1 import version_service_pb2 as centralconfig_dot_v1_dot_version__service__pb2 +from centralconfig.v1 import server_service_pb2 as centralconfig_dot_v1_dot_server__service__pb2 GRPC_GENERATED_VERSION = '1.80.0' GRPC_VERSION = grpc.__version__ @@ -18,15 +18,16 @@ if _version_not_supported: raise RuntimeError( f'The grpc package installed is at version {GRPC_VERSION},' - + ' but the generated code in centralconfig/v1/version_service_pb2_grpc.py depends on' + + ' but the generated code in centralconfig/v1/server_service_pb2_grpc.py depends on' + f' grpcio>={GRPC_GENERATED_VERSION}.' + f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}' + f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.' ) -class VersionServiceStub(object): - """VersionService provides server version information. +class ServerServiceStub(object): + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. """ def __init__(self, channel): @@ -35,46 +36,48 @@ def __init__(self, channel): Args: channel: A grpc.Channel. """ - self.GetServerVersion = channel.unary_unary( - '/centralconfig.v1.VersionService/GetServerVersion', - request_serializer=centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionRequest.SerializeToString, - response_deserializer=centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionResponse.FromString, + self.GetServerInfo = channel.unary_unary( + '/centralconfig.v1.ServerService/GetServerInfo', + request_serializer=centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoRequest.SerializeToString, + response_deserializer=centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoResponse.FromString, _registered_method=True) -class VersionServiceServicer(object): - """VersionService provides server version information. +class ServerServiceServicer(object): + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. """ - def GetServerVersion(self, request, context): - """GetServerVersion returns the server's build version and commit hash. + def GetServerInfo(self, request, context): + """GetServerInfo returns the server's version, commit hash, and enabled features. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') -def add_VersionServiceServicer_to_server(servicer, server): +def add_ServerServiceServicer_to_server(servicer, server): rpc_method_handlers = { - 'GetServerVersion': grpc.unary_unary_rpc_method_handler( - servicer.GetServerVersion, - request_deserializer=centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionRequest.FromString, - response_serializer=centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionResponse.SerializeToString, + 'GetServerInfo': grpc.unary_unary_rpc_method_handler( + servicer.GetServerInfo, + request_deserializer=centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoRequest.FromString, + response_serializer=centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoResponse.SerializeToString, ), } generic_handler = grpc.method_handlers_generic_handler( - 'centralconfig.v1.VersionService', rpc_method_handlers) + 'centralconfig.v1.ServerService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('centralconfig.v1.VersionService', rpc_method_handlers) + server.add_registered_method_handlers('centralconfig.v1.ServerService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. -class VersionService(object): - """VersionService provides server version information. +class ServerService(object): + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. """ @staticmethod - def GetServerVersion(request, + def GetServerInfo(request, target, options=(), channel_credentials=None, @@ -87,9 +90,9 @@ def GetServerVersion(request, return grpc.experimental.unary_unary( request, target, - '/centralconfig.v1.VersionService/GetServerVersion', - centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionRequest.SerializeToString, - centralconfig_dot_v1_dot_version__service__pb2.GetServerVersionResponse.FromString, + '/centralconfig.v1.ServerService/GetServerInfo', + centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoRequest.SerializeToString, + centralconfig_dot_v1_dot_server__service__pb2.GetServerInfoResponse.FromString, options, channel_credentials, insecure, diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.pyi new file mode 100644 index 0000000..68995ce --- /dev/null +++ b/sdk/src/opendecree/_generated/centralconfig/v1/server_service_pb2_grpc.pyi @@ -0,0 +1,64 @@ +""" +@generated by mypy-protobuf. Do not edit manually! +isort:skip_file +""" + +from centralconfig.v1 import server_service_pb2 as _server_service_pb2 +from collections import abc as _abc +from grpc import aio as _aio +import abc as _abc_1 +import grpc as _grpc +import sys +import typing as _typing + +if sys.version_info >= (3, 11): + from typing import Self as _Self +else: + from typing_extensions import Self as _Self + +_T = _typing.TypeVar("_T") + +class _MaybeAsyncIterator(_abc.AsyncIterator[_T], _abc.Iterator[_T], metaclass=_abc_1.ABCMeta): ... + +class _ServicerContext(_grpc.ServicerContext, _aio.ServicerContext): # type: ignore[misc, type-arg] + ... + +GRPC_GENERATED_VERSION: str +GRPC_VERSION: str + +class ServerServiceStub: + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. + """ + + @_typing.overload + def __new__(cls, channel: _grpc.Channel) -> _Self: ... + @_typing.overload + def __new__(cls, channel: _aio.Channel) -> ServerServiceAsyncStub: ... + GetServerInfo: _grpc.UnaryUnaryMultiCallable[_server_service_pb2.GetServerInfoRequest, _server_service_pb2.GetServerInfoResponse] + """GetServerInfo returns the server's version, commit hash, and enabled features.""" + +@_typing.type_check_only +class ServerServiceAsyncStub(ServerServiceStub): + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. + """ + + def __init__(self, channel: _aio.Channel) -> None: ... + GetServerInfo: _aio.UnaryUnaryMultiCallable[_server_service_pb2.GetServerInfoRequest, _server_service_pb2.GetServerInfoResponse] # type: ignore[assignment] + """GetServerInfo returns the server's version, commit hash, and enabled features.""" + +class ServerServiceServicer(metaclass=_abc_1.ABCMeta): + """ServerService provides server metadata and capability discovery. + Always registered, no authentication required. + """ + + @_abc_1.abstractmethod + def GetServerInfo( + self, + request: _server_service_pb2.GetServerInfoRequest, + context: _ServicerContext, + ) -> _typing.Union[_server_service_pb2.GetServerInfoResponse, _abc.Awaitable[_server_service_pb2.GetServerInfoResponse]]: + """GetServerInfo returns the server's version, commit hash, and enabled features.""" + +def add_ServerServiceServicer_to_server(servicer: ServerServiceServicer, server: _typing.Union[_grpc.Server, _aio.Server]) -> None: ... diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi index e0a5fcb..40a148f 100644 --- a/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi +++ b/sdk/src/opendecree/_generated/centralconfig/v1/types_pb2.pyi @@ -395,6 +395,9 @@ Global___ExternalDocs: _TypeAlias = ExternalDocs # noqa: Y015 @_typing.final class SchemaInfo(_message.Message): """SchemaInfo contains optional metadata about a schema's ownership and context. + Optional organizational metadata for a schema. + Schema.description lives on Schema itself (not here) because it's a + first-class field used in every listing, while these are optional extras. OAS: Info Object """ @@ -422,7 +425,8 @@ class SchemaInfo(_message.Message): CONTACT_FIELD_NUMBER: _builtins.int LABELS_FIELD_NUMBER: _builtins.int title: _builtins.str - """Human-friendly display title for the schema. + """Human-friendly display name (e.g. "Payment Configuration"). + Unlike Schema.name (a machine slug), this is for UI and documentation. OAS: info.title """ author: _builtins.str @@ -504,8 +508,9 @@ class Schema(_message.Message): id: _builtins.str """Server-assigned unique identifier (UUID).""" name: _builtins.str - """Unique name for this schema. Must be a valid slug: lowercase alphanumeric - characters and hyphens, 1-63 characters, matching [a-z0-9]([a-z0-9-]*[a-z0-9])?. + """Machine identifier for this schema, used in API calls, URLs, and code. + Must be a unique slug: lowercase alphanumeric and hyphens, 1-63 characters, + matching [a-z0-9]([a-z0-9-]*[a-z0-9])?. See info.title for a display name. """ description: _builtins.str """Human-readable description of the schema's purpose.""" diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.py b/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.py deleted file mode 100644 index cb91358..0000000 --- a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# NO CHECKED-IN PROTOBUF GENCODE -# source: centralconfig/v1/version_service.proto -# Protobuf Python Version: 6.31.1 -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import runtime_version as _runtime_version -from google.protobuf import symbol_database as _symbol_database -from google.protobuf.internal import builder as _builder -_runtime_version.ValidateProtobufRuntimeVersion( - _runtime_version.Domain.PUBLIC, - 6, - 31, - 1, - '', - 'centralconfig/v1/version_service.proto' -) -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n¢ralconfig/v1/version_service.proto\x12\x10\x63\x65ntralconfig.v1\x1a\x1cgoogle/api/annotations.proto\"\x19\n\x17GetServerVersionRequest\";\n\x18GetServerVersionResponse\x12\x0f\n\x07version\x18\x01 \x01(\t\x12\x0e\n\x06\x63ommit\x18\x02 \x01(\t2\x90\x01\n\x0eVersionService\x12~\n\x10GetServerVersion\x12).centralconfig.v1.GetServerVersionRequest\x1a*.centralconfig.v1.GetServerVersionResponse\"\x13\x82\xd3\xe4\x93\x02\r\x12\x0b/v1/versionb\x06proto3') - -_globals = globals() -_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) -_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'centralconfig.v1.version_service_pb2', _globals) -if not _descriptor._USE_C_DESCRIPTORS: - DESCRIPTOR._loaded_options = None - _globals['_VERSIONSERVICE'].methods_by_name['GetServerVersion']._loaded_options = None - _globals['_VERSIONSERVICE'].methods_by_name['GetServerVersion']._serialized_options = b'\202\323\344\223\002\r\022\013/v1/version' - _globals['_GETSERVERVERSIONREQUEST']._serialized_start=90 - _globals['_GETSERVERVERSIONREQUEST']._serialized_end=115 - _globals['_GETSERVERVERSIONRESPONSE']._serialized_start=117 - _globals['_GETSERVERVERSIONRESPONSE']._serialized_end=176 - _globals['_VERSIONSERVICE']._serialized_start=179 - _globals['_VERSIONSERVICE']._serialized_end=323 -# @@protoc_insertion_point(module_scope) diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.pyi deleted file mode 100644 index a0dd0f3..0000000 --- a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2.pyi +++ /dev/null @@ -1,48 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -import builtins as _builtins -import sys -import typing as _typing - -if sys.version_info >= (3, 10): - from typing import TypeAlias as _TypeAlias -else: - from typing_extensions import TypeAlias as _TypeAlias - -DESCRIPTOR: _descriptor.FileDescriptor - -@_typing.final -class GetServerVersionRequest(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - - def __init__( - self, - ) -> None: ... - -Global___GetServerVersionRequest: _TypeAlias = GetServerVersionRequest # noqa: Y015 - -@_typing.final -class GetServerVersionResponse(_message.Message): - DESCRIPTOR: _descriptor.Descriptor - - VERSION_FIELD_NUMBER: _builtins.int - COMMIT_FIELD_NUMBER: _builtins.int - version: _builtins.str - """Semantic version string (e.g. "1.2.3" or "dev").""" - commit: _builtins.str - """Git commit hash.""" - def __init__( - self, - *, - version: _builtins.str = ..., - commit: _builtins.str = ..., - ) -> None: ... - _ClearFieldArgType: _TypeAlias = _typing.Literal["commit", b"commit", "version", b"version"] # noqa: Y015 - def ClearField(self, field_name: _ClearFieldArgType) -> None: ... - -Global___GetServerVersionResponse: _TypeAlias = GetServerVersionResponse # noqa: Y015 diff --git a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.pyi b/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.pyi deleted file mode 100644 index 6e266a6..0000000 --- a/sdk/src/opendecree/_generated/centralconfig/v1/version_service_pb2_grpc.pyi +++ /dev/null @@ -1,58 +0,0 @@ -""" -@generated by mypy-protobuf. Do not edit manually! -isort:skip_file -""" - -from centralconfig.v1 import version_service_pb2 as _version_service_pb2 -from collections import abc as _abc -from grpc import aio as _aio -import abc as _abc_1 -import grpc as _grpc -import sys -import typing as _typing - -if sys.version_info >= (3, 11): - from typing import Self as _Self -else: - from typing_extensions import Self as _Self - -_T = _typing.TypeVar("_T") - -class _MaybeAsyncIterator(_abc.AsyncIterator[_T], _abc.Iterator[_T], metaclass=_abc_1.ABCMeta): ... - -class _ServicerContext(_grpc.ServicerContext, _aio.ServicerContext): # type: ignore[misc, type-arg] - ... - -GRPC_GENERATED_VERSION: str -GRPC_VERSION: str - -class VersionServiceStub: - """VersionService provides server version information.""" - - @_typing.overload - def __new__(cls, channel: _grpc.Channel) -> _Self: ... - @_typing.overload - def __new__(cls, channel: _aio.Channel) -> VersionServiceAsyncStub: ... - GetServerVersion: _grpc.UnaryUnaryMultiCallable[_version_service_pb2.GetServerVersionRequest, _version_service_pb2.GetServerVersionResponse] - """GetServerVersion returns the server's build version and commit hash.""" - -@_typing.type_check_only -class VersionServiceAsyncStub(VersionServiceStub): - """VersionService provides server version information.""" - - def __init__(self, channel: _aio.Channel) -> None: ... - GetServerVersion: _aio.UnaryUnaryMultiCallable[_version_service_pb2.GetServerVersionRequest, _version_service_pb2.GetServerVersionResponse] # type: ignore[assignment] - """GetServerVersion returns the server's build version and commit hash.""" - -class VersionServiceServicer(metaclass=_abc_1.ABCMeta): - """VersionService provides server version information.""" - - @_abc_1.abstractmethod - def GetServerVersion( - self, - request: _version_service_pb2.GetServerVersionRequest, - context: _ServicerContext, - ) -> _typing.Union[_version_service_pb2.GetServerVersionResponse, _abc.Awaitable[_version_service_pb2.GetServerVersionResponse]]: - """GetServerVersion returns the server's build version and commit hash.""" - -def add_VersionServiceServicer_to_server(servicer: VersionServiceServicer, server: _typing.Union[_grpc.Server, _aio.Server]) -> None: ... diff --git a/sdk/src/opendecree/async_client.py b/sdk/src/opendecree/async_client.py index b870804..28cbe3c 100644 --- a/sdk/src/opendecree/async_client.py +++ b/sdk/src/opendecree/async_client.py @@ -82,12 +82,12 @@ def __init__( self._pb2 = cs_pb2 from opendecree._generated.centralconfig.v1 import ( - version_service_pb2, - version_service_pb2_grpc, + server_service_pb2, + server_service_pb2_grpc, ) - self._version_stub = version_service_pb2_grpc.VersionServiceStub(self._channel) - self._version_pb2 = version_service_pb2 + self._version_stub = server_service_pb2_grpc.ServerServiceStub(self._channel) + self._version_pb2 = server_service_pb2 self._server_version: ServerVersion | None = None async def close(self) -> None: diff --git a/sdk/src/opendecree/client.py b/sdk/src/opendecree/client.py index 018961a..183091b 100644 --- a/sdk/src/opendecree/client.py +++ b/sdk/src/opendecree/client.py @@ -90,12 +90,12 @@ def __init__( self._pb2 = cs_pb2 from opendecree._generated.centralconfig.v1 import ( - version_service_pb2, - version_service_pb2_grpc, + server_service_pb2, + server_service_pb2_grpc, ) - self._version_stub = version_service_pb2_grpc.VersionServiceStub(self._channel) - self._version_pb2 = version_service_pb2 + self._version_stub = server_service_pb2_grpc.ServerServiceStub(self._channel) + self._version_pb2 = server_service_pb2 self._server_version: ServerVersion | None = None def close(self) -> None: diff --git a/sdk/src/opendecree/types.py b/sdk/src/opendecree/types.py index d7c5588..8df0f36 100644 --- a/sdk/src/opendecree/types.py +++ b/sdk/src/opendecree/types.py @@ -46,7 +46,7 @@ class Change: @dataclass(frozen=True, slots=True) class ServerVersion: - """Server version information from the VersionService. + """Server version information from the ServerService. Attributes: version: Semantic version string (e.g., ``"0.3.1"``). diff --git a/sdk/tests/test_compat.py b/sdk/tests/test_compat.py index 98597a5..42ae410 100644 --- a/sdk/tests/test_compat.py +++ b/sdk/tests/test_compat.py @@ -106,11 +106,11 @@ def test_fetch_server_version(): resp = MagicMock() resp.version = "0.3.1" resp.commit = "abc123" - stub.GetServerVersion.return_value = resp + stub.GetServerInfo.return_value = resp sv = fetch_server_version(stub, pb2, timeout=5.0) assert sv == ServerVersion(version="0.3.1", commit="abc123") - stub.GetServerVersion.assert_called_once() + stub.GetServerInfo.assert_called_once() @pytest.mark.asyncio @@ -120,7 +120,7 @@ async def test_async_fetch_server_version(): resp = MagicMock() resp.version = "0.3.1" resp.commit = "abc123" - stub.GetServerVersion = AsyncMock(return_value=resp) + stub.GetServerInfo = AsyncMock(return_value=resp) sv = await async_fetch_server_version(stub, pb2, timeout=5.0) assert sv == ServerVersion(version="0.3.1", commit="abc123") @@ -141,7 +141,7 @@ def test_client_server_version_cached(): resp = MagicMock() resp.version = "0.3.1" resp.commit = "abc123" - mock_stub.GetServerVersion.return_value = resp + mock_stub.GetServerInfo.return_value = resp client._version_stub = mock_stub client._version_pb2 = MagicMock() client._server_version = None @@ -149,12 +149,12 @@ def test_client_server_version_cached(): # First call fetches v1 = client.server_version assert v1.version == "0.3.1" - assert mock_stub.GetServerVersion.call_count == 1 + assert mock_stub.GetServerInfo.call_count == 1 # Second call returns cached v2 = client.server_version assert v2 is v1 - assert mock_stub.GetServerVersion.call_count == 1 + assert mock_stub.GetServerInfo.call_count == 1 def test_client_check_compatibility_passes():