Skip to content

Commit

Permalink
mypy for stubs and proto-types (#32)
Browse files Browse the repository at this point in the history
  • Loading branch information
solidiquis authored May 24, 2024
1 parent 65b16c6 commit cf570f6
Show file tree
Hide file tree
Showing 51 changed files with 8,192 additions and 2,428 deletions.
4 changes: 2 additions & 2 deletions protos/buf.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ deps:
- remote: buf.build
owner: googleapis
repository: googleapis
commit: 06c83412c7674a6ebbbcdb79c4d0102f
commit: bec0f0b526624d66af9e5cd771efe9a9
digest: shake256:de26a277fc28b8b411ecf58729d78d32fcf15090ffd998a4469225b17889bfb51442eaab04bb7a8d88d203ecdf0a9febd4ffd52c18ed1c2229160c7bd353ca95
- remote: buf.build
owner: grpc-ecosystem
repository: grpc-gateway
commit: 9cc83ecd0fd0403b9f584f261fdc8cc7
commit: fff35d47bf314175b476c0dd34b20da7
digest: shake256:67b115260e12cb2d6c5d5ce8dbbf3a095c86f0e52b84f9dbd16dec9433b218f8694bc9aadb1d45eb6fd52f5a7029977d460e2d58afb3208ab6c680e7b21c80e4
2 changes: 1 addition & 1 deletion protos/sift/ingestion_configs/v1/ingestion_configs.proto
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ message ListIngestionConfigFlowsRequest {
// A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string.
// Available fields to filter by are `flow_name`, `flow_id`, `created_date`, and `modified_date`.
// For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions).
// For more information about the fields used for filtering, please refer to [this definition](/ingestion/api#sift_ingestion_configs_v1-proto). Optional.
// For more information about the fields used for filtering, please refer to [this definition](/protocol-buffers/documentation#ingestionconfig). Optional.
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
}

Expand Down
4 changes: 3 additions & 1 deletion python/buf.gen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@ plugins:
out: gen
- plugin: buf.build/protocolbuffers/python:v26.1
out: gen
- plugin: buf.build/protocolbuffers/pyi:v26.1
- plugin: buf.build/community/nipunn1313-mypy:v3.6.0
out: gen
- plugin: buf.build/community/nipunn1313-mypy-grpc:v3.6.0
out: gen
37 changes: 29 additions & 8 deletions python/gen/google/api/annotations_pb2.pyi
Original file line number Diff line number Diff line change
@@ -1,8 +1,29 @@
from google.api import http_pb2 as _http_pb2
from google.protobuf import descriptor_pb2 as _descriptor_pb2
from google.protobuf import descriptor as _descriptor
from typing import ClassVar as _ClassVar

DESCRIPTOR: _descriptor.FileDescriptor
HTTP_FIELD_NUMBER: _ClassVar[int]
http: _descriptor.FieldDescriptor
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
Copyright 2024 Google LLC
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.
"""

import builtins
import google.api.http_pb2
import google.protobuf.descriptor
import google.protobuf.descriptor_pb2
import google.protobuf.internal.extension_dict

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

HTTP_FIELD_NUMBER: builtins.int
http: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.MethodOptions, google.api.http_pb2.HttpRule]
"""See `HttpRule`."""
30 changes: 30 additions & 0 deletions python/gen/google/api/annotations_pb2_grpc.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
Copyright 2024 Google LLC
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.
"""

import abc
import collections.abc
import grpc
import grpc.aio
import typing

_T = typing.TypeVar("_T")

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
...
204 changes: 175 additions & 29 deletions python/gen/google/api/field_behavior_pb2.pyi
Original file line number Diff line number Diff line change
@@ -1,29 +1,175 @@
from google.protobuf import descriptor_pb2 as _descriptor_pb2
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from typing import ClassVar as _ClassVar

DESCRIPTOR: _descriptor.FileDescriptor

class FieldBehavior(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
__slots__ = ()
FIELD_BEHAVIOR_UNSPECIFIED: _ClassVar[FieldBehavior]
OPTIONAL: _ClassVar[FieldBehavior]
REQUIRED: _ClassVar[FieldBehavior]
OUTPUT_ONLY: _ClassVar[FieldBehavior]
INPUT_ONLY: _ClassVar[FieldBehavior]
IMMUTABLE: _ClassVar[FieldBehavior]
UNORDERED_LIST: _ClassVar[FieldBehavior]
NON_EMPTY_DEFAULT: _ClassVar[FieldBehavior]
IDENTIFIER: _ClassVar[FieldBehavior]
FIELD_BEHAVIOR_UNSPECIFIED: FieldBehavior
OPTIONAL: FieldBehavior
REQUIRED: FieldBehavior
OUTPUT_ONLY: FieldBehavior
INPUT_ONLY: FieldBehavior
IMMUTABLE: FieldBehavior
UNORDERED_LIST: FieldBehavior
NON_EMPTY_DEFAULT: FieldBehavior
IDENTIFIER: FieldBehavior
FIELD_BEHAVIOR_FIELD_NUMBER: _ClassVar[int]
field_behavior: _descriptor.FieldDescriptor
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
Copyright 2024 Google LLC
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.
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.descriptor_pb2
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.internal.extension_dict
import sys
import typing

if sys.version_info >= (3, 10):
import typing as typing_extensions
else:
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _FieldBehavior:
ValueType = typing.NewType("ValueType", builtins.int)
V: typing_extensions.TypeAlias = ValueType

class _FieldBehaviorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_FieldBehavior.ValueType], builtins.type):
DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
FIELD_BEHAVIOR_UNSPECIFIED: _FieldBehavior.ValueType # 0
"""Conventional default for enums. Do not use this."""
OPTIONAL: _FieldBehavior.ValueType # 1
"""Specifically denotes a field as optional.
While all fields in protocol buffers are optional, this may be specified
for emphasis if appropriate.
"""
REQUIRED: _FieldBehavior.ValueType # 2
"""Denotes a field as required.
This indicates that the field **must** be provided as part of the request,
and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
"""
OUTPUT_ONLY: _FieldBehavior.ValueType # 3
"""Denotes a field as output only.
This indicates that the field is provided in responses, but including the
field in a request does nothing (the server *must* ignore it and
*must not* throw an error as a result of the field's presence).
"""
INPUT_ONLY: _FieldBehavior.ValueType # 4
"""Denotes a field as input only.
This indicates that the field is provided in requests, and the
corresponding field is not included in output.
"""
IMMUTABLE: _FieldBehavior.ValueType # 5
"""Denotes a field as immutable.
This indicates that the field may be set once in a request to create a
resource, but may not be changed thereafter.
"""
UNORDERED_LIST: _FieldBehavior.ValueType # 6
"""Denotes that a (repeated) field is an unordered list.
This indicates that the service may provide the elements of the list
in any arbitrary order, rather than the order the user originally
provided. Additionally, the list's order may or may not be stable.
"""
NON_EMPTY_DEFAULT: _FieldBehavior.ValueType # 7
"""Denotes that this field returns a non-empty default value if not set.
This indicates that if the user provides the empty value in a request,
a non-empty value will be returned. The user will not be aware of what
non-empty value to expect.
"""
IDENTIFIER: _FieldBehavior.ValueType # 8
"""Denotes that the field in a resource (a message annotated with
google.api.resource) is used in the resource name to uniquely identify the
resource. For AIP-compliant APIs, this should only be applied to the
`name` field on the resource.
This behavior should not be applied to references to other resources within
the message.
The identifier field of resources often have different field behavior
depending on the request it is embedded in (e.g. for Create methods name
is optional and unused, while for Update methods it is required). Instead
of method-specific annotations, only `IDENTIFIER` is required.
"""

