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

# Evaluate Feature Flag Using LaunchDarkly

> Evaluate a feature flag for a user using the LaunchDarkly API

<Info>
  **Prerequisite** You should have a LaunchDarkly account and have created a feature flag called `dark-mode` that allows anyone with `example.com` email address to `true`, and everyone else to `false`. Ensure you have an API key from LaunchDarkly and have it stored in a `.env` file.
</Info>

## Introduction

This guide demonstrates how to evaluate a feature flag for a user using the LaunchDarkly API. You'll learn how to set up your environment, configure your API key, and evaluate a feature flag.

<Accordion title="Show me the code" icon="code">
  ```python launchdarkly-feature-flag.py theme={null}
  import os
  import ldclient
  from ldclient.config import Config
  from ldclient.context import Context
  from dotenv import load_dotenv

  # Load environment variables from .env file
  load_dotenv()

  def evaluate_flag(sdk_key, feature_flag_key, user_email):
      # Initialize LaunchDarkly client
      ldclient.set_config(Config(sdk_key))

      # Specify the user and email to LaunchDarkly as a Context
      context = Context.builder(user_email).kind('user').set("email", user_email).build()

      # Obtain the feature flag evaluated value
      flag_value = ldclient.get().variation(feature_flag_key, context, False)
      
      # Close the LaunchDarkly client
      ldclient.get().close()
      
      return flag_value

  # Example usage
  if __name__ == "__main__":
      sdk_key = os.getenv("LAUNCHDARKLY_API_KEY")
      feature_flag_key = "dark-mode"
      user_email = "hello@example.com"

      flag_status = evaluate_flag(sdk_key, feature_flag_key, user_email)
      print(f"Feature flag '{feature_flag_key}' for user '{user_email}': {flag_status}")
  ```
</Accordion>

## Setup

### Step 1: Install Required Packages

First, install the necessary packages using pip:

```sh theme={null}
pip install launchdarkly-server-sdk python-dotenv
```

### Step 2: Create a .env File

Create a `.env` file in the project root with your LaunchDarkly API key:

```plaintext theme={null}
LAUNCHDARKLY_API_KEY=your_launchdarkly_api_key
```

## Evaluating a Feature Flag

### Step 3: Create the Python Script

Create a Python script named `launchdarkly-feature-flag.py` with the following content:

```python launchdarkly-feature-flag.py theme={null}
import os
import ldclient
from ldclient.config import Config
from ldclient.context import Context
from dotenv import load_dotenv

# Load environment variables from .env file
load_dotenv()

def evaluate_flag(sdk_key, feature_flag_key, user_email):
    # Initialize LaunchDarkly client
    ldclient.set_config(Config(sdk_key))

    # Specify the user and email to LaunchDarkly as a Context
    context = Context.builder(user_email).kind('user').set("email", user_email).build()

    # Obtain the feature flag evaluated value
    flag_value = ldclient.get().variation(feature_flag_key, context, False)
    
    # Close the LaunchDarkly client
    ldclient.get().close()
    
    return flag_value

# Example usage
if __name__ == "__main__":
    sdk_key = os.getenv("LAUNCHDARKLY_API_KEY")
    feature_flag_key = "dark-mode"
    user_email = "hello@example.com"

    flag_status = evaluate_flag(sdk_key, feature_flag_key, user_email)
    print(f"Feature flag '{feature_flag_key}' for user '{user_email}': {flag_status}")
```

### Step 4: Run the Script

Ensure you have the `.env` file in the same directory as the script. Then, execute the script:

```sh theme={null}
python launchdarkly-feature-flag.py
```

## Conclusion

You have successfully evaluated a feature flag for a user using the LaunchDarkly API! This guide provided a basic example to get you started. You can now expand on this by customizing the feature flag evaluation and handling different user contexts.
