Skip to content

Releases: aws-powertools/powertools-lambda-python

v1.25.8

21 Apr 12:23
d509c37
Compare
Choose a tag to compare

Summary

This patch release updates jmespath marker to address a dependency conflict for customers bundling the latest version of boto3, as part of their Lambda deployment package. Boto's latest version upgraded jmespath to 1.0 which drops support for Python 3.6.

Changes

📜 Documentation updates

🐛 Bug and hot fixes

🔧 Maintenance

This release was made possible by the following contributors:

@Dunedan, @dependabot, @dependabot[bot], @heitorlessa, @corey-cole, @sthulb, and @michaelbrewer

v1.25.7

08 Apr 16:42
5a928e7
Compare
Choose a tag to compare

Summary

This patch release addresses bugs on Logger, Event Handler REST API, Idempotency, and a static type annotation on middleware factory utility.

We also updated our issues to use the new GitHub Issue Form, including a new Ask a Question, and Static typing mismatch report. The latter addresses an increase of bug reports that are better categorized as static typing mismatch - this will help us understand whether we might be able to support both Mypy and Pyright in the future.

image

Logger

Thanks to @eliasbrange, customers using clear_state=True will no longer be affected by custom keys being accidentally removed in subsequent invocations - a regression introduced two releases ago. We improved tests on clear_state functionality.

Idempotency

Thanks to @ojongerius, customers changing the incoming event within the Lambda handler will no longer impact idempotency hash calculation. This was caused by Python's default pass by reference behaviour.

Event Handler REST API

Thanks to @sthuber90, customers receiving API calls that contain whitespace in path parameters - /customer/power tools - will no longer return 404s. Despite API Gateway correctly decoding whitespace, our regex for safe and unsafe URI chars missed an explicit whitespace.

Middleware Factory

Thanks to @huonw, Mypy customers using --strict mode will no longer complain about the return type of custom decorators using lambda_handler_decorator. It's a hard problem to solve considering our support for Python 3.6+. Later in the year, we'll look into the value-effort ratio of supporting strict mode, and how to gradually bring typing_extensions package across the board.

Huge thanks to new contributors: @sthuber90, @eliasbrange, and @ojongerius

Changes

