Installation — python-absurd-client 0.1.0 documentation

# Installation

## Prerequisites

Before installing the Python Absurd client, you’ll need:

- Python 3.8 or higher

- PostgreSQL with the Absurd extension installed

- Psycopg3 library for PostgreSQL connectivity

## Installation via pip

The easiest way to install the Absurd client is using pip:

    pip install absurd

## From Source

Alternatively, you can install directly from the source code:

    git clone https://github.com/rodmena-limited/python-absurd-client.git
    cd python-absurd-client
    pip install .

## Development Installation

For development purposes, you can install in editable mode with development dependencies:

    pip install -e ".[dev]"

## Requirements

The Absurd client requires the following Python packages:

- `psycopg>=3.0` - PostgreSQL database adapter

- `typing-extensions` (for older Python versions)

Optionally, for development and testing:

- `pytest` - Testing framework

- `sphinx` - Documentation generation

- `sphinx-rtd-theme` - Read the Docs theme for documentation

## PostgreSQL Setup

To use the Absurd client effectively, you’ll need to set up the Absurd extension in your PostgreSQL database. See the Absurd documentation for setup instructions.

The Absurd extension will:

1. Create the `absurd` schema in your PostgreSQL database

2. Set up necessary extensions like `uuid-ossp`

3. Create the required stored procedures and functions

4. Create the queue management infrastructure

5. Set up the table structures for tasks, runs, checkpoints, events, and wait registrations

## Connection Requirements

The client requires PostgreSQL connection parameters, which can be provided as:

- Connection string

- Environment variables

- Connection pool configuration

For production applications, it’s recommended to use connection pooling for better performance and resource management:

    from psycopg_pool import ConnectionPool
    from absurd_client import AbsurdClient

    # Create a connection pool with appropriate settings
    pool = ConnectionPool(
        "postgresql://user:password@localhost:5432/database",
        min_size=2,
        max_size=10,
        timeout=30  # Connection timeout in seconds
    )

    client = AbsurdClient(queue_name="my_queue")

## Environment Variables

The client supports the following environment variables for configuration:

- `ABSURD_DEFAULT_QUEUE`: Default queue name when not specified (default: `absurd_default`)

- `ABSURD_WORKER_ID`: Default worker ID (default: `absurd_worker_1`)

Example:

    export ABSURD_DEFAULT_QUEUE="production_tasks"
    export ABSURD_WORKER_ID="worker-001"

## Virtual Environment Setup

For best practices, set up a virtual environment before installing:

    # Create a virtual environment
    python -m venv absurd_env

    # Activate the virtual environment
    source absurd_env/bin/activate  # On Linux/Mac
    # or
    absurd_env\Scripts\activate  # On Windows

    # Install the package
    pip install absurd

    # For development
    pip install -e ".[dev]"

## Upgrade Existing Installation

To upgrade an existing installation:

    pip install --upgrade absurd

## Verification

After installation, verify that the package is correctly installed:

    python -c "from absurd_client import AbsurdClient; print('Installation successful!')"

This should run without error, confirming that the Absurd client is properly installed and accessible.