Skip to content

Releases: youtype/mypy_boto3_builder

7.19.0 - Offline First

07 Sep 11:08
172fd5b
Compare
Choose a tag to compare

Notes

Hello, fellow citizens!

Starting from this version, --no-smart-version flag allows you to run the builder in offline mode. Thanks to @mbalatsko for this change!

Keep sending me bug reports and feature requests, I am all for it.

Keep on keeping on!

Changed

  • [builder] --no-smart-version flag prevents pulling package data from PyPI to allow running in offline mode (implemented by @mbalatsko in #225)

Fixed

  • [all] New docstring wrapper to avoid breaking MarkDown links in botocore docstrings
  • [pca-connector-ad] Fixed invalid escaping in docstrings

7.18.2

30 Aug 09:30
0f73ecf
Compare
Choose a tag to compare

Fixed

  • [all] String shapes are no longer interpreted as Dict[str, Any] (reported by @sodul in #223)

7.18.1

29 Aug 11:53
998a517
Compare
Choose a tag to compare

Fixed

  • [all] String shapes with a pattern are converted to Dict[str, Any] only if pattern fully matches JSON parsing pattern
  • [sts] Fixed Client.get_caller_identity type annotations (reported by @Wurstnase in #222)

7.18.0 - Pydantic Typing

28 Aug 12:20
b9cebf4
Compare
Choose a tag to compare

Notes

G'day!

Finally, boto3-stubs is fully compatible with pydantic 2.x. TypedDict, Literal, and NotRequired are imported from typing_extensions for Python 3.7 - 3.11. However, no code changes are required on your side. The only change is that your py37-py311 projects will now depend on typing_extensions

With pydantic 2.x support, we can finally switch to a new TypedDict rendering with a NotRequired type annotation wrapper. This change decreased type_defs.py size by 10% and overall looks nicer.

Since the changes are quite big, please report any bugs that you encounter, and do not forget to request new features.

Keep on keeping on!

Changed

  • [all] Literal and TypedDict are imported from typing_extensions for py311 and below (suggested by @tobni in #221)
  • [all] Switched to a new TypedDict renderer
  • [all] New detection and replacement logic for self-referencing TypeDefs

Fixed

  • [all] Potential incorrect imports for Union-only TypeDefs
  • [builder] Speed up required import mapping

7.17.3

16 Aug 15:13
4664b54
Compare
Choose a tag to compare

Fixed

  • [dynamodb] Waiters and Paginators use separate type maps (reported by @Weber-Tr in #217)
  • [iam] String shapes are handled as JSON objects in they have JSON pattern
  • [s3] Mark arguments as optional properly in injected methods (reported by @caner-cetin in #218)

7.17.2

04 Aug 11:11
ed39626
Compare
Choose a tag to compare

Fixed

  • [docs] Removed TypeDefs list from service docs to shorten readmes (reported by @kevinnowland in #215)
  • [dynamodb] Replaced TableAttributeValueTypeDef with AttributeValueTypeDef in outputs other than ServiceResource and Table (reported by @BrentSouza in #216)

7.17.1

01 Aug 10:56
55ba622
Compare
Choose a tag to compare

Fixed

  • [builder] Removed dependency on typing_extensions

7.17.0 - Touching Re-Union

01 Aug 10:41
8f9955c
Compare
Choose a tag to compare

Notes

As you know, the builder not only generates type annotations, but it also supplies tons of TypeDefs that you can use in your code for type checking. Starting from this release TypeDefs not only generated for TypedDicts to help you with method inputs and outputs, but they also include named Unions!

This is especially helpful for dynamodb service because it has a complex TableAttributeTypeDef Union. However, I added support for all Unions, even for small ones, even for the ones added in version 7.16.0 to merge input and output shapes! Just import them from <service_name>.type_defs and start using them in your projects!

Small usage example just for you:

import boto3
from mypy_boto3_s3.type_defs import BlobTypeDef, PutObjectOutputTypeDef

# BlobTypeDef is a Union[str, bytes, IO[Any], botocore.response.StreamingBody]
# let's use it in our function!

def put_object(body: BlobTypeDef) -> PutObjectOutputTypeDef:
    s3_client = boto3.client("s3")
    return s3_client.put_object(body=body)

Keep on keeping on!

Added

  • [services] All Unions now have named type annotations in type_defs.py (requested by @perlow in #196)
  • [builder] TypeUnion type annotation to support named Unions
  • [builder] TypeDefSortable protocol to topologically sort both TypedDicts and Unions
  • [docs] Added named Unions support

Changed

  • [docs] TypeDef usage examples were removed to make docs lighter

Fixed

  • [builder] Formatting with black and isort uses temp path
  • [builder] Moved reusable templates to templates/common
  • [dynamodb] Replace AttributeValueTypeDef with TableAttributeValueTypeDef in Table methods output (reported by @fizyk in #210)
  • [iam] Fixed PolicyDocumentTypeDef with hardcode, bug in botocore (reported by @skeggsein #212)

7.16.2

29 Jul 08:28
14bdbc5
Compare
Choose a tag to compare

Fixed

  • [builder] All method arguments accept both input and output shapes (reported by @potiuk in #209)

Updated packages

  • mypy-boto3-appflow 1.28.15.post1
  • mypy-boto3-dynamodb 1.28.15.post1

7.16.1

28 Jul 12:32
90f5a46
Compare
Choose a tag to compare

Fixed

  • [builder] TypedDict topological sort now always succeeds (fallback to alphabetical sort is still here just in case)
  • [builder] Fixed infinite loop on TypedDict comparison
  • [builder] TypedDict sorting is now consistent and should
  • [types-aiobotocore] Added ServiceResource import to library top level __init__.py