
Gambar milik boto3-type-annotations, Allie Fitter
Saat ini, beberapa orang menulis proyek Python besar tanpa jenis anotasi. Ini sederhana dan memungkinkan Anda untuk menangkap banyak kesalahan pada tahap penulisan kode, dan bekerja sangat cerdas. Tetapi perlu menambahkan boto3 sebagai ketergantungan , dan mypy mulai penuh dengan pesan yang mengetik anotasi boto3
yang tidak ada di alam.
, boto3 botostubs. , mypy
.
boto3-type-annotations, , mypy
.
boto3
, ?
mypy
, boto3 1.11.9
EC2, DynamoDB S3. Python 3.6.9 . , , boto3-stubs 1.11.9.x .
pip install boto3-stubs[s3,ec2,dynamodb]==1.11.9.0
python -m mypy_boto3
… ! mypy
, , , boto3
, .
- !
, .
VSCode , . boto3.client
, boto3_session.client
,boto3.resource
, boto3_session.resource
, client.get_waiter
client.get_paginator
.
PyCharm - , 15 , .
import boto3
from mypy_boto3 import dynamodb
client: dynamodb.DynamoDBClient = boto3.client("dynamodb")
client.query("my_table")
import boto3
from mypy_boto3 import s3
client: s3.S3Client = boto3.client("s3")
client.create_bucket(Bucket="bucket")
client.get_object(Bucket="bucket")
client.get_object(Bucket="bucket", Key=None)
resource: s3.S3ServiceResource = boto3.Session(region_name="us-west-1").resource("s3")
bucket = resource.Bucket("bucket")
bucket.upload_file(Filename="my.txt", key="my-txt")
waiter: s3.BucketExistsWaiter = client.get_waiter("bucket_exists")
paginator: s3.ListMultipartUploadsPaginator = client.get_paginator(
"list_multipart_uploads"
)
mypy-boto3-builder - boto3
. boto3
, .
json
- botocore , boto3
.
, , .
post-install , whl-. ?
Karena boto3
banyak metode dan kelas dalam file yang sama disebut sama, untuk operasi anotasi yang benar, modul mengimpor sendiri. Ini tidak berfungsi di Python 3.6.5 dan tidak terlihat sangat bagus. Apa alternatifnya?
Dan akhirnya, jika semuanya baik-baik saja dengan C #, Anda dapat menambahkan dukungan literal ke fungsi-fungsi berlebih untuk Server Bahasa Python sehingga semuanya bekerja di luar kotak di VSCode juga. Saya tidak bisa dan menyerah.
Terimakasih untuk semua!