class FieldBehavior(_FieldBehavior, metaclass=_FieldBehaviorEnumTypeWrapper):
"""An indicator of the behavior of a given field (for example, that a field
is required in requests, or given as output but ignored as input).
This **does not** change the behavior in protocol buffers itself; it only
denotes the behavior and may affect how API tooling handles the field.
Note: This enum **may** receive new values in the future.
"""

FIELD_BEHAVIOR_UNSPECIFIED: FieldBehavior.ValueType # 0
"""Conventional default for enums. Do not use this."""
OPTIONAL: FieldBehavior.ValueType # 1
"""Specifically denotes a field as optional.
While all fields in protocol buffers are optional, this may be specified
for emphasis if appropriate.
"""
REQUIRED: FieldBehavior.ValueType # 2
"""Denotes a field as required.
This indicates that the field **must** be provided as part of the request,
and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
"""
OUTPUT_ONLY: FieldBehavior.ValueType # 3
"""Denotes a field as output only.
This indicates that the field is provided in responses, but including the
field in a request does nothing (the server *must* ignore it and
*must not* throw an error as a result of the field's presence).
"""
INPUT_ONLY: FieldBehavior.ValueType # 4
"""Denotes a field as input only.
This indicates that the field is provided in requests, and the
corresponding field is not included in output.
"""
IMMUTABLE: FieldBehavior.ValueType # 5
"""Denotes a field as immutable.
This indicates that the field may be set once in a request to create a
resource, but may not be changed thereafter.
"""
UNORDERED_LIST: FieldBehavior.ValueType # 6
"""Denotes that a (repeated) field is an unordered list.
This indicates that the service may provide the elements of the list
in any arbitrary order, rather than the order the user originally
provided. Additionally, the list's order may or may not be stable.
"""
NON_EMPTY_DEFAULT: FieldBehavior.ValueType # 7
"""Denotes that this field returns a non-empty default value if not set.
This indicates that if the user provides the empty value in a request,
a non-empty value will be returned. The user will not be aware of what
non-empty value to expect.
"""
IDENTIFIER: FieldBehavior.ValueType # 8
"""Denotes that the field in a resource (a message annotated with
google.api.resource) is used in the resource name to uniquely identify the
resource. For AIP-compliant APIs, this should only be applied to the
`name` field on the resource.
This behavior should not be applied to references to other resources within
the message.
The identifier field of resources often have different field behavior
depending on the request it is embedded in (e.g. for Create methods name
is optional and unused, while for Update methods it is required). Instead
of method-specific annotations, only `IDENTIFIER` is required.
"""
global___FieldBehavior = FieldBehavior

FIELD_BEHAVIOR_FIELD_NUMBER: builtins.int
field_behavior: google.protobuf.internal.extension_dict._ExtensionFieldDescriptor[google.protobuf.descriptor_pb2.FieldOptions, google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___FieldBehavior.ValueType]]
"""A designation of a specific field behavior (required, output only, etc.)
in protobuf messages.
Examples:
string name = 1 [(google.api.field_behavior) = REQUIRED];
State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
google.protobuf.Duration ttl = 1
[(google.api.field_behavior) = INPUT_ONLY];
google.protobuf.Timestamp expire_time = 1
[(google.api.field_behavior) = OUTPUT_ONLY,
(google.api.field_behavior) = IMMUTABLE];
"""
30 changes: 30 additions & 0 deletions python/gen/google/api/field_behavior_pb2_grpc.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
"""
@generated by mypy-protobuf. Do not edit manually!
isort:skip_file
Copyright 2024 Google LLC
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.
"""

import abc
import collections.abc
import grpc
import grpc.aio
import typing

_T = typing.TypeVar("_T")

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
...
Loading

0 comments on commit cf570f6

Please sign in to comment.