Skip to main content

Mypy-friendly boto3 type annotations for elasticache service.

Project description

mypy_boto3

Mypy-friendly type annotations for boto3.

Installation

# install only `mypy_boto3.s3` for S3 service annotations
pip install mypy-boto3[s3]

# or install multiple services
pip install mypy-boto3[s3][ec2]

# or install S3 service with docs
pip install mypy-boto3[s3-with-docs]

# or install all services
pip install mypy-boto3[all]

# or even install all boto3 services annotations
# WARNING: this will eat ~70 MB of space
pip install mypy-boto3[all-with-docs]

Usage

  • Install mypy and optionally enable it in your IDE

  • Install boto3

  • Use mypy-boto3 to annotate your code to discover errors

    import boto3
    
    from mypy_boto3.s3 import Client, ServiceResource
    
    client: Client = boto3.client("s3")
    
    # IDE autocomplete suggests function name and arguemnts here
    client.create_bucket(Bucket="bucket")
    
    # (mypy) error: Missing positional argument "Key" in call to "get_object" of "Client"
    client.get_object(Bucket="bucket")
    
    # (mypy) error: Argument "Key" to "get_object" of "Client" has incompatible type "None"; expected "str"
    client.get_object(Bucket="bucket", Key=None)
    
    # explicitly set type to S3 ServiceResource
    resource: ServiceResource = boto3.Session(region_name="us-west-1").resource("s3")
    
    # IDE autocomplete suggests function name and arguments here
    bucket = resource.Bucket("bucket")
    
    # (mypy) error: Unexpected keyword argument "key" for "upload_file" of "Bucket"
    bucket.upload_file(Filename="my.txt", key="my-txt")
    

How it works

There is also a package mypy-boto3-builder that builds interface files from boto3 documentation.

Differences from boto3-type-annotations

  • Fully type annotated
  • mypy compatibility
  • Generated types for return values and arguments
  • Added ServiceResource sub-collections
  • Support service-specific sub-modules (in progress)
  • CLI interface for builder
  • Modules documentation

What's next

  • Add TypedDict types for arguments and return types to check keys and values
  • Allow installation of sub-modules
  • Always include docs and support them in generated documentation

Thank you

  • Guys behind boto3-type-annotations, this package is based on top of their work
  • black developers for awesome formatting tool
  • mypy for doing all dirty work for us

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for mypy-boto3-elasticache, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size mypy_boto3_elasticache-0.1.1-py3-none-any.whl (6.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size mypy-boto3-elasticache-0.1.1.tar.gz (4.2 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page