
<!-- Begin Title, generated by Fern  -->

# Sayari-analytics Python Library

[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-SDK%20generated%20by%20Fern-brightgreen)](https://github.com/fern-api/fern)

The [Sayari](https://sayari.com) Python SDK provides convenient access to the Sayari API from applications written in Python.

<!-- End Title  -->

# Documentation

Please see our [docs site](http://documentation.sayari.com) for more info and or to get in touch with us.

<!-- Begin Installation, generated by Fern  -->

# Installation


## Project Setup Guide

Before you begin using the Sayari API, it is essential to set up a Python virtual environment, install the required dependencies from `requirements.txt`, and configure the necessary environment variables using a `.env` file.

These steps ensure your environment is correctly isolated and properly configured for using the Sayari API.


## 1. Setup Python Virtual Environment

To keep your dependencies isolated, create and activate a Python virtual environment.

### For macOS/Linux:
```bash
python3 -m venv venv
source venv/bin/activate
```

### For Windows:
```bash
python -m venv venv
venv\Scripts\activate
```

This will create and activate a virtual environment in a folder named `venv`.

## 2. Install Dependencies from `requirements.txt`

Once your virtual environment is active, install the necessary dependencies from `requirements.txt`:

```bash
pip install -r requirements.txt
```

This will install all the required packages listed in the `requirements.txt` file.

## 3. Configure Environment Variables with `.env`

To securely store sensitive information like `CLIENT_ID` and `CLIENT_SECRET`, use a `.env` file.

### Create a `.env` File

Create a file named `.env` in the root directory of your project and add the following content:

```
CLIENT_ID=your-client-id
CLIENT_SECRET=your-client-secret
```

Replace `your-client-id` and `your-client-secret` with the actual values provided by **Sayari**.

## 4. Deactivate the Virtual Environment

Once you're done with your development, you can deactivate the virtual environment:

```bash
deactivate
```

<!-- End Installation  -->

<!-- Begin Usage, generated by Fern  -->

# Usage

```python
from sayari.client import Sayari

client = Sayari(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)
```

<!-- End Usage  -->

<!-- Begin Async Usage, generated by Fern  -->

# Async Client

```python
from sayari.client import AsyncSayari

client = AsyncSayari(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
)
```

<!-- End Async Usage  -->

<!-- Environment Variables, generated by Fern  -->

# Environment Variables

In your Python code, ensure you load the environment variables using `python-dotenv`:

```python
from dotenv import load_dotenv
import os

# Load environment variables from .env file
load_dotenv()

# Access the variables
client_id = os.getenv('CLIENT_ID')
client_secret = os.getenv('CLIENT_SECRET')

if client_id is None or client_secret is None:
    raise ValueError("CLIENT_ID and CLIENT_SECRET must be set in the .env file or as environment variables.")
```

<!-- End Environment Variables  -->

<!-- Use env_loader.py with your code -->
# Using env_loader.py

Once authenticated, you can use the `client` object to interact with the Sayari API. The client is returned by the `load_env_vars_and_authenticate` function, which handles all environment setup and authentication.

```python
client = load_env_vars_and_authenticate()
# Now, you can use 'client' to make API calls.
```
<!-- End env_loader.py -->

<!-- Troubleshooting -->
# Troubleshooting

- **Missing CLIENT_ID or CLIENT_SECRET**: Ensure that your `.env` file contains both `CLIENT_ID` and `CLIENT_SECRET`. If not present, the script will exit with an error message.

- **Python Version Error**: If the script exits with the message `"Python 3.9.x or higher is required"`, make sure you are running the correct version of Python.
<!-- End Troubleshooting -->

# OAuth

The Sayari client includes automatic OAuth access token retrieval, refreshing it as needed. Simply specify the `client_id`
and `client_secret` (shown above) and your access token will be used for every authenticated request.

<!-- Begin Status, generated by Fern  -->

# Beta Status

This SDK is in beta, and there may be breaking changes between versions without a major
version update. Therefore, we recommend pinning the package version to a specific version.
This way, you can install the same version each time without breaking changes.

<!-- End Status  -->
