2021-02-25 16:01:36 +01:00
---
id: python_sdk
title: Python SDK
---
2021-05-18 13:31:54 +02:00
> You will need your `API URL` and your `API token` in order to connect the Client SDK to you Unleash instance. You can find this information in the “Admin” section Unleash management UI. [Read more](../user_guide/api-token)
2021-05-04 16:08:21 +02:00
```python
2021-02-25 16:01:36 +01:00
from UnleashClient import UnleashClient
2021-05-04 16:08:21 +02:00
2021-02-25 16:01:36 +01:00
client = UnleashClient(
url="< API url > ",
app_name="my-python-app",
2021-05-18 13:31:54 +02:00
custom_headers={'Authorization': '< API token > '})
2021-05-04 16:08:21 +02:00
2021-02-25 16:01:36 +01:00
client.initialize_client()
2021-05-04 16:08:21 +02:00
2021-02-25 16:01:36 +01:00
client.is_enabled("unleash.beta.variants")
```
2022-05-16 10:30:28 +02:00
## Checking if a feature is enabled {#checking-if-a-feature-is-enabled}
2021-05-21 22:26:56 +02:00
A check of a simple toggle:
2022-05-16 10:30:28 +02:00
```python
client.is_enabled("my_toggle")
2021-05-21 22:26:56 +02:00
```
Specifying a default value:
2022-05-16 10:30:28 +02:00
```python
client.is_enabled("my_toggle", default_value=True)
2021-05-21 22:26:56 +02:00
```
Supplying application context:
2022-05-16 10:30:28 +02:00
```python
2021-05-21 22:26:56 +02:00
app_context = {"userId": "test@email.com"}
2022-05-16 10:30:28 +02:00
client.is_enabled("user_id_toggle", app_context)
2021-05-21 22:26:56 +02:00
```
Supplying a fallback function:
2022-05-16 10:30:28 +02:00
```python
2021-05-21 22:26:56 +02:00
def custom_fallback(feature_name: str, context: dict) -> bool:
return True
2022-05-16 10:30:28 +02:00
client.is_enabled("my_toggle", fallback_function=custom_fallback)
2021-05-21 22:26:56 +02:00
```
2021-10-11 17:49:29 +02:00
- Must accept the feature name and context as an argument.
2021-05-21 22:26:56 +02:00
- Client will evaluate the fallback function only if exception occurs when calling the `is_enabled()` method i.e. feature flag not found or other general exception.
- If both a `default_value` and `fallback_function` are supplied, client will define the default value by `OR` ing the default value and the output of the fallback function.
2022-05-16 10:30:28 +02:00
## Getting a variant {#getting-a-variant}
2021-05-21 22:26:56 +02:00
Checking for a variant:
```python
context = {'userId': '2'} # Context must have userId, sessionId, or remoteAddr. If none are present, distribution will be random.
2022-05-16 10:30:28 +02:00
variant = client.get_variant("my_variant_toggle", context)
2021-05-21 22:26:56 +02:00
print(variant)
> {
> "name": "variant1",
> "payload": {
> "type": "string",
> "value": "val1"
> },
> "enabled": True
> }
```
2021-05-04 16:08:21 +02:00
Read more at [github.com/Unleash/unleash-client-python ](https://github.com/Unleash/unleash-client-python )