claude-subprocess 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (20) hide show
  1. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/PKG-INFO +9 -1
  2. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/README.md +4 -0
  3. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/pyproject.toml +7 -1
  4. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/.gitignore +0 -0
  5. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/LICENSE +0 -0
  6. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/__init__.py +0 -0
  7. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/batch.py +0 -0
  8. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/cache.py +0 -0
  9. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/errors.py +0 -0
  10. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/http_api.py +0 -0
  11. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/parsing.py +0 -0
  12. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/preflight.py +0 -0
  13. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/src/claude_cli/runner.py +0 -0
  14. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/conftest.py +0 -0
  15. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_batch.py +0 -0
  16. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_cache.py +0 -0
  17. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_http_api.py +0 -0
  18. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_parsing.py +0 -0
  19. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_preflight.py +0 -0
  20. {claude_subprocess-0.1.2 → claude_subprocess-0.1.3}/tests/test_runner.py +0 -0
@@ -1,12 +1,16 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: claude-subprocess
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Hardened wrapper around the local `claude -p` CLI (subscription auth), + JSON extraction and response cache
5
5
  Project-URL: Homepage, https://github.com/octrow/claude-cli
6
6
  Project-URL: Issues, https://github.com/octrow/claude-cli/issues
7
7
  Author: Daniil Petrov
8
8
  License-Expression: MIT
9
9
  License-File: LICENSE
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
10
14
  Requires-Python: >=3.12
11
15
  Provides-Extra: dev
12
16
  Requires-Dist: pytest-asyncio>=0.24; extra == 'dev'
@@ -15,6 +19,8 @@ Description-Content-Type: text/markdown
15
19
 
16
20
  <p align="center">
17
21
  <picture>
22
+ <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-mobile-dark.svg">
23
+ <source media="(max-width: 600px)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-mobile-light.svg">
18
24
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-dark.svg">
19
25
  <img src="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-light.svg" width="100%" alt="claude-subprocess: call claude -p from Python on your Claude Code subscription, with the risky flags locked down. Beside the title, the real argv build_args(model='haiku') produces: omniroute run claude -- -p --model haiku --effort low --output-format json --no-session-persistence --tools '' --disable-slash-commands --setting-sources user --strict-mcp-config --mcp-config mcp-empty.json. --bare is never sent because it breaks OAuth.">
20
26
  </picture>
@@ -66,6 +72,8 @@ extract_json(res.text) # {'ok': True}
66
72
  ## How a call is routed
67
73
 
68
74
  <picture>
75
+ <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-mobile-dark.svg">
76
+ <source media="(max-width: 600px)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-mobile-light.svg">
69
77
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-dark.svg">
70
78
  <img src="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-light.svg" width="100%" alt="run_claude, arun_claude and stream_claude send tool-less calls to OmniRoute's HTTP API at /v1/chat/completions. Calls with tools, a project cwd or stream-json go through omniroute run claude -- -p with a throwaway cwd and an empty MCP config. An HTTP error falls back to the CLI and parks HTTP for 600 seconds. Both paths return a ClaudeResult. NotLoggedInError and UsageLimitError fail fast and derive from ClaudeCliError(RuntimeError).">
71
79
  </picture>
@@ -1,5 +1,7 @@
1
1
  <p align="center">
2
2
  <picture>
3
+ <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-mobile-dark.svg">
4
+ <source media="(max-width: 600px)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-mobile-light.svg">
3
5
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-dark.svg">
4
6
  <img src="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/hero-light.svg" width="100%" alt="claude-subprocess: call claude -p from Python on your Claude Code subscription, with the risky flags locked down. Beside the title, the real argv build_args(model='haiku') produces: omniroute run claude -- -p --model haiku --effort low --output-format json --no-session-persistence --tools '' --disable-slash-commands --setting-sources user --strict-mcp-config --mcp-config mcp-empty.json. --bare is never sent because it breaks OAuth.">
5
7
  </picture>
@@ -51,6 +53,8 @@ extract_json(res.text) # {'ok': True}
51
53
  ## How a call is routed
52
54
 
53
55
  <picture>
56
+ <source media="(max-width: 600px) and (prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-mobile-dark.svg">
57
+ <source media="(max-width: 600px)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-mobile-light.svg">
54
58
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-dark.svg">
55
59
  <img src="https://raw.githubusercontent.com/octrow/claude-cli/main/assets/readme/flow-light.svg" width="100%" alt="run_claude, arun_claude and stream_claude send tool-less calls to OmniRoute's HTTP API at /v1/chat/completions. Calls with tools, a project cwd or stream-json go through omniroute run claude -- -p with a throwaway cwd and an empty MCP config. An HTTP error falls back to the CLI and parks HTTP for 600 seconds. Both paths return a ClaudeResult. NotLoggedInError and UsageLimitError fail fast and derive from ClaudeCliError(RuntimeError).">
56
60
  </picture>
@@ -1,11 +1,17 @@
1
1
  [project]
2
2
  name = "claude-subprocess"
3
- version = "0.1.2"
3
+ version = "0.1.3"
4
4
  license = "MIT"
5
5
  readme = "README.md"
6
6
  authors = [{ name = "Daniil Petrov" }]
7
7
  description = "Hardened wrapper around the local `claude -p` CLI (subscription auth), + JSON extraction and response cache"
8
8
  requires-python = ">=3.12"
9
+ classifiers = [
10
+ "Programming Language :: Python :: 3",
11
+ "Programming Language :: Python :: 3.12",
12
+ "Programming Language :: Python :: 3.13",
13
+ "Operating System :: OS Independent",
14
+ ]
9
15
  dependencies = [] # stdlib only, on purpose
10
16
 
11
17
  [project.urls]