Skip to content

Commit

Permalink
feat(framework) Add minimal Control service (#4239)
Browse files Browse the repository at this point in the history
  • Loading branch information
panh99 authored Sep 19, 2024
1 parent 94ba237 commit 1073b56
Show file tree
Hide file tree
Showing 6 changed files with 154 additions and 1 deletion.
25 changes: 25 additions & 0 deletions src/proto/flwr/proto/control.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright 2024 Flower Labs GmbH. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ==============================================================================

syntax = "proto3";

package flwr.proto;

import "flwr/proto/driver.proto";

service Control {
// Request to create a new run
rpc CreateRun(CreateRunRequest) returns (CreateRunResponse) {}
}
27 changes: 27 additions & 0 deletions src/py/flwr/proto/control_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions src/py/flwr/proto/control_pb2.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
"""
import google.protobuf.descriptor

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
67 changes: 67 additions & 0 deletions src/py/flwr/proto/control_pb2_grpc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
"""Client and server classes corresponding to protobuf-defined services."""
import grpc

from flwr.proto import driver_pb2 as flwr_dot_proto_dot_driver__pb2


class ControlStub(object):
"""Missing associated documentation comment in .proto file."""

def __init__(self, channel):
"""Constructor.
Args:
channel: A grpc.Channel.
"""
self.CreateRun = channel.unary_unary(
'/flwr.proto.Control/CreateRun',
request_serializer=flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString,
response_deserializer=flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString,
)


class ControlServicer(object):
"""Missing associated documentation comment in .proto file."""

def CreateRun(self, request, context):
"""Request to create a new run
"""
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details('Method not implemented!')
raise NotImplementedError('Method not implemented!')


def add_ControlServicer_to_server(servicer, server):
rpc_method_handlers = {
'CreateRun': grpc.unary_unary_rpc_method_handler(
servicer.CreateRun,
request_deserializer=flwr_dot_proto_dot_driver__pb2.CreateRunRequest.FromString,
response_serializer=flwr_dot_proto_dot_driver__pb2.CreateRunResponse.SerializeToString,
),
}
generic_handler = grpc.method_handlers_generic_handler(
'flwr.proto.Control', rpc_method_handlers)
server.add_generic_rpc_handlers((generic_handler,))


# This class is part of an EXPERIMENTAL API.
class Control(object):
"""Missing associated documentation comment in .proto file."""

@staticmethod
def CreateRun(request,
target,
options=(),
channel_credentials=None,
call_credentials=None,
insecure=False,
compression=None,
wait_for_ready=None,
timeout=None,
metadata=None):
return grpc.experimental.unary_unary(request, target, '/flwr.proto.Control/CreateRun',
flwr_dot_proto_dot_driver__pb2.CreateRunRequest.SerializeToString,
flwr_dot_proto_dot_driver__pb2.CreateRunResponse.FromString,
options, channel_credentials,
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
27 changes: 27 additions & 0 deletions src/py/flwr/proto/control_pb2_grpc.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
"""
import abc
import flwr.proto.driver_pb2
import grpc

class ControlStub:
def __init__(self, channel: grpc.Channel) -> None: ...
CreateRun: grpc.UnaryUnaryMultiCallable[
flwr.proto.driver_pb2.CreateRunRequest,
flwr.proto.driver_pb2.CreateRunResponse]
"""Request to create a new run"""


class ControlServicer(metaclass=abc.ABCMeta):
@abc.abstractmethod
def CreateRun(self,
request: flwr.proto.driver_pb2.CreateRunRequest,
context: grpc.ServicerContext,
) -> flwr.proto.driver_pb2.CreateRunResponse:
"""Request to create a new run"""
pass


def add_ControlServicer_to_server(servicer: ControlServicer, server: grpc.Server) -> None: ...
2 changes: 1 addition & 1 deletion src/py/flwr_tool/protoc_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ def test_directories() -> None:

def test_proto_file_count() -> None:
"""Test if the correct number of proto files were captured by the glob."""
assert len(PROTO_FILES) == 13
assert len(PROTO_FILES) == 14

0 comments on commit 1073b56

Please sign in to comment.