Skip to content
This repository was archived by the owner on Sep 5, 2023. It is now read-only.

Commit 033a20b

Browse files
feat: Add support for ModerateText (#433)
* feat: Added client library support for ModerateText in the Natural Language API (V1Beta2) PiperOrigin-RevId: 534975458 Source-Link: googleapis/googleapis@392db1d Source-Link: https://github.com/googleapis/googleapis-gen/commit/df98b94b1218af16109fe3e1aef329732779c0a9 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZGY5OGI5NGIxMjE4YWYxNjEwOWZlM2UxYWVmMzI5NzMyNzc5YzBhOSJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md * feat: Added client library support for ModerateText in the Natural Language API (V1) PiperOrigin-RevId: 534992604 Source-Link: googleapis/googleapis@2400fac Source-Link: https://github.com/googleapis/googleapis-gen/commit/32caa580131b05b880fa3b802ca0c21179881733 Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMzJjYWE1ODAxMzFiMDViODgwZmEzYjgwMmNhMGMyMTE3OTg4MTczMyJ9 * 🦉 Updates from OwlBot post-processor See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
1 parent 3338d05 commit 033a20b

31 files changed

+2415
-9
lines changed

google/cloud/language/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
EncodingType,
4545
Entity,
4646
EntityMention,
47+
ModerateTextRequest,
48+
ModerateTextResponse,
4749
PartOfSpeech,
4850
Sentence,
4951
Sentiment,
@@ -72,6 +74,8 @@
7274
"Document",
7375
"Entity",
7476
"EntityMention",
77+
"ModerateTextRequest",
78+
"ModerateTextResponse",
7579
"PartOfSpeech",
7680
"Sentence",
7781
"Sentiment",

google/cloud/language_v1/__init__.py

+4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
EncodingType,
4040
Entity,
4141
EntityMention,
42+
ModerateTextRequest,
43+
ModerateTextResponse,
4244
PartOfSpeech,
4345
Sentence,
4446
Sentiment,
@@ -68,6 +70,8 @@
6870
"Entity",
6971
"EntityMention",
7072
"LanguageServiceClient",
73+
"ModerateTextRequest",
74+
"ModerateTextResponse",
7175
"PartOfSpeech",
7276
"Sentence",
7377
"Sentiment",

google/cloud/language_v1/gapic_metadata.json

+15
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
"methods": [
4040
"classify_text"
4141
]
42+
},
43+
"ModerateText": {
44+
"methods": [
45+
"moderate_text"
46+
]
4247
}
4348
}
4449
},
@@ -74,6 +79,11 @@
7479
"methods": [
7580
"classify_text"
7681
]
82+
},
83+
"ModerateText": {
84+
"methods": [
85+
"moderate_text"
86+
]
7787
}
7888
}
7989
},
@@ -109,6 +119,11 @@
109119
"methods": [
110120
"classify_text"
111121
]
122+
},
123+
"ModerateText": {
124+
"methods": [
125+
"moderate_text"
126+
]
112127
}
113128
}
114129
}

google/cloud/language_v1/services/language_service/async_client.py

+98
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,104 @@ async def sample_classify_text():
792792
# Done; return the response.
793793
return response
794794

