src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py
Go to the documentation of this file.
1 # Copyright 2016 gRPC authors.
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 """Reference implementation for reflection in gRPC Python."""
15 
16 import sys
17 
18 import grpc
19 from grpc_reflection.v1alpha import reflection_pb2 as _reflection_pb2
20 from grpc_reflection.v1alpha import reflection_pb2_grpc as _reflection_pb2_grpc
21 from grpc_reflection.v1alpha._base import BaseReflectionServicer
22 
23 SERVICE_NAME = _reflection_pb2.DESCRIPTOR.services_by_name[
24  'ServerReflection'].full_name
25 
26 
28  """Servicer handling RPCs for service statuses."""
29 
30  def ServerReflectionInfo(self, request_iterator, context):
31  # pylint: disable=unused-argument
32  for request in request_iterator:
33  if request.HasField('file_by_filename'):
34  yield self._file_by_filename(request.file_by_filename)
35  elif request.HasField('file_containing_symbol'):
36  yield self._file_containing_symbol(
37  request.file_containing_symbol)
38  elif request.HasField('file_containing_extension'):
39  yield self._file_containing_extension(
40  request.file_containing_extension.containing_type,
41  request.file_containing_extension.extension_number)
42  elif request.HasField('all_extension_numbers_of_type'):
44  request.all_extension_numbers_of_type)
45  elif request.HasField('list_services'):
46  yield self._list_services()
47  else:
48  yield _reflection_pb2.ServerReflectionResponse(
49  error_response=_reflection_pb2.ErrorResponse(
50  error_code=grpc.StatusCode.INVALID_ARGUMENT.value[0],
51  error_message=grpc.StatusCode.INVALID_ARGUMENT.value[1].
52  encode(),
53  ))
54 
55 
56 _enable_server_reflection_doc = """Enables server reflection on a server.
57 
58 Args:
59  service_names: Iterable of fully-qualified service names available.
60  server: grpc.Server to which reflection service will be added.
61  pool: DescriptorPool object to use (descriptor_pool.Default() if None).
62 """
63 
64 if sys.version_info[0] >= 3 and sys.version_info[1] >= 6:
65  # Exposes AsyncReflectionServicer as public API.
66  from grpc.experimental import aio as grpc_aio # pylint: disable=ungrouped-imports
67 
68  from . import _async as aio
69 
70  def enable_server_reflection(service_names, server, pool=None):
71  if isinstance(server, grpc_aio.Server):
72  _reflection_pb2_grpc.add_ServerReflectionServicer_to_server(
73  aio.ReflectionServicer(service_names, pool=pool), server)
74  else:
75  _reflection_pb2_grpc.add_ServerReflectionServicer_to_server(
76  ReflectionServicer(service_names, pool=pool), server)
77 
78  enable_server_reflection.__doc__ = _enable_server_reflection_doc
79 
80  __all__ = [
81  "SERVICE_NAME",
82  "ReflectionServicer",
83  "enable_server_reflection",
84  "aio",
85  ]
86 else:
87 
88  def enable_server_reflection(service_names, server, pool=None):
89  _reflection_pb2_grpc.add_ServerReflectionServicer_to_server(
90  ReflectionServicer(service_names, pool=pool), server)
91 
92  enable_server_reflection.__doc__ = _enable_server_reflection_doc
93 
94  __all__ = [
95  "SERVICE_NAME",
96  "ReflectionServicer",
97  "enable_server_reflection",
98  ]
grpc_reflection.v1alpha.reflection.ReflectionServicer.ServerReflectionInfo
def ServerReflectionInfo(self, request_iterator, context)
Definition: src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py:30
grpc._common.encode
def encode(s)
Definition: grpc/_common.py:68
grpc_reflection.v1alpha
Definition: src/python/grpcio_reflection/grpc_reflection/v1alpha/__init__.py:1
grpc_reflection.v1alpha._base.BaseReflectionServicer
Definition: _base.py:42
grpc_reflection.v1alpha._base.BaseReflectionServicer._file_by_filename
def _file_by_filename(self, filename)
Definition: _base.py:55
grpc::experimental
Definition: include/grpcpp/channel.h:46
grpc_reflection.v1alpha._base.BaseReflectionServicer._file_containing_symbol
def _file_containing_symbol(self, fully_qualified_name)
Definition: _base.py:63
grpc_reflection.v1alpha._base
Definition: _base.py:1
grpc_reflection.v1alpha._base.BaseReflectionServicer._list_services
def _list_services(self)
Definition: _base.py:101
grpc_reflection.v1alpha.reflection.ReflectionServicer
Definition: src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py:27
grpc_reflection.v1alpha._base.BaseReflectionServicer._file_containing_extension
def _file_containing_extension(self, containing_type, extension_number)
Definition: _base.py:72
grpc_reflection.v1alpha.reflection.enable_server_reflection
def enable_server_reflection(service_names, server, pool=None)
Definition: src/python/grpcio_reflection/grpc_reflection/v1alpha/reflection.py:70
grpc_reflection.v1alpha._base.BaseReflectionServicer._all_extension_numbers_of_type
def _all_extension_numbers_of_type(self, containing_type)
Definition: _base.py:85


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:01