Python SDK for Claude Code (fork with FastAPI fixes)
Project description
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
DEVNULLfor 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 Claudeoptions(ClaudeCodeOptions): Optional configuration
Returns: AsyncIterator[Message] - Stream of response messages
Types
See src/claude_code_sdk/types.py for complete type definitions:
ClaudeCodeOptions- Configuration optionsAssistantMessage,UserMessage,SystemMessage,ResultMessage- Message typesTextBlock,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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03d85f63d429e19bfeb4ef1e19321e65ee27dd462ef70131e2be9a17e7472023
|
|
| MD5 |
1ec9b663ab3423e54b3cfb510346f872
|
|
| BLAKE2b-256 |
8021d4abf74e3fdd6211df2a00cb10f6e7effb7a70832a0a75fc241e7b93272e
|
File details
Details for the file claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl.
File metadata
- Download URL: claude_code_sdk_shmaxi-0.0.12-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
156289012f6b3504e4780dc52dee106f2ebcc77fd8999c0c70d149ff7c3bdac8
|
|
| MD5 |
08efc59ff1bcf50b19058f533651b342
|
|
| BLAKE2b-256 |
1ce9987aa4656f9bc765fc5d4daee57118657fae9081199dd01b6e70a198a962
|