795+
async def moderate_text(
796+
self,
797+
request: Optional[Union[language_service.ModerateTextRequest, dict]] = None,
798+
*,
799+
document: Optional[language_service.Document] = None,
800+
retry: OptionalRetry = gapic_v1.method.DEFAULT,
801+
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
802+
metadata: Sequence[Tuple[str, str]] = (),
803+
) -> language_service.ModerateTextResponse:
804+
r"""Moderates a document for harmful and sensitive
805+
categories.
806+
807+
.. code-block:: python
808+
809+
# This snippet has been automatically generated and should be regarded as a
810+
# code template only.
811+
# It will require modifications to work:
812+
# - It may require correct/in-range values for request initialization.
813+
# - It may require specifying regional endpoints when creating the service
814+
# client as shown in:
815+
# https://googleapis.dev/python/google-api-core/latest/client_options.html
816+
from google.cloud import language_v1
817+
818+
async def sample_moderate_text():
819+
# Create a client
820+
client = language_v1.LanguageServiceAsyncClient()
821+
822+
# Initialize request argument(s)
823+
document = language_v1.Document()
824+
document.content = "content_value"
825+
826+
request = language_v1.ModerateTextRequest(
827+
document=document,
828+
)
829+
830+
# Make the request
831+
response = await client.moderate_text(request=request)
832+
833+
# Handle the response
834+
print(response)
835+
836+
Args:
837+
request (Optional[Union[google.cloud.language_v1.types.ModerateTextRequest, dict]]):
838+
The request object. The document moderation request
839+
message.
840+
document (:class:`google.cloud.language_v1.types.Document`):
841+
Required. Input document.
842+
This corresponds to the ``document`` field
843+
on the ``request`` instance; if ``request`` is provided, this
844+
should not be set.
845+
retry (google.api_core.retry.Retry): Designation of what errors, if any,
846+
should be retried.
847+
timeout (float): The timeout for this request.
848+
metadata (Sequence[Tuple[str, str]]): Strings which should be
849+
sent along with the request as metadata.
850+
851+
Returns:
852+
google.cloud.language_v1.types.ModerateTextResponse:
853+
The document moderation response
854+
message.
855+
856+
"""
857+
# Create or coerce a protobuf request object.
858+
# Quick check: If we got a request object, we should *not* have
859+
# gotten any keyword arguments that map to the request.
860+
has_flattened_params = any([document])
861+
if request is not None and has_flattened_params:
862+
raise ValueError(
863+
"If the `request` argument is set, then none of "
864+
"the individual field arguments should be set."
865+
)
866+
867+
request = language_service.ModerateTextRequest(request)
868+
869+
# If we have keyword arguments corresponding to fields on the
870+
# request, apply these.
871+
if document is not None:
872+
request.document = document
873+
874+
# Wrap the RPC method; this adds retry and timeout information,
875+
# and friendly error handling.
876+
rpc = gapic_v1.method_async.wrap_method(
877+
self._client._transport.moderate_text,
878+
default_timeout=None,
879+
client_info=DEFAULT_CLIENT_INFO,
880+
)
881+
882+
# Send the request.
883+
response = await rpc(
884+
request,
885+
retry=retry,
886+
timeout=timeout,
887+
metadata=metadata,
888+
)
889+
890+
# Done; return the response.
891+
return response
892+
795893
async def annotate_text(
796894
self,
797895
request: Optional[Union[language_service.AnnotateTextRequest, dict]] = None,

google/cloud/language_v1/services/language_service/client.py

+98
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,104 @@ def sample_classify_text():
951951
# Done; return the response.
952952
return response
953953

954+
def moderate_text(
955+
self,
956+
request: Optional[Union[language_service.ModerateTextRequest, dict]] = None,
957+
*,
958+
document: Optional[language_service.Document] = None,
959+
retry: OptionalRetry = gapic_v1.method.DEFAULT,
960+
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
961+
metadata: Sequence[Tuple[str, str]] = (),
962+
) -> language_service.ModerateTextResponse:
963+
r"""Moderates a document for harmful and sensitive
964+
categories.
965+
966+
.. code-block:: python
967+
968+
# This snippet has been automatically generated and should be regarded as a
969+
# code template only.
970+
# It will require modifications to work:
971+
# - It may require correct/in-range values for request initialization.
972+
# - It may require specifying regional endpoints when creating the service
973+
# client as shown in:
974+
# https://googleapis.dev/python/google-api-core/latest/client_options.html
975+
from google.cloud import language_v1
976+
977+
def sample_moderate_text():
978+
# Create a client
979+
client = language_v1.LanguageServiceClient()
980+
981+
# Initialize request argument(s)
982+
document = language_v1.Document()
983+
document.content = "content_value"
984+
985+
request = language_v1.ModerateTextRequest(
986+
document=document,
987+
)
988+
989+
# Make the request
990+
response = client.moderate_text(request=request)
991+
992+
# Handle the response
993+
print(response)
994+
995+
Args:
996+
request (Union[google.cloud.language_v1.types.ModerateTextRequest, dict]):
997+
The request object. The document moderation request
998+
message.
999+
document (google.cloud.language_v1.types.Document):
1000+
Required. Input document.
1001+
This corresponds to the ``document`` field
1002+
on the ``request`` instance; if ``request`` is provided, this
1003+
should not be set.
1004+
retry (google.api_core.retry.Retry): Designation of what errors, if any,
1005+
should be retried.
1006+
timeout (float): The timeout for this request.
1007+
metadata (Sequence[Tuple[str, str]]): Strings which should be
1008+
sent along with the request as metadata.
1009+
1010+
Returns:
1011+
google.cloud.language_v1.types.ModerateTextResponse:
1012+
The document moderation response
1013+
message.
1014+
1015+
"""
1016+
# Create or coerce a protobuf request object.
1017+
# Quick check: If we got a request object, we should *not* have
1018+
# gotten any keyword arguments that map to the request.
1019+
has_flattened_params = any([document])
1020+
if request is not None and has_flattened_params:
1021+
raise ValueError(
1022+
"If the `request` argument is set, then none of "
1023+
"the individual field arguments should be set."
1024+
)
1025+
1026+
# Minor optimization to avoid making a copy if the user passes
1027+
# in a language_service.ModerateTextRequest.
1028+
# There's no risk of modifying the input as we've already verified
1029+
# there are no flattened fields.
1030+
if not isinstance(request, language_service.ModerateTextRequest):
1031+
request = language_service.ModerateTextRequest(request)
1032+
# If we have keyword arguments corresponding to fields on the
1033+
# request, apply these.
1034+
if document is not None:
1035+
request.document = document
1036+
1037+
# Wrap the RPC method; this adds retry and timeout information,
1038+
# and friendly error handling.
1039+
rpc = self._transport._wrapped_methods[self._transport.moderate_text]
1040+
1041+
# Send the request.
1042+
response = rpc(
1043+
request,
1044+
retry=retry,
1045+
timeout=timeout,
1046+
metadata=metadata,
1047+
)
1048+
1049+
# Done; return the response.
1050+
return response
1051+
9541052
def annotate_text(
9551053
self,
9561054
request: Optional[Union[language_service.AnnotateTextRequest, dict]] = None,

google/cloud/language_v1/services/language_service/transports/base.py

+17
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ def _prep_wrapped_messages(self, client_info):
200200
default_timeout=600.0,
201201
client_info=client_info,
202202
),
203+
self.moderate_text: gapic_v1.method.wrap_method(
204+
self.moderate_text,
205+
default_timeout=None,
206+
client_info=client_info,
207+
),
203208
self.annotate_text: gapic_v1.method.wrap_method(
204209
self.annotate_text,
205210
default_retry=retries.Retry(
@@ -286,6 +291,18 @@ def classify_text(
286291
]:
287292
raise NotImplementedError()
288293

294+
@property
295+
def moderate_text(
296+
self,
297+
) -> Callable[
298+
[language_service.ModerateTextRequest],
299+
Union[
300+
language_service.ModerateTextResponse,
301+
Awaitable[language_service.ModerateTextResponse],
302+
],
303+
]:
304+
raise NotImplementedError()
305+
289306
@property
290307
def annotate_text(
291308
self,

google/cloud/language_v1/services/language_service/transports/grpc.py

+29
Original file line numberDiff line numberDiff line change
@@ -380,6 +380,35 @@ def classify_text(
380380
)
381381
return self._stubs["classify_text"]
382382

383+
@property
384+
def moderate_text(
385+
self,
386+
) -> Callable[
387+
[language_service.ModerateTextRequest], language_service.ModerateTextResponse
388+
]:
389+
r"""Return a callable for the moderate text method over gRPC.
390+
391+
Moderates a document for harmful and sensitive
392+
categories.
393+
394+
Returns:
395+
Callable[[~.ModerateTextRequest],
396+
~.ModerateTextResponse]:
397+
A function that, when called, will call the underlying RPC
398+
on the server.
399+
"""
400+
# Generate a "stub function" on-the-fly which will actually make
401+
# the request.
402+
# gRPC handles serialization and deserialization, so we just need
403+
# to pass in the functions for each.
404+
if "moderate_text" not in self._stubs:
405+
self._stubs["moderate_text"] = self.grpc_channel.unary_unary(
406+
"/google.cloud.language.v1.LanguageService/ModerateText",
407+
request_serializer=language_service.ModerateTextRequest.serialize,
408+
response_deserializer=language_service.ModerateTextResponse.deserialize,
409+
)
410+
return self._stubs["moderate_text"]
411+
383412
@property
384413
def annotate_text(
385414
self,

google/cloud/language_v1/services/language_service/transports/grpc_asyncio.py

+30
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,36 @@ def classify_text(
385385
)
386386
return self._stubs["classify_text"]
387387

388+
@property
389+
def moderate_text(
390+
self,
391+
) -> Callable[
392+
[language_service.ModerateTextRequest],
393+
Awaitable[language_service.ModerateTextResponse],
394+
]:
395+
r"""Return a callable for the moderate text method over gRPC.
396+
397+
Moderates a document for harmful and sensitive
398+
categories.
399+
400+
Returns:
401+
Callable[[~.ModerateTextRequest],
402+
Awaitable[~.ModerateTextResponse]]:
403+
A function that, when called, will call the underlying RPC
404+
on the server.
405+
"""
406+
# Generate a "stub function" on-the-fly which will actually make
407+
# the request.
408+
# gRPC handles serialization and deserialization, so we just need
409+
# to pass in the functions for each.
410+
if "moderate_text" not in self._stubs:
411+
self._stubs["moderate_text"] = self.grpc_channel.unary_unary(
412+
"/google.cloud.language.v1.LanguageService/ModerateText",
413+
request_serializer=language_service.ModerateTextRequest.serialize,
414+
response_deserializer=language_service.ModerateTextResponse.deserialize,
415+
)
416+
return self._stubs["moderate_text"]
417+
388418
@property
389419
def annotate_text(
390420
self,

0 commit comments

Comments
 (0)