Skip to main content

Type stubs for google-ads

Project description

Type stubs for the Google Ads API Client Library for Python

PyPI version

This package provides type stubs for the Google Ads API Client Library for Python. It's currently compatible with v21.2.0 of this library. It allows you to type check usage of the library with e.g. mypy and will also improve autocomplete in many editors.

This is in no way affiliated with Google.

Most stubs were created automatically by stubgen, the rest are handwritten or generated by self-made scripts.

If you find incorrect annotations, please create an issue. Contributions for fixes are also welcome.

Installation

$ pip install google-ads-stubs

The stubs should be automatically picked up by your editor or typechecker, but note that if you're using Mypy you need to use the --namespace-packages option as google and google.ads are namespace packages.

Caveats

There are some caveats. The primary one is that type inference does not work for the get_type method of GoogleAdsClient.The workaround is to explicitly state the type. You can also instantiate the object directly to get inference.

# Replace this:
campaign_operation = client.get_type('CampaignOperation')
# With this:
from google.ads.googleads.v13 import CampaignOperation
campaign_operation: CampaignOperation = client.get_type('CampaignOperation')
# Or this:
from google.ads.googleads.v13 import CampaignOperation
campaign_operation = CampaignOperation()

While it is technically possible to type this method using a combination of overloading and literal types, this is not included in these stubs. The reason is that it requires about 10,000 overloads, which makes most typecheckers fairly slow.

Certain types are too lenient compared to what's allowed at runtime. GoogleAdsClient.enums is typed as Any and so is the mapping argument to protobuf message constructors. On the other hand certain types are more strict than what's allowed at runtime. You can't substitute a protobuf message for an equivalent dict or an enum with it's equivalent name or value. This might improve in the future, but for now:

# Replace this:
AdGroupAd({"status": "ENABLED", ad={"type": 2}})
# With this:
from google.ads.googleads.v13 import AdGroupAdStatusEnum, AdTypeEnum, Ad
AdGroupAd(status=AdGroupAdStatusEnum.AdGroupAdStatus.ENABLED, ad=Ad(type=AdTypeEnum.AdType.TEXT_AD))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google_ads_stubs-14.1.0.tar.gz (705.9 kB view hashes)

Uploaded Source

Built Distribution

google_ads_stubs-14.1.0-py3-none-any.whl (2.7 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page