From c2402340e5d023919f5002d0fba5632605d5b175 Mon Sep 17 00:00:00 2001 From: Vlad Emelianov Date: Thu, 21 Nov 2024 15:01:44 +0300 Subject: [PATCH] Remove most of boto3 imports --- .../parsers/service_resource_parser.py | 3 +-- mypy_boto3_builder/postprocessors/aiobotocore.py | 15 ++++++++------- mypy_boto3_builder/structures/collection.py | 10 +++++++--- mypy_boto3_builder/structures/resource_record.py | 5 ++--- mypy_boto3_builder/structures/service_resource.py | 7 ++----- .../type_maps/service_stub_map/s3.py | 4 ++-- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/mypy_boto3_builder/parsers/service_resource_parser.py b/mypy_boto3_builder/parsers/service_resource_parser.py index efeedec1..92f5a49b 100644 --- a/mypy_boto3_builder/parsers/service_resource_parser.py +++ b/mypy_boto3_builder/parsers/service_resource_parser.py @@ -4,7 +4,6 @@ Copyright 2024 Vlad Emelianov """ -from boto3.resources.base import ResourceMeta from boto3.resources.model import ResourceModel from mypy_boto3_builder.constants import SERVICE_RESOURCE @@ -143,7 +142,7 @@ def _parse_methods(self) -> list[Method]: def _get_resource_meta_class(self) -> ClassRecord: return ClassRecord( name=f"{self.service_name.class_name}ResourceMeta", - bases=[ExternalImport.from_class(ResourceMeta)], + bases=[ExternalImport(ImportString("boto3", "resources", "base"), "ResourceMeta")], attributes=[ Attribute( "client", diff --git a/mypy_boto3_builder/postprocessors/aiobotocore.py b/mypy_boto3_builder/postprocessors/aiobotocore.py index 91cf1a95..42ec308c 100644 --- a/mypy_boto3_builder/postprocessors/aiobotocore.py +++ b/mypy_boto3_builder/postprocessors/aiobotocore.py @@ -7,9 +7,6 @@ from collections.abc import Iterable, Iterator, Mapping from typing import Final -from boto3.dynamodb.table import BatchWriter, TableResource -from boto3.resources.base import ServiceResource -from boto3.resources.collection import ResourceCollection from botocore.client import BaseClient from botocore.config import Config from botocore.eventstream import EventStream @@ -77,22 +74,26 @@ class AioBotocorePostprocessor(BasePostprocessor): ImportString("aiobotocore", "client"), "AioBaseClient", ), - ExternalImport.from_class(ServiceResource): ExternalImport( + ExternalImport( + ImportString("boto3", "resources", "base"), "ServiceResource" + ): ExternalImport( ImportString("aioboto3", "resources", "base"), "AIOBoto3ServiceResource", safe=True, ), - ExternalImport.from_class(ResourceCollection): ExternalImport( + ExternalImport( + ImportString("boto3", "resources", "collection"), "ResourceCollection" + ): ExternalImport( ImportString("aioboto3", "resources", "collection"), "AIOResourceCollection", safe=True, ), - ExternalImport.from_class(BatchWriter): ExternalImport( + ExternalImport(ImportString("boto3", "dynamodb", "table"), "BatchWriter"): ExternalImport( ImportString("aioboto3", "dynamodb", "table"), "BatchWriter", safe=True, ), - ExternalImport.from_class(TableResource): ExternalImport( + ExternalImport(ImportString("boto3", "dynamodb", "table"), "TableResource"): ExternalImport( ImportString("aioboto3", "dynamodb", "table"), "CustomTableResource", safe=True, diff --git a/mypy_boto3_builder/structures/collection.py b/mypy_boto3_builder/structures/collection.py index 2b6816b6..91220dbe 100644 --- a/mypy_boto3_builder/structures/collection.py +++ b/mypy_boto3_builder/structures/collection.py @@ -6,9 +6,8 @@ from collections.abc import Iterator -from boto3.resources.collection import ResourceCollection - from mypy_boto3_builder.constants import SERVICE_RESOURCE +from mypy_boto3_builder.import_helpers.import_string import ImportString from mypy_boto3_builder.service_name import ServiceName from mypy_boto3_builder.structures.class_record import ClassRecord from mypy_boto3_builder.type_annotations.external_import import ExternalImport @@ -33,7 +32,12 @@ def __init__( super().__init__( name=name, use_alias=True, - bases=[ExternalImport.from_class(ResourceCollection)], + bases=[ + ExternalImport( + ImportString("boto3", "resources", "collection"), + "ResourceCollection", + ) + ], ) self.service_name = service_name self.attribute_name = attribute_name diff --git a/mypy_boto3_builder/structures/resource_record.py b/mypy_boto3_builder/structures/resource_record.py index 2ff8ce20..170d4f3c 100644 --- a/mypy_boto3_builder/structures/resource_record.py +++ b/mypy_boto3_builder/structures/resource_record.py @@ -7,8 +7,7 @@ from collections.abc import Iterator from typing import TYPE_CHECKING -from boto3.resources.base import ServiceResource as Boto3ServiceResource - +from mypy_boto3_builder.import_helpers.import_string import ImportString from mypy_boto3_builder.service_name import ServiceName from mypy_boto3_builder.structures.class_record import ClassRecord from mypy_boto3_builder.type_annotations.external_import import ExternalImport @@ -26,7 +25,7 @@ class ResourceRecord(ClassRecord): def __init__(self, name: str, service_name: ServiceName) -> None: super().__init__( name=name, - bases=[ExternalImport.from_class(Boto3ServiceResource)], + bases=[ExternalImport(ImportString("boto3", "resources", "base"), "ServiceResource")], use_alias=True, ) self.service_name: ServiceName = service_name diff --git a/mypy_boto3_builder/structures/service_resource.py b/mypy_boto3_builder/structures/service_resource.py index 83bf90a5..0b18cb17 100644 --- a/mypy_boto3_builder/structures/service_resource.py +++ b/mypy_boto3_builder/structures/service_resource.py @@ -7,9 +7,6 @@ from collections.abc import Iterator from typing import TYPE_CHECKING -from boto3.resources.base import ResourceMeta -from boto3.resources.base import ServiceResource as Boto3ServiceResource - from mypy_boto3_builder.enums.service_module_name import ServiceModuleName from mypy_boto3_builder.exceptions import StructureError from mypy_boto3_builder.import_helpers.import_string import ImportString @@ -39,7 +36,7 @@ def __init__( self.resource_meta_class = self._get_resource_meta_class(service_name) super().__init__( name=name, - bases=[ExternalImport.from_class(Boto3ServiceResource)], + bases=[ExternalImport(ImportString("boto3", "resources", "base"), "ServiceResource")], ) self.service_name = service_name self.collections: list[Collection] = [] @@ -68,7 +65,7 @@ def get_class_name(service_name: ServiceName) -> str: def _get_resource_meta_class(self, service_name: ServiceName) -> ClassRecord: return ClassRecord( name=f"{service_name.class_name}ResourceMeta", - bases=[ExternalImport.from_class(ResourceMeta)], + bases=[ExternalImport(ImportString("boto3", "resources", "base"), "ResourceMeta")], attributes=[ Attribute( "client", diff --git a/mypy_boto3_builder/type_maps/service_stub_map/s3.py b/mypy_boto3_builder/type_maps/service_stub_map/s3.py index 29c11f0d..3e83b812 100644 --- a/mypy_boto3_builder/type_maps/service_stub_map/s3.py +++ b/mypy_boto3_builder/type_maps/service_stub_map/s3.py @@ -4,9 +4,9 @@ Copyright 2024 Vlad Emelianov """ -from boto3.s3.transfer import TransferConfig from botocore.client import BaseClient +from mypy_boto3_builder.import_helpers.import_string import ImportString from mypy_boto3_builder.structures.argument import Argument from mypy_boto3_builder.structures.method import Method from mypy_boto3_builder.type_annotations.external_import import ExternalImport @@ -25,7 +25,7 @@ config_arg = Argument( "Config", - get_optional(ExternalImport.from_class(TransferConfig)), + get_optional(ExternalImport(ImportString("boto3", "s3", "transfer"), "TransferConfig")), Type.Ellipsis, )