Releases: aws/aws-iot-device-sdk-python-v2
Remove Python 2 support
- MAJOR CHANGE: Remove support for Python 2, Python 2.7 was end of life Jan 1, 2020.
- MAJOR CHANGE: Stop releasing wheels for Python 3.4, which was end of life in 2019.
- DOCS: Update docstrings, publish docs to https://aws.github.io/aws-iot-device-sdk-python-v2/
Upgrading CRT version
- API CHANGE: awscrt.auth.AwsSigningConfig.signed_body_value is now a string instead of an enum.
- API CHANGE: Added check for iOS platform
- BUGFIX: websocket no longer hangs if CLOSE frame cannot be sent.
- BUGFIX: Fixes a crash when shutting down an mqtt connection with an incomplete request with no callback from aws-c-mqtt
fix race condition & possible momery leak from dependency
udpate crt-python to 0.6.2 (#97) Co-authored-by: Dengke Tang <[email protected]>
Bug fixes
- fixes a variety of bugs, including
-
- publish and unsubscribe callbacks not surfacing errors
-
- ECS credentials provider crash
- Updated README and sample-specific README
- Updated sample client ids to a common pattern across all SDK samples
Fix 1.2.x backwards compatibility issues
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
Update awscrt
dependency to 0.6.0, which brings in API changes to awscrt.auth
NamedShadow release
v1.2.0 NamedShadow import (#76)
Fleet Provisioning API
Fleetprovisioning (#58)
Fleet provisioning
Co-authored-by: Justin Boswell [email protected]
Update Jobs API with missing parameter
- Adds missing parameter to UpdateJobExecution
Upgrade awscrt to version 0.5.13
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.