Skip to content

Commit b1c30f0

Browse files
jwesleyeclaude
andcommitted
Bump version to 0.14.0
Version updates: - pyproject.toml: 0.10.0 → 0.14.0 - __init__.py: 0.13.0 → 0.14.0 Code quality improvements: - Applied ruff formatting to 22 files - Fixed 17 ruff linting issues (f-string, import order) - All quality checks passing (ruff + mypy) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent f562350 commit b1c30f0

24 files changed

Lines changed: 357 additions & 226 deletions

docs/examples/02_git_health_check.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
Token Savings: 70-85% (structured metrics vs parsing git output)
77
"""
88

9-
from coding_open_agent_tools.git import health
10-
import tempfile
119
import subprocess
10+
import tempfile
11+
12+
from coding_open_agent_tools.git import health
1213

1314
# Create a temporary git repository for demonstration
1415
print("=" * 60)
@@ -21,15 +22,23 @@
2122

2223
# Initialize git repo
2324
subprocess.run(["git", "init"], cwd=repo_path, capture_output=True)
24-
subprocess.run(["git", "config", "user.name", "Demo User"], cwd=repo_path, capture_output=True)
25-
subprocess.run(["git", "config", "user.email", "demo@example.com"], cwd=repo_path, capture_output=True)
25+
subprocess.run(
26+
["git", "config", "user.name", "Demo User"], cwd=repo_path, capture_output=True
27+
)
28+
subprocess.run(
29+
["git", "config", "user.email", "demo@example.com"],
30+
cwd=repo_path,
31+
capture_output=True,
32+
)
2633

2734
# Create some commits
2835
for i in range(5):
2936
with open(f"{repo_path}/file{i}.txt", "w") as f:
3037
f.write(f"Content for file {i}\n" * 100)
3138
subprocess.run(["git", "add", "."], cwd=repo_path, capture_output=True)
32-
subprocess.run(["git", "commit", "-m", f"Commit {i+1}"], cwd=repo_path, capture_output=True)
39+
subprocess.run(
40+
["git", "commit", "-m", f"Commit {i + 1}"], cwd=repo_path, capture_output=True
41+
)
3342

3443
print("Demo repository created with 5 commits\n")
3544

@@ -56,7 +65,7 @@
5665
print(f"Loose objects: {gc_check['loose_objects_count']}")
5766
print(f"Pack files: {gc_check['pack_files_count']}")
5867
print(f"Repository size: {gc_check['repo_size_mb']} MB")
59-
if gc_check['gc_needed'] == "true":
68+
if gc_check["gc_needed"] == "true":
6069
print(f"Recommendations: {gc_check['recommendations']}")
6170
print()
6271

@@ -67,7 +76,7 @@
6776

6877
large_files = health.find_large_files(repo_path, "1") # Files > 1KB
6978
print(f"Large files found: {large_files['large_files_count']}")
70-
if int(large_files['large_files_count']) > 0:
79+
if int(large_files["large_files_count"]) > 0:
7180
print(f"Files: {large_files['files_list']}")
7281
print(f"Total size: {large_files['total_size_kb']} KB")
7382
print()
@@ -95,7 +104,7 @@
95104
health_check = health.check_repository_health(repo_path)
96105
print(f"Has issues: {health_check['has_issues']}")
97106
print(f"Issue count: {health_check['issue_count']}")
98-
if int(health_check['issue_count']) > 0:
107+
if int(health_check["issue_count"]) > 0:
99108
print(f"Issues: {health_check['issues']}")
100109
print(f"Recommendations: {health_check['recommendations']}")
101110
print()

docs/examples/03_code_navigation.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def helper_function(x: int, y: int) -> int:
101101
print("=" * 60)
102102

103103
signature = navigation.get_python_function_signature(source_code, "calculate_total")
104-
print(f"Function: calculate_total")
104+
print("Function: calculate_total")
105105
print(f"Signature: {signature['signature']}")
106106
print(f"Has return type: {signature['has_return_type']}")
107107
print()
@@ -112,7 +112,7 @@ def helper_function(x: int, y: int) -> int:
112112
print("=" * 60)
113113

114114
docstring = navigation.get_python_function_docstring(source_code, "process_data")
115-
print(f"Function: process_data")
115+
print("Function: process_data")
116116
print(f"Docstring: {docstring['docstring'][:100]}...")
117117
print(f"Has docstring: {docstring['has_docstring']}")
118118
print()
@@ -137,13 +137,15 @@ def helper_function(x: int, y: int) -> int:
137137
print("=" * 60)
138138

139139
line_nums = navigation.get_python_function_line_numbers(source_code, "process_data")
140-
print(f"Function: process_data")
140+
print("Function: process_data")
141141
print(f"Start line: {line_nums['start_line']}")
142142
print(f"End line: {line_nums['end_line']}")
143143
print(f"Line count: {line_nums['line_count']}")
144144
print()
145145
print("Now you can use Read tool with offset/limit:")
146-
print(f" Read(file_path='module.py', offset={line_nums['start_line']}, limit={line_nums['line_count']})")
146+
print(
147+
f" Read(file_path='module.py', offset={line_nums['start_line']}, limit={line_nums['line_count']})"
148+
)
147149
print()
148150

149151
# Example 6: Check if function exists (quick validation)
@@ -154,7 +156,9 @@ def helper_function(x: int, y: int) -> int:
154156
exists_check = navigation.check_python_function_exists(source_code, "calculate_total")
155157
print(f"Function 'calculate_total' exists: {exists_check['exists']}")
156158

157-
missing_check = navigation.check_python_function_exists(source_code, "nonexistent_function")
159+
missing_check = navigation.check_python_function_exists(
160+
source_code, "nonexistent_function"
161+
)
158162
print(f"Function 'nonexistent_function' exists: {missing_check['exists']}")
159163
print()
160164

@@ -174,7 +178,7 @@ def helper_function(x: int, y: int) -> int:
174178
print("=" * 60)
175179

176180
methods = navigation.get_python_class_methods(source_code, "DataProcessor")
177-
print(f"Class: DataProcessor")
181+
print("Class: DataProcessor")
178182
print(f"Methods: {methods['methods']}")
179183
print(f"Method count: {methods['method_count']}")
180184
print()

docs/examples/04_security_scanning.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
Token Savings: 85-90% (structured detection vs manual analysis)
77
"""
88

