Skip to main content

Q Developer Wrapper for Python

A Python wrapper for interacting with the Q Developer CLI.

Installation

From Source

Clone the repository and install the package:

git clone [repository-url]
cd q-developer-wrapper/python
pip install -e .

Usage

Basic Examples

import asyncio
from q_developer_wrapper import QDeveloperWrapper, QRequest, QResponse

async def simple_example():
    # Initialize wrapper with default 'q' CLI path
    q = QDeveloperWrapper()

    # Check if Q CLI is available
    if not await q.is_available():
        print("Q Developer CLI is not available")
        return

    # Simple chat without tools
    try:
        response = await q.chat("What is the capital of France?")
        print(f"Response: {response}")
    except Exception as e:
        print(f"Error: {e}")

    # Execute with tools enabled
    try:
        response = await q.execute("Show me the weather in Paris")
        print(f"Response: {response}")
    except Exception as e:
        print(f"Error: {e}")

# Run the example
asyncio.run(simple_example())

Advanced Configuration

import asyncio
from q_developer_wrapper import QDeveloperWrapper, QRequest

async def advanced_example():
    # Use a custom path to the Q CLI executable
    q = QDeveloperWrapper(q_cli_path="/usr/local/bin/q")

    # Create a custom request
    request = QRequest(
        message="Write a Python class to manage user data",
        accept_all_tools=True,
        timeout=180000  # 3 minutes timeout
    )

    # Send the request
    response = await q.ask(request)

    if response.success:
        print(f"Q Developer Response:\n{response.content}")
    else:
        print(f"Error: {response.error}")

asyncio.run(advanced_example())

API Reference

QRequest

@dataclass
class QRequest:
    message: str               # The message to send to Q Developer
    accept_all_tools: bool = False  # Whether to accept all tools
    timeout: int = 120000      # Timeout in milliseconds (default: 2 minutes)

QResponse

@dataclass
class QResponse:
    success: bool              # Whether the request was successful
    content: str               # The response content
    error: Optional[str] = None  # Error message if any

QDeveloperWrapper

class QDeveloperWrapper:
    def __init__(self, q_cli_path: str = 'q')

    async def ask(self, request: QRequest) -> QResponse:
        # Send a request to Q Developer and get response

    async def chat(self, message: str) -> str:
        # Quick helper - ask without tools

    async def execute(self, message: str) -> str:
        # Quick helper - ask with tools enabled

    async def is_available(self) -> bool:
        # Check if Q CLI is available

Requirements

  • Python 3.7+
  • Q Developer CLI installed and accessible in PATH

Differences from TypeScript Implementation

The Python implementation offers the same functionality as the TypeScript version with these implementation differences:

  1. Uses Python's asyncio for asynchronous operations instead of JavaScript Promises
  2. Uses Python dataclasses instead of TypeScript interfaces
  3. The Python version handles subprocess management using asyncio.create_subprocess_exec
  4. Error handling and timeout mechanisms are adapted to Python's async patterns

Release files for q-developer-wrapper 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for q-developer-wrapper 0.0.2
File Size Uploaded
q_developer_wrapper-0.0.2.tar.gz 4.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for q-developer-wrapper 0.0.2
File Interpreter ABI Platform
q_developer_wrapper-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 10.2 kB

Release files / q_developer_wrapper-0.0.2.tar.gz

Download URL q_developer_wrapper-0.0.2.tar.gz
Size 4.7 kB
Tags Source
SHA-256 checksum
How to use checksums
03c06bdc4907e869bb9d257cd662b46111c129bf0612f2e1118d1e04b89d0826
BLAKE2b-256 checksum
How to use checksums
f956644eb745c89d3e6ef026851770a150cc1ec1760787f4a6bb054798850f2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / q_developer_wrapper-0.0.2-py3-none-any.whl

Download URL q_developer_wrapper-0.0.2-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
915ddc8a8d3439194d5acf2c913305564924588cd02e144c1d6e11148e6a91d3
BLAKE2b-256 checksum
How to use checksums
b0ae70da6bbb54c9c2735799ad76c1ae24dfc56229c47017212e3f0cef874b8c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page