Skip to content

Releases: aws/aws-iot-device-sdk-python-v2

Fix 1.2.x backwards compatibility issues

30 Jun 17:10
73a9dc9

Choose a tag to compare

With the 1.2.0 release of the V2 Iot Device SDK for Python, a serious backwards incompatibility was introduced due to an oversight in the code generation for the constructors of service model classes. This release corrects this incompatibility and reworks service model construction with a pattern that will prevent it from happening again. In these notes we detail exactly what happened, who is affected by the breaking change, and how we are addressing it both right now and looking towards the future.

The 1.2.0 (named shadow) release saw the introduction of new APIs to support named shadows, but it also introduced a new parameter, client_token, to the GetShadow and DeleteShadow APIs. The code generator for the constructor for the request and response classes took the list of parameters and sorted them before generating the code. Since client_token comes before thing_name lexically, this resulted in client_token becoming the first parameter to the class constructor. Any programs calling GetShadow or DeleteShadow using thing_name as the first positional parameter were broken by this change (assuming an upgrade to 1.2.0). This includes the shadow sample itself.

Who was affected by this breaking change? Anyone who upgraded to a 1.2.x version of the SDK who had a program that used either the GetShadow or DeleteShadow APIs.

To fix this, we settled on the following solution:

  • All class members are now initializable by keyword args in the class constructor
  • Positional arguments in constructors are still supported, permanently "frozen" against the 1.2.x API model
  • GetShadowRequest and DeleteShadowRequest constructors support positional parameters for both the pre-1.2.x API (thing_name only) and the 1.2.x API (client_token, thing_name)
  • During construction, positional arguments take priority over keyword arguments
  • Moving forward, all newly-added members will only be able to be initialized by keyword arguments

The upgrade to 1.3.x and beyond will not break any working programs built against any version of the SDK and will restore programs that were broken by 1.2.x to a working state.

Going forward, all new parameters to service model class construction will be keyword only. All samples have been updated to reflect this new pattern.

We apologize for this customer-breaking mistake and, in addition to fixing it, we are in the process of improving our CI infrastructure to help prevent breaking changes from reaching our customers again.

awscrt.auth signing API revamp

16 Jun 16:51
1159294

Choose a tag to compare

Update awscrt dependency to 0.6.0, which brings in API changes to awscrt.auth

NamedShadow release

11 Jun 21:58
51c1e2e

Choose a tag to compare

v1.2.0

NamedShadow import (#76)

Fleet Provisioning API

13 May 17:05
dcd9c59

Choose a tag to compare

Fleetprovisioning (#58)

Fleet provisioning
Co-authored-by: Justin Boswell boswej@amazon.com

Update Jobs API with missing parameter

07 Apr 20:21
7960682

Choose a tag to compare

  • Adds missing parameter to UpdateJobExecution

Upgrade awscrt to version 0.5.13

30 Mar 20:56
94457db

Choose a tag to compare

Upgrade awscrt to version 0.5.13

Bugfix:

  • MQTT reconnect timeouts are now honored

HTTP API Change:

  • awscrt.HttpClientStream must have .activate() called before it will begin sending/receiving data.

Upgrade awscrt to version 0.5.11

21 Feb 00:02
907cbde

Choose a tag to compare

Update awscrt to version 0.5.11. Improvements include:

  • MQTT improvements
    • Fix on_connection_resumed callback's return_code argument.
    • Reduce default duration between MQTT keep-alive pings.
    • Drop connection if server CONNACK takes too long.
  • Fix crash-on-exit which was common on Windows.
  • GCC 8 support

Note that awsiotsdk 1.0.4 never publicly released.

Upgrade awscrt to version 0.5.11

20 Feb 22:15
44a67bc

Choose a tag to compare

Update awscrt to version 0.5.11. Improvements include:

  • MQTT improvements
    • Fix on_connection_resumed callback's return_code argument.
    • Reduce default duration between MQTT keep-alive pings.
    • Drop connection if server CONNACK takes too long.
  • Fix crash-on-exit which was common on Windows.
  • GCC 8 support

More wheels, fix samples

04 Dec 00:56
30152d1

Choose a tag to compare

  • Update awscrt dependency, now has wheels for aarch64 and Python3.8
  • Fix samples
    • MQTT connection interrupted/resumed callbacks took wrong args
    • Greengrass sample works with python 2

Fix deployment scripts.

30 Nov 21:41
6208533

Choose a tag to compare

Fix deployment scripts (#29)

* Fixed deployment test scripts.

* Actually increment the version number.