pyneat-cli 2.4.0__tar.gz → 2.4.2__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 (79) hide show
  1. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/PKG-INFO +29 -2
  2. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/README.md +28 -1
  3. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/__init__.py +1 -1
  4. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/cli.py +25 -45
  5. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/PKG-INFO +29 -2
  6. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyproject.toml +1 -1
  7. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/LICENSE +0 -0
  8. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/__main__.py +0 -0
  9. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/benchmark.py +0 -0
  10. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/config.py +0 -0
  11. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/__init__.py +0 -0
  12. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/atomic.py +0 -0
  13. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/engine.py +0 -0
  14. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/manifest.py +0 -0
  15. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/marker_cleanup.py +0 -0
  16. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/scope_guard.py +0 -0
  17. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/semantic_guard.py +0 -0
  18. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/type_shield.py +0 -0
  19. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/core/types.py +0 -0
  20. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/pre_commit.py +0 -0
  21. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/__init__.py +0 -0
  22. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/ai_bugs.py +0 -0
  23. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/base.py +0 -0
  24. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/comments.py +0 -0
  25. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/conservative.py +0 -0
  26. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/dataclass.py +0 -0
  27. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/deadcode.py +0 -0
  28. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/debug.py +0 -0
  29. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/destructive.py +0 -0
  30. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/duplication.py +0 -0
  31. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/fstring.py +0 -0
  32. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/imports.py +0 -0
  33. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/init_protection.py +0 -0
  34. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/is_not_none.py +0 -0
  35. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/isolated.py +0 -0
  36. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/magic_numbers.py +0 -0
  37. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/match_case.py +0 -0
  38. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/naming.py +0 -0
  39. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/performance.py +0 -0
  40. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/quality.py +0 -0
  41. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/range_len_pattern.py +0 -0
  42. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/redundant.py +0 -0
  43. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/refactoring.py +0 -0
  44. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/safe.py +0 -0
  45. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security.py +0 -0
  46. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/__init__.py +0 -0
  47. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/critical.py +0 -0
  48. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/high.py +0 -0
  49. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/info.py +0 -0
  50. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/low.py +0 -0
  51. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_pack/medium.py +0 -0
  52. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/security_registry.py +0 -0
  53. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/typing.py +0 -0
  54. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/rules/unused.py +0 -0
  55. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/scanner/rust_scanner.py +0 -0
  56. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/__init__.py +0 -0
  57. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/github_fuzz/__init__.py +0 -0
  58. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/github_fuzz/__main__.py +0 -0
  59. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/github_fuzz/debug_logger.py +0 -0
  60. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/github_fuzz/fuzz_runner.py +0 -0
  61. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/github_fuzz/github_client.py +0 -0
  62. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/security/advisory_db.py +0 -0
  63. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/tools/security/dependency_scanner.py +0 -0
  64. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat/utils/naming.py +0 -0
  65. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/SOURCES.txt +0 -0
  66. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/dependency_links.txt +0 -0
  67. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/entry_points.txt +0 -0
  68. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/requires.txt +0 -0
  69. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/pyneat_cli.egg-info/top_level.txt +0 -0
  70. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/setup.cfg +0 -0
  71. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/setup.py +0 -0
  72. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_engine.py +0 -0
  73. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_fuzz.py +0 -0
  74. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_fuzz_github.py +0 -0
  75. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_integration.py +0 -0
  76. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_layers.py +0 -0
  77. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_rust_scanner.py +0 -0
  78. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/tests/test_semantic_integrity.py +0 -0
  79. {pyneat_cli-2.4.0 → pyneat_cli-2.4.2}/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.0
3
+ Version: 2.4.2
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
@@ -32,7 +32,7 @@ Dynamic: license-file
32
32
 
33
33
  # PyNeat: The Anti-Spaghetti Code Cleaner
34
34
 
35
- **PyNeat 2.3.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
35
+ **PyNeat 2.4.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
36
36
 
37
37
  ## Features
38
38
 
@@ -120,6 +120,33 @@ Aggressive rules that **may break code** — always review changes:
120
120
  - `--backup` + `--in-place` — safe file modification
