pyneat-cli 2.4.3__tar.gz → 2.4.5__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.
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/PKG-INFO +1 -1
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/__init__.py +1 -1
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/cli.py +24 -11
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/PKG-INFO +1 -1
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyproject.toml +1 -1
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/LICENSE +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/README.md +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/__main__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/benchmark.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/config.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/__init__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/atomic.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/engine.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/manifest.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/marker_cleanup.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/scope_guard.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/semantic_guard.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/type_shield.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/core/types.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/pre_commit.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/__init__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/ai_bugs.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/base.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/comments.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/conservative.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/dataclass.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/deadcode.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/debug.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/destructive.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/duplication.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/fstring.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/imports.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/init_protection.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/is_not_none.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/isolated.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/magic_numbers.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/match_case.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/naming.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/performance.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/quality.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/range_len_pattern.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/redundant.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/refactoring.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/safe.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/__init__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/critical.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/high.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/info.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/low.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_pack/medium.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/security_registry.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/typing.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/rules/unused.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/scanner/rust_scanner.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/__init__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/github_fuzz/__init__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/github_fuzz/__main__.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/github_fuzz/debug_logger.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/github_fuzz/fuzz_runner.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/github_fuzz/github_client.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/security/advisory_db.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/tools/security/dependency_scanner.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat/utils/naming.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/SOURCES.txt +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/dependency_links.txt +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/entry_points.txt +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/requires.txt +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/pyneat_cli.egg-info/top_level.txt +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/setup.cfg +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/setup.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_engine.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_fuzz.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_fuzz_github.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_integration.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_layers.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_rust_scanner.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_semantic_integrity.py +0 -0
- {pyneat_cli-2.4.3 → pyneat_cli-2.4.5}/tests/test_smoke.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyneat-cli
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: Neat Python AI Code Cleaner — removes AI-generated code artifacts, dead code, and security vulnerabilities
|
|
5
5
|
License: GNU AGPL-3.0-or-later
|
|
6
6
|
Keywords: ai,code-cleaner,python,linter,formatter,security,dead-code,refactoring,ast,auto-fix
|
|
@@ -1528,27 +1528,40 @@ def _get_menu_suggestions(last_command: str, context: str) -> Dict[str, tuple]:
|
|
|
1528
1528
|
|
|
1529
1529
|
def _handle_menu_choice(choice: str, suggestions: Dict[str, tuple], ctx: click.Context) -> None:
|
|
1530
1530
|
"""Handle user's menu choice - run the command directly."""
|
|
1531
|
-
# Command map: key ->
|
|
1531
|
+
# Command map: key -> command_name
|
|
1532
1532
|
choice_map = {
|
|
1533
|
-
'A':
|
|
1534
|
-
'B':
|
|
1535
|
-
'C':
|
|
1536
|
-
'D':
|
|
1533
|
+
'A': 'check',
|
|
1534
|
+
'B': 'explain',
|
|
1535
|
+
'C': 'clean',
|
|
1536
|
+
'D': 'report',
|
|
1537
1537
|
}
|
|
1538
1538
|
|
|
1539
1539
|
if choice in choice_map:
|
|
1540
|
-
|
|
1540
|
+
cmd_name = choice_map[choice]
|
|
1541
1541
|
click.echo("")
|
|
1542
|
-
click.echo(f" Running: {click.style('pyneat ' + ' '
|
|
1542
|
+
click.echo(f" Running: {click.style('pyneat ' + cmd_name + ' --help', fg='cyan', bold=True)}")
|
|
1543
1543
|
click.echo("")
|
|
1544
1544
|
|
|
1545
|
-
#
|
|
1545
|
+
# Lấy CLI group từ parent context
|
|
1546
1546
|
try:
|
|
1547
|
-
ctx.
|
|
1548
|
-
|
|
1547
|
+
cli_ctx = ctx.parent
|
|
1548
|
+
if cli_ctx is None:
|
|
1549
|
+
cli_ctx = click.get_current_context()
|
|
1550
|
+
|
|
1551
|
+
sub_cmd = cli_ctx.command.commands.get(cmd_name)
|
|
1552
|
+
if sub_cmd:
|
|
1553
|
+
# Tạo context mới với --help
|
|
1554
|
+
sub_ctx = sub_cmd.make_context(cmd_name, ['--help'])
|
|
1555
|
+
sub_cmd.invoke(sub_ctx)
|
|
1556
|
+
else:
|
|
1557
|
+
click.echo(f" {click.style('[!]', fg='red')} Command '{cmd_name}' not found")
|
|
1558
|
+
except SystemExit as e:
|
|
1559
|
+
# Help command thường exit(0) - không hiển thị lỗi
|
|
1549
1560
|
pass
|
|
1550
1561
|
except Exception as e:
|
|
1551
|
-
|
|
1562
|
+
# Chỉ hiển thị lỗi nếu có message thực sự
|
|
1563
|
+
if str(e) and str(e) != '0':
|
|
1564
|
+
click.echo(f" {click.style('[!]', fg='red')} Error: {e}")
|
|
1552
1565
|
else:
|
|
1553
1566
|
click.echo("")
|
|
1554
1567
|
click.echo(f" {click.style('[!]', fg='yellow', bold=True)} Invalid option.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyneat-cli
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: Neat Python AI Code Cleaner — removes AI-generated code artifacts, dead code, and security vulnerabilities
|
|
5
5
|
License: GNU AGPL-3.0-or-later
|
|
6
6
|
Keywords: ai,code-cleaner,python,linter,formatter,security,dead-code,refactoring,ast,auto-fix
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyneat-cli"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.5"
|
|
8
8
|
description = "Neat Python AI Code Cleaner — removes AI-generated code artifacts, dead code, and security vulnerabilities"
|
|
9
9
|
license = {text = "GNU AGPL-3.0-or-later"}
|
|
10
10
|
readme = "README.md"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|