Skip to main content

No project description provided

Project description

Smooth Python SDK

The Smooth Python SDK provides a convenient way to interact with the Smooth API for programmatic browser automation and task execution.

Features

  • Synchronous and Asynchronous Clients: Choose between SmoothClient for traditional sequential programming and SmoothAsyncClient for high-performance asynchronous applications.
  • Task Management: Easily run tasks and retrieve results upon completion.
  • Interactive Browser Sessions: Get access to, interact with, and delete stateful browser sessions to manage your login credentials.
  • Advanced Task Configuration: Customize task execution with options for device type, session recording, stealth mode, and proxy settings.

Installation

You can install the Smooth Python SDK using pip:

pip install smooth-py

Authentication

The SDK requires an API key for authentication. You can provide the API key in two ways:

  1. Directly in the client constructor:

    from smooth import SmoothClient
    
    client = SmoothClient(api_key="YOUR_API_KEY")
    
  2. As an environment variable:

    Set the CIRCLEMIND_API_KEY environment variable, and the client will automatically use it.

    export CIRCLEMIND_API_KEY="YOUR_API_KEY"
    
    from smooth import SmoothClient
    
    # The client will pick up the API key from the environment variable
    client = SmoothClient()
    

Usage

Synchronous Client

The SmoothClient is ideal for scripts and applications that don't require asynchronous operations.

Running a Task and Waiting for the Result

The run method returns a TaskHandle. You can use the result() method on this handle to wait for the task to complete and get its final state.

from smooth import SmoothClient
from smooth.models import ApiError, TimeoutError

with SmoothClient() as client:
    try:
        # The run method returns a handle to the task immediately
        task_handle = client.run(
            task="Go to https://www.google.com and search for 'Smooth SDK'",
            device="desktop",
            enable_recording=True
        )
        print(f"Task submitted with ID: {task_handle.id}")
        print(f"Live view available at: {task_handle.live_url}")

        # The result() method waits for the task to complete
        completed_task = task_handle.result()
        
        if completed_task.status == "done":
            print("Task Result:", completed_task.output)
            print(f"View recording at: {completed_task.recording_url}")
        else:
            print("Task Failed:", completed_task.output)
            
    except TimeoutError:
        print("The task timed out.")
    except ApiError as e:
        print(f"An API error occurred: {e}")

Managing Browser Sessions

You can create, list, and delete browser sessions to maintain state (like logins) between tasks.

from smooth import SmoothClient

with SmoothClient() as client:
    # Create a new browser session
    browser_session = client.open_session()
    print("Live URL:", browser_session.live_url)
    print("Session ID:", browser_session.session_id)

    # List all browser sessions
    sessions = client.list_sessions()
    print("All Session IDs:", sessions.session_ids)

    # Delete the browser session
    client.delete_session(session_id=session_id)
    print(f"Session '{session_id}' deleted.")

Asynchronous Client

The SmoothAsyncClient is designed for use in asynchronous applications, such as those built with asyncio, to handle multiple operations concurrently without blocking.

Running a Task and Waiting for the Result

The run method returns an AsyncTaskHandle. Await the result() method on the handle to get the final task status.

import asyncio
from smooth import SmoothAsyncClient
from smooth.models import ApiError, TimeoutError

async def main():
    async with SmoothAsyncClient() as client:
        try:
            # The run method returns a handle to the task immediately
            task_handle = await client.run(
                task="Go to Github and search for \"smooth-sdk\""
            )
            print(f"Task submitted with ID: {task_handle.id}")
            print(f"Live view available at: {task_handle.live_url}")

            # The result() method waits for the task to complete
            completed_task = await task_handle.result()
            
            if completed_task.status == "done":
                print("Task Result:", completed_task.output)
            else:
                print("Task Failed:", completed_task.output)
                
        except TimeoutError:
            print("The task timed out.")
        except ApiError as e:
            print(f"An API error occurred: {e}")

if __name__ == "__main__":
    asyncio.run(main())

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smooth_py-0.1.4.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smooth_py-0.1.4-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file smooth_py-0.1.4.tar.gz.

File metadata

  • Download URL: smooth_py-0.1.4.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for smooth_py-0.1.4.tar.gz
Algorithm Hash digest
SHA256 4c4e1356007e3623018e8b93df1cf4ad68a43330f32ec7e8850c801d33f02b6a
MD5 f4a1e4a7299fadad3eeb0f89b20149e3
BLAKE2b-256 a65c5cd6600a01815c8945bbf474809d13296c84d00718a4961f0085dc67d920

See more details on using hashes here.

Provenance

The following attestation bundles were made for smooth_py-0.1.4.tar.gz:

Publisher: publish.yaml on circlemind-ai/smooth-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file smooth_py-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: smooth_py-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for smooth_py-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 bba687bca0a311e307ae68b3cd597d2e9afb93612e0a8082cf3de36d11695431
MD5 05b43a1dc1e72ce81af716105de2b8a2
BLAKE2b-256 2af411b296dcbb76f0796bbac8031474b58479ef4988b4eeebb4329680013f1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for smooth_py-0.1.4-py3-none-any.whl:

Publisher: publish.yaml on circlemind-ai/smooth-sdk

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page