Skip to main content

Unified async I/O for Hanzo AI - high-performance with uvloop fallback

Project description

hanzo-async

Unified async I/O for Hanzo AI - high-performance with uvloop fallback.

Features

  • Automatic uvloop configuration - Falls back to asyncio on Windows
  • Async file I/O - Read, write, append with aiofiles
  • Async path operations - exists, is_file, mkdir, etc.
  • Async subprocess execution - run_command, run_shell
  • Consistent patterns - Same API across all Hanzo packages

Installation

pip install hanzo-async

# With uvloop support (recommended for macOS/Linux)
pip install hanzo-async[uvloop]

Quick Start

from hanzo_async import (
    # Loop configuration
    configure_loop,
    using_uvloop,

    # File operations
    read_file,
    write_file,
    read_json,
    write_json,

    # Path operations
    path_exists,
    is_file,
    is_dir,
    mkdir,

    # Process operations
    run_command,
    run_shell,
)

# Check if using uvloop
if using_uvloop():
    print("Using uvloop for high-performance async")

# Async file operations
async def example():
    # Read/write files
    content = await read_file("/path/to/file.txt")
    await write_file("/path/to/output.txt", content)

    # JSON handling
    data = await read_json("/path/to/config.json")
    data["updated"] = True
    await write_json("/path/to/config.json", data)

    # Path operations
    if await path_exists("/path/to/file"):
        if await is_file("/path/to/file"):
            await unlink("/path/to/file")

    await mkdir("/path/to/new/dir", parents=True, exist_ok=True)

    # Run commands
    stdout, stderr, code = await run_command("ls", "-la")
    stdout, stderr, code = await run_shell("echo $HOME && pwd")

API Reference

Loop Configuration

  • configure_loop() - Configure uvloop (auto-called on import)
  • using_uvloop() - Check if uvloop is active
  • get_loop() - Get current event loop

File Operations

  • read_file(path) - Read file content
  • write_file(path, content) - Write content to file
  • append_file(path, content) - Append to file
  • read_json(path) - Read and parse JSON
  • write_json(path, data) - Write JSON to file
  • read_lines(path) - Read file as lines
  • write_lines(path, lines) - Write lines to file
  • read_bytes(path) - Read file as bytes
  • write_bytes(path, content) - Write bytes to file

Path Operations

  • path_exists(path) - Check if path exists
  • is_file(path) - Check if path is file
  • is_dir(path) - Check if path is directory
  • mkdir(path, parents=False, exist_ok=False) - Create directory
  • rmdir(path) - Remove empty directory
  • unlink(path, missing_ok=False) - Remove file
  • stat(path) - Get file/directory stats
  • listdir(path) - List directory contents
  • glob(pattern, root_dir=None, recursive=False) - Find files
  • rename(src, dst) - Rename/move file
  • copy(src, dst) - Copy file
  • copytree(src, dst) - Copy directory tree
  • rmtree(path) - Remove directory tree

Process Operations

  • run_command(*args) - Run command with args
  • run_shell(command) - Run shell command
  • check_command(command) - Check if command exists
  • which(command) - Find command path
  • start_background(*args) - Start background process

Why hanzo-async?

  1. Consistent async patterns - All Hanzo packages use the same I/O patterns
  2. High performance - uvloop provides 2-4x faster async on Unix
  3. Automatic fallback - Works on Windows with standard asyncio
  4. No event loop blocking - All operations are truly async
  5. Easy to use - Simple function-based API

License

MIT

Project details


Download files

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

Source Distribution

hanzo_async-0.1.3.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

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

hanzo_async-0.1.3-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file hanzo_async-0.1.3.tar.gz.

File metadata

  • Download URL: hanzo_async-0.1.3.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for hanzo_async-0.1.3.tar.gz
Algorithm Hash digest
SHA256 47180370268cd1f3be3f3b8f20f4de38f3123c5031f1dcdba114a610c4fb8840
MD5 e1e99fa4fdd43dfa760e19a468451cf9
BLAKE2b-256 ba2cfd628adf5bce8a36559f8b867f35876d3938b9869b9c5e410072f36d09ae

See more details on using hashes here.

File details

Details for the file hanzo_async-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: hanzo_async-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 8.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for hanzo_async-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1c5b17469b612b9994a04d986295600b8cc7b22ea3e7fc9ff34107a20ba1f0c1
MD5 d90471b0d36272d4c9dacd1a23f0484b
BLAKE2b-256 d8dc6f30fdefa0ef99b89d8edb7c1af3f1d480d2c4dbaffd705235de1105547d

See more details on using hashes here.

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