agentic-python-coder 3.4.2__py3-none-any.whl → 3.4.4__py3-none-any.whl
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.
- agentic_python_coder/cli.py +6 -0
- agentic_python_coder/kernel.py +12 -4
- agentic_python_coder/llm.py +1 -1
- agentic_python_coder/mcp_server.py +40 -5
- agentic_python_coder/models/gemini4argon.json +6 -0
- agentic_python_coder/models/gpt6astra.json +5 -0
- agentic_python_coder/models/gpt6sol.json +5 -0
- agentic_python_coder/models/grok47.json +5 -0
- agentic_python_coder/models/opus55.json +5 -0
- agentic_python_coder/models/sonnet55.json +5 -0
- {agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/METADATA +24 -18
- {agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/RECORD +15 -11
- {agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/WHEEL +1 -1
- agentic_python_coder/models/gemini3pro.json +0 -7
- agentic_python_coder/models/grok41.json +0 -6
- {agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/entry_points.txt +0 -0
- {agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/licenses/LICENSE +0 -0
agentic_python_coder/cli.py
CHANGED
|
@@ -8,6 +8,8 @@ from pathlib import Path
|
|
|
8
8
|
from typing import Optional, Dict, Any
|
|
9
9
|
from importlib import resources
|
|
10
10
|
|
|
11
|
+
from openai import AuthenticationError
|
|
12
|
+
|
|
11
13
|
from agentic_python_coder.runner import (
|
|
12
14
|
solve_task,
|
|
13
15
|
get_system_prompt_path,
|
|
@@ -485,6 +487,10 @@ def main():
|
|
|
485
487
|
display_statistics(stats)
|
|
486
488
|
print(f"Log saved to: {log_path}")
|
|
487
489
|
|
|
490
|
+
except (ValueError, AuthenticationError) as e:
|
|
491
|
+
# Configuration errors (missing or invalid API key): no traceback
|
|
492
|
+
print(f"Error: {e}")
|
|
493
|
+
sys.exit(1)
|
|
488
494
|
except Exception as e:
|
|
489
495
|
print(f"Error: {e}")
|
|
490
496
|
import traceback
|
agentic_python_coder/kernel.py
CHANGED
|
@@ -11,6 +11,7 @@ import os
|
|
|
11
11
|
import re
|
|
12
12
|
import shutil
|
|
13
13
|
import signal
|
|
14
|
+
import sys
|
|
14
15
|
import threading
|
|
15
16
|
import time
|
|
16
17
|
import uuid
|
|
@@ -101,6 +102,10 @@ class UVKernelManager(KernelManager):
|
|
|
101
102
|
# Don't load project dependencies (create clean environment)
|
|
102
103
|
uv_prefix.append("--no-project")
|
|
103
104
|
|
|
105
|
+
# Match the host's Python; uv's default may be a newer version for
|
|
106
|
+
# which packages (e.g. ortools) have no wheels yet
|
|
107
|
+
uv_prefix.extend(["--python", f"{sys.version_info[0]}.{sys.version_info[1]}"])
|
|
108
|
+
|
|
104
109
|
# Add user-specified packages
|
|
105
110
|
for pkg in self.with_packages:
|
|
106
111
|
uv_prefix.extend(["--with", pkg])
|
|
@@ -152,7 +157,11 @@ class PythonKernel:
|
|
|
152
157
|
self.with_packages = with_packages or []
|
|
153
158
|
|
|
154
159
|
# Set kernel's working directory
|
|
155
|
-
|
|
160
|
+
# Send the kernel's fd 1 to our stderr: inherited stdout is the
|
|
161
|
+
# JSON-RPC pipe under ipython_mcp, and native code (e.g. solver
|
|
162
|
+
# progress output) writing to fd 1 would corrupt the protocol.
|
|
163
|
+
# print() is unaffected (ipykernel routes it over iopub).
|
|
164
|
+
kernel_kwargs = {"stdout": 2}
|
|
156
165
|
if cwd:
|
|
157
166
|
kernel_kwargs["cwd"] = cwd
|
|
158
167
|
|
|
@@ -175,9 +184,8 @@ class PythonKernel:
|
|
|
175
184
|
|
|
176
185
|
# Wait for kernel to be ready
|
|
177
186
|
logger.debug("Waiting for kernel to be ready...")
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
) # Increased timeout for UV package installation
|
|
187
|
+
# Generous timeout: a cold uv cache or a source build can take minutes
|
|
188
|
+
self.kc.wait_for_ready(timeout=180)
|
|
181
189
|
logger.info("Kernel started successfully")
|
|
182
190
|
|
|
183
191
|
# Configure IPython and inject startup code
|
agentic_python_coder/llm.py
CHANGED
|
@@ -5,6 +5,7 @@ Supports multiple concurrent kernels via kernel_id parameter.
|
|
|
5
5
|
|
|
6
6
|
import ast
|
|
7
7
|
import asyncio
|
|
8
|
+
import importlib.metadata
|
|
8
9
|
import json
|
|
9
10
|
import logging
|
|
10
11
|
import os
|
|
@@ -13,7 +14,7 @@ import threading
|
|
|
13
14
|
|
|
14
15
|
from mcp.server import Server
|
|
15
16
|
from mcp.server.stdio import stdio_server
|
|
16
|
-
from mcp.types import TextContent, Tool
|
|
17
|
+
from mcp.types import CallToolResult, ListToolsResult, TextContent, Tool
|
|
17
18
|
|
|
18
19
|
from agentic_python_coder.kernel import (
|
|
19
20
|
DEFAULT_KERNEL_ID,
|
|
@@ -27,11 +28,12 @@ from agentic_python_coder.kernel import (
|
|
|
27
28
|
shutdown_all_kernels,
|
|
28
29
|
)
|
|
29
30
|
|
|
31
|
+
_MCP_V2 = int(importlib.metadata.version("mcp").split(".")[0]) >= 2
|
|
32
|
+
|
|
30
33
|
# Configure logging
|
|
31
34
|
logger = logging.getLogger(__name__)
|
|
32
35
|
|
|
33
|
-
#
|
|
34
|
-
server = Server("ipython_mcp")
|
|
36
|
+
# The MCP server object is created at the end of the module (see _make_server).
|
|
35
37
|
|
|
36
38
|
# Constants
|
|
37
39
|
MAX_OUTPUT = 100 * 1024 # 100KB truncation limit
|
|
@@ -147,7 +149,6 @@ async def execute_with_timeout(
|
|
|
147
149
|
return {"success": False, "kernel_id": kernel_id, "error": error_msg}
|
|
148
150
|
|
|
149
151
|
|
|
150
|
-
@server.list_tools()
|
|
151
152
|
async def list_tools():
|
|
152
153
|
"""List available MCP tools."""
|
|
153
154
|
return [
|
|
@@ -296,7 +297,6 @@ Note: Call this, then call python_exec to continue working.""",
|
|
|
296
297
|
]
|
|
297
298
|
|
|
298
299
|
|
|
299
|
-
@server.call_tool()
|
|
300
300
|
async def call_tool(name: str, arguments: dict):
|
|
301
301
|
"""Handle tool calls."""
|
|
302
302
|
loop = asyncio.get_running_loop()
|
|
@@ -569,6 +569,41 @@ import importlib.metadata
|
|
|
569
569
|
]
|
|
570
570
|
|
|
571
571
|
|
|
572
|
+
async def _on_list_tools(ctx, params) -> ListToolsResult:
|
|
573
|
+
"""mcp>=2 lowlevel handler: wrap the tool list in its result type."""
|
|
574
|
+
return ListToolsResult(tools=await list_tools())
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
async def _on_call_tool(ctx, params) -> CallToolResult:
|
|
578
|
+
"""mcp>=2 lowlevel handler.
|
|
579
|
+
|
|
580
|
+
v2 no longer wraps a returned content list, and an exception would become
|
|
581
|
+
a JSON-RPC error instead of an LLM-visible isError result (v1 behaviour),
|
|
582
|
+
so both are done here.
|
|
583
|
+
"""
|
|
584
|
+
try:
|
|
585
|
+
content = await call_tool(params.name, params.arguments or {})
|
|
586
|
+
except Exception as e: # keep v1 semantics: error text reaches the model
|
|
587
|
+
return CallToolResult(
|
|
588
|
+
content=[TextContent(type="text", text=str(e))], is_error=True
|
|
589
|
+
)
|
|
590
|
+
return CallToolResult(content=content)
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
def _make_server() -> Server:
|
|
594
|
+
if _MCP_V2:
|
|
595
|
+
return Server(
|
|
596
|
+
"ipython_mcp", on_list_tools=_on_list_tools, on_call_tool=_on_call_tool
|
|
597
|
+
)
|
|
598
|
+
srv = Server("ipython_mcp")
|
|
599
|
+
srv.list_tools()(list_tools)
|
|
600
|
+
srv.call_tool()(call_tool)
|
|
601
|
+
return srv
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
server = _make_server()
|
|
605
|
+
|
|
606
|
+
|
|
572
607
|
async def run_server():
|
|
573
608
|
"""Run the MCP server."""
|
|
574
609
|
async with stdio_server() as (read, write):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: agentic-python-coder
|
|
3
|
-
Version: 3.4.
|
|
3
|
+
Version: 3.4.4
|
|
4
4
|
Summary: A lightweight Python coding agent that writes, executes, and iterates on code through natural language instructions
|
|
5
5
|
Author: Stefan Szeider
|
|
6
6
|
License: Apache-2.0
|
|
@@ -11,12 +11,14 @@ Classifier: Intended Audience :: Developers
|
|
|
11
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
14
16
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
15
17
|
Classifier: Topic :: Software Development :: Code Generators
|
|
16
|
-
Requires-Python:
|
|
18
|
+
Requires-Python: >=3.13
|
|
17
19
|
Requires-Dist: ipykernel>=7.3.0
|
|
18
20
|
Requires-Dist: jupyter-client>=8.9.1
|
|
19
|
-
Requires-Dist: mcp
|
|
21
|
+
Requires-Dist: mcp<3,>=1.28.1
|
|
20
22
|
Requires-Dist: openai>=2.45.0
|
|
21
23
|
Requires-Dist: python-dotenv>=1.2.2
|
|
22
24
|
Requires-Dist: pyyaml>=6.0.3
|
|
@@ -33,7 +35,7 @@ Description-Content-Type: text/markdown
|
|
|
33
35
|
|
|
34
36
|
# Agentic Python Coder
|
|
35
37
|
|
|
36
|
-
[](https://www.python.org/downloads/)
|
|
38
|
+
[](https://www.python.org/downloads/)
|
|
37
39
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
38
40
|
[](https://modelcontextprotocol.io/)
|
|
39
41
|
[](https://github.com/astral-sh/uv)
|
|
@@ -51,14 +53,14 @@ For details on architecture and constraint modelling applications, see [[Szeider
|
|
|
51
53
|
|
|
52
54
|
### Prerequisites
|
|
53
55
|
|
|
54
|
-
- Python 3.13
|
|
56
|
+
- Python 3.13 or newer
|
|
55
57
|
- UV package manager: `curl -LsSf https://astral.sh/uv/install.sh | sh`
|
|
56
58
|
|
|
57
59
|
### For the Coding Agent
|
|
58
60
|
|
|
59
61
|
```bash
|
|
60
|
-
# Install as CLI tool
|
|
61
|
-
uv tool install agentic-python-coder
|
|
62
|
+
# Install as CLI tool (--python 3.14: ortools, used by cpmpy, has no 3.15 wheels yet)
|
|
63
|
+
uv tool install --python 3.14 agentic-python-coder
|
|
62
64
|
|
|
63
65
|
# Set up OpenRouter API key
|
|
64
66
|
mkdir -p ~/.config/coder
|
|
@@ -97,7 +99,7 @@ Add to your Claude Desktop MCP configuration:
|
|
|
97
99
|
"mcpServers": {
|
|
98
100
|
"ipython": {
|
|
99
101
|
"command": "uvx",
|
|
100
|
-
"args": ["--from", "agentic-python-coder", "ipython_mcp"]
|
|
102
|
+
"args": ["--python", "3.14", "--from", "agentic-python-coder", "ipython_mcp"]
|
|
101
103
|
}
|
|
102
104
|
}
|
|
103
105
|
}
|
|
@@ -132,7 +134,7 @@ coder -i
|
|
|
132
134
|
| `--version`, `-V` | Show version and exit |
|
|
133
135
|
| `--init [TEMPLATE]` | Initialize example templates (cpmpy, clingo, regex, or all) |
|
|
134
136
|
| `--task`, `-t FILE` | Load task from markdown file |
|
|
135
|
-
| `--model MODEL` | Model name or JSON file (default:
|
|
137
|
+
| `--model MODEL` | Model name or JSON file (default: sonnet55) |
|
|
136
138
|
| `--project`, `-p FILE` | Project template for domain-specific prompts |
|
|
137
139
|
| `--with PACKAGE` | Add packages dynamically (repeatable) |
|
|
138
140
|
| `--dir`, `-d DIR` | Working directory |
|
|
@@ -146,21 +148,25 @@ coder -i
|
|
|
146
148
|
|
|
147
149
|
```bash
|
|
148
150
|
# Built-in models (versioned names)
|
|
149
|
-
coder --model sonnet45 "task" # Claude Sonnet 4.5
|
|
151
|
+
coder --model sonnet45 "task" # Claude Sonnet 4.5
|
|
150
152
|
coder --model sonnet46 "task" # Claude Sonnet 4.6
|
|
151
153
|
coder --model sonnet5 "task" # Claude Sonnet 5
|
|
152
154
|
coder --model opus45 "task" # Claude Opus 4.5
|
|
153
155
|
coder --model opus48 "task" # Claude Opus 4.8
|
|
156
|
+
coder --model sonnet55 "task" # Claude Sonnet 5.5 (default)
|
|
157
|
+
coder --model opus55 "task" # Claude Opus 5.5
|
|
154
158
|
coder --model deepseek31 "task" # DeepSeek v3.1
|
|
155
|
-
coder --model
|
|
159
|
+
coder --model grok47 "task" # X.AI Grok 4.7
|
|
156
160
|
coder --model qwen3 "task" # Qwen3 Coder
|
|
157
161
|
coder --model gemini25 "task" # Gemini Pro 2.5
|
|
158
|
-
coder --model gemini3pro "task" # Gemini 3 Pro Preview
|
|
159
162
|
coder --model gemini31 "task" # Gemini 3.1 Pro Preview
|
|
160
163
|
coder --model gemini3flash "task" # Gemini 3 Flash Preview (fast, low-cost)
|
|
161
164
|
coder --model gpt52 "task" # GPT-5.2
|
|
162
165
|
coder --model gpt56sol "task" # GPT-5.6 Sol
|
|
163
166
|
coder --model gpt56terra "task" # GPT-5.6 Terra
|
|
167
|
+
coder --model gpt6sol "task" # GPT-6 Sol
|
|
168
|
+
coder --model gpt6astra "task" # GPT-6 Astra
|
|
169
|
+
coder --model gemini4argon "task" # Gemini 4 Argon
|
|
164
170
|
|
|
165
171
|
# Custom model (JSON file)
|
|
166
172
|
coder --model ./mymodel.json "task"
|
|
@@ -217,7 +223,7 @@ import agentic_python_coder as coder
|
|
|
217
223
|
messages, stats, log_path = coder.solve_task(
|
|
218
224
|
"Write a fibonacci function",
|
|
219
225
|
working_directory="/tmp/workspace",
|
|
220
|
-
model="
|
|
226
|
+
model="sonnet55",
|
|
221
227
|
quiet=True,
|
|
222
228
|
)
|
|
223
229
|
|
|
@@ -236,7 +242,7 @@ from agentic_python_coder import solve_task
|
|
|
236
242
|
messages, stats, log_path = solve_task(
|
|
237
243
|
task="Your task description",
|
|
238
244
|
working_directory=".", # Where to run and save files
|
|
239
|
-
model=None, # Model name: "
|
|
245
|
+
model=None, # Model name: "sonnet55", "opus55", or JSON file
|
|
240
246
|
system_prompt=None, # Custom system prompt (string)
|
|
241
247
|
system_prompt_path=None, # Path to system prompt file
|
|
242
248
|
project_prompt=None, # Domain-specific context
|
|
@@ -300,9 +306,9 @@ agent = create_coding_agent(
|
|
|
300
306
|
```python
|
|
301
307
|
from agentic_python_coder import get_openrouter_llm, list_available_models
|
|
302
308
|
|
|
303
|
-
llm = get_openrouter_llm(model="
|
|
309
|
+
llm = get_openrouter_llm(model="sonnet55")
|
|
304
310
|
print(list_available_models())
|
|
305
|
-
# ['deepseek31', 'gemini25', '
|
|
311
|
+
# ['deepseek31', 'gemini25', 'gemini31', 'gemini3flash', 'gpt52', ...]
|
|
306
312
|
```
|
|
307
313
|
|
|
308
314
|
---
|
|
@@ -320,7 +326,7 @@ Add to your MCP settings (e.g., `~/.claude/claude_desktop_config.json` or projec
|
|
|
320
326
|
"mcpServers": {
|
|
321
327
|
"ipython": {
|
|
322
328
|
"command": "uvx",
|
|
323
|
-
"args": ["--from", "agentic-python-coder", "ipython_mcp"]
|
|
329
|
+
"args": ["--python", "3.14", "--from", "agentic-python-coder", "ipython_mcp"]
|
|
324
330
|
}
|
|
325
331
|
}
|
|
326
332
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
agentic_python_coder/__init__.py,sha256=e6o-k__u5xNIiQAkZbHtbZC2-NwpeOdi4MdQtAqJBjE,2112
|
|
2
2
|
agentic_python_coder/agent.py,sha256=0JfVNO-NEss9ZNEYkYvVlJSRzIxNa6sgRqLTdsD4zbs,16484
|
|
3
|
-
agentic_python_coder/cli.py,sha256=
|
|
4
|
-
agentic_python_coder/kernel.py,sha256=
|
|
5
|
-
agentic_python_coder/llm.py,sha256=
|
|
6
|
-
agentic_python_coder/mcp_server.py,sha256=
|
|
3
|
+
agentic_python_coder/cli.py,sha256=NWc1LCEL-L2TVCT6Su9a0AQ3ub3zg5GrY6XG3j_qPgI,14877
|
|
4
|
+
agentic_python_coder/kernel.py,sha256=14bfNvlay7QCeUiHrOptgj-fn8ZyXfyM08lDM_lUj1M,23803
|
|
5
|
+
agentic_python_coder/llm.py,sha256=ZK3b9wLzjDr6BIxUkfKhuiSDbXNR2XaQsE1J-960IzE,6998
|
|
6
|
+
agentic_python_coder/mcp_server.py,sha256=aEcNWNiR8dtxQpapk72UPtEvfedIJSjRxJM1OEipcSU,23251
|
|
7
7
|
agentic_python_coder/project_md.py,sha256=4xkQHlWb4cDPEkvegw1YwcfaTJ3aFbrl0CYcC_xxABY,3249
|
|
8
8
|
agentic_python_coder/runner.py,sha256=Kbw1ceYJ4MVfUKgSIkiuBhMb8ZtbZuJwbBeTUsvPRts,13045
|
|
9
9
|
agentic_python_coder/tools.py,sha256=tjhQbsF3n3bFIegnEOtE8czjzbtMSXy6B9gYeb-YAJ4,12088
|
|
@@ -28,21 +28,25 @@ agentic_python_coder/models/deepseek31.json,sha256=42qWgfBn2ErZndbpp-4-JtqRna2xl
|
|
|
28
28
|
agentic_python_coder/models/gemini25.json,sha256=I3nNMz2GwhFQLtHtZotV3hNUyWXq9ToMm96byM98LFA,123
|
|
29
29
|
agentic_python_coder/models/gemini31.json,sha256=q8y8pPEZE1hsv2vV7c1KckPHKE7Gfbi51xQgwM62i-o,117
|
|
30
30
|
agentic_python_coder/models/gemini3flash.json,sha256=S0AMVpzi3O5CQk68Q3Hi8iCHXMQQFnM4NbSh23x0qIM,91
|
|
31
|
-
agentic_python_coder/models/
|
|
31
|
+
agentic_python_coder/models/gemini4argon.json,sha256=MSFWsqRBsO8hVDoY89Qhgrv6FmSxVQSdQRb-R0KeF2M,109
|
|
32
32
|
agentic_python_coder/models/gpt52.json,sha256=oDYxC21iQTKC9uVbFRlAs-hCnu_4cEDFK3mmqPVIIes,84
|
|
33
33
|
agentic_python_coder/models/gpt56sol.json,sha256=xFNDxSz0ZC2qtDldgZ3ms1ela1InmhL5x_-UZktR1K8,88
|
|
34
34
|
agentic_python_coder/models/gpt56terra.json,sha256=NnVvnnF7EMK-pADCZsm1fJ8O8DLCT4obHc0x_00kcus,90
|
|
35
|
-
agentic_python_coder/models/
|
|
35
|
+
agentic_python_coder/models/gpt6astra.json,sha256=XlLKLXCs7Qt7B8yM0cHMQY0Np1Swhr9yT0XUsWxmfs0,88
|
|
36
|
+
agentic_python_coder/models/gpt6sol.json,sha256=xQvQIiu1XNcGseYVGHzZfibmqmY5YbKazgjYrWIgdcQ,86
|
|
37
|
+
agentic_python_coder/models/grok47.json,sha256=vXNCFAA9sejVdk5p6H2wca2RXYlAtxS-vxLOhr8rcLA,75
|
|
36
38
|
agentic_python_coder/models/opus45.json,sha256=wbRqoIrn1CSlu0pRnpR2S-1j1zWGD_jza7udZNnU3wY,87
|
|
37
39
|
agentic_python_coder/models/opus48.json,sha256=grMqaY0sCQnZeH4VxsPfwUIqlHpxNxTjmM47hHuyPkY,87
|
|
40
|
+
agentic_python_coder/models/opus55.json,sha256=FZaru1YCBd32aj3RGJkj4NbTvI94KoiZgbAQ7iUj9to,95
|
|
38
41
|
agentic_python_coder/models/qwen3.json,sha256=TJuIx5EllPIc8QBnagINlhNVxkLlsSDWRZAsFMqP_lo,94
|
|
39
42
|
agentic_python_coder/models/sonnet45.json,sha256=WeWezJxt4r7IugBMzRbnSIocmmcd6qc_756M4CHdEa8,89
|
|
40
43
|
agentic_python_coder/models/sonnet46.json,sha256=Ops1FpBoyx9PBGRhIXG8u-YGBgIui9DqvYxIc2BkJFM,89
|
|
41
44
|
agentic_python_coder/models/sonnet5.json,sha256=kf6DIkQlcGVZ40IzRv3GXFtNncZF_gKqQeGzZAxE_KM,87
|
|
45
|
+
agentic_python_coder/models/sonnet55.json,sha256=ibqrXCS21NfgE95XBeyeNrbs6XmV00eKA586uf7o0ic,97
|
|
42
46
|
agentic_python_coder/prompts/system.md,sha256=hREDVAhJXwCBAgJ3AE9JD6j-JRHREUPlkRSvThOvM3A,3807
|
|
43
47
|
agentic_python_coder/prompts/system_todo.md,sha256=TuNeeUNS9KqyF62Da6t2mlUCYhKsgzwGe5ic_vFPDqw,5054
|
|
44
|
-
agentic_python_coder-3.4.
|
|
45
|
-
agentic_python_coder-3.4.
|
|
46
|
-
agentic_python_coder-3.4.
|
|
47
|
-
agentic_python_coder-3.4.
|
|
48
|
-
agentic_python_coder-3.4.
|
|
48
|
+
agentic_python_coder-3.4.4.dist-info/METADATA,sha256=3k071sxanjm72mzxXtF7VhzKqH4y6Rs04_284Jll994,13255
|
|
49
|
+
agentic_python_coder-3.4.4.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
|
|
50
|
+
agentic_python_coder-3.4.4.dist-info/entry_points.txt,sha256=XIW3nZzL4kJ-Igohilj_mTvBcCyHBouDq2jmGzDILrk,107
|
|
51
|
+
agentic_python_coder-3.4.4.dist-info/licenses/LICENSE,sha256=R9-M_V-SPdN71IphOVzM7kCNpUYs_hwj7rtroTwDhs0,11362
|
|
52
|
+
agentic_python_coder-3.4.4.dist-info/RECORD,,
|
{agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{agentic_python_coder-3.4.2.dist-info → agentic_python_coder-3.4.4.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|