Skip to content

Commit 81fdaff

Browse files
Here's a proposed commit message for you:
Add type hints to files in examples/remarketing This commit adds type annotations to Python files in the examples/remarketing directory. The following files were updated: - examples/remarketing/__init__.py (no changes as it was empty) - examples/remarketing/add_conversion_action.py - examples/remarketing/add_conversion_based_user_list.py - examples/remarketing/add_custom_audience.py - examples/remarketing/add_customer_match_user_list.py - examples/remarketing/add_dynamic_remarketing_asset.py - examples/remarketing/add_flexible_rule_user_list.py - examples/remarketing/add_logical_user_list.py - examples/remarketing/add_merchant_center_dynamic_remarketing_campaign.py Type hints were added to functions, arguments, and variables in these files. Necessary imports from the `typing` module and the `google.ads.googleads` library were also added. The changes ensure the code remains functionally identical. This addresses the issue of adding annotations and type hints to these files. The remaining files in the directory will be addressed in subsequent commits.
1 parent 4f350a8 commit 81fdaff

8 files changed

+544
-236
lines changed

examples/remarketing/add_conversion_action.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,41 +18,49 @@
1818
import argparse
1919
import sys
2020
import uuid
21+
from typing import Any
2122

2223
from google.ads.googleads.client import GoogleAdsClient
2324
from google.ads.googleads.errors import GoogleAdsException
25+
from google.ads.googleads.v19.services.types.conversion_action_service import (
26+
ConversionActionOperation,
27+
ConversionActionServiceClient,
28+
)
29+
from google.ads.googleads.v19.resources.types.conversion_action import (
30+
ConversionAction,
31+
)
2432

2533

2634
# [START add_conversion_action]
27-
def main(client, customer_id):
28-
conversion_action_service = client.get_service("ConversionActionService")
35+
def main(client: GoogleAdsClient, customer_id: str) -> None:
36+
conversion_action_service: ConversionActionServiceClient = client.get_service(
37+
"ConversionActionService"
38+
)
2939

3040
# Create the operation.
31-
conversion_action_operation = client.get_type("ConversionActionOperation")
41+
conversion_action_operation: ConversionActionOperation = client.get_type(
42+
"ConversionActionOperation"
43+
)
3244

3345
# Create conversion action.
34-
conversion_action = conversion_action_operation.create
46+
conversion_action: ConversionAction = conversion_action_operation.create
3547

3648
# Note that conversion action names must be unique. If a conversion action
3749
# already exists with the specified conversion_action_name, the create
3850
# operation will fail with a ConversionActionError.DUPLICATE_NAME error.
3951
conversion_action.name = f"Earth to Mars Cruises Conversion {uuid.uuid4()}"
40-
conversion_action.type_ = (
41-
client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
42-
)
43-
conversion_action.category = (
44-
client.enums.ConversionActionCategoryEnum.DEFAULT
45-
)
52+
conversion_action.type_ = client.enums.ConversionActionTypeEnum.UPLOAD_CLICKS
53+
conversion_action.category = client.enums.ConversionActionCategoryEnum.DEFAULT
4654
conversion_action.status = client.enums.ConversionActionStatusEnum.ENABLED
4755
conversion_action.view_through_lookback_window_days = 15
4856

4957
# Create a value settings object.
50-
value_settings = conversion_action.value_settings
58+
value_settings: Any = conversion_action.value_settings
5159
value_settings.default_value = 15.0
5260
value_settings.always_use_default_value = True
5361

