Для объединения сгенерированных файлов `.proto` (protobuf messages) и gRPC stubs в один файл, нужно использовать флаги командной строки `protoc`, который вам скомпилирует эти два типа кода в указанные директории.
К сожалению, стандартный протокольный компилятор `protoc` напрямую не поддерживает генерацию всего кода в один файл. Он создает отдельные файлы для сообщений (message classes) и сервисов (service classes, где обычно находятся gRPC-стабы).
Тем не менее, если вы действительно хотите, чтобы все было в одном файле, вам придется выполнить несколько шагов:
1. Сгенерируйте отдельные файлы для сообщений и служб с помощью `protoc`.
2. Объедините эти файлы в один физический файл с помощью скрипта на shell или другого инструмента автоматизации.
Пример использования `protoc` для генерации файлов для Python:
```sh
protoc -I=. --python_out=./output --grpc_python_out=./output ./your_service.proto
```
Это создаст файлы `your_service_pb2.py` и `your_service_pb2_grpc.py` в директории `./output`.
Чтобы их объединить, можно использовать простой скрипт:
```sh
cat ./output/your_service_pb2.py ./output/your_service_pb2_grpc.py > ./output/combined_services.py
```
Теперь в `combined_services.py` у вас будут и классы сообщений, и gRPC стабы.
Однако, следует иметь в виду, что такой подход может вызвать проблемы при обновлении файлов .proto, а также может быть не совместим с некоторыми системами сборки, которые ожидают стандартное разделение файлов. Объединение файлов также делает файлы больше и может затруднить их чтение и поддержку.
Если такой подход вам не подходит, то лучше оставить файлы разделенными, как это предполагается использованием `protoc`.
Объединение файлов может быть рационально только в случае очень специфических требований проекта. На практике чаще всего используется стандартный подход с раздельными файлами для служб и сообщений.