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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| claude_code_sdk_shmaxi-0.0.12.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|