🐛 Bug and hot fixes

  • fix(api_gateway): allow whitespace in routes' path parameter (#1099) by @sthuber90
  • fix(middleware_factory): ret type annotation for handler dec (#1066) by @huonw
  • fix(logger): clear_state should keep custom key formats (#1095) by @eliasbrange
  • fix(idempotency): pass by value on idem key to guard inadvertent mutations (#1090) by @ojongerius

This release was made possible by the following contributors:

@eliasbrange, @heitorlessa, @huonw, @mergify[bot], @ojongerius and @sthuber90

v1.25.6

01 Apr 07:30
2357c06
Compare
Choose a tag to compare

Summary

This patch release fixes a regression in Logger introduced in 1.25.3 when using clear_state=True. A fix for customer formatters introduced in 1.25.3 ended up introducing a regression, where standard keys like level, location and timestamp no longer being present when using clear_state=True for the default Logger formatter.

Thanks to @alexanderluiscampino for a high quality bug report, and @HAK-CODE for confirming the issue two hours ago, we managed to reproduce it quickly, improved our tests, and thus making this emergency release.

Changes

🐛 Bug and hot fixes

  • fix(logger): clear_state regression on absent standard keys (#1088) by @heitorlessa

This release was made possible by the following contributors:

@heitorlessa and @mergify[bot]

v1.25.5

18 Mar 11:16
8332a96
Compare
Choose a tag to compare

Summary

Thanks to @DandyDev, this emergency release fixes a regression on logger utils to clone formatting configuration from Powertools Logger to external Loggers.

Changes

🐛 Bug and hot fixes

  • fix(logger-utils): regression on exclude set leading to no formatter (#1080) by @mploski

This release was made possible by the following contributors:

@heitorlessa, @mergify[bot] and @mploski

v1.25.4

17 Mar 17:07
64ab0b7
Compare
Choose a tag to compare

Summary

This is a patch release for those using Logger utils to clone Lambda Powertools Logger configuration to all existing Python Loggers.

Thanks to @DandyDev for spotting a log duplication for external loggers, and for @mploski for helping fix it.

Changes

🐛 Bug and hot fixes

  • fix(logger-utils): ensure external loggers doesn't propagate logs on config copy (#1075) by @mploski

This release was made possible by the following contributors:

@heitorlessa, @mploski and Michal Ploski

1.25.3

09 Mar 11:13
1394d00
Compare
Choose a tag to compare

Summary

This patch release is strictly about customers bringing their own Logging Formatter.

This release ensures that when using Clear State with a custom formatter, all previously added keys will be cleared. It also guarantees that Lambda Context information will no longer be cleared abruptly before logs are printed (also for custom formatters).

There is no code change needed on customers end. We also improved the documentation to clarify the most common use cases on bringing your own formatter, and exceptional cases where you want to replace the entire Powertools Logger Formatter logic.

Huge thanks to @jacobdarrossi for spotting, and @ilias-at-adarma for confirming this bug.

Changes

📜 Documentation updates

🐛 Bug and hot fixes

This release was made possible by the following contributors:

@dreamorosi and @heitorlessa

v1.25.2

07 Mar 15:53
2a3ff9a
Compare
Choose a tag to compare

Summary

This patch release addresses two main bugs: 1/ API Gateway Lambda Authorizer data class regex to validate for proxy resources (proxy+), and 2/ metrics to be automatically flushed when a single metric has 100 values.

Next release will focus on two newly identified bugs on Logger (custom formatter, child logger). Subsequently, our bandwidth remains focused on addressing the subpar experiences and operational excellence.

Changes

📜 Documentation updates

  • docs(parser): APIGatewayProxyEvent to APIGatewayProxyEventModel (#1061) by @darnley
  • fix(event_handler): docs snippets, high-level import CorsConfig (#1019) by @michaelbrewer

🐛 Bug and hot fixes

🔧 Maintenance

This release was made possible by the following contributors:

@darnley, @dependabot, @dependabot[bot], @heitorlessa, @knightjoel and @michaelbrewer

v1.25.1

14 Feb 08:40
c2f198a
Compare
Choose a tag to compare

Summary

Emergency release to fix a critical bug in the new BatchProcessor feature spotted by Huon Wilson@huonw, and thanks to @michaelbrewer for the quick fix. The issue was exceptions not being consistently cleared between invocations (cold vs warm state).

Changes

🐛 Bug and hot fixes

This release was made possible by the following contributors:

@heitorlessa, @mergify[bot] and @michaelbrewer

v1.25.0

09 Feb 16:29
40c8b71
Compare
Choose a tag to compare

Summary

This release continues to focus on addressing suboptimal experiences (a.k.a papercuts).

But first... big thanks to our first time contributors @am1ru1, @houbie - thank you for helping us improve everyone's experience!

Major improvements you should know

  1. Fully mypy compliant. After a multi-month task addressing over 600 issues, Mypy users can accurately use all 14 utilities typing annotations - thanks @mploski for getting us to the finishing line!
  2. New specialized Event Handler Resolvers. When using ApiGatewayResolver to access event properties, customers didn't have full IntelliSense support from their IDEs. This release introduces APIGatewayRestResolver, APIGatewayHttpResolver, and ALBResolver to accurately provide self-documented access to all properties available - big thanks to @michaelbrewer.
  3. Testing your code docs. We've updated Parameters & Event Handler GraphQL docs to be more realistic on how you can unit test your code - thanks to @cakepietoast

Roadmap changes

We're going to fully turn our attention to our list of papercuts. Due to new features and other bugs, we let it slip a couple of times, one being as old as ~7 months. We also learned that a central roadmap didn't work well for us. It made planning harder due to the split view (2x repos to look at) situation despite its best intentions.

With GitHub's new Beta projects, we're confident we can migrate the roadmap back to each repository and give the visibility customers have been asking us. That is work we're currently doing, themes that need further research, areas we'd love contributions, and ideas we'd love to execute but lack bandwidth.

Once this is complete, we will start a draft RFC of what a modularized Powertools v2 could look like. We will take everyone's input as much as possible to help shape what breaking changes are necessary, how we might facilitate new utilities like Testing, and what an early beta as well as migration guide should look like.

Changes

🌟New features and non-breaking changes

  • feat(event-handler): new resolvers to fix current_event typing (#978) by @michaelbrewer
  • feat(logger): log_event support event data classes (e.g. S3Event) (#984) by @michaelbrewer
  • feat(mypy): complete mypy support for the entire codebase (#943) by @mploski

📜 Documentation updates

  • docs: fix syntax errors and line highlights (#1004) by @michaelbrewer
  • docs(parameters): add testing your code section (#1017) by @cakepietoast
  • docs(theme): upgrade mkdocs-material to 8.x (#1002) by @heitorlessa
  • docs(event-handler): improve testing section for graphql (#996) by @cakepietoast
  • docs(tutorial): fix broken internal links (#1000) by @heitorlessa
  • feat(event-handler): new resolvers to fix current_event typing (#978) by @michaelbrewer
  • fix(docs): indentation in tutorial snippets (#988) by @am1ru1
  • fix(apigateway): remove indentation in debug_mode (#987) by @heitorlessa

🐛 Bug and hot fixes

  • fix(batch): delete >10 messages in legacy sqs processor (#818) by @whardier
  • fix(logger): exclude source_logger in copy_config_to_registered_loggers (#1001) by @houbie
  • feat(event-handler): new resolvers to fix current_event typing (#978) by @michaelbrewer
  • fix(logger): test generates logfile (#971) by @michaelbrewer
  • fix(docs): indentation in tutorial snippets (#988) by @am1ru1
  • fix(apigateway): remove indentation in debug_mode (#987) by @heitorlessa

🔧 Maintenance

This release was made possible by the following contributors:

@am1ru1, @cakepietoast, @dependabot, @dependabot[bot], @heitorlessa, @houbie, @mergify[bot], @michaelbrewer, @mploski and @whardier

v1.24.2

21 Jan 07:40
9b02a9a
Compare
Choose a tag to compare

Summary

Quick patch release to fix an issue with API Gateway Authorizer in Event Source Data Classes not supporting resource names using _. It's an old bug in the original blueprint this code was based on. However, it prevents anyone from having a _ in the resource name get_something which is significant enough to warrant a patch release for that alone.

Thanks to Chris Elkin for raising and @michaelbrewer for the quick fix (as always).

Changes

🐛 Bug and hot fixes

  • fix(data-classes): underscore support in api gateway authorizer resource name (#969) by @michaelbrewer

This release was made possible by the following contributors:

@heitorlessa, @mergify[bot] and @michaelbrewer