diff env/lib/python3.7/site-packages/boto/endpoints.py @ 5:9b1c78e6ba9c draft default tip

"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
author shellac
date Mon, 01 Jun 2020 08:59:25 -0400
parents 79f47841a781
children
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/boto/endpoints.py	Thu May 14 16:47:39 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,239 +0,0 @@
-# Copyright 2016 Amazon.com, Inc. or its affiliates. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"). You
-# may not use this file except in compliance with the License. A copy of
-# the License is located at
-#
-# http://aws.amazon.com/apache2.0/
-#
-# or in the "license" file accompanying this file. This file is
-# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
-# ANY KIND, either express or implied. See the License for the specific
-# language governing permissions and limitations under the License.
-import boto.vendored.regions.regions as _regions
-
-
-class _CompatEndpointResolver(_regions.EndpointResolver):
-    """Endpoint resolver which handles boto2 compatibility concerns.
-
-    This is NOT intended for external use whatsoever.
-    """
-
-    _DEFAULT_SERVICE_RENAMES = {
-        # The botocore resolver is based on endpoint prefix.
-        # These don't always sync up to the name that boto2 uses.
-        # A mapping can be provided that handles the mapping between
-        # "service names" and endpoint prefixes.
-        'awslambda': 'lambda',
-        'cloudwatch': 'monitoring',
-        'ses': 'email',
-        'ec2containerservice': 'ecs',
-        'configservice': 'config',
-    }
-
-    def __init__(self, endpoint_data, service_rename_map=None):
-        """
-        :type endpoint_data: dict
-        :param endpoint_data: Regions and endpoints data in the same format
-            as is used by botocore / boto3.
-
-        :type service_rename_map: dict
-        :param service_rename_map: A mapping of boto2 service name to
-            endpoint prefix.
-        """
-        super(_CompatEndpointResolver, self).__init__(endpoint_data)
-        if service_rename_map is None:
-            service_rename_map = self._DEFAULT_SERVICE_RENAMES
-        # Mapping of boto2 service name to endpoint prefix
-        self._endpoint_prefix_map = service_rename_map
-        # Mapping of endpoint prefix to boto2 service name
-        self._service_name_map = dict(
-            (v, k) for k, v in service_rename_map.items())
-
-    def get_available_endpoints(self, service_name, partition_name='aws',
-                                allow_non_regional=False):
-        endpoint_prefix = self._endpoint_prefix(service_name)
-        return super(_CompatEndpointResolver, self).get_available_endpoints(
-            endpoint_prefix, partition_name, allow_non_regional)
-
-    def get_all_available_regions(self, service_name):
-        """Retrieve every region across partitions for a service."""
-        regions = set()
-        endpoint_prefix = self._endpoint_prefix(service_name)
-
-        # Get every region for every partition in the new endpoint format
-        for partition_name in self.get_available_partitions():
-            if self._is_global_service(service_name, partition_name):
-                # Global services are available in every region in the
-                # partition in which they are considered global.
-                partition = self._get_partition_data(partition_name)
-                regions.update(partition['regions'].keys())
-                continue
-            else:
-                regions.update(
-                    self.get_available_endpoints(
-                        endpoint_prefix, partition_name)
-                )
-
-        return list(regions)
-
-    def construct_endpoint(self, service_name, region_name=None):
-        endpoint_prefix = self._endpoint_prefix(service_name)
-        return super(_CompatEndpointResolver, self).construct_endpoint(
-            endpoint_prefix, region_name)
-
-    def get_available_services(self):
-        """Get a list of all the available services in the endpoints file(s)"""
-        services = set()
-
-        for partition in self._endpoint_data['partitions']:
-            services.update(partition['services'].keys())
-
-        return [self._service_name(s) for s in services]
-
-    def _is_global_service(self, service_name, partition_name='aws'):
-        """Determines whether a service uses a global endpoint.
-
-        In theory a service can be 'global' in one partition but regional in
-        another. In practice, each service is all global or all regional.
-        """
-        endpoint_prefix = self._endpoint_prefix(service_name)
-        partition = self._get_partition_data(partition_name)
-        service = partition['services'].get(endpoint_prefix, {})
-        return 'partitionEndpoint' in service
-
-    def _get_partition_data(self, partition_name):
-        """Get partition information for a particular partition.
-
-        This should NOT be used to get service endpoint data because it only
-        loads from the new endpoint format. It should only be used for
-        partition metadata and partition specific service metadata.
-
-        :type partition_name: str
-        :param partition_name: The name of the partition to search for.
-
-        :returns: Partition info from the new endpoints format.
-        :rtype: dict or None
-        """
-        for partition in self._endpoint_data['partitions']:
-            if partition['partition'] == partition_name:
-                return partition
-        raise ValueError(
-            "Could not find partition data for: %s" % partition_name)
-
-    def _endpoint_prefix(self, service_name):
-        """Given a boto2 service name, get the endpoint prefix."""
-        return self._endpoint_prefix_map.get(service_name, service_name)
-
-    def _service_name(self, endpoint_prefix):
-        """Given an endpoint prefix, get the boto2 service name."""
-        return self._service_name_map.get(endpoint_prefix, endpoint_prefix)
-
-
-class BotoEndpointResolver(object):
-    """Resolves endpoint hostnames for AWS services.
-
-    This is NOT intended for external use.
-    """
-
-    def __init__(self, endpoint_data, service_rename_map=None):
-        """
-        :type endpoint_data: dict
-        :param endpoint_data: Regions and endpoints data in the same format
-            as is used by botocore / boto3.
-
-        :type service_rename_map: dict
-        :param service_rename_map: A mapping of boto2 service name to
-            endpoint prefix.
-        """
-        self._resolver = _CompatEndpointResolver(
-            endpoint_data, service_rename_map)
-
-    def resolve_hostname(self, service_name, region_name):
-        """Resolve the hostname for a service in a particular region.
-
-        :type service_name: str
-        :param service_name: The service to look up.
-
-        :type region_name: str
-        :param region_name: The region to find the endpoint for.
-
-        :return: The hostname for the given service in the given region.
-        """
-        endpoint = self._resolver.construct_endpoint(service_name, region_name)
-        if endpoint is None:
-            return None
-        return endpoint.get('sslCommonName', endpoint['hostname'])
-
-    def get_all_available_regions(self, service_name):
-        """Get all the regions a service is available in.
-
-        :type service_name: str
-        :param service_name: The service to look up.
-
-        :rtype: list of str
-        :return: A list of all the regions the given service is available in.
-        """
-        return self._resolver.get_all_available_regions(service_name)
-
-    def get_available_services(self):
-        """Get all the services supported by the endpoint data.
-
-        :rtype: list of str
-        :return: A list of all the services explicitly contained within the
-            endpoint data provided during instantiation.
-        """
-        return self._resolver.get_available_services()
-
-
-class StaticEndpointBuilder(object):
-    """Builds a static mapping of endpoints in the legacy format."""
-
-    def __init__(self, resolver):
-        """
-        :type resolver: BotoEndpointResolver
-        :param resolver: An endpoint resolver.
-        """
-        self._resolver = resolver
-
-    def build_static_endpoints(self, service_names=None):
-        """Build a set of static endpoints in the legacy boto2 format.
-
-        :param service_names: The names of the services to build. They must
-            use the names that boto2 uses, not boto3, e.g "ec2containerservice"
-            and not "ecs". If no service names are provided, all available
-            services will be built.
-
-        :return: A dict consisting of::
-            {"service": {"region": "full.host.name"}}
-        """
-        if service_names is None:
-            service_names = self._resolver.get_available_services()
-
-        static_endpoints = {}
-        for name in service_names:
-            endpoints_for_service = self._build_endpoints_for_service(name)
-            if endpoints_for_service:
-                # It's possible that when we try to build endpoints for
-                # services we get an empty hash.  In that case we don't
-                # bother adding it to the final list of static endpoints.
-                static_endpoints[name] = endpoints_for_service
-        self._handle_special_cases(static_endpoints)
-        return static_endpoints
-
-    def _build_endpoints_for_service(self, service_name):
-        # Given a service name, 'ec2', build a dict of
-        # 'region' -> 'hostname'
-        endpoints = {}
-        regions = self._resolver.get_all_available_regions(service_name)
-        for region_name in regions:
-            endpoints[region_name] = self._resolver.resolve_hostname(
-                service_name, region_name)
-        return endpoints
-
-    def _handle_special_cases(self, static_endpoints):
-        # cloudsearchdomain endpoints use the exact same set of endpoints as
-        # cloudsearch.
-        if 'cloudsearch' in static_endpoints:
-            cloudsearch_endpoints = static_endpoints['cloudsearch']
-            static_endpoints['cloudsearchdomain'] = cloudsearch_endpoints