9+
import os
10+
import tempfile
11+
912
from coding_open_agent_tools.analysis import secrets
1013
from coding_open_agent_tools.shell import security
11-
from coding_open_agent_tools.git import security as git_security
12-
import tempfile
13-
import os
1414

1515
# Example 1: Scan code for secrets
1616
print("=" * 60)
@@ -42,8 +42,8 @@ def process_data():
4242
result = secrets.scan_for_secrets(python_code_with_secrets)
4343
print(f"Secrets found: {result['secrets_found']}")
4444
print(f"Secret count: {result['secret_count']}")
45-
print(f"Secret types detected:")
46-
for secret in eval(result['secrets_found']):
45+
print("Secret types detected:")
46+
for secret in eval(result["secrets_found"]):
4747
print(f" - Line {secret['line']}: {secret['type']}")
4848
print()
4949

@@ -82,8 +82,8 @@ def process_data():
8282
print(f"Critical issues: {security_result['critical_count']}")
8383
print(f"High issues: {security_result['high_count']}")
8484
print(f"Medium issues: {security_result['medium_count']}")
85-
print(f"\nIssues detected:")
86-
for issue in eval(security_result['issues']):
85+
print("\nIssues detected:")
86+
for issue in eval(security_result["issues"]):
8787
print(f" [{issue['severity']}] Line {issue['line']}: {issue['type']}")
8888
print(f" {issue['description']}")
8989
print()
@@ -118,8 +118,8 @@ def process_data(data):
118118
print(f"Total files scanned: {dir_result['total_files']}")
119119
print(f"Files with secrets: {dir_result['files_with_secrets']}")
120120
print(f"Total secrets found: {dir_result['total_secrets']}")
121-
print(f"\nFiles containing secrets:")
122-
for file_info in eval(dir_result['results']):
121+
print("\nFiles containing secrets:")
122+
for file_info in eval(dir_result["results"]):
123123
print(f" {file_info['file']}: {file_info['secret_count']} secrets")
124124

