-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcreate_service_overloads.py
More file actions
53 lines (48 loc) · 2.22 KB
/
create_service_overloads.py
File metadata and controls
53 lines (48 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import importlib
import re
from pathlib import Path
from google.ads.googleads import client
overload_lines = []
import_lines = []
for i, version in enumerate(sorted(client._VALID_API_VERSIONS)):
service_package_paths = sorted(Path("google-ads-python/google/ads/googleads", version, "services/services").iterdir())
for service_package_path in service_package_paths:
if service_package_path.name == "__init__.py":
continue
import_path = f"google.ads.googleads.{version}.services.services.{service_package_path.name}"
service_package = importlib.import_module(import_path)
import_lines.append(f"import {import_path}")
for service_name in service_package.__all__:
service_name_without_suffix = service_name[: -len("Client")]
overload_lines.append(
f' @overload\n def get_service(self, name: Literal["{service_name_without_suffix}"], version: _{version.upper()}) -> {import_path}.{service_name}: ...'
)
if version == client._DEFAULT_VERSION:
overload_lines.append(
f' @overload\n def get_service(self, name: Literal["{service_name_without_suffix}"]) -> {import_path}.{service_name}: ...'
)
if i < len(client._VALID_API_VERSIONS) - 1:
overload_lines.append("\n")
overload_lines.append(
f' @overload\n def get_service(self, name: str, version: _V = "{client._DEFAULT_VERSION}") -> Any: ...'
)
with open("google-stubs/ads/googleads/client.pyi") as f:
client_pyi = f.read()
overload_lines.insert(0, "# Autogenerated service overloads")
overload_lines.append(" # End of autogenerated service overloads")
client_pyi = re.sub(
"# Autogenerated service overloads.+# End of autogenerated service overloads",
"\n".join(overload_lines),
client_pyi,
flags=re.DOTALL,
)
import_lines.insert(0, "# Autogenerated service imports")
import_lines.append("# End of autogenerated service imports")
client_pyi = re.sub(
"# Autogenerated service imports.+# End of autogenerated service imports",
"\n".join(import_lines),
client_pyi,
flags=re.DOTALL,
)
with open("google-stubs/ads/googleads/client.pyi", mode="w") as f:
f.write(client_pyi)