5462
# Add the conversion action.
55-
conversion_action_response = (
63+
conversion_action_response: Any = (
5664
conversion_action_service.mutate_conversion_actions(
5765
customer_id=customer_id,
5866
operations=[conversion_action_operation],
@@ -67,7 +75,7 @@ def main(client, customer_id):
6775

6876

6977
if __name__ == "__main__":
70-
parser = argparse.ArgumentParser(
78+
parser: argparse.ArgumentParser = argparse.ArgumentParser(
7179
description="Adds a conversion action for specified customer."
7280
)
7381
# The following argument(s) should be provided to run the example.
@@ -78,11 +86,13 @@ def main(client, customer_id):
7886
required=True,
7987
help="The Google Ads customer ID.",
8088
)
81-
args = parser.parse_args()
89+
args: argparse.Namespace = parser.parse_args()
8290

8391
# GoogleAdsClient will read the google-ads.yaml configuration file in the
8492
# home directory if none is specified.
85-
googleads_client = GoogleAdsClient.load_from_storage(version="v19")
93+
googleads_client: GoogleAdsClient = GoogleAdsClient.load_from_storage(
94+
version="v19"
95+
)
8696

8797
try:
8898
main(googleads_client, args.customer_id)

examples/remarketing/add_conversion_based_user_list.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,27 @@
2222
import argparse
2323
import sys
2424
from uuid import uuid4
25+
from typing import List, Any
2526

2627
from google.ads.googleads.client import GoogleAdsClient
2728
from google.ads.googleads.errors import GoogleAdsException
29+
from google.ads.googleads.v19.common.types.user_lists import UserListActionInfo
30+
from google.ads.googleads.v19.resources.types.user_list import UserList
31+
from google.ads.googleads.v19.services.types.conversion_action_service import (
32+
ConversionActionServiceClient,
33+
)
34+
from google.ads.googleads.v19.services.types.user_list_service import (
35+
UserListOperation,
36+
UserListServiceClient,
37+
)
2838

2939

3040
# [START add_conversion_based_user_list]
31-
def main(client, customer_id, conversion_action_ids):
41+
def main(
42+
client: GoogleAdsClient,
43+
customer_id: str,
44+
conversion_action_ids: List[str],
45+
) -> None:
3246
"""Creates a combination user list.
3347
3448
Args:
@@ -38,15 +52,21 @@ def main(client, customer_id, conversion_action_ids):
3852
user list.
3953
"""
4054
# Get the UserListService and ConversionActionService clients.
41-
user_list_service = client.get_service("UserListService")
42-
conversion_action_service = client.get_service("ConversionActionService")
55+
user_list_service: UserListServiceClient = client.get_service(
56+
"UserListService"
57+
)
58+
conversion_action_service: ConversionActionServiceClient = client.get_service(
59+
"ConversionActionService"
60+
)
4361

4462
# Create a list of UserListActionInfo objects for the given conversion
4563
# actions. These specify the conversion actions that, when triggered, will
4664
# cause a user to be added to a UserList.
47-
user_list_action_info_list = []
65+
user_list_action_info_list: List[UserListActionInfo] = []
4866
for conversion_action_id in conversion_action_ids:
49-
user_list_action_info = client.get_type("UserListActionInfo")
67+
user_list_action_info: UserListActionInfo = client.get_type(
68+
"UserListActionInfo"
69+
)
5070
user_list_action_info.conversion_action = (
5171
conversion_action_service.conversion_action_path(
5272
customer_id, conversion_action_id
@@ -55,8 +75,8 @@ def main(client, customer_id, conversion_action_ids):
5575
user_list_action_info_list.append(user_list_action_info)
5676

5777
# Create a UserListOperation and populate the UserList.
58-
user_list_operation = client.get_type("UserListOperation")
59-
user_list = user_list_operation.create
78+
user_list_operation: UserListOperation = client.get_type("UserListOperation")
79+
user_list: UserList = user_list_operation.create
6080
user_list.name = f"Example BasicUserList #{uuid4()}"
6181
user_list.description = (
6282
"A list of people who have triggered one or more conversion actions"
@@ -67,7 +87,7 @@ def main(client, customer_id, conversion_action_ids):
6787
user_list.basic_user_list.actions.extend(user_list_action_info_list)
6888

6989
# Issue a mutate request to add the user list, then print the results.
70-
response = user_list_service.mutate_user_lists(
90+
response: Any = user_list_service.mutate_user_lists(
7191
customer_id=customer_id, operations=[user_list_operation]
7292
)
7393
print(
@@ -78,7 +98,7 @@ def main(client, customer_id, conversion_action_ids):
7898

7999

80100
if __name__ == "__main__":
81-
parser = argparse.ArgumentParser(
101+
parser: argparse.ArgumentParser = argparse.ArgumentParser(
82102
description="Creates a basic user list based on conversion actions."
83103
)
84104
# The following argument(s) should be provided to run the example.
@@ -97,11 +117,13 @@ def main(client, customer_id, conversion_action_ids):
97117
required=True,
98118
help="The IDs of the conversion actions for the basic user list.",
99119
)
100-
args = parser.parse_args()
120+
args: argparse.Namespace = parser.parse_args()
101121

102122
# GoogleAdsClient will read the google-ads.yaml configuration file in the
103123
# home directory if none is specified.
104-
googleads_client = GoogleAdsClient.load_from_storage(version="v19")
124+
googleads_client: GoogleAdsClient = GoogleAdsClient.load_from_storage(
125+
version="v19"
126+
)
105127

106128
try:
107129
main(googleads_client, args.customer_id, args.conversion_action_ids)

examples/remarketing/add_custom_audience.py

Lines changed: 48 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,41 @@
2323
import argparse
2424
import sys
2525
from uuid import uuid4
26+
from typing import Any
2627

2728
from google.ads.googleads.client import GoogleAdsClient
2829
from google.ads.googleads.errors import GoogleAdsException
29-
30-
31-
def main(client, customer_id):
30+
from google.ads.googleads.v19.enums.types.custom_audience_member_type import (
31+
CustomAudienceMemberTypeEnum,
32+
)
33+
from google.ads.googleads.v19.resources.types.custom_audience import (
34+
CustomAudience,
35+
CustomAudienceMember,
36+
)
37+
from google.ads.googleads.v19.services.types.custom_audience_service import (
38+
CustomAudienceOperation,
39+
CustomAudienceServiceClient,
40+
)
41+
42+
43+
def main(client: GoogleAdsClient, customer_id: str) -> None:
3244
"""The main method that creates all necessary entities for the example.
3345
3446
Args:
3547
client: an initialized GoogleAdsClient instance.
3648
customer_id: a client customer ID.
3749
"""
38-
custom_audience_service = client.get_service("CustomAudienceService")
50+
custom_audience_service: CustomAudienceServiceClient = client.get_service(
51+
"CustomAudienceService"
52+
)
3953

4054
# Create a custom audience operation.
41-
custom_audience_operation = client.get_type("CustomAudienceOperation")
55+
custom_audience_operation: CustomAudienceOperation = client.get_type(
56+
"CustomAudienceOperation"
57+
)
4258

4359
# Create a custom audience
44-
custom_audience = custom_audience_operation.create
60+
custom_audience: CustomAudience = custom_audience_operation.create
4561
custom_audience.name = f"Example CustomAudience #{uuid4()}"
4662
custom_audience.description = (
4763
"Custom audiences who have searched specific terms on Google Search."
@@ -54,25 +70,27 @@ def main(client, customer_id):
5470
custom_audience.status = client.enums.CustomAudienceStatusEnum.ENABLED
5571
# List of members that this custom audience is composed of. Customers that
5672
# meet any of the membership conditions will be reached.
57-
member_type_enum = client.enums.CustomAudienceMemberTypeEnum
73+
member_type_enum: CustomAudienceMemberTypeEnum = (
74+
client.enums.CustomAudienceMemberTypeEnum
75+
)
5876

59-
member1 = create_custom_audience_member(
77+
member1: CustomAudienceMember = create_custom_audience_member(
6078
client, member_type_enum.KEYWORD, "mars cruise"
6179
)
6280

63-
member2 = create_custom_audience_member(
81+
member2: CustomAudienceMember = create_custom_audience_member(
6482
client, member_type_enum.KEYWORD, "jupiter cruise"
6583
)
6684

67-
member3 = create_custom_audience_member(
85+
member3: CustomAudienceMember = create_custom_audience_member(
6886
client, member_type_enum.URL, "http://www.example.com/locations/mars"
6987
)
7088

71-
member4 = create_custom_audience_member(
89+
member4: CustomAudienceMember = create_custom_audience_member(
7290
client, member_type_enum.URL, "http://www.example.com/locations/jupiter"
7391
)
7492

75-
member5 = create_custom_audience_member(
93+
member5: CustomAudienceMember = create_custom_audience_member(
7694
client, member_type_enum.APP, "com.google.android.apps.adwords"
7795
)
7896

@@ -81,8 +99,10 @@ def main(client, customer_id):
8199
)
82100

83101
# Add the custom audience.
84-
custom_audience_response = custom_audience_service.mutate_custom_audiences(
85-
customer_id=customer_id, operations=[custom_audience_operation]
102+
custom_audience_response: Any = (
103+
custom_audience_service.mutate_custom_audiences(
104+
customer_id=customer_id, operations=[custom_audience_operation]
105+
)
86106
)
87107

88108
print(
@@ -91,7 +111,11 @@ def main(client, customer_id):
91111
)
92112

93113

94-
def create_custom_audience_member(client, member_type, value):
114+
def create_custom_audience_member(
115+
client: GoogleAdsClient,
116+
member_type: CustomAudienceMemberTypeEnum,
117+
value: str,
118+
) -> CustomAudienceMember:
95119
"""Creates a custom audience member for a given member type and value.
96120
97121
Args:
@@ -102,10 +126,12 @@ def create_custom_audience_member(client, member_type, value):
102126
Returns:
103127
A newly created CustomAudienceMember.
104128
"""
105-
member = client.get_type("CustomAudienceMember")
129+
member: CustomAudienceMember = client.get_type("CustomAudienceMember")
106130
member.member_type = member_type
107131

108-
member_type_enum = client.enums.CustomAudienceMemberTypeEnum
132+
member_type_enum: CustomAudienceMemberTypeEnum = (
133+
client.enums.CustomAudienceMemberTypeEnum
134+
)
109135

110136
if member_type == member_type_enum.KEYWORD:
111137
member.keyword = value
@@ -122,7 +148,7 @@ def create_custom_audience_member(client, member_type, value):
122148

123149

124150
if __name__ == "__main__":
125-
parser = argparse.ArgumentParser(
151+
parser: argparse.ArgumentParser = argparse.ArgumentParser(
126152
description="Adds a custom audience for a specified customer."
127153
)
128154
# The following argument(s) should be provided to run the example.
@@ -133,11 +159,13 @@ def create_custom_audience_member(client, member_type, value):
133159
required=True,
134160
help="The Google Ads customer ID.",
135161
)
136-
args = parser.parse_args()
162+
args: argparse.Namespace = parser.parse_args()
137163

138164
# GoogleAdsClient will read the google-ads.yaml configuration file in the
139165
# home directory if none is specified.
140-
googleads_client = GoogleAdsClient.load_from_storage(version="v19")
166+
googleads_client: GoogleAdsClient = GoogleAdsClient.load_from_storage(
167+
version="v19"
168+
)
141169

142170
try:
143171
main(googleads_client, args.customer_id)

0 commit comments

Comments
 (0)