125125
# Cleanup
@@ -146,7 +146,7 @@ def process_data(data):
146146
validation = secrets.validate_secret_patterns(pattern)
147147
print(f"Pattern: {pattern[:30]}...")
148148
print(f" Is potential secret: {validation['is_potential_secret']}")
149-
if validation['is_potential_secret'] == "true":
149+
if validation["is_potential_secret"] == "true":
150150
print(f" Pattern types: {validation['pattern_types']}")
151151
print()
152152

docs/examples/05_config_parsing.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
"""
88

99
from coding_open_agent_tools.config import (
10+
env_parser,
1011
extractors,
1112
parsers,
12-
env_parser,
13-
validators,
1413
security,
14+
validators,
1515
)
1616

1717
# Example 1: Parse and extract from YAML
@@ -75,8 +75,8 @@
7575
env_result = env_parser.parse_env_file(env_content)
7676
print(f"Variables found: {env_result['variable_count']}")
7777
print(f"Has errors: {env_result['has_errors']}")
78-
print(f"\nVariables:")
79-
for var in eval(env_result['variables'])[:5]: # Show first 5
78+
print("\nVariables:")
79+
for var in eval(env_result["variables"])[:5]: # Show first 5
8080
print(f" {var['key']} = {var['value']}")
8181
print()
8282

@@ -130,10 +130,10 @@
130130
ini_result = parsers.parse_ini_file(ini_content)
131131
print(f"Sections found: {ini_result['section_count']}")
132132
print(f"Total settings: {ini_result['total_settings']}")
133-
print(f"\nSections:")
134-
for section in eval(ini_result['sections'])[:2]:
133+
print("\nSections:")
134+
for section in eval(ini_result["sections"])[:2]:
135135
print(f" [{section['section']}]")
136-
for key, value in eval(section['settings']).items():
136+
for key, value in eval(section["settings"]).items():
137137
print(f" {key} = {value}")
138138
print()
139139

@@ -156,8 +156,8 @@
156156

157157
props_result = parsers.parse_properties_file(properties_content)
158158
print(f"Properties found: {props_result['property_count']}")
159-
print(f"\nProperties:")
160-
for prop in eval(props_result['properties'])[:5]:
159+
print("\nProperties:")
160+
for prop in eval(props_result["properties"])[:5]:
161161
print(f" {prop['key']} = {prop['value']}")
162162
print()
163163

@@ -207,8 +207,8 @@
207207
security_check = security.check_gitignore_security(gitignore_content)
208208
print(f"Is secure: {security_check['is_secure']}")
209209
print(f"Missing patterns: {security_check['missing_pattern_count']}")
210-
print(f"\nMissing critical patterns:")
211-
for pattern in eval(security_check['missing_patterns'])[:5]:
210+
print("\nMissing critical patterns:")
211+
for pattern in eval(security_check["missing_patterns"])[:5]:
212212
print(f" {pattern['pattern']} - {pattern['reason']}")
213213
print()
214214

@@ -231,8 +231,8 @@
231231
merged = env_parser.merge_env_files(base_env, override_env)
232232
print(f"Merged variables: {merged['merged_count']}")
233233
print(f"Conflicts: {merged['conflict_count']}")
234-
print(f"\nMerged content preview:")
235-
print(merged['merged_content'][:200])
234+
print("\nMerged content preview:")
235+
print(merged["merged_content"][:200])
236236
print()
237237

238238
# Why this saves tokens:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta:__legacy__"
44

55
[project]
66
name = "coding-open-agent-tools"
7-
version = "0.10.0" # Minor: Phase 12 completion - test coverage expansion, code duplication reduction, decorator migration, comprehensive documentation
7+
version = "0.14.0" # Minor: Phase 12 completion - test coverage expansion, code duplication reduction, decorator migration, comprehensive documentation
88
description = "Advanced code generation and shell scripting toolkit for AI agents, complementing basic-open-agent-tools with development-focused capabilities."
99
readme = "README.md"
1010
requires-python = ">=3.9"

src/coding_open_agent_tools/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
automation capabilities designed specifically for AI agents.
88
"""
99

10-
__version__ = "0.13.0"
10+
__version__ = "0.14.0"
1111

1212
# Import migrated modules
1313
from . import (

0 commit comments

Comments
 (0)