> ## Documentation Index
> Fetch the complete documentation index at: https://docs.privy.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Python changelog

> Release notes and changelog for the Privy Python SDK.

The release notes for the [Privy Python SDK](https://github.com/privy-io/python-sdk).
Refer to the [package releases](https://pypi.org/project/privy-client/#history) for additional details.

<Update label="0.7.0">
  **Initial release** of the new Python SDK. This is a full rewrite of our Python SDK, so breaking changes are expected.
  See the [quickstart](/basics/python/quickstart) guide for details on how to get started.

  <Accordion title="Breaking changes when upgrading from unmaintained version 0.6.0 or earlier">
    * Python 3.8 is no longer supported. Upgrade to Python 3.9 or later.
    * Use `PrivyClient` for the new synchronous interface. No asynchronous equivalent of `PrivyClient` is currently available.
    * Wallet authorization has been redesigned. The `authorization_key` client option and `update_authorization_key()` method have been removed. Pass credentials per request with `PrivyRequestOptions` and `AuthorizationContext`, which support authorization private keys, signer callbacks, precomputed signatures, and user JWTs.
    * Several mutation signatures have changed. For example, wallet `update` and `rpc` calls on `PrivyClient` now accept `wallet_update_params` and `wallet_rpc_request_body` dictionaries.
    * `wallets.generate_user_signer()` has been removed. Use `AuthorizationContext(user_jwts=[...])` for JWT-authorized mutations instead.
    * The `privy.lib.stablecoins` USDC, ERC-20, and constants modules have been removed. Use the newer wallet transfer and swap APIs or application-level utilities instead.
    * `users.get_by_jwt_subject_id()` has been renamed to `users.get_by_custom_auth_id(custom_user_id=...)`. `users.create_custom_metadata()` has been renamed to `users.set_custom_metadata()` and now returns the updated `User`.
    * Policy, key quorum, and wallet mutations made through `PrivyClient` now sign requests and apply expiration timestamps. The default expiration is 15 minutes for most requests and 72 hours for intents. Custom signing implementations must include expiration and idempotency headers in the signed payload.
    * Response models have changed substantially. RPC variants now use dedicated types, transaction lookup returns `Transaction`, and policy and key quorum deletion return `SuccessResponse`. Update direct imports of nested response classes and any response subclass checks.
    * `User.created_at` is now expressed in seconds instead of milliseconds. The `has_accepted_terms` and `mfa_methods` response fields are also no longer optional.
    * `pyjwt` and `web3` are no longer installed as transitive dependencies. Applications that use them directly must declare them explicitly.
  </Accordion>
</Update>
