Tags: auth0/auth0-python
Tags
Release 5.0.0 (#774) # Release v5.0.0 🎉 ## Overview This PR prepares the **stable v5.0.0 release** of the Auth0 Python SDK - a complete rewrite with significant improvements and breaking changes from v4.x. ## Changes in this PR - Updated `.version` file from `5.0.0b0` to `5.0.0` - Updated `pyproject.toml` package version to `5.0.0` - Added comprehensive v5.0.0 release notes to `CHANGELOG.md` - Updated `README.md` with v5.0.0 installation instructions ## What's New in v5.0.0 ###⚠️ BREAKING CHANGES - Major Rewrite This is a complete rewrite of the Auth0 Python SDK with significant breaking changes from v4.x. Users will need to update their code when migrating from v4.x to v5.0.0. ### Added Features - **New Fern-generated SDK**: Complete Management API rewrite generated from Auth0's OpenAPI specifications - **Hierarchical package structure**: Organized Management APIs into logical sub-clients for better discoverability - **Strongly typed interfaces**: Pydantic models provide specific request/response types replacing generic dictionaries - **Automatic token management**: Built-in client credentials handling with automatic token refresh - **Enhanced pagination**: New `SyncPager` and `AsyncPager` classes for easy iteration over paginated results - **First-class async support**: Full async/await support with `AsyncManagementClient` - **Better IDE support**: Improved code completion, type hints, and inline documentation ### Key Breaking Changes - **Import paths** changed from `from auth0.management import Auth0` to `from auth0.management import ManagementClient` - **Client initialization** changed from `Auth0(domain, management_token)` to `ManagementClient(domain, client_id, client_secret)` with automatic token management - **Response types** changed from dictionaries to Pydantic models (use `.model_dump()` to convert back to dict) - **Method organization** changed from flat (`client.users.list()`) to hierarchical where applicable - **Pagination parameters** changed - some endpoints use `per_page`, others use `take` - **Python version** requirement increased from ≥3.7 to ≥3.8 - **Error handling** changed from `Auth0Error` to `ApiError` base class ## Migration Example ### Before (v4): ```python from auth0.management import Auth0 # Initialize with management token mgmt = Auth0( domain='your-tenant.auth0.com', token='YOUR_MGMT_API_TOKEN' ) # List clients - returns list of dicts clients = mgmt.clients.all() for client in clients: print(client['name']) # Dictionary access ``` ### After (v5): ```python from auth0.management import ManagementClient # Initialize with client credentials (automatic token management) client = ManagementClient( domain='your-tenant.auth0.com', client_id='YOUR_CLIENT_ID', client_secret='YOUR_CLIENT_SECRET' ) # List clients - returns SyncPager of Pydantic models clients = client.clients.list(per_page=50) for client_obj in clients: print(client_obj.name) # Pydantic model attribute access # Convert to dict if needed client_dict = client_obj.model_dump() ``` ## Important Notes - ✅ The `authentication` package is **NOT affected** by these changes. Authentication APIs remain the same between v4 and v5. - 📚 Complete migration guide available at [v5_MIGRATION_GUIDE.md](https://github.com/auth0/auth0-python/blob/master/v5_MIGRATION_GUIDE.md) - 🎯 This is the stable GA release following v5.0.0-beta.0 - 🔧 Auth0 telemetry headers implemented with dynamic versioning (no manual updates needed) - 📖 Full API reference available at [reference.md](https://github.com/auth0/auth0-python/blob/master/reference.md) ## Testing - ✅ All 389 wire tests passing - ✅ Integration tests verified with live Auth0 tenant - ✅ Both Authentication and Management APIs tested successfully - ✅ Async clients tested and verified
Release 5.0.0b0 (#766) # Auth0 Python SDK v5.0.0b0⚠️ **BREAKING CHANGES - Major Rewrite** This is a beta release of the upcoming major version. It introduces breaking changes, particularly in the Management API client. Please refer to the [v5 Migration Guide](https://github.com/auth0/auth0-python/blob/v5/v5_MIGRATION_GUIDE.md) for detailed upgrade instructions. --- ## ✍️ What's New - ✨ **OpenAPI-Generated**: Complete rewrite generated from Auth0's OpenAPI specifications using [Fern](https://buildwithfern.com) - 📦 **Better Organization**: Hierarchical package structure with logical sub-clients for improved discoverability - 🔒 **Type Safety**: Strongly typed request/response objects using Pydantic replace generic dictionaries - ✨ **Enhanced Developer Experience**: Better IntelliSense, code completion, and documentation - 🚀 **Future-Proof**: Easier maintenance and updates as Auth0's API evolves - ⚡ **Async Support**: First-class async client with `AsyncAuth0` and `AsyncManagementClient` - 📄 **Automatic Pagination**: Built-in pagination support with `include_totals=True` by default --- ## 💥 Breaking Changes ### Python Version Support - The SDK now requires **Python ≥3.8** - Support for Python 3.7 has been dropped ### Management API Client Redesign - The Management API client has been **fully restructured** using Fern for code generation - Methods are now organized into **modular sub-clients**, improving structure and maintainability - **Method names and signatures have changed**, adopting consistent and predictable naming conventions - **Pagination defaults changed**: `include_totals=True` is now the default for list operations - These changes are **not backward compatible** with the v4.x client ### Import Changes | Change | v4.x | v5.0.0 | |--------|------|--------| | **Management Client** | `from auth0.management import Auth0` | `from auth0.management import Auth0` or `ManagementClient` | | **Async Client** | Not available | `from auth0.management import AsyncAuth0` or `AsyncManagementClient` | | **Error Handling** | `from auth0.exceptions import Auth0Error` | `from auth0.management.core.api_error import ApiError` | | **Authentication** | `from auth0.authentication import GetToken` | `from auth0.authentication import GetToken` (unchanged) | --- ## 📝 Quick Migration Example ### Before (v4.x): ```python from auth0.management import Auth0 # Initialize with full base URL mgmt_api = Auth0( domain='YOUR_DOMAIN.auth0.com', token='YOUR_TOKEN' ) # List users with explicit pagination users = mgmt_api.users.list( page=0, per_page=50, include_totals=True # Must specify explicitly ) # Generic dictionary responses for user in users['users']: print(user['email']) ``` ### After (v5.0.0): ```python from auth0.management import ManagementClient # Simpler initialization - just domain client = ManagementClient( domain='YOUR_DOMAIN.auth0.com', token='YOUR_TOKEN' ) # Or with automatic token management client = ManagementClient( domain='YOUR_DOMAIN.auth0.com', client_id='YOUR_CLIENT_ID', client_secret='YOUR_CLIENT_SECRET' ) # Pagination with include_totals=True by default response = client.users.list( page=0, per_page=50 ) # Strongly-typed Pydantic models for user in response.users: print(user.email) # Type-safe attribute access ``` --- ## 🔧 Migration Steps 1. **Update imports**: Change import paths as shown in the table above 2. **Client initialization**: Use `ManagementClient` with just `domain` instead of full `base_url` 3. **Update method calls**: Review method signatures - many have changed for consistency 4. **Handle responses**: Access response data as attributes (Pydantic models) instead of dictionary keys 5. **Error handling**: Catch `ApiError` instead of `Auth0Error` for Management API errors 6. **Pagination**: `include_totals` now defaults to `True` - adjust if you relied on `False` 7. **Async support**: Use `AsyncManagementClient` or `AsyncAuth0` for async operations --- ## ✅ What's NOT Affected **The `authentication` package remains fully compatible!** All authentication APIs work the same way between v4.x and v5.0.0: - ✅ `GetToken` - Client credentials, authorization code flows - ✅ `Database` - User signup and authentication - ✅ `Passwordless` - Passwordless authentication - ✅ `Users` - User authentication operations - ✅ Token verification and validation --- ## 📚 Resources - **[Migration Guide](https://github.com/auth0/auth0-python/blob/v5/v5_MIGRATION_GUIDE.md)**: Detailed migration instructions - **[API Reference](https://github.com/auth0/auth0-python/blob/v5/reference.md)**: Complete API documentation - **[README](https://github.com/auth0/auth0-python/blob/v5/README.md)**: Updated examples and usage guide --- ##⚠️ Beta Release This is a beta release. While core functionality is stable, minor API adjustments may occur before the final v5.0.0 release. Please test thoroughly and provide feedback! --- ## 📦 Installation ```bash pip install auth0-python==5.0.0b0 ``` Or add to your [requirements.txt](cci:7://file:///Users/snehil.kishore/Desktop/Python/auth0-python/requirements.txt:0:0-0:0): ``` auth0-python>=5.0.0b0,<6.0.0 ``` ---
Release 5.0.0b0 (#766) # Auth0 Python SDK v5.0.0b0⚠️ **BREAKING CHANGES - Major Rewrite** This is a beta release of the upcoming major version. It introduces breaking changes, particularly in the Management API client. Please refer to the [v5 Migration Guide](https://github.com/auth0/auth0-python/blob/v5/v5_MIGRATION_GUIDE.md) for detailed upgrade instructions. --- ## ✍️ What's New - ✨ **OpenAPI-Generated**: Complete rewrite generated from Auth0's OpenAPI specifications using [Fern](https://buildwithfern.com) - 📦 **Better Organization**: Hierarchical package structure with logical sub-clients for improved discoverability - 🔒 **Type Safety**: Strongly typed request/response objects using Pydantic replace generic dictionaries - ✨ **Enhanced Developer Experience**: Better IntelliSense, code completion, and documentation - 🚀 **Future-Proof**: Easier maintenance and updates as Auth0's API evolves - ⚡ **Async Support**: First-class async client with `AsyncAuth0` and `AsyncManagementClient` - 📄 **Automatic Pagination**: Built-in pagination support with `include_totals=True` by default --- ## 💥 Breaking Changes ### Python Version Support - The SDK now requires **Python ≥3.8** - Support for Python 3.7 has been dropped ### Management API Client Redesign - The Management API client has been **fully restructured** using Fern for code generation - Methods are now organized into **modular sub-clients**, improving structure and maintainability - **Method names and signatures have changed**, adopting consistent and predictable naming conventions - **Pagination defaults changed**: `include_totals=True` is now the default for list operations - These changes are **not backward compatible** with the v4.x client ### Import Changes | Change | v4.x | v5.0.0 | |--------|------|--------| | **Management Client** | `from auth0.management import Auth0` | `from auth0.management import Auth0` or `ManagementClient` | | **Async Client** | Not available | `from auth0.management import AsyncAuth0` or `AsyncManagementClient` | | **Error Handling** | `from auth0.exceptions import Auth0Error` | `from auth0.management.core.api_error import ApiError` | | **Authentication** | `from auth0.authentication import GetToken` | `from auth0.authentication import GetToken` (unchanged) | --- ## 📝 Quick Migration Example ### Before (v4.x): ```python from auth0.management import Auth0 # Initialize with full base URL mgmt_api = Auth0( domain='YOUR_DOMAIN.auth0.com', token='YOUR_TOKEN' ) # List users with explicit pagination users = mgmt_api.users.list( page=0, per_page=50, include_totals=True # Must specify explicitly ) # Generic dictionary responses for user in users['users']: print(user['email']) ``` ### After (v5.0.0): ```python from auth0.management import ManagementClient # Simpler initialization - just domain client = ManagementClient( domain='YOUR_DOMAIN.auth0.com', token='YOUR_TOKEN' ) # Or with automatic token management client = ManagementClient( domain='YOUR_DOMAIN.auth0.com', client_id='YOUR_CLIENT_ID', client_secret='YOUR_CLIENT_SECRET' ) # Pagination with include_totals=True by default response = client.users.list( page=0, per_page=50 ) # Strongly-typed Pydantic models for user in response.users: print(user.email) # Type-safe attribute access ``` --- ## 🔧 Migration Steps 1. **Update imports**: Change import paths as shown in the table above 2. **Client initialization**: Use `ManagementClient` with just `domain` instead of full `base_url` 3. **Update method calls**: Review method signatures - many have changed for consistency 4. **Handle responses**: Access response data as attributes (Pydantic models) instead of dictionary keys 5. **Error handling**: Catch `ApiError` instead of `Auth0Error` for Management API errors 6. **Pagination**: `include_totals` now defaults to `True` - adjust if you relied on `False` 7. **Async support**: Use `AsyncManagementClient` or `AsyncAuth0` for async operations --- ## ✅ What's NOT Affected **The `authentication` package remains fully compatible!** All authentication APIs work the same way between v4.x and v5.0.0: - ✅ `GetToken` - Client credentials, authorization code flows - ✅ `Database` - User signup and authentication - ✅ `Passwordless` - Passwordless authentication - ✅ `Users` - User authentication operations - ✅ Token verification and validation --- ## 📚 Resources - **[Migration Guide](https://github.com/auth0/auth0-python/blob/v5/v5_MIGRATION_GUIDE.md)**: Detailed migration instructions - **[API Reference](https://github.com/auth0/auth0-python/blob/v5/reference.md)**: Complete API documentation - **[README](https://github.com/auth0/auth0-python/blob/v5/README.md)**: Updated examples and usage guide --- ##⚠️ Beta Release This is a beta release. While core functionality is stable, minor API adjustments may occur before the final v5.0.0 release. Please test thoroughly and provide feedback! --- ## 📦 Installation ```bash pip install auth0-python==5.0.0b0 ``` Or add to your [requirements.txt](cci:7://file:///Users/snehil.kishore/Desktop/Python/auth0-python/requirements.txt:0:0-0:0): ``` auth0-python>=5.0.0b0,<6.0.0 ``` ---
Release 4.10.0 (#702) **Added** - chore: merge community PRs – bugfixes, features, and dependency upgrades [\#696](#696) ([kishore7snehil](https://github.com/kishore7snehil)) **Fixed** - fix: handle `authorization_details` in back_channel_login [\#695](#695) ([kishore7snehil](https://github.com/kishore7snehil))
PreviousNext