121
121
  - `--export-manifest` — auto-export PYNAGENT manifest
122
122
 
123
+ ### Interactive Feature Menu
124
+ After running `check` or `clean`, an interactive menu appears with smart suggestions:
125
+ - Shows 4-7 relevant features based on the last command
126
+ - Option names in English, descriptions in Vietnamese
127
+ - Press Enter or q to skip
128
+
129
+ ```
130
+ ┌─────────────────────────────────────────────────────────────┐
131
+ │ EXPLORE MORE FEATURES │
132
+ └─────────────────────────────────────────────────────────────┘
133
+
134
+ [3] 🧹 Clean Code
135
+ Thêm type hints, xóa unused imports, số magic, debug prints...
136
+ → pyneat clean file.py
137
+
138
+ [2] 📖 Explain Rule
139
+ Nguyên nhân, cách fix, CWE/OWASP, verification steps...
140
+ → pyneat explain SEC-001
141
+
142
+ [4] 📊 Export Report (JSON/SARIF)
143
+ Tích hợp CI/CD: GitHub Code Scanning, GitLab SAST...
144
+ → pyneat report . -f sarif -o security.sarif
145
+
146
+ [q] Exit - return to terminal
147
+ [Enter] Skip this menu
148
+ ```
149
+
123
150
  ### Pre-commit + GitHub Actions
124
151
  - Auto-generate `.pyneat.manifest.json` on commit
125
152
  - CI/CD job for automated manifest export on push/PR
@@ -1,6 +1,6 @@
1
1
  # PyNeat: The Anti-Spaghetti Code Cleaner
2
2
 
3
- **PyNeat 2.3.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
3
+ **PyNeat 2.4.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
4
4
 
5
5
  ## Features
6
6
 
@@ -88,6 +88,33 @@ Aggressive rules that **may break code** — always review changes:
88
88
  - `--backup` + `--in-place` — safe file modification
89
89
  - `--export-manifest` — auto-export PYNAGENT manifest
90
90
 
91
+ ### Interactive Feature Menu
92
+ After running `check` or `clean`, an interactive menu appears with smart suggestions:
93
+ - Shows 4-7 relevant features based on the last command
94
+ - Option names in English, descriptions in Vietnamese
95
+ - Press Enter or q to skip
96
+
97
+ ```
98
+ ┌─────────────────────────────────────────────────────────────┐
99
+ │ EXPLORE MORE FEATURES │
100
+ └─────────────────────────────────────────────────────────────┘
101
+
102
+ [3] 🧹 Clean Code
103
+ Thêm type hints, xóa unused imports, số magic, debug prints...
104
+ → pyneat clean file.py
105
+
106
+ [2] 📖 Explain Rule
107
+ Nguyên nhân, cách fix, CWE/OWASP, verification steps...
108
+ → pyneat explain SEC-001
109
+
110
+ [4] 📊 Export Report (JSON/SARIF)
111
+ Tích hợp CI/CD: GitHub Code Scanning, GitLab SAST...
112
+ → pyneat report . -f sarif -o security.sarif
113
+
114
+ [q] Exit - return to terminal
115
+ [Enter] Skip this menu
116
+ ```
117
+
91
118
  ### Pre-commit + GitHub Actions
92
119
  - Auto-generate `.pyneat.manifest.json` on commit
93
120
  - CI/CD job for automated manifest export on push/PR
@@ -85,7 +85,7 @@ from .rules.ai_bugs import AIBugRule
85
85
  from .rules.duplication import CodeDuplicationRule
86
86
  from .rules.naming import NamingInconsistencyRule
87
87
 
88
- __version__ = "2.4.0"
88
+ __version__ = "2.4.2"
89
89
 
