Breaking changes
* **Set an active password for a user**: You can set a new active password for a user, with the `set_active_password` function , which they can then use to sign in. It will be applied with the project's password expiration settings, after which the user will have to update it to their own.
Notice that we deprecated the `set_password` function, and now offer a `set_temporary_password` function instead. The functionality is the same as before (automatically expires the password, making the user reset it upon first authentication) - we just wanted to make sure it's clearer!
Enhancements
* **Tenant-level roles**: Tenants can require having their own set of roles on top of the default roles provided in your application. For that, we enhanced existing roles function (`create`, `update`, `delete`) to support association with a specific `tenant_id`.
* **User impersonation**: Using the `impersonate` function, you can decide which user you would want to temporarily sign in on behalf of. Please make sure to read our SDK's [README](https://github.com/descope/python-sdk?tab=readme-ov-file#impersonate) on impersonation, as well as our [KB article](https://docs.descope.com/knowledgebase/general/userimpersonation/) on the topic to fully understand this feature and how to securely use it.