diff --git a/.github/release-please.yml b/.github/release-please.yml index 6def37a..e9a4f00 100644 --- a/.github/release-please.yml +++ b/.github/release-please.yml @@ -1,5 +1,6 @@ releaseType: python handleGHRelease: true +manifest: true # NOTE: this section is generated by synthtool.languages.python # See https://github.com/googleapis/synthtool/blob/master/synthtool/languages/python.py branches: diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..b7298f8 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.2.3" +} diff --git a/docs/essential_contacts_v1/types.rst b/docs/essential_contacts_v1/types.rst index 0e1fac5..75b751d 100644 --- a/docs/essential_contacts_v1/types.rst +++ b/docs/essential_contacts_v1/types.rst @@ -3,5 +3,4 @@ Types for Google Cloud Essential Contacts v1 API .. automodule:: google.cloud.essential_contacts_v1.types :members: - :undoc-members: :show-inheritance: diff --git a/google/cloud/essential_contacts/__init__.py b/google/cloud/essential_contacts/__init__.py index e65e530..9d61c8b 100644 --- a/google/cloud/essential_contacts/__init__.py +++ b/google/cloud/essential_contacts/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.essential_contacts import gapic_version as package_version + +__version__ = package_version.__version__ + from google.cloud.essential_contacts_v1.services.essential_contacts_service.async_client import ( EssentialContactsServiceAsyncClient, diff --git a/google/cloud/essential_contacts/gapic_version.py b/google/cloud/essential_contacts/gapic_version.py new file mode 100644 index 0000000..d92b8a9 --- /dev/null +++ b/google/cloud/essential_contacts/gapic_version.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 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. +# +__version__ = "1.2.3" # {x-release-please-version} diff --git a/google/cloud/essential_contacts_v1/__init__.py b/google/cloud/essential_contacts_v1/__init__.py index 8bb40eb..85550fd 100644 --- a/google/cloud/essential_contacts_v1/__init__.py +++ b/google/cloud/essential_contacts_v1/__init__.py @@ -13,6 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from google.cloud.essential_contacts import gapic_version as package_version + +__version__ = package_version.__version__ + from .services.essential_contacts_service import ( EssentialContactsServiceAsyncClient, diff --git a/google/cloud/essential_contacts_v1/services/essential_contacts_service/async_client.py b/google/cloud/essential_contacts_v1/services/essential_contacts_service/async_client.py index d5f052d..3878418 100644 --- a/google/cloud/essential_contacts_v1/services/essential_contacts_service/async_client.py +++ b/google/cloud/essential_contacts_v1/services/essential_contacts_service/async_client.py @@ -16,7 +16,17 @@ from collections import OrderedDict import functools import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, +) from google.api_core import exceptions as core_exceptions from google.api_core import gapic_v1 @@ -169,9 +179,9 @@ def transport(self) -> EssentialContactsServiceTransport: def __init__( self, *, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, transport: Union[str, EssentialContactsServiceTransport] = "grpc_asyncio", - client_options: ClientOptions = None, + client_options: Optional[ClientOptions] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the essential contacts service client. @@ -215,12 +225,12 @@ def __init__( async def create_contact( self, - request: Union[service.CreateContactRequest, dict] = None, + request: Optional[Union[service.CreateContactRequest, dict]] = None, *, - parent: str = None, - contact: service.Contact = None, + parent: Optional[str] = None, + contact: Optional[service.Contact] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Adds a new contact for a resource. @@ -252,7 +262,7 @@ async def sample_create_contact(): print(response) Args: - request (Union[google.cloud.essential_contacts_v1.types.CreateContactRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.CreateContactRequest, dict]]): The request object. Request message for the CreateContact method. parent (:class:`str`): @@ -329,12 +339,12 @@ async def sample_create_contact(): async def update_contact( self, - request: Union[service.UpdateContactRequest, dict] = None, + request: Optional[Union[service.UpdateContactRequest, dict]] = None, *, - contact: service.Contact = None, - update_mask: field_mask_pb2.FieldMask = None, + contact: Optional[service.Contact] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Updates a contact. @@ -366,7 +376,7 @@ async def sample_update_contact(): print(response) Args: - request (Union[google.cloud.essential_contacts_v1.types.UpdateContactRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.UpdateContactRequest, dict]]): The request object. Request message for the UpdateContact method. contact (:class:`google.cloud.essential_contacts_v1.types.Contact`): @@ -446,11 +456,11 @@ async def sample_update_contact(): async def list_contacts( self, - request: Union[service.ListContactsRequest, dict] = None, + request: Optional[Union[service.ListContactsRequest, dict]] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListContactsAsyncPager: r"""Lists the contacts that have been set on a resource. @@ -483,7 +493,7 @@ async def sample_list_contacts(): print(response) Args: - request (Union[google.cloud.essential_contacts_v1.types.ListContactsRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.ListContactsRequest, dict]]): The request object. Request message for the ListContacts method. parent (:class:`str`): @@ -571,11 +581,11 @@ async def sample_list_contacts(): async def get_contact( self, - request: Union[service.GetContactRequest, dict] = None, + request: Optional[Union[service.GetContactRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Gets a single contact. @@ -607,7 +617,7 @@ async def sample_get_contact(): print(response) Args: - request (Union[google.cloud.essential_contacts_v1.types.GetContactRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.GetContactRequest, dict]]): The request object. Request message for the GetContact method. name (:class:`str`): @@ -684,11 +694,11 @@ async def sample_get_contact(): async def delete_contact( self, - request: Union[service.DeleteContactRequest, dict] = None, + request: Optional[Union[service.DeleteContactRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a contact. @@ -717,7 +727,7 @@ async def sample_delete_contact(): await client.delete_contact(request=request) Args: - request (Union[google.cloud.essential_contacts_v1.types.DeleteContactRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.DeleteContactRequest, dict]]): The request object. Request message for the DeleteContact method. name (:class:`str`): @@ -776,10 +786,10 @@ async def sample_delete_contact(): async def compute_contacts( self, - request: Union[service.ComputeContactsRequest, dict] = None, + request: Optional[Union[service.ComputeContactsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ComputeContactsAsyncPager: r"""Lists all contacts for the resource that are @@ -814,7 +824,7 @@ async def sample_compute_contacts(): print(response) Args: - request (Union[google.cloud.essential_contacts_v1.types.ComputeContactsRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.ComputeContactsRequest, dict]]): The request object. Request message for the ComputeContacts method. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -871,10 +881,10 @@ async def sample_compute_contacts(): async def send_test_message( self, - request: Union[service.SendTestMessageRequest, dict] = None, + request: Optional[Union[service.SendTestMessageRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Allows a contact admin to send a test message to @@ -906,7 +916,7 @@ async def sample_send_test_message(): await client.send_test_message(request=request) Args: - request (Union[google.cloud.essential_contacts_v1.types.SendTestMessageRequest, dict]): + request (Optional[Union[google.cloud.essential_contacts_v1.types.SendTestMessageRequest, dict]]): The request object. Request message for the SendTestMessage method. retry (google.api_core.retry.Retry): Designation of what errors, if any, diff --git a/google/cloud/essential_contacts_v1/services/essential_contacts_service/client.py b/google/cloud/essential_contacts_v1/services/essential_contacts_service/client.py index f0a5cd1..ef7cecd 100644 --- a/google/cloud/essential_contacts_v1/services/essential_contacts_service/client.py +++ b/google/cloud/essential_contacts_v1/services/essential_contacts_service/client.py @@ -16,7 +16,18 @@ from collections import OrderedDict import os import re -from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union +from typing import ( + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, + cast, +) from google.api_core import client_options as client_options_lib from google.api_core import exceptions as core_exceptions @@ -63,7 +74,7 @@ class EssentialContactsServiceClientMeta(type): def get_transport_class( cls, - label: str = None, + label: Optional[str] = None, ) -> Type[EssentialContactsServiceTransport]: """Returns an appropriate transport class. @@ -333,8 +344,8 @@ def __init__( self, *, credentials: Optional[ga_credentials.Credentials] = None, - transport: Union[str, EssentialContactsServiceTransport, None] = None, - client_options: Optional[client_options_lib.ClientOptions] = None, + transport: Optional[Union[str, EssentialContactsServiceTransport]] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, ) -> None: """Instantiates the essential contacts service client. @@ -348,7 +359,7 @@ def __init__( transport (Union[str, EssentialContactsServiceTransport]): The transport to use. If set to None, a transport is chosen automatically. - client_options (google.api_core.client_options.ClientOptions): Custom options for the + client_options (Optional[Union[google.api_core.client_options.ClientOptions, dict]]): Custom options for the client. It won't take effect if a ``transport`` instance is provided. (1) The ``api_endpoint`` property can be used to override the default endpoint provided by the client. GOOGLE_API_USE_MTLS_ENDPOINT @@ -378,6 +389,7 @@ def __init__( client_options = client_options_lib.from_dict(client_options) if client_options is None: client_options = client_options_lib.ClientOptions() + client_options = cast(client_options_lib.ClientOptions, client_options) api_endpoint, client_cert_source_func = self.get_mtls_endpoint_and_cert_source( client_options @@ -430,12 +442,12 @@ def __init__( def create_contact( self, - request: Union[service.CreateContactRequest, dict] = None, + request: Optional[Union[service.CreateContactRequest, dict]] = None, *, - parent: str = None, - contact: service.Contact = None, + parent: Optional[str] = None, + contact: Optional[service.Contact] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Adds a new contact for a resource. @@ -544,12 +556,12 @@ def sample_create_contact(): def update_contact( self, - request: Union[service.UpdateContactRequest, dict] = None, + request: Optional[Union[service.UpdateContactRequest, dict]] = None, *, - contact: service.Contact = None, - update_mask: field_mask_pb2.FieldMask = None, + contact: Optional[service.Contact] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Updates a contact. @@ -661,11 +673,11 @@ def sample_update_contact(): def list_contacts( self, - request: Union[service.ListContactsRequest, dict] = None, + request: Optional[Union[service.ListContactsRequest, dict]] = None, *, - parent: str = None, + parent: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListContactsPager: r"""Lists the contacts that have been set on a resource. @@ -777,11 +789,11 @@ def sample_list_contacts(): def get_contact( self, - request: Union[service.GetContactRequest, dict] = None, + request: Optional[Union[service.GetContactRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> service.Contact: r"""Gets a single contact. @@ -881,11 +893,11 @@ def sample_get_contact(): def delete_contact( self, - request: Union[service.DeleteContactRequest, dict] = None, + request: Optional[Union[service.DeleteContactRequest, dict]] = None, *, - name: str = None, + name: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Deletes a contact. @@ -973,10 +985,10 @@ def sample_delete_contact(): def compute_contacts( self, - request: Union[service.ComputeContactsRequest, dict] = None, + request: Optional[Union[service.ComputeContactsRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ComputeContactsPager: r"""Lists all contacts for the resource that are @@ -1069,10 +1081,10 @@ def sample_compute_contacts(): def send_test_message( self, - request: Union[service.SendTestMessageRequest, dict] = None, + request: Optional[Union[service.SendTestMessageRequest, dict]] = None, *, retry: OptionalRetry = gapic_v1.method.DEFAULT, - timeout: float = None, + timeout: Optional[float] = None, metadata: Sequence[Tuple[str, str]] = (), ) -> None: r"""Allows a contact admin to send a test message to diff --git a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/base.py b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/base.py index 94eeaf3..a467e4c 100644 --- a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/base.py +++ b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/base.py @@ -49,7 +49,7 @@ def __init__( self, *, host: str = DEFAULT_HOST, - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, diff --git a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc.py b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc.py index 20326cc..690afb6 100644 --- a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc.py +++ b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc.py @@ -47,14 +47,14 @@ def __init__( self, *, host: str = "essentialcontacts.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, - scopes: Sequence[str] = None, - channel: grpc.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[grpc.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, @@ -181,8 +181,8 @@ def __init__( def create_channel( cls, host: str = "essentialcontacts.googleapis.com", - credentials: ga_credentials.Credentials = None, - credentials_file: str = None, + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, **kwargs, diff --git a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc_asyncio.py b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc_asyncio.py index 1925a9c..3843c6e 100644 --- a/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc_asyncio.py +++ b/google/cloud/essential_contacts_v1/services/essential_contacts_service/transports/grpc_asyncio.py @@ -49,7 +49,7 @@ class EssentialContactsServiceGrpcAsyncIOTransport(EssentialContactsServiceTrans def create_channel( cls, host: str = "essentialcontacts.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, quota_project_id: Optional[str] = None, @@ -92,15 +92,15 @@ def __init__( self, *, host: str = "essentialcontacts.googleapis.com", - credentials: ga_credentials.Credentials = None, + credentials: Optional[ga_credentials.Credentials] = None, credentials_file: Optional[str] = None, scopes: Optional[Sequence[str]] = None, - channel: aio.Channel = None, - api_mtls_endpoint: str = None, - client_cert_source: Callable[[], Tuple[bytes, bytes]] = None, - ssl_channel_credentials: grpc.ChannelCredentials = None, - client_cert_source_for_mtls: Callable[[], Tuple[bytes, bytes]] = None, - quota_project_id=None, + channel: Optional[aio.Channel] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = None, + client_cert_source_for_mtls: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + quota_project_id: Optional[str] = None, client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, always_use_jwt_access: Optional[bool] = False, api_audience: Optional[str] = None, diff --git a/google/cloud/essential_contacts_v1/types/enums.py b/google/cloud/essential_contacts_v1/types/enums.py index fca7045..92ad009 100644 --- a/google/cloud/essential_contacts_v1/types/enums.py +++ b/google/cloud/essential_contacts_v1/types/enums.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + import proto # type: ignore __protobuf__ = proto.module( diff --git a/google/cloud/essential_contacts_v1/types/service.py b/google/cloud/essential_contacts_v1/types/service.py index 73bcbcc..cdb0a96 100644 --- a/google/cloud/essential_contacts_v1/types/service.py +++ b/google/cloud/essential_contacts_v1/types/service.py @@ -13,6 +13,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +from typing import MutableMapping, MutableSequence + from google.protobuf import field_mask_pb2 # type: ignore from google.protobuf import timestamp_pb2 # type: ignore import proto # type: ignore @@ -47,7 +49,7 @@ class Contact(proto.Message): Required. The email address to send notifications to. This does not need to be a Google account. - notification_category_subscriptions (Sequence[google.cloud.essential_contacts_v1.types.NotificationCategory]): + notification_category_subscriptions (MutableSequence[google.cloud.essential_contacts_v1.types.NotificationCategory]): The categories of notifications that the contact will receive communications for. language_tag (str): @@ -65,29 +67,31 @@ class Contact(proto.Message): its validation state was updated more than 1 year ago. """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) - email = proto.Field( + email: str = proto.Field( proto.STRING, number=2, ) - notification_category_subscriptions = proto.RepeatedField( + notification_category_subscriptions: MutableSequence[ + enums.NotificationCategory + ] = proto.RepeatedField( proto.ENUM, number=3, enum=enums.NotificationCategory, ) - language_tag = proto.Field( + language_tag: str = proto.Field( proto.STRING, number=4, ) - validation_state = proto.Field( + validation_state: enums.ValidationState = proto.Field( proto.ENUM, number=8, enum=enums.ValidationState, ) - validate_time = proto.Field( + validate_time: timestamp_pb2.Timestamp = proto.Field( proto.MESSAGE, number=9, message=timestamp_pb2.Timestamp, @@ -116,15 +120,15 @@ class ListContactsRequest(proto.Message): identical to those in the previous call. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=2, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=3, ) @@ -134,7 +138,7 @@ class ListContactsResponse(proto.Message): r"""Response message for the ListContacts method. Attributes: - contacts (Sequence[google.cloud.essential_contacts_v1.types.Contact]): + contacts (MutableSequence[google.cloud.essential_contacts_v1.types.Contact]): The contacts for the specified resource. next_page_token (str): If there are more results than those appearing in this @@ -148,12 +152,12 @@ class ListContactsResponse(proto.Message): def raw_page(self): return self - contacts = proto.RepeatedField( + contacts: MutableSequence["Contact"] = proto.RepeatedField( proto.MESSAGE, number=1, message="Contact", ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -170,7 +174,7 @@ class GetContactRequest(proto.Message): projects/{project_id}/contacts/{contact_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -187,7 +191,7 @@ class DeleteContactRequest(proto.Message): projects/{project_id}/contacts/{contact_id} """ - name = proto.Field( + name: str = proto.Field( proto.STRING, number=1, ) @@ -206,11 +210,11 @@ class CreateContactRequest(proto.Message): an email address and language tag. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - contact = proto.Field( + contact: "Contact" = proto.Field( proto.MESSAGE, number=2, message="Contact", @@ -231,12 +235,12 @@ class UpdateContactRequest(proto.Message): https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask """ - contact = proto.Field( + contact: "Contact" = proto.Field( proto.MESSAGE, number=2, message="Contact", ) - update_mask = proto.Field( + update_mask: field_mask_pb2.FieldMask = proto.Field( proto.MESSAGE, number=3, message=field_mask_pb2.FieldMask, @@ -251,7 +255,7 @@ class ComputeContactsRequest(proto.Message): Required. The name of the resource to compute contacts for. Format: organizations/{organization_id}, folders/{folder_id} or projects/{project_id} - notification_categories (Sequence[google.cloud.essential_contacts_v1.types.NotificationCategory]): + notification_categories (MutableSequence[google.cloud.essential_contacts_v1.types.NotificationCategory]): The categories of notifications to compute contacts for. If ALL is included in this list, contacts subscribed to any notification category @@ -270,20 +274,22 @@ class ComputeContactsRequest(proto.Message): identical to those in the previous call. """ - parent = proto.Field( + parent: str = proto.Field( proto.STRING, number=1, ) - notification_categories = proto.RepeatedField( + notification_categories: MutableSequence[ + enums.NotificationCategory + ] = proto.RepeatedField( proto.ENUM, number=6, enum=enums.NotificationCategory, ) - page_size = proto.Field( + page_size: int = proto.Field( proto.INT32, number=3, ) - page_token = proto.Field( + page_token: str = proto.Field( proto.STRING, number=4, ) @@ -293,7 +299,7 @@ class ComputeContactsResponse(proto.Message): r"""Response message for the ComputeContacts method. Attributes: - contacts (Sequence[google.cloud.essential_contacts_v1.types.Contact]): + contacts (MutableSequence[google.cloud.essential_contacts_v1.types.Contact]): All contacts for the resource that are subscribed to the specified notification categories, including contacts inherited from @@ -310,12 +316,12 @@ class ComputeContactsResponse(proto.Message): def raw_page(self): return self - contacts = proto.RepeatedField( + contacts: MutableSequence["Contact"] = proto.RepeatedField( proto.MESSAGE, number=1, message="Contact", ) - next_page_token = proto.Field( + next_page_token: str = proto.Field( proto.STRING, number=2, ) @@ -325,7 +331,7 @@ class SendTestMessageRequest(proto.Message): r"""Request message for the SendTestMessage method. Attributes: - contacts (Sequence[str]): + contacts (MutableSequence[str]): Required. The list of names of the contacts to send a test message to. Format: organizations/{organization_id}/contacts/{contact_id}, @@ -344,15 +350,15 @@ class SendTestMessageRequest(proto.Message): subscribed to this category. """ - contacts = proto.RepeatedField( + contacts: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=1, ) - resource = proto.Field( + resource: str = proto.Field( proto.STRING, number=2, ) - notification_category = proto.Field( + notification_category: enums.NotificationCategory = proto.Field( proto.ENUM, number=3, enum=enums.NotificationCategory, diff --git a/owlbot.py b/owlbot.py new file mode 100644 index 0000000..ce738f0 --- /dev/null +++ b/owlbot.py @@ -0,0 +1,56 @@ +# Copyright 2022 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 json +from pathlib import Path +import shutil + +import synthtool as s +import synthtool.gcp as gcp +from synthtool.languages import python + +# ---------------------------------------------------------------------------- +# Copy the generated client from the owl-bot staging directory +# ---------------------------------------------------------------------------- + +clean_up_generated_samples = True + +# Load the default version defined in .repo-metadata.json. +default_version = json.load(open(".repo-metadata.json", "rt")).get( + "default_version" +) + +for library in s.get_staging_dirs(default_version): + if clean_up_generated_samples: + shutil.rmtree("samples/generated_samples", ignore_errors=True) + clean_up_generated_samples = False + s.move([library], excludes=["**/gapic_version.py"]) +s.remove_staging_dirs() + +# ---------------------------------------------------------------------------- +# Add templated files +# ---------------------------------------------------------------------------- + +templated_files = gcp.CommonTemplates().py_library( + cov_level=100, + microgenerator=True, + versions=gcp.common.detect_versions(path="./google", default_first=True), +) +s.move(templated_files, excludes=[".coveragerc", ".github/release-please.yml"]) + +python.py_samples(skip_readmes=True) + +# run format session for all directories which have a noxfile +for noxfile in Path(".").glob("**/noxfile.py"): + s.shell.run(["nox", "-s", "format"], cwd=noxfile.parent, hide_output=False) diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..475f36a --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "packages": { + ".": { + "release-type": "python", + "extra-files": [ + "google/cloud/essential_contacts/gapic_version.py", + { + "type": "json", + "path": "samples/generated_samples/snippet_metadata_google.cloud.essentialcontacts.v1.json", + "jsonpath": "$.clientLibrary.version" + } + ] + } + }, + "release-type": "python", + "plugins": [ + { + "type": "sentence-case" + } + ], + "initial-version": "0.1.0" +} diff --git a/samples/generated_samples/snippet_metadata_essential contacts_v1.json b/samples/generated_samples/snippet_metadata_google.cloud.essentialcontacts.v1.json similarity index 99% rename from samples/generated_samples/snippet_metadata_essential contacts_v1.json rename to samples/generated_samples/snippet_metadata_google.cloud.essentialcontacts.v1.json index 0afaccb..489bc82 100644 --- a/samples/generated_samples/snippet_metadata_essential contacts_v1.json +++ b/samples/generated_samples/snippet_metadata_google.cloud.essentialcontacts.v1.json @@ -7,7 +7,8 @@ } ], "language": "PYTHON", - "name": "google-cloud-essential-contacts" + "name": "google-cloud-essential-contacts", + "version": "0.1.0" }, "snippets": [ { diff --git a/setup.py b/setup.py index 4979fa7..168987e 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright 2020 Google LLC +# Copyright 2022 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,15 +18,31 @@ import setuptools # type: ignore +package_root = os.path.abspath(os.path.dirname(__file__)) + name = "google-cloud-essential-contacts" -description = "Essential Contacts API client library" -version = "1.2.3" -release_status = "Development Status :: 5 - Production/Stable" + + +description = "Google Cloud Essential Contacts API client library" + +version = {} +with open( + os.path.join(package_root, "google/cloud/essential_contacts/gapic_version.py") +) as fp: + exec(fp.read(), version) +version = version["__version__"] + +if version[0] == "0": + release_status = "Development Status :: 4 - Beta" +else: + release_status = "Development Status :: 5 - Production/Stable" + dependencies = [ - "google-api-core[grpc] >= 1.32.0, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", + "google-api-core[grpc] >= 1.33.2, <3.0.0dev,!=2.0.*,!=2.1.*,!=2.2.*,!=2.3.*,!=2.4.*,!=2.5.*,!=2.6.*,!=2.7.*", "proto-plus >= 1.22.0, <2.0.0dev", "protobuf>=3.19.5,<5.0.0dev,!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5", ] +url = "https://github.com/googleapis/python-essential-contacts" package_root = os.path.abspath(os.path.dirname(__file__)) @@ -34,6 +50,16 @@ with io.open(readme_filename, encoding="utf-8") as readme_file: readme = readme_file.read() +packages = [ + package + for package in setuptools.PEP420PackageFinder.find() + if package.startswith("google") +] + +namespaces = ["google"] +if "google.cloud" in packages: + namespaces.append("google.cloud") + setuptools.setup( name=name, version=version, @@ -42,27 +68,25 @@ author="Google LLC", author_email="googleapis-packages@google.com", license="Apache 2.0", - url="https://github.com/googleapis/python-essential-contacts", - packages=[ - package - for package in setuptools.PEP420PackageFinder.find() - if package.startswith("google") - ], - namespace_packages=("google", "google.cloud"), - platforms="Posix; MacOS X; Windows", - include_package_data=True, - install_requires=dependencies, - python_requires=">=3.7", + url=url, classifiers=[ release_status, "Intended Audience :: Developers", - "Operating System :: OS Independent", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Operating System :: OS Independent", "Topic :: Internet", - "Topic :: Software Development :: Libraries :: Python Modules", ], + platforms="Posix; MacOS X; Windows", + packages=packages, + python_requires=">=3.7", + namespace_packages=namespaces, + install_requires=dependencies, + include_package_data=True, zip_safe=False, ) diff --git a/testing/constraints-3.10.txt b/testing/constraints-3.10.txt index e69de29..ed7f9ae 100644 --- a/testing/constraints-3.10.txt +++ b/testing/constraints-3.10.txt @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf diff --git a/testing/constraints-3.11.txt b/testing/constraints-3.11.txt index e69de29..ed7f9ae 100644 --- a/testing/constraints-3.11.txt +++ b/testing/constraints-3.11.txt @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf diff --git a/testing/constraints-3.7.txt b/testing/constraints-3.7.txt index 5dcaa6f..6f3158c 100644 --- a/testing/constraints-3.7.txt +++ b/testing/constraints-3.7.txt @@ -1,10 +1,9 @@ # This constraints file is used to check that lower bounds # are correct in setup.py -# List *all* library dependencies and extras in this file. +# List all library dependencies and extras in this file. # Pin the version to the lower bound. -# -# e.g., if setup.py has "foo >= 1.14.0, < 2.0.0dev", -# Then this file should have foo==1.14.0 -google-api-core==1.32.0 +# e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", +# Then this file should have google-cloud-foo==1.14.0 +google-api-core==1.33.2 proto-plus==1.22.0 protobuf==3.19.5 diff --git a/testing/constraints-3.8.txt b/testing/constraints-3.8.txt index e69de29..ed7f9ae 100644 --- a/testing/constraints-3.8.txt +++ b/testing/constraints-3.8.txt @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf diff --git a/testing/constraints-3.9.txt b/testing/constraints-3.9.txt index e69de29..ed7f9ae 100644 --- a/testing/constraints-3.9.txt +++ b/testing/constraints-3.9.txt @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# This constraints file is required for unit tests. +# List all library dependencies and extras in this file. +google-api-core +proto-plus +protobuf