August 2, 2024: V6.0.0
-
Official Cloudbees platform support (No breaking changes)
April 10, 2024: V5.1.3
Fixed analytic sending
March 5, 2024: V5.1.2
Internal release alignment.
January 10, 2024: V5.1.1
Internal release alignment.
January 10, 2024: V5.1.0
Adding Python 3.12 support Updated dependencies, including Requests and Six packages.
September 22, 2023: V5.0.10
Fixed:
-
Using merged context when evaluating boolean flags.
August 12, 2022: V5.0.9
Fixes:
-
Number flags always take the value type default value '0' when configuration is turned on.
May 11, 2022: V5.0.8
Fixes:
-
Warnings generated when using SDK with Python version 3.10
March 1, 2022: V5.0.7
Fixes:
-
Security updates to dependencies.
January 27, 2022: V5.0.6
Fixes:
-
Exception and error details are no longer lost when an error occurs in custom property resolver.
-
Improvement to error reporting when user_unhandler_error_handler causes its own error.
2021-11-02: V5.0.5
Fix:
-
Using SIGINT when running a server and using ROX python no longer forces the server to stop.
2021-03-29: V5.0.0
Breaking changes:
-
Variant changed to RoxString
-
Variant('default_string', ['string_1', 'string_2']) ⇒ RoxString('default_string', ['string_1', 'string_2'])
-
-
Functions input validations
-
Some trivial parameters (mostly type) validations were added to
dynamic_api
and flags constructions. For example:RoxString(None)
will raise an TypeError as default cannot be None (default value ofRoxString
should be a string and defaults to an empty string if no default is provided).Rox.dynamic_api.value(None, 'default_string', ['string_2', 'string_3'])
will raise an TypeError because of None flag name (name should always be a string)
-
Fixes and Additions:
-
Can use register without a namespace:
-
register(container)
will register the container under an empty string namespace (multiple register calls with the same namespaces are still not allowed!)
-
-
Added a User Space Error handling
-
It is recommended to wrap all handlers used in Rox platform (all
Rox.set_custom_<…>_property
,RoxOptions.impression_handler
,RoxOptions.configuration_fetched_handler
,RoxOptions.dynamic_properties_rule
) with try-except in order to be in the right context. In case there will be an uncaught error, it will reach theRox.set_userspace_unhandled_error_handler
handler. You can use this handler for debugging, or for further error handling. An Error thrown within this handler will be written to log. If noset_userspace_unhandled_error_handler
was set, errors will be written to the log.
-
-
Analytics / impressions
-
Starting with SDK 5, flags will always send impressions after setup (not only when targeting is enabled on the dashboard)
-
-
Impression handler parameters change
-
As experiments were removed, impressions handler signature was changed from (
reporting_value
,experiment
,context
) to (reporting_value
,context
).reporting_value
now also has a Targeting (boolean) property, indicating the flag was evaluated by using the dashboard configurations.
-
-
New Flag Types Int/Double
-
In addition to
RoxFlag
andRoxString
, we also addedRoxInt
andRoxDouble
-
DynamicApi
was also updated with matchingget_int
andget_double
methods
-
-
Added a graceful Rox.shutdown
-
In order to clean all background Tasks
-
multiple Rox.setup calls will be ignored if Rox wasn’t Shutdown in between
-
-
Fixing RegEx Match condition, and empty string values
2019-10-10: V4.7.1
-
API version 1.8.0
-
Values are base64 - fixing " and () bug
-
Changes to API calls, using Cloudfront
-
Adding Kill switch to remotely shut down the SDK
-
Push notification implementation was changed to be threads based
2019-08-07: V4.5.0
-
Variants in Dynamic API is open for any value from the dashboard
-
internal bug fixes
2018-09-12: V4.0.1
-
Analytics Support
-
Dynamic API for flags
2018-08-22: V3.0.0
-
Initial release