diff --git a/Dockerfile b/Dockerfile index 7de879c..8b41793 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM python:3.8-slim-buster +FROM python:3.9-slim-bullseye ENV PYTHONDONTWRITEBYTECODE True ENV PYTHONUNBUFFERED True diff --git a/ack/readers/google_ads/cli.py b/ack/readers/google_ads/cli.py index d37d50c..069d21b 100644 --- a/ack/readers/google_ads/cli.py +++ b/ack/readers/google_ads/cli.py @@ -34,7 +34,6 @@ ) @click.option( "--googleads-client-customer-id", - "googleads_client_customer_ids", multiple=True, help="Google Ads Client Account(s) to be called, thanks to their IDs.\n " "This field is ignored if manager_id is specified (replaced by the accounts linked to the MCC)", @@ -55,7 +54,6 @@ @click.option("--googleads-end-date", type=click.DateTime()) @click.option( "--googleads-field", - "googleads_fields", multiple=True, help="Google Ads API fields for the request\n" "https://developers.google.com/adwords/api/docs/appendix/reports#available-reports", diff --git a/ack/readers/google_analytics/cli.py b/ack/readers/google_analytics/cli.py index b6a69f1..937ca67 100644 --- a/ack/readers/google_analytics/cli.py +++ b/ack/readers/google_analytics/cli.py @@ -27,7 +27,7 @@ @click.option("--ga-refresh-token", required=True) @click.option("--ga-client-id", required=True) @click.option("--ga-client-secret", required=True) -@click.option("--ga-view-id", default="", multiple=True) +@click.option("--ga-view-id", default=[], multiple=True) @click.option("--ga-account-id", default=[], multiple=True) @click.option("--ga-dimension", multiple=True) @click.option("--ga-metric", multiple=True) diff --git a/ack/readers/google_dcm/cli.py b/ack/readers/google_dcm/cli.py index 67802d4..f1c8152 100644 --- a/ack/readers/google_dcm/cli.py +++ b/ack/readers/google_dcm/cli.py @@ -29,18 +29,16 @@ @click.option("--dcm-client-id", required=True) @click.option("--dcm-client-secret", required=True) @click.option("--dcm-refresh-token", required=True) -@click.option("--dcm-profile-id", "dcm_profile_ids", required=True, multiple=True) +@click.option("--dcm-profile-id", required=True, multiple=True) @click.option("--dcm-report-name", default="DCM Report") @click.option("--dcm-report-type", type=click.Choice(REPORT_TYPES), default=REPORT_TYPES[0]) @click.option( "--dcm-metric", - "dcm_metrics", multiple=True, help="https://developers.google.com/doubleclick-advertisers/v3.5/dimensions/#standard-metrics", ) @click.option( "--dcm-dimension", - "dcm_dimensions", multiple=True, help="https://developers.google.com/doubleclick-advertisers/v3.5/dimensions/#standard-dimensions", ) @@ -48,7 +46,6 @@ @click.option("--dcm-end-date", type=click.DateTime(), help="End date of the report") @click.option( "--dcm-filter", - "dcm_filters", type=click.Tuple([str, str]), multiple=True, help="A filter is a tuple following this pattern: (dimensionName, dimensionValue). " diff --git a/ack/readers/google_sa360/cli.py b/ack/readers/google_sa360/cli.py index b41d76d..4711764 100644 --- a/ack/readers/google_sa360/cli.py +++ b/ack/readers/google_sa360/cli.py @@ -32,18 +32,16 @@ @click.option("--sa360-agency-id", required=True) @click.option( "--sa360-advertiser-id", - "sa360_advertiser_ids", multiple=True, help="If empty, all advertisers from agency will be requested", ) @click.option("--sa360-report-name", default="SA360 Report") @click.option("--sa360-report-type", type=click.Choice(REPORT_TYPES), default=REPORT_TYPES[0]) @click.option( - "--sa360-column", "sa360_columns", multiple=True, help="https://developers.google.com/search-ads/v2/report-types", + "--sa360-column", multiple=True, help="https://developers.google.com/search-ads/v2/report-types", ) @click.option( "--sa360-saved-column", - "sa360_saved_columns", multiple=True, help="https://developers.google.com/search-ads/v2/how-tos/reporting/saved-columns", ) diff --git a/ack/readers/yandex_campaign/cli.py b/ack/readers/yandex_campaign/cli.py index 6690ea9..803c1f7 100644 --- a/ack/readers/yandex_campaign/cli.py +++ b/ack/readers/yandex_campaign/cli.py @@ -25,20 +25,18 @@ @click.command(name="read_yandex_campaigns") @click.option("--yandex-campaigns-token", "yandex_token", required=True) -@click.option("--yandex-campaigns-campaign-id", "yandex_campaign_ids", multiple=True) -@click.option("--yandex-campaigns-campaign-state", "yandex_campaign_states", multiple=True, type=click.Choice(CAMPAIGN_STATES)) +@click.option("--yandex-campaigns-campaign-id", multiple=True) +@click.option("--yandex-campaigns-campaign-state", multiple=True, type=click.Choice(CAMPAIGN_STATES)) @click.option( - "--yandex-campaigns-campaign-status", "yandex_campaign_statuses", multiple=True, type=click.Choice(CAMPAIGN_STATUSES) + "--yandex-campaigns-campaign-status", multiple=True, type=click.Choice(CAMPAIGN_STATUSES) ) @click.option( "--yandex-campaigns-campaign-payment-status", - "yandex_campaign_payment_statuses", multiple=True, type=click.Choice(CAMPAIGN_PAYMENT_STATUSES), ) @click.option( "--yandex-campaigns-field-name", - "yandex_fields", multiple=True, type=click.Choice(CAMPAIGN_FIELDS), required=True, diff --git a/ack/readers/yandex_statistics/cli.py b/ack/readers/yandex_statistics/cli.py index 10638cd..5b28357 100644 --- a/ack/readers/yandex_statistics/cli.py +++ b/ack/readers/yandex_statistics/cli.py @@ -39,14 +39,12 @@ def convert(self, value, param, ctx): @click.option("--yandex-statistics-report-language", "yandex_report_language", type=click.Choice(LANGUAGES), default="en") @click.option( "--yandex-statistics-filter", - "yandex_filters", multiple=True, type=click.Tuple([click.Choice(STATS_FIELDS), click.Choice(OPERATORS), STR_LIST_TYPE]), ) @click.option("--yandex-statistics-max-rows", "yandex_max_rows", type=int) @click.option( "--yandex-statistics-field-name", - "yandex_fields", multiple=True, type=click.Choice(STATS_FIELDS), required=True, diff --git a/requirements-dev.txt b/requirements-dev.txt index 512fa5f..31333d9 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,11 +1,11 @@ black==19.10b0 -flake8==3.8.3 -freezegun==0.3.15 +flake8==4.0.1 +freezegun==1.1.0 ipdb -moto==2.0.1 +moto==2.2.12 nose==1.3.7 -parameterized==0.7.1 -pre-commit==2.7.1 -pytest==6.0.1 +parameterized==0.8.1 +pre-commit==2.15.0 +pytest==6.2.5 sphinx sphinx-rtd-theme diff --git a/requirements.txt b/requirements.txt index dfda111..6a8d68d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,68 +1,68 @@ addressable==1.4.2 -boto3==1.10.34 -botocore==1.13.34 -cachetools==3.1.1 -certifi==2019.11.28 -chardet==3.0.4 -Click==7.0 -colorama==0.4.3 +boto3==1.19.9 +botocore==1.22.9 +cachetools==4.2.4 +certifi==2021.10.8 +chardet==4.0.0 +Click==8.0.3 +colorama==0.4.4 curlify==2.2.1 docopt==0.6.2 -docutils==0.15.2 -facebook-business==12.0.0 -google-api-core==1.14.3 -google-api-python-client==1.4.2 -google-auth==1.28.0 -google-auth-httplib2==0.0.3 -google-cloud-bigquery==1.22.0 -google-cloud-core==1.1.0 -google-cloud-storage==1.23.0 -google-resumable-media==0.5.0 +docutils==0.18 +facebook-business==12.0.1 +google-api-core==2.2.2 +google-api-python-client==2.29.0 +google-auth==2.3.3 +google-auth-httplib2==0.1.0 +google-cloud-bigquery==2.29.0 +google-cloud-core==2.1.0 +google-cloud-storage==1.42.3 +google-resumable-media==2.1.0 googleanalytics==0.26.0 -googleapis-common-protos==1.6.0 -gspread==3.1.0 -hiredis==1.0.1 -httplib2==0.19.0 -idna==2.8 +googleapis-common-protos==1.53.0 +gspread==4.0.1 +hiredis==2.0.0 +httplib2==0.20.2 +idna==3.3 inspect-it==0.3.2 -Jinja2==2.11.3 -jmespath==0.9.4 -keyring==5.3 -lxml==4.6.3 -MarkupSafe==1.1.1 -more-itertools==8.0.2 +Jinja2==3.0.2 +jmespath==0.10.0 +keyring==23.2.1 +lxml==4.6.4 +MarkupSafe==2.0.1 +more-itertools==8.10.0 num2words==0.5.10 -numpy==1.21.2 -oauth2client==1.5.2 -prettytable==0.7.2 -protobuf==3.11.1 +numpy==1.21.3 +oauth2client==4.1.3 +prettytable==2.4.0 +protobuf==3.19.1 pyasn1==0.4.8 -pyasn1-modules==0.2.7 -pycountry==19.8.18 -pylev==1.3.0 -PyMySQL==0.9.3 -python-dateutil==2.8.0 -pytz==2019.3 -PyYAML==5.4 +pyasn1-modules==0.2.8 +pycountry==20.7.3 +pylev==1.4.0 +PyMySQL==1.0.2 +python-dateutil==2.8.2 +pytz==2021.3 +PyYAML==6.0 radarly-py==1.0.10 -redis==3.3.11 -requests==2.22.0 +redis==3.5.3 +requests==2.26.0 requests-toolbelt==0.9.1 rsa==4.7.2 -s3transfer==0.2.1 -six==1.13.0 +s3transfer==0.5.0 +six==1.16.0 snakify==1.1.1 -SQLAlchemy==1.3.11 -tenacity==6.0.0 -unicode-slugify==0.1.3 -Unidecode==1.1.1 -uritemplate==3.0.0 -urllib3==1.25.10 -Werkzeug==0.16.0 -googleads==22.0.0 -twitter-ads==9.0.0 -pyjwt==1.7.1 -cryptography==3.3.2 +SQLAlchemy==1.4.26 +tenacity==8.0.1 +unicode-slugify==0.1.5 +Unidecode==1.3.2 +uritemplate==4.1.1 +urllib3==1.26.7 +Werkzeug==2.0.2 +googleads==29.0.0 +twitter-ads==9.0.1 +pyjwt==2.3.0 +cryptography==35.0.0 bs4==0.0.1 pydantic==1.8.2 -azure-storage-blob==12.8.0 +azure-storage-blob==12.9.0