Comments (6)
On a related note:
import boto3
from mypy_boto3_s3 import S3ServiceResource
from mypy_boto3_s3.service_resource import Bucket
service_resource: S3ServiceResource = boto3.resource("s3")
buckets = service_resource.buckets.pages()
for bucket in buckets:
for m in bucket.multipart_uploads:
reveal_type(m)
for object in bucket.objects:
reveal_type(object)
reveal_type(bucket)
gives the following mypy
output:
s3_service_resource.py:11: note: Revealed type is 'Any'
s3_service_resource.py:13: note: Revealed type is 'Any'
s3_service_resource.py:14: note: Revealed type is 'mypy_boto3_s3.service_resource.Bucket*'
Expected mypy
output is
s3_service_resource.py:11: note: Revealed type is 'mypy_boto3_s3.service_resource.MultiPartUpload'
s3_service_resource.py:13: note: Revealed type is 'mypy_boto3_s3.service_resource.Object'
s3_service_resource.py:14: note: Revealed type is 'mypy_boto3_s3.service_resource.Bucket*'
from mypy_boto3_builder.
An entirely separate issue (I can create it separately if you like, but for DynamoDB you recommended collecting issues on the same Service in one Github Issue):
Describe the bug
mypy_boto3_s3.S3ServiceResource.MultipartUpload
should support Part()
(it should return a mypy_boto3_s3.S3ServiceResource.MultipartUploadPart
, and is the only way to create these AFAIK
To Reproduce
Steps to reproduce the behavior:
- Install 'boto3-stubs[s3]'
- Run mypy on the following code sample
import boto3
from mypy_boto3_s3 import S3ServiceResource
from mypy_boto3_s3.service_resource import Bucket
service_resource: S3ServiceResource = boto3.resource("s3")
multipart_upload = service_resource.MultipartUpload("foo", "bar", "baz")
multipart_upload_part = multipart_upload.Part("1")
multipart_upload.abort()
- Actual mypy output
s3_service_resource.py:8: error: "MultipartUpload" has no attribute "Part"
Found 1 error in 1 file (checked 1 source file)
Expected mypy-output
No Errors (checked 1 source file)
Additional context
Mac OS, pipenv installation, boto3
version 1.12.12, etc.
from mypy_boto3_builder.
Looks like collection-related types are incorrect. It is a bit hard to parse them from botocore shapes, so there are some hardcoded methods. Thank you for your report, I will update e2e tests and try to fix collections.
from mypy_boto3_builder.
Fixes for first two issues are in master. Regarding the third one - looks like I am not adding sub-resources for collections https://boto3.amazonaws.com/v1/documentation/api/1.12.5/reference/services/s3.html#S3.MultipartUpload
from mypy_boto3_builder.
Fixed both issues in new release 1.0.4 . Please update boto3-stubs
and boto3
.
Let me know if it works as it should. Thank you!
from mypy_boto3_builder.
Everything works. Thanks for the very quick response + fix!
from mypy_boto3_builder.
Related Issues (20)
- Shorten package descriptions for compatibility with Azure DevOps mirroring, pipelines HOT 3
- Return type incorrect for DynamoDb Client methods HOT 2
- The query paginator returns unexpected Type QueryOutputTableTypeDef HOT 2
- upload_fileobj types in S3Client are wrong. HOT 3
- Corrupt tarball for mypy-boto3-ec2 on PyPI HOT 2
- Include TypeDef for Cloudwatch Alarms Events from EventBridge HOT 10
- Support configuration of `typing` vs `typing_extensions` HOT 4
- [sts] GetCallerIdentityResponseTypeDef -> Arn should be 'str' but ist dict[str, Any] HOT 3
- GetKeyPolicyResponseTypeDef Policy should be `str` not `Dict[str, Any]` HOT 4
- dynamo: AttributeBase does not include `name` property HOT 2
- Client package ServiceName literal definitions are not necessarily up-to-date HOT 2
- pyright now treats TypedDict field types as invariant instead of covariant resulting in some type checking errors HOT 5
- session.get_credentials() has become optional HOT 2
- ListUserPoolClientsResponseTypeDef : NextToken should be not required HOT 3
- Sub-resources do not inherit correct `.meta.client` type HOT 3
- Misleading return type definition for table.get_item() HOT 2
- S3 ListObjectsV2OutputTypeDef Contents key should be NotRequired HOT 3
- ResponseMetadata attribute being added to EC2 TypeDefs where it doesn't belong HOT 4
- EC2 InstanceTypeDef.Platform Literal incorrectly capitalized HOT 6
- ListObjectVersionsOutputTypeDef CommonPrefixes key can be missing HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mypy_boto3_builder.