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

Download files

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

Source Distribution

claude_code_sdk_shmaxi-0.0.12.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

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

claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file claude_code_sdk_shmaxi-0.0.12.tar.gz.

File metadata

  • Download URL: claude_code_sdk_shmaxi-0.0.12.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.5

File hashes

Hashes for claude_code_sdk_shmaxi-0.0.12.tar.gz
Algorithm Hash digest
SHA256 03d85f63d429e19bfeb4ef1e19321e65ee27dd462ef70131e2be9a17e7472023
MD5 1ec9b663ab3423e54b3cfb510346f872
BLAKE2b-256 8021d4abf74e3fdd6211df2a00cb10f6e7effb7a70832a0a75fc241e7b93272e

See more details on using hashes here.

File details

Details for the file claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl.

File metadata

File hashes

Hashes for claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 156289012f6b3504e4780dc52dee106f2ebcc77fd8999c0c70d149ff7c3bdac8
MD5 08efc59ff1bcf50b19058f533651b342
BLAKE2b-256 1ce9987aa4656f9bc765fc5d4daee57118657fae9081199dd01b6e70a198a962

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.12 This release

2 files

0.0.11

2 files

Supported by

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