Skip to main content

Claude Code SDK for Python (Shmaxi Fork)

This is a fork of the official Claude Code SDK with fixes for FastAPI integration and subprocess handling issues.

Fork Changes

This fork includes the following fixes:

  • Subprocess hanging fix: Uses DEVNULL for stdin to prevent the CLI subprocess from waiting for input
  • JSON parsing fix: Properly handles multiple JSON objects on the same line
  • Thread safety: Better integration with async web frameworks like FastAPI

See the Claude Code SDK documentation for general usage information.

Installation

pip install claude-code-sdk-shmaxi

Prerequisites:

  • Python 3.10+
  • Node.js
  • Claude Code: npm install -g @anthropic-ai/claude-code

Quick Start

import anyio
from claude_code_sdk import query

async def main():
    async for message in query(prompt="What is 2 + 2?"):
        print(message)

anyio.run(main)

Usage

Basic Query

from claude_code_sdk import query, ClaudeCodeOptions, AssistantMessage, TextBlock

# Simple query
async for message in query(prompt="Hello Claude"):
    if isinstance(message, AssistantMessage):
        for block in message.content:
            if isinstance(block, TextBlock):
                print(block.text)

# With options
options = ClaudeCodeOptions(
    system_prompt="You are a helpful assistant",
    max_turns=1
)

async for message in query(prompt="Tell me a joke", options=options):
    print(message)

Using Tools

options = ClaudeCodeOptions(
    allowed_tools=["Read", "Write", "Bash"],
    permission_mode='acceptEdits'  # auto-accept file edits
)

async for message in query(
    prompt="Create a hello.py file", 
    options=options
):
    # Process tool use and results
    pass

Working Directory

from pathlib import Path

options = ClaudeCodeOptions(
    cwd="/path/to/project"  # or Path("/path/to/project")
)

API Reference

query(prompt, options=None)

Main async function for querying Claude.

Parameters:

  • prompt (str): The prompt to send to Claude
  • options (ClaudeCodeOptions): Optional configuration

Returns: AsyncIterator[Message] - Stream of response messages

Types

See src/claude_code_sdk/types.py for complete type definitions:

  • ClaudeCodeOptions - Configuration options
  • AssistantMessage, UserMessage, SystemMessage, ResultMessage - Message types
  • TextBlock, ToolUseBlock, ToolResultBlock - Content blocks

Error Handling

from claude_code_sdk import (
    ClaudeSDKError,      # Base error
    CLINotFoundError,    # Claude Code not installed
    CLIConnectionError,  # Connection issues
    ProcessError,        # Process failed
    CLIJSONDecodeError,  # JSON parsing issues
)

try:
    async for message in query(prompt="Hello"):
        pass
except CLINotFoundError:
    print("Please install Claude Code")
except ProcessError as e:
    print(f"Process failed with exit code: {e.exit_code}")
except CLIJSONDecodeError as e:
    print(f"Failed to parse response: {e}")

See src/claude_code_sdk/_errors.py for all error types.

Available Tools

See the Claude Code documentation for a complete list of available tools.

Examples

See examples/quick_start.py for a complete working example.

License

MIT

Metadata

Release files for claude-code-sdk-shmaxi 0.0.12

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

Source distribution (sdist)

Source distribution for claude-code-sdk-shmaxi 0.0.12
File Size Uploaded
claude_code_sdk_shmaxi-0.0.12.tar.gz 12.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for claude-code-sdk-shmaxi 0.0.12
File Interpreter ABI Platform
claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl Python 3 none any Details

Total release size: 23.2 kB

Release files / claude_code_sdk_shmaxi-0.0.12.tar.gz

Download URL claude_code_sdk_shmaxi-0.0.12.tar.gz
Size 12.2 kB
Tags Source
SHA-256 checksum
How to use checksums
03d85f63d429e19bfeb4ef1e19321e65ee27dd462ef70131e2be9a17e7472023
BLAKE2b-256 checksum
How to use checksums
8021d4abf74e3fdd6211df2a00cb10f6e7effb7a70832a0a75fc241e7b93272e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.5

Release files / claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl

Download URL claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
156289012f6b3504e4780dc52dee106f2ebcc77fd8999c0c70d149ff7c3bdac8
BLAKE2b-256 checksum
How to use checksums
1ce9987aa4656f9bc765fc5d4daee57118657fae9081199dd01b6e70a198a962
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.5

Release history Release notifications | RSS feed

This release

0.0.12 This release

2 release files

0.0.11

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