diff --git a/datadog_checks_downloader/datadog_checks/downloader/__init__.py b/datadog_checks_downloader/datadog_checks/downloader/__init__.py index b68ffe4e82f92..760298b859335 100644 --- a/datadog_checks_downloader/datadog_checks/downloader/__init__.py +++ b/datadog_checks_downloader/datadog_checks/downloader/__init__.py @@ -3,6 +3,4 @@ # Licensed under a 3-clause BSD style license (see LICENSE) from .__about__ import __version__ -__all__ = [ - '__version__', -] +__all__ = ['__version__'] diff --git a/datadog_checks_downloader/datadog_checks/downloader/cli.py b/datadog_checks_downloader/datadog_checks/downloader/cli.py index 46ee68b763efe..e76823fcd520d 100644 --- a/datadog_checks_downloader/datadog_checks/downloader/cli.py +++ b/datadog_checks_downloader/datadog_checks/downloader/cli.py @@ -7,17 +7,12 @@ import argparse import re -# 2nd party. -from .download import TUFDownloader -from .exceptions import ( - NonCanonicalVersion, - NonDatadogPackage, - NoSuchDatadogPackageOrVersion, -) - # 3rd party. from tuf.exceptions import UnknownTargetError +# 2nd party. +from .download import TUFDownloader +from .exceptions import NonCanonicalVersion, NonDatadogPackage, NoSuchDatadogPackageOrVersion # Private module functions. @@ -42,14 +37,15 @@ def __get_wheel_distribution_name(standard_distribution_name): def download(): parser = argparse.ArgumentParser() - parser.add_argument('standard_distribution_name', type=str, - help='Standard distribution name of the desired Datadog check.') + parser.add_argument( + 'standard_distribution_name', type=str, help='Standard distribution name of the desired Datadog check.' + ) - parser.add_argument('--version', type=str, default=None, - help='The version number of the desired Datadog check.') + parser.add_argument('--version', type=str, default=None, help='The version number of the desired Datadog check.') - parser.add_argument('-v', '--verbose', action='count', default=0, - help='Show verbose information about TUF and in-toto.') + parser.add_argument( + '-v', '--verbose', action='count', default=0, help='Show verbose information about TUF and in-toto.' + ) args = parser.parse_args() standard_distribution_name = args.standard_distribution_name @@ -68,9 +64,9 @@ def download(): if not __is_canonical(version): raise NonCanonicalVersion(version) - target_relpath = 'simple/{}/{}-{}-py2.py3-none-any.whl'\ - .format(standard_distribution_name, - wheel_distribution_name, version) + target_relpath = 'simple/{}/{}-{}-py2.py3-none-any.whl'.format( + standard_distribution_name, wheel_distribution_name, version + ) try: target_abspath = tuf_downloader.download(target_relpath) diff --git a/datadog_checks_downloader/datadog_checks/downloader/download.py b/datadog_checks_downloader/datadog_checks/downloader/download.py index ba6bfeac80548..c17e6bc33b9b9 100644 --- a/datadog_checks_downloader/datadog_checks/downloader/download.py +++ b/datadog_checks_downloader/datadog_checks/downloader/download.py @@ -12,30 +12,29 @@ import tempfile import tuf.settings -# Turn off TUF file logging. -tuf.settings.ENABLE_FILE_LOGGING = False -# Increase requests timeout. -tuf.settings.SOCKET_TIMEOUT = 60 - -# Import what we need from TUF. -from tuf.client.updater import Updater -from tuf.exceptions import UnknownTargetError # Import what we need from in-toto. from in_toto import verifylib from in_toto.models.metadata import Metablock from in_toto.util import import_public_keys_from_files_as_dict -# After we import everything we neeed, shut off all existing loggers. -logging.config.dictConfig({ - 'disable_existing_loggers': True, - 'version': 1, -}) - # Other 3rd-party imports. # NOTE: We assume that setuptools is installed by default. from pkg_resources import parse_version +# Import what we need from TUF. +from tuf.client.updater import Updater +from tuf.exceptions import UnknownTargetError + +# Exceptions. +from .exceptions import ( + InconsistentSimpleIndex, + MissingVersions, + NoInTotoLinkMetadataFound, + NoInTotoRootLayoutPublicKeysFound, + NoSuchDatadogPackage, +) + # NOTE: A module with a function that substitutes parameters for # in-toto inspections. The function is expected to be called # 'substitute', and takes one parameter, target_relpath, that specifies @@ -46,14 +45,14 @@ # The module is expected to live here. from .parameters import substitute -# Exceptions. -from .exceptions import ( - InconsistentSimpleIndex, - MissingVersions, - NoInTotoLinkMetadataFound, - NoInTotoRootLayoutPublicKeysFound, - NoSuchDatadogPackage, -) +# Turn off TUF file logging. +tuf.settings.ENABLE_FILE_LOGGING = False +# Increase requests timeout. +tuf.settings.SOCKET_TIMEOUT = 60 + + +# After we import everything we neeed, shut off all existing loggers. +logging.config.dictConfig({'disable_existing_loggers': True, 'version': 1}) # CONSTANTS. @@ -66,7 +65,7 @@ 'url_prefix': 'https://dd-integrations-core-wheels-build-stable.datadoghq.com', 'metadata_path': 'metadata.staged', 'targets_path': 'targets', - 'confined_target_dirs': [''] + 'confined_target_dirs': [''], } } @@ -76,8 +75,6 @@ class TUFDownloader: - - def __init__(self, verbose=0): # 0 => 60 (effectively /dev/null) # 1 => 50 (CRITICAL) @@ -110,7 +107,6 @@ def __init__(self, verbose=0): # we use the same consistent snapshot to download targets. self.__updater.refresh() - def __download_in_toto_metadata(self, target): # A list to collect where in-toto metadata targets live. target_relpaths = [] @@ -145,7 +141,6 @@ def __download_in_toto_metadata(self, target): # Return list of where in-toto metadata files live. return target_relpaths - def __update_in_toto_layout_pubkeys(self): ''' NOTE: We assume that all the public keys needed to verify any in-toto @@ -171,7 +166,6 @@ def __update_in_toto_layout_pubkeys(self): return target_relpaths - def __verify_in_toto_metadata(self, target_relpath, in_toto_inspection_packet): # Make a temporary directory in a parent directory we control. tempdir = tempfile.mkdtemp(dir=REPOSITORIES_DIR) @@ -207,7 +201,6 @@ def __verify_in_toto_metadata(self, target_relpath, in_toto_inspection_packet): # Delete temp dir. shutil.rmtree(tempdir) - def __download_and_verify_in_toto_metadata(self, target, target_relpath): in_toto_metadata_relpaths = self.__download_in_toto_metadata(target) @@ -227,7 +220,6 @@ def __download_and_verify_in_toto_metadata(self, target, target_relpath): in_toto_inspection_packet = [target_relpath] + in_toto_metadata_relpaths + pubkey_relpaths self.__verify_in_toto_metadata(target_relpath, in_toto_inspection_packet) - def __get_target(self, target_relpath, download_in_toto_metadata=True): target = self.__updater.get_one_valid_targetinfo(target_relpath) updated_targets = self.__updater.updated_targets((target,), self.__targets_dir) @@ -258,7 +250,6 @@ def __get_target(self, target_relpath, download_in_toto_metadata=True): target_path = os.path.join(self.__targets_dir, target_relpath) return target_path - def download(self, target_relpath, download_in_toto_metadata=True): ''' Returns: @@ -267,7 +258,6 @@ def download(self, target_relpath, download_in_toto_metadata=True): ''' return self.__get_target(target_relpath, download_in_toto_metadata=download_in_toto_metadata) - def get_latest_version(self, standard_distribution_name, wheel_distribution_name): ''' Returns: diff --git a/datadog_checks_downloader/datadog_checks/downloader/exceptions.py b/datadog_checks_downloader/datadog_checks/downloader/exceptions.py index bee5a7e51bf55..0301403eae9e0 100644 --- a/datadog_checks_downloader/datadog_checks/downloader/exceptions.py +++ b/datadog_checks_downloader/datadog_checks/downloader/exceptions.py @@ -7,68 +7,50 @@ class CLIError(Exception): - - def __init__(self, standard_distribution_name): self.standard_distribution_name = standard_distribution_name - def __str__(self): return 'Unexpected CLI error for {}!'.format(self.standard_distribution_name) class InconsistentSimpleIndex(CLIError): - - def __init__(self, href, text): self.href = href self.text = text - def __str__(self): return '{} != {}'.format(self.href, self.text) class MissingVersions(CLIError): - - def __str__(self): return 'No version found for {} !'.format(self.standard_distribution_name) class NonCanonicalVersion(CLIError): - - def __init__(self, version): self.version = version - def __str__(self): return '{} is not a valid PEP 440 version!'.format(self.version) class NonDatadogPackage(CLIError): - - def __str__(self): return '{} is not a Datadog package!'.format(self.standard_distribution_name) class NoSuchDatadogPackage(CLIError): - - def __str__(self): return 'Could not find the {} package!'.format(self.standard_distribution_name) class NoSuchDatadogPackageOrVersion(CLIError): - - def __init__(self, standard_distribution_name, version): super(NoSuchDatadogPackageOrVersion, self).__init__(standard_distribution_name) self.version = version - def __str__(self): return 'Either no {} package, or {} version!'.format(self.standard_distribution_name, self.version) @@ -77,25 +59,18 @@ def __str__(self): class TUFInTotoError(Exception): - - def __init__(self, target_relpath): self.target_relpath = target_relpath - def __str__(self): return 'Unexpected tuf-in-toto error for {}!'.format(self.target_relpath) class NoInTotoLinkMetadataFound(TUFInTotoError): - - def __str__(self): return 'in-toto link metadata expected, but not found for {}!'.format(self.target_relpath) class NoInTotoRootLayoutPublicKeysFound(TUFInTotoError): - - def __str__(self): return 'in-toto root layout public keys expected, but not found for {}!'.format(self.target_relpath) diff --git a/datadog_checks_downloader/datadog_checks/downloader/parameters.py b/datadog_checks_downloader/datadog_checks/downloader/parameters.py index 6e7a5eded3293..e2b94586976e6 100644 --- a/datadog_checks_downloader/datadog_checks/downloader/parameters.py +++ b/datadog_checks_downloader/datadog_checks/downloader/parameters.py @@ -10,12 +10,7 @@ # NOTE: We assume that setuptools is installed by default. from pkg_resources import safe_name - -EXCEPTIONS = { - 'datadog_checks_base', - 'datadog_checks_dev', - 'datadog_checks_downloader', -} +EXCEPTIONS = {'datadog_checks_base', 'datadog_checks_dev', 'datadog_checks_downloader'} def substitute(target_relpath): @@ -43,5 +38,5 @@ def substitute(target_relpath): 'wheel_distribution_name': wheel_distribution_name, 'package_version': package_version, 'package_github_dir': package_github_dir, - 'standard_distribution_name': standard_distribution_name + 'standard_distribution_name': standard_distribution_name, } diff --git a/datadog_checks_downloader/setup.py b/datadog_checks_downloader/setup.py index 89fdbcd5c2f93..4bb99feeef482 100644 --- a/datadog_checks_downloader/setup.py +++ b/datadog_checks_downloader/setup.py @@ -1,10 +1,10 @@ # (C) Datadog, Inc. 2019 # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -from setuptools import setup from codecs import open # To use a consistent encoding from os import path +from setuptools import setup HERE = path.abspath(path.dirname(__file__)) @@ -26,7 +26,6 @@ def get_requirements(fpath): setup( # Version should always match one from an agent release version=ABOUT["__version__"], - name='datadog_checks_downloader', description='The Datadog Checks Downloader', long_description=LONG_DESC, @@ -36,7 +35,6 @@ def get_requirements(fpath): author='Datadog', author_email='packages@datadoghq.com', license='BSD', - # See https://pypi.org/classifiers classifiers=[ 'Development Status :: 5 - Production/Stable', @@ -49,7 +47,6 @@ def get_requirements(fpath): 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', ], - packages=['datadog_checks.downloader'], # NOTE: Copy over TUF directories, and root metadata. package_data={ @@ -61,10 +58,5 @@ def get_requirements(fpath): ] }, include_package_data=True, - - entry_points={ - 'console_scripts': [ - 'datadog-checks-downloader=datadog_checks.downloader.cli:download' - ], - }, + entry_points={'console_scripts': ['datadog-checks-downloader=datadog_checks.downloader.cli:download']}, ) diff --git a/datadog_checks_downloader/tox.ini b/datadog_checks_downloader/tox.ini index a8723e03dc596..c72cb6b8a25e2 100644 --- a/datadog_checks_downloader/tox.ini +++ b/datadog_checks_downloader/tox.ini @@ -3,9 +3,9 @@ minversion = 2.0 skip_missing_interpreters = true envlist = py{27,37} - flake8 [testenv] +dd_check_style = true usedevelop = true deps = -e../datadog_checks_base[deps] @@ -14,13 +14,3 @@ commands = pip install -r requirements.in pytest -vs --log-cli-level=debug - -[testenv:flake8] -skip_install = true -deps = flake8 -commands = flake8 . - -[flake8] -ignore = E303, E402, E722 -exclude = .eggs,.tox,build -max-line-length = 120