90
90
  __all__ = [
91
91
  # Core
@@ -1468,13 +1468,13 @@ def show_feature_menu(last_command: str = "", context: str = "") -> None:
1468
1468
  click.echo(" ────────────────────────────────────────────────────────────")
1469
1469
  click.echo("")
1470
1470
 
1471
- # Chờ input
1471
+ # Chờ input - giữ nguyên hoa/thường vì dùng phím A, B, C, D
1472
1472
  try:
1473
- choice = input(" Select option (Enter to exit): ").strip().lower()
1473
+ choice = input(" Select option (Enter to exit): ").strip().upper()
1474
1474
  except (EOFError, KeyboardInterrupt):
1475
- choice = 'q'
1475
+ choice = 'Q'
1476
1476
 
1477
- if choice in ('q', 'quit', 'exit', ''):
1477
+ if choice in ('Q', 'QUIT', 'EXIT', ''):
1478
1478
  return
1479
1479
 
1480
1480
  # Xử lý lựa chọn
@@ -1486,57 +1486,40 @@ def _get_menu_suggestions(last_command: str, context: str) -> Dict[str, tuple]:
1486
1486
 
1487
1487
  Returns dict of {key: (icon, title, description, command_example)}
1488
1488
  """
1489
+ # Chữ cái A, B, C, D cố định - luôn hiển thị 4 lựa chọn liên tục
1489
1490
  all_options = {
1490
- # Bảo mật & Quét lỗi
1491
- '1': ('🔒', 'Security Check',
1491
+ 'A': ('🔒', 'Security Check',
1492
1492
  'Quét lỗ hổng: SQL injection, path traversal, hardcoded secrets...',
1493
1493
  'pyneat check file.py'),
1494
- '2': ('📖', 'Explain Rule',
1494
+ 'B': ('📖', 'Explain Rule',
1495
1495
  'Nguyên nhân, cách fix, CWE/OWASP, verification steps...',
1496
1496
  'pyneat explain SEC-001'),
1497
-
1498
- # Làm sạch code
1499
- '3': ('🧹', 'Clean Code',
1497
+ 'C': ('🧹', 'Clean Code',
1500
1498
  'Thêm type hints, xóa unused imports, số magic, debug prints...',
1501
1499
  'pyneat clean file.py'),
1502
-
1503
- # Báo cáo & CI/CD
1504
- '4': ('📊', 'Export Report (JSON/SARIF)',
1500
+ 'D': ('📊', 'Export Report (JSON/SARIF)',
1505
1501
  'Tích hợp CI/CD: GitHub Code Scanning, GitLab SAST...',
1506
1502
  'pyneat report . -f sarif -o security.sarif'),
1507
-
1508
- # So sánh & Debug
1509
- '5': ('🔍', 'View Diff',
1510
- 'So sánh code trước và sau khi làm sạch...',
1511
- 'pyneat clean file.py --diff'),
1512
-
1513
- # Cấu hình
1514
- '6': ('📋', 'View All Rules',
1515
- 'Trạng thái bật/tắt, severity, mô tả ngắn của mỗi rule...',
1516
- 'pyneat rules'),
1517
- '7': ('⚙️', 'Configure & Optimize',
1518
- 'Bật/tắt rules, đặt ngưỡng, cấu hình package...',
1519
- 'pyneat rules --verbose'),
1520
1503
  }
1521
1504
 
1522
- # Smart suggestions dựa trên command vừa chạy
1505
+ # Smart suggestions dựa trên command vừa chạy - LUÔN dùng A, B, C, D
1523
1506
  if last_command == 'check':
1524
- # Sau check bảo mật → clean + explain + report
1525
- ordered = ['3', '2', '4', '5']
1507
+ # Sau check bảo mật → clean + explain + report + diff
1508
+ ordered = ['A', 'B', 'C', 'D']
1526
1509
  elif last_command == 'clean':
1527
- # Sau clean → check bảo mật + diff + report
1528
- ordered = ['1', '5', '4', '7']
1510
+ # Sau clean → check bảo mật + diff + report + config
1511
+ ordered = ['A', 'B', 'C', 'D']
1529
1512
  elif last_command == 'explain':
1530
- # Sau explain → check + clean + report
1531
- ordered = ['1', '3', '4', '5']
1513
+ # Sau explain → check + clean + report + diff
1514
+ ordered = ['A', 'B', 'C', 'D']
1532
1515
  elif last_command == 'rules':
1533
- # Sau rules → check + clean
1534
- ordered = ['1', '3', '2', '4']
1516
+ # Sau rules → check + clean + explain + report
1517
+ ordered = ['A', 'B', 'C', 'D']
1535
1518
  elif last_command == 'report':
1536
- # Sau report → check + clean
1537
- ordered = ['1', '3', '2', '7']
1519
+ # Sau report → check + clean + explain + config
1520
+ ordered = ['A', 'B', 'C', 'D']
1538
1521
  else:
1539
- ordered = ['1', '3', '2', '4']
1522
+ ordered = ['A', 'B', 'C', 'D']
1540
1523
 
1541
1524
  return {k: all_options[k] for k in ordered if k in all_options}
1542
1525
 
@@ -1544,13 +1527,10 @@ def _get_menu_suggestions(last_command: str, context: str) -> Dict[str, tuple]:
1544
1527
  def _handle_menu_choice(choice: str, suggestions: Dict[str, tuple]) -> None:
1545
1528
  """Handle user's menu choice."""
1546
1529
  choice_map = {
1547
- '1': ('check', 'pyneat check file.py --help'),
1548
- '2': ('explain', 'pyneat explain --help'),
1549
- '3': ('clean', 'pyneat clean file.py --help'),
1550
- '4': ('report', 'pyneat report --help'),
1551
- '5': ('diff', 'pyneat clean file.py --diff --help'),
1552
- '6': ('rules', 'pyneat rules --help'),
1553
- '7': ('config', 'pyneat rules --help'),
1530
+ 'A': ('check', 'pyneat check file.py --help'),
1531
+ 'B': ('explain', 'pyneat explain --help'),
1532
+ 'C': ('clean', 'pyneat clean file.py --help'),
1533
+ 'D': ('report', 'pyneat report --help'),
1554
1534
  }
1555
1535
 
1556
1536
  if choice in choice_map:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyneat-cli
3
- Version: 2.4.0
3
+ Version: 2.4.2
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
@@ -32,7 +32,7 @@ Dynamic: license-file
32
32
 
33
33
  # PyNeat: The Anti-Spaghetti Code Cleaner
34
34
 
35
- **PyNeat 2.3.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
35
+ **PyNeat 2.4.0** is an aggressive, AST-based Python code refactoring tool designed to clean up messy, legacy, or AI-generated code. Unlike standard formatters that only fix whitespace, PyNeat performs deep structural surgery on your logic in a single optimized pass using LibCST.
36
36
 
37
37
  ## Features
38
38
 
@@ -120,6 +120,33 @@ Aggressive rules that **may break code** — always review changes:
120
120
  - `--backup` + `--in-place` — safe file modification
121
121
  - `--export-manifest` — auto-export PYNAGENT manifest
122
122
 
123
+ ### Interactive Feature Menu
124
+ After running `check` or `clean`, an interactive menu appears with smart suggestions:
125
+ - Shows 4-7 relevant features based on the last command
126
+ - Option names in English, descriptions in Vietnamese
127
+ - Press Enter or q to skip
128
+
129
+ ```
130
+ ┌─────────────────────────────────────────────────────────────┐
131
+ │ EXPLORE MORE FEATURES │
132
+ └─────────────────────────────────────────────────────────────┘
133
+
134
+ [3] 🧹 Clean Code
135
+ Thêm type hints, xóa unused imports, số magic, debug prints...
136
+ → pyneat clean file.py
137
+
138
+ [2] 📖 Explain Rule
139
+ Nguyên nhân, cách fix, CWE/OWASP, verification steps...
140
+ → pyneat explain SEC-001
141
+
142
+ [4] 📊 Export Report (JSON/SARIF)
143
+ Tích hợp CI/CD: GitHub Code Scanning, GitLab SAST...
144
+ → pyneat report . -f sarif -o security.sarif
145
+
146
+ [q] Exit - return to terminal
147
+ [Enter] Skip this menu
148
+ ```
149
+
123
150
  ### Pre-commit + GitHub Actions
124
151
  - Auto-generate `.pyneat.manifest.json` on commit
125
152
  - CI/CD job for automated manifest export on push/PR
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pyneat-cli"
7
- version = "2.4.0"
7
+ version = "2.4.2"
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