crackerjack 0.22.6__py3-none-any.whl → 0.22.8__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.
Potentially problematic release.
This version of crackerjack might be problematic. Click here for more details.
- crackerjack/.pre-commit-config.yaml +1 -1
- crackerjack/.ruff_cache/0.12.1/5056746222905752453 +0 -0
- crackerjack/.ruff_cache/0.12.2/5056746222905752453 +0 -0
- crackerjack/.ruff_cache/0.12.3/5056746222905752453 +0 -0
- crackerjack/crackerjack.py +91 -34
- crackerjack/pyproject.toml +2 -2
- {crackerjack-0.22.6.dist-info → crackerjack-0.22.8.dist-info}/METADATA +1 -1
- {crackerjack-0.22.6.dist-info → crackerjack-0.22.8.dist-info}/RECORD +11 -10
- {crackerjack-0.22.6.dist-info → crackerjack-0.22.8.dist-info}/WHEEL +0 -0
- {crackerjack-0.22.6.dist-info → crackerjack-0.22.8.dist-info}/entry_points.txt +0 -0
- {crackerjack-0.22.6.dist-info → crackerjack-0.22.8.dist-info}/licenses/LICENSE +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
crackerjack/crackerjack.py
CHANGED
|
@@ -84,7 +84,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
84
84
|
code = self.remove_line_comments(code)
|
|
85
85
|
except Exception as e:
|
|
86
86
|
self.console.print(
|
|
87
|
-
f"[
|
|
87
|
+
f"[bold bright_yellow]⚠️ Warning: Failed to remove line comments from {file_path}: {e}[/bold bright_yellow]"
|
|
88
88
|
)
|
|
89
89
|
code = original_code
|
|
90
90
|
cleaning_failed = True
|
|
@@ -92,7 +92,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
92
92
|
code = self.remove_docstrings(code)
|
|
93
93
|
except Exception as e:
|
|
94
94
|
self.console.print(
|
|
95
|
-
f"[
|
|
95
|
+
f"[bold bright_yellow]⚠️ Warning: Failed to remove docstrings from {file_path}: {e}[/bold bright_yellow]"
|
|
96
96
|
)
|
|
97
97
|
code = original_code
|
|
98
98
|
cleaning_failed = True
|
|
@@ -100,7 +100,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
100
100
|
code = self.remove_extra_whitespace(code)
|
|
101
101
|
except Exception as e:
|
|
102
102
|
self.console.print(
|
|
103
|
-
f"[bright_yellow]⚠️ Warning: Failed to remove extra whitespace from {file_path}: {e}[/bright_yellow]"
|
|
103
|
+
f"[bold bright_yellow]⚠️ Warning: Failed to remove extra whitespace from {file_path}: {e}[/bold bright_yellow]"
|
|
104
104
|
)
|
|
105
105
|
code = original_code
|
|
106
106
|
cleaning_failed = True
|
|
@@ -108,22 +108,22 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
108
108
|
code = self.reformat_code(code)
|
|
109
109
|
except Exception as e:
|
|
110
110
|
self.console.print(
|
|
111
|
-
f"[bright_yellow]⚠️ Warning: Failed to reformat {file_path}: {e}[/bright_yellow]"
|
|
111
|
+
f"[bold bright_yellow]⚠️ Warning: Failed to reformat {file_path}: {e}[/bold bright_yellow]"
|
|
112
112
|
)
|
|
113
113
|
code = original_code
|
|
114
114
|
cleaning_failed = True
|
|
115
115
|
file_path.write_text(code, encoding="utf-8")
|
|
116
116
|
if cleaning_failed:
|
|
117
117
|
self.console.print(
|
|
118
|
-
f"[
|
|
118
|
+
f"[bold yellow]⚡ Partially cleaned:[/bold yellow] [dim bright_white]{file_path}[/dim bright_white]"
|
|
119
119
|
)
|
|
120
120
|
else:
|
|
121
121
|
self.console.print(
|
|
122
|
-
f"[
|
|
122
|
+
f"[bold green]✨ Cleaned:[/bold green] [dim bright_white]{file_path}[/dim bright_white]"
|
|
123
123
|
)
|
|
124
124
|
except PermissionError as e:
|
|
125
125
|
self.console.print(
|
|
126
|
-
f"[
|
|
126
|
+
f"[red]Failed to clean: {file_path} (Permission denied)[/red]"
|
|
127
127
|
)
|
|
128
128
|
handle_error(
|
|
129
129
|
ExecutionError(
|
|
@@ -137,7 +137,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
137
137
|
)
|
|
138
138
|
except OSError as e:
|
|
139
139
|
self.console.print(
|
|
140
|
-
f"[
|
|
140
|
+
f"[red]Failed to clean: {file_path} (File system error)[/red]"
|
|
141
141
|
)
|
|
142
142
|
handle_error(
|
|
143
143
|
ExecutionError(
|
|
@@ -151,7 +151,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
151
151
|
)
|
|
152
152
|
except UnicodeDecodeError as e:
|
|
153
153
|
self.console.print(
|
|
154
|
-
f"[
|
|
154
|
+
f"[red]Failed to clean: {file_path} (Encoding error)[/red]"
|
|
155
155
|
)
|
|
156
156
|
handle_error(
|
|
157
157
|
ExecutionError(
|
|
@@ -165,7 +165,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
165
165
|
)
|
|
166
166
|
except Exception as e:
|
|
167
167
|
self.console.print(
|
|
168
|
-
f"[
|
|
168
|
+
f"[red]Failed to clean: {file_path} (Unexpected error)[/red]"
|
|
169
169
|
)
|
|
170
170
|
handle_error(
|
|
171
171
|
ExecutionError(
|
|
@@ -615,7 +615,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
615
615
|
formatted_code = temp_path.read_text()
|
|
616
616
|
else:
|
|
617
617
|
self.console.print(
|
|
618
|
-
f"[bright_yellow]⚠️ Ruff formatting failed: {result.stderr}[/bright_yellow]"
|
|
618
|
+
f"[bold bright_yellow]⚠️ Ruff formatting failed: {result.stderr}[/bold bright_yellow]"
|
|
619
619
|
)
|
|
620
620
|
handle_error(
|
|
621
621
|
ExecutionError(
|
|
@@ -630,7 +630,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
630
630
|
formatted_code = code
|
|
631
631
|
except Exception as e:
|
|
632
632
|
self.console.print(
|
|
633
|
-
f"[bright_red]❌ Error running Ruff: {e}[/bright_red]"
|
|
633
|
+
f"[bold bright_red]❌ Error running Ruff: {e}[/bold bright_red]"
|
|
634
634
|
)
|
|
635
635
|
handle_error(
|
|
636
636
|
ExecutionError(
|
|
@@ -649,7 +649,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
649
649
|
return formatted_code
|
|
650
650
|
except Exception as e:
|
|
651
651
|
self.console.print(
|
|
652
|
-
f"[bright_red]❌ Error during reformatting: {e}[/bright_red]"
|
|
652
|
+
f"[bold bright_red]❌ Error during reformatting: {e}[/bold bright_red]"
|
|
653
653
|
)
|
|
654
654
|
handle_error(
|
|
655
655
|
ExecutionError(
|
|
@@ -822,7 +822,9 @@ class ConfigManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
822
822
|
self, cmd: list[str], **kwargs: t.Any
|
|
823
823
|
) -> subprocess.CompletedProcess[str]:
|
|
824
824
|
if self.dry_run:
|
|
825
|
-
self.console.print(
|
|
825
|
+
self.console.print(
|
|
826
|
+
f"[bold bright_black]→ {' '.join(cmd)}[/bold bright_black]"
|
|
827
|
+
)
|
|
826
828
|
return CompletedProcess(cmd, 0, "", "")
|
|
827
829
|
return execute(cmd, **kwargs)
|
|
828
830
|
|
|
@@ -844,7 +846,11 @@ class ProjectManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
844
846
|
["pdm", "list", "--freeze"], capture_output=True, text=True
|
|
845
847
|
).stdout.splitlines()
|
|
846
848
|
if not len([pkg for pkg in installed_pkgs if "pre-commit" in pkg]):
|
|
847
|
-
self.console.print("
|
|
849
|
+
self.console.print("\n" + "─" * 60)
|
|
850
|
+
self.console.print(
|
|
851
|
+
"[bold bright_blue]⚡ INIT[/bold bright_blue] [bold bright_white]First-time project setup[/bold bright_white]"
|
|
852
|
+
)
|
|
853
|
+
self.console.print("─" * 60 + "\n")
|
|
848
854
|
self.execute_command(["pdm", "self", "add", "keyring"])
|
|
849
855
|
self.execute_command(["pdm", "config", "python.use_uv", "true"])
|
|
850
856
|
self.execute_command(["git", "init"])
|
|
@@ -859,20 +865,22 @@ class ProjectManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
859
865
|
self.config_manager.update_pyproject_configs()
|
|
860
866
|
|
|
861
867
|
def run_pre_commit(self) -> None:
|
|
868
|
+
self.console.print("\n" + "-" * 60)
|
|
862
869
|
self.console.print(
|
|
863
|
-
"
|
|
870
|
+
"[bold bright_cyan]🔍 HOOKS[/bold bright_cyan] [bold bright_white]Running code quality checks[/bold bright_white]"
|
|
864
871
|
)
|
|
872
|
+
self.console.print("-" * 60 + "\n")
|
|
865
873
|
cmd = ["pre-commit", "run", "--all-files"]
|
|
866
874
|
if hasattr(self, "options") and getattr(self.options, "ai_agent", False):
|
|
867
875
|
cmd.extend(["-c", ".pre-commit-config-ai.yaml"])
|
|
868
876
|
check_all = self.execute_command(cmd)
|
|
869
877
|
if check_all.returncode > 0:
|
|
870
878
|
self.execute_command(["pdm", "lock"])
|
|
871
|
-
self.console.print("\n[green]
|
|
879
|
+
self.console.print("\n[bold green]✓ Dependencies locked[/bold green]\n")
|
|
872
880
|
check_all = self.execute_command(cmd)
|
|
873
881
|
if check_all.returncode > 0:
|
|
874
882
|
self.console.print(
|
|
875
|
-
"\n\n[red]Pre-commit failed. Please fix errors.[/red]\n"
|
|
883
|
+
"\n\n[bold red]❌ Pre-commit failed. Please fix errors.[/bold red]\n"
|
|
876
884
|
)
|
|
877
885
|
raise SystemExit(1)
|
|
878
886
|
|
|
@@ -880,7 +888,9 @@ class ProjectManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
880
888
|
self, cmd: list[str], **kwargs: t.Any
|
|
881
889
|
) -> subprocess.CompletedProcess[str]:
|
|
882
890
|
if self.dry_run:
|
|
883
|
-
self.console.print(
|
|
891
|
+
self.console.print(
|
|
892
|
+
f"[bold bright_black]→ {' '.join(cmd)}[/bold bright_black]"
|
|
893
|
+
)
|
|
884
894
|
return CompletedProcess(cmd, 0, "", "")
|
|
885
895
|
return execute(cmd, **kwargs)
|
|
886
896
|
|
|
@@ -923,7 +933,11 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
923
933
|
self.pkg_name = self.pkg_path.stem.lower().replace("-", "_")
|
|
924
934
|
self.pkg_dir = self.pkg_path / self.pkg_name
|
|
925
935
|
self.pkg_dir.mkdir(exist_ok=True)
|
|
926
|
-
self.console.print("\n
|
|
936
|
+
self.console.print("\n" + "-" * 60)
|
|
937
|
+
self.console.print(
|
|
938
|
+
"[bold bright_magenta]🛠️ SETUP[/bold bright_magenta] [bold bright_white]Initializing project structure[/bold bright_white]"
|
|
939
|
+
)
|
|
940
|
+
self.console.print("-" * 60 + "\n")
|
|
927
941
|
self.config_manager.pkg_name = self.pkg_name
|
|
928
942
|
self.project_manager.pkg_name = self.pkg_name
|
|
929
943
|
self.project_manager.pkg_dir = self.pkg_dir
|
|
@@ -935,10 +949,12 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
935
949
|
["pdm", "install"], capture_output=True, text=True
|
|
936
950
|
)
|
|
937
951
|
if result.returncode == 0:
|
|
938
|
-
self.console.print(
|
|
952
|
+
self.console.print(
|
|
953
|
+
"[bold green]✓ Dependencies installed[/bold green]\n"
|
|
954
|
+
)
|
|
939
955
|
else:
|
|
940
956
|
self.console.print(
|
|
941
|
-
"\n\n[red]PDM installation failed. Is PDM
|
|
957
|
+
"\n\n[bold red]❌ PDM installation failed. Is PDM installed? Run `pipx install pdm` and try again.[/bold red]\n\n"
|
|
942
958
|
)
|
|
943
959
|
|
|
944
960
|
def _update_precommit(self, options: t.Any) -> None:
|
|
@@ -951,13 +967,20 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
951
967
|
def _clean_project(self, options: t.Any) -> None:
|
|
952
968
|
if options.clean:
|
|
953
969
|
if self.pkg_dir:
|
|
970
|
+
self.console.print("\n" + "-" * 60)
|
|
971
|
+
self.console.print(
|
|
972
|
+
"[bold bright_blue]🧹 CLEAN[/bold bright_blue] [bold bright_white]Removing docstrings and comments[/bold bright_white]"
|
|
973
|
+
)
|
|
974
|
+
self.console.print("-" * 60 + "\n")
|
|
954
975
|
self.code_cleaner.clean_files(self.pkg_dir)
|
|
955
976
|
if self.pkg_path.stem == "crackerjack":
|
|
956
977
|
tests_dir = self.pkg_path / "tests"
|
|
957
978
|
if tests_dir.exists() and tests_dir.is_dir():
|
|
979
|
+
self.console.print("\n" + "─" * 60)
|
|
958
980
|
self.console.print(
|
|
959
|
-
"
|
|
981
|
+
"[bold bright_blue]🧪 TESTS[/bold bright_blue] [bold bright_white]Cleaning test files[/bold bright_white]"
|
|
960
982
|
)
|
|
983
|
+
self.console.print("─" * 60 + "\n")
|
|
961
984
|
self.code_cleaner.clean_files(tests_dir)
|
|
962
985
|
|
|
963
986
|
def _get_test_timeout(self, options: OptionsProtocol, project_size: str) -> int:
|
|
@@ -1055,33 +1078,39 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1055
1078
|
def _print_ai_agent_files(self, options: t.Any) -> None:
|
|
1056
1079
|
if getattr(options, "ai_agent", False):
|
|
1057
1080
|
self.console.print(
|
|
1058
|
-
"[
|
|
1081
|
+
"[bold bright_black]→ Structured test results: test-results.xml[/bold bright_black]"
|
|
1082
|
+
)
|
|
1083
|
+
self.console.print(
|
|
1084
|
+
"[bold bright_black]→ Coverage report: coverage.json[/bold bright_black]"
|
|
1059
1085
|
)
|
|
1060
|
-
self.console.print("[dim white]Coverage report: coverage.json[/dim white]")
|
|
1061
1086
|
if options.benchmark or options.benchmark_regression:
|
|
1062
1087
|
self.console.print(
|
|
1063
|
-
"[
|
|
1088
|
+
"[bold bright_black]→ Benchmark results: benchmark.json[/bold bright_black]"
|
|
1064
1089
|
)
|
|
1065
1090
|
|
|
1066
1091
|
def _handle_test_failure(self, result: t.Any, options: t.Any) -> None:
|
|
1067
1092
|
if result.stderr:
|
|
1068
1093
|
self.console.print(result.stderr)
|
|
1069
1094
|
self.console.print(
|
|
1070
|
-
"\n\n[bright_red]❌ Tests failed. Please fix errors.[/bright_red]\n"
|
|
1095
|
+
"\n\n[bold bright_red]❌ Tests failed. Please fix errors.[/bold bright_red]\n"
|
|
1071
1096
|
)
|
|
1072
1097
|
self._print_ai_agent_files(options)
|
|
1073
1098
|
raise SystemExit(1)
|
|
1074
1099
|
|
|
1075
1100
|
def _handle_test_success(self, options: t.Any) -> None:
|
|
1076
1101
|
self.console.print(
|
|
1077
|
-
"\n\n[bright_green]✅ Tests passed successfully![/bright_green]\n"
|
|
1102
|
+
"\n\n[bold bright_green]✅ Tests passed successfully![/bold bright_green]\n"
|
|
1078
1103
|
)
|
|
1079
1104
|
self._print_ai_agent_files(options)
|
|
1080
1105
|
|
|
1081
1106
|
def _run_tests(self, options: t.Any) -> None:
|
|
1082
1107
|
if not options.test:
|
|
1083
1108
|
return
|
|
1084
|
-
self.console.print("\n
|
|
1109
|
+
self.console.print("\n" + "-" * 60)
|
|
1110
|
+
self.console.print(
|
|
1111
|
+
"[bold bright_green]🧪 TESTING[/bold bright_green] [bold bright_white]Executing test suite[/bold bright_white]"
|
|
1112
|
+
)
|
|
1113
|
+
self.console.print("-" * 60 + "\n")
|
|
1085
1114
|
test_command = self._prepare_pytest_command(options)
|
|
1086
1115
|
result = self.execute_command(test_command, capture_output=True, text=True)
|
|
1087
1116
|
if result.stdout:
|
|
@@ -1094,6 +1123,11 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1094
1123
|
def _bump_version(self, options: OptionsProtocol) -> None:
|
|
1095
1124
|
for option in (options.publish, options.bump):
|
|
1096
1125
|
if option:
|
|
1126
|
+
self.console.print("\n" + "-" * 60)
|
|
1127
|
+
self.console.print(
|
|
1128
|
+
f"[bold bright_magenta]📦 VERSION[/bold bright_magenta] [bold bright_white]Bumping {option} version[/bold bright_white]"
|
|
1129
|
+
)
|
|
1130
|
+
self.console.print("-" * 60 + "\n")
|
|
1097
1131
|
if str(option) in ("minor", "major"):
|
|
1098
1132
|
from rich.prompt import Confirm
|
|
1099
1133
|
|
|
@@ -1102,7 +1136,7 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1102
1136
|
default=False,
|
|
1103
1137
|
):
|
|
1104
1138
|
self.console.print(
|
|
1105
|
-
f"[
|
|
1139
|
+
f"[bold yellow]⏭️ Skipping {option} version bump[/bold yellow]"
|
|
1106
1140
|
)
|
|
1107
1141
|
return
|
|
1108
1142
|
self.execute_command(["pdm", "bump", option])
|
|
@@ -1110,6 +1144,11 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1110
1144
|
|
|
1111
1145
|
def _publish_project(self, options: OptionsProtocol) -> None:
|
|
1112
1146
|
if options.publish:
|
|
1147
|
+
self.console.print("\n" + "-" * 60)
|
|
1148
|
+
self.console.print(
|
|
1149
|
+
"[bold bright_cyan]🚀 PUBLISH[/bold bright_cyan] [bold bright_white]Building and publishing package[/bold bright_white]"
|
|
1150
|
+
)
|
|
1151
|
+
self.console.print("-" * 60 + "\n")
|
|
1113
1152
|
build = self.execute_command(
|
|
1114
1153
|
["pdm", "build"], capture_output=True, text=True
|
|
1115
1154
|
)
|
|
@@ -1117,13 +1156,18 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1117
1156
|
if build.returncode > 0:
|
|
1118
1157
|
self.console.print(build.stderr)
|
|
1119
1158
|
self.console.print(
|
|
1120
|
-
"
|
|
1159
|
+
"[bold bright_red]❌ Build failed. Please fix errors.[/bold bright_red]"
|
|
1121
1160
|
)
|
|
1122
1161
|
raise SystemExit(1)
|
|
1123
1162
|
self.execute_command(["pdm", "publish", "--no-build"])
|
|
1124
1163
|
|
|
1125
1164
|
def _commit_and_push(self, options: OptionsProtocol) -> None:
|
|
1126
1165
|
if options.commit:
|
|
1166
|
+
self.console.print("\n" + "-" * 60)
|
|
1167
|
+
self.console.print(
|
|
1168
|
+
"[bold bright_white]📝 COMMIT[/bold bright_white] [bold bright_white]Saving changes to git[/bold bright_white]"
|
|
1169
|
+
)
|
|
1170
|
+
self.console.print("-" * 60 + "\n")
|
|
1127
1171
|
commit_msg = input("\nCommit message: ")
|
|
1128
1172
|
self.execute_command(
|
|
1129
1173
|
["git", "commit", "-m", commit_msg, "--no-verify", "--", "."]
|
|
@@ -1134,11 +1178,18 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1134
1178
|
self, cmd: list[str], **kwargs: t.Any
|
|
1135
1179
|
) -> subprocess.CompletedProcess[str]:
|
|
1136
1180
|
if self.dry_run:
|
|
1137
|
-
self.console.print(
|
|
1181
|
+
self.console.print(
|
|
1182
|
+
f"[bold bright_black]→ {' '.join(cmd)}[/bold bright_black]"
|
|
1183
|
+
)
|
|
1138
1184
|
return CompletedProcess(cmd, 0, "", "")
|
|
1139
1185
|
return execute(cmd, **kwargs)
|
|
1140
1186
|
|
|
1141
1187
|
def process(self, options: OptionsProtocol) -> None:
|
|
1188
|
+
self.console.print("\n" + "-" * 60)
|
|
1189
|
+
self.console.print(
|
|
1190
|
+
"[bold bright_cyan]⚒️ CRACKERJACKING[/bold bright_cyan] [bold bright_white]Starting workflow execution[/bold bright_white]"
|
|
1191
|
+
)
|
|
1192
|
+
self.console.print("-" * 60 + "\n")
|
|
1142
1193
|
if options.all:
|
|
1143
1194
|
options.clean = True
|
|
1144
1195
|
options.test = True
|
|
@@ -1152,12 +1203,18 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1152
1203
|
if not options.skip_hooks:
|
|
1153
1204
|
self.project_manager.run_pre_commit()
|
|
1154
1205
|
else:
|
|
1155
|
-
self.console.print(
|
|
1206
|
+
self.console.print(
|
|
1207
|
+
"\n[bold bright_yellow]⏭️ Skipping pre-commit hooks...[/bold bright_yellow]\n"
|
|
1208
|
+
)
|
|
1156
1209
|
self._run_tests(options)
|
|
1157
1210
|
self._bump_version(options)
|
|
1158
1211
|
self._publish_project(options)
|
|
1159
1212
|
self._commit_and_push(options)
|
|
1160
|
-
self.console.print("\n
|
|
1213
|
+
self.console.print("\n" + "-" * 60)
|
|
1214
|
+
self.console.print(
|
|
1215
|
+
"[bold bright_green]✨ CRACKERJACK COMPLETE[/bold bright_green] [bold bright_white]Workflow completed successfully![/bold bright_white]"
|
|
1216
|
+
)
|
|
1217
|
+
self.console.print("-" * 60 + "\n")
|
|
1161
1218
|
|
|
1162
1219
|
|
|
1163
1220
|
crackerjack_it = Crackerjack().process
|
crackerjack/pyproject.toml
CHANGED
|
@@ -4,7 +4,7 @@ requires = [ "pdm-backend" ]
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "crackerjack"
|
|
7
|
-
version = "0.22.
|
|
7
|
+
version = "0.22.7"
|
|
8
8
|
description = "Crackerjack: code quality toolkit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
keywords = [
|
|
@@ -104,7 +104,7 @@ lint.pydocstyle.convention = "google"
|
|
|
104
104
|
[tool.codespell]
|
|
105
105
|
skip = "*/data/*"
|
|
106
106
|
quiet-level = 3
|
|
107
|
-
ignore-words-list = "crate,uptodate,nd"
|
|
107
|
+
ignore-words-list = "crate,uptodate,nd,nin"
|
|
108
108
|
|
|
109
109
|
[tool.pyproject-fmt]
|
|
110
110
|
column_width = 120
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
crackerjack-0.22.
|
|
2
|
-
crackerjack-0.22.
|
|
3
|
-
crackerjack-0.22.
|
|
4
|
-
crackerjack-0.22.
|
|
1
|
+
crackerjack-0.22.8.dist-info/METADATA,sha256=XurKfkh5Zzt8a4aCCE5kuOPF4m8aSdgyLyGZArX6nw0,26251
|
|
2
|
+
crackerjack-0.22.8.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
3
|
+
crackerjack-0.22.8.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
|
4
|
+
crackerjack-0.22.8.dist-info/licenses/LICENSE,sha256=fDt371P6_6sCu7RyqiZH_AhT1LdN3sN1zjBtqEhDYCk,1531
|
|
5
5
|
crackerjack/.gitignore,sha256=n8cD6U16L3XZn__PvhYm_F7-YeFHFucHCyxWj2NZCGs,259
|
|
6
6
|
crackerjack/.libcst.codemod.yaml,sha256=a8DlErRAIPV1nE6QlyXPAzTOgkB24_spl2E9hphuf5s,772
|
|
7
7
|
crackerjack/.pdm.toml,sha256=dZe44HRcuxxCFESGG8SZIjmc-cGzSoyK3Hs6t4NYA8w,23
|
|
8
8
|
crackerjack/.pre-commit-config-ai.yaml,sha256=K8xXKMJcdhfXOk24L4XpK7H8YlvnZfOh4NVA6qvOz8I,3319
|
|
9
|
-
crackerjack/.pre-commit-config.yaml,sha256=
|
|
9
|
+
crackerjack/.pre-commit-config.yaml,sha256=kEaFx4gHzjpyB24ScoBIsvQ9I8GL4RDDB8tyRtr0_aA,2643
|
|
10
10
|
crackerjack/.pytest_cache/.gitignore,sha256=Ptcxtl0GFQwTji2tsL4Gl1UIiKa0frjEXsya26i46b0,37
|
|
11
11
|
crackerjack/.pytest_cache/CACHEDIR.TAG,sha256=N9yI75oKvt2-gQU6bdj9-xOvthMEXqHrSlyBWnSjveQ,191
|
|
12
12
|
crackerjack/.pytest_cache/README.md,sha256=c_1vzN2ALEGaay2YPWwxc7fal1WKxLWJ7ewt_kQ9ua0,302
|
|
@@ -34,8 +34,9 @@ crackerjack/.ruff_cache/0.11.7/10386934055395314831,sha256=lBNwN5zAgM4OzbkXIOzCc
|
|
|
34
34
|
crackerjack/.ruff_cache/0.11.7/3557596832929915217,sha256=fKlwUbsvT3YIKV6UR-aA_i64lLignWeVfVu-MMmVbU0,207
|
|
35
35
|
crackerjack/.ruff_cache/0.11.8/530407680854991027,sha256=xAMAL3Vu_HR6M-h5ojCTaak0By5ii8u-14pXULLgLqw,224
|
|
36
36
|
crackerjack/.ruff_cache/0.12.0/5056746222905752453,sha256=MqrIT5qymJcgAOBZyn-TvYoGCFfDFCgN9IwSULq8n14,256
|
|
37
|
-
crackerjack/.ruff_cache/0.12.1/5056746222905752453,sha256=
|
|
38
|
-
crackerjack/.ruff_cache/0.12.2/5056746222905752453,sha256=
|
|
37
|
+
crackerjack/.ruff_cache/0.12.1/5056746222905752453,sha256=ya4ZTWCPzijLvXKGnOjRiQC3IdQhyeH7XJ6rwWwxW9g,256
|
|
38
|
+
crackerjack/.ruff_cache/0.12.2/5056746222905752453,sha256=3mdGHbtATunuFEnjBCdX9N0CvGEQzv30tj1wEYmEp6I,256
|
|
39
|
+
crackerjack/.ruff_cache/0.12.3/5056746222905752453,sha256=Fg5KMq8c0ag2Vh3MTPrFs72njUsXZmjH2y0G_-lQGtM,256
|
|
39
40
|
crackerjack/.ruff_cache/0.2.0/10047773857155985907,sha256=j9LNa_RQ4Plor7go1uTYgz17cEENKvZQ-dP6b9MX0ik,248
|
|
40
41
|
crackerjack/.ruff_cache/0.2.1/8522267973936635051,sha256=u_aPBMibtAp_iYvLwR88GMAECMcIgHezxMyuapmU2P4,248
|
|
41
42
|
crackerjack/.ruff_cache/0.2.2/18053836298936336950,sha256=Xb_ebP0pVuUfSqPEZKlhQ70so_vqkEfMYpuHQ06iR5U,248
|
|
@@ -65,9 +66,9 @@ crackerjack/.ruff_cache/0.9.9/8843823720003377982,sha256=e4ymkXfQsUg5e_mtO34xTsa
|
|
|
65
66
|
crackerjack/.ruff_cache/CACHEDIR.TAG,sha256=WVMVbX4MVkpCclExbq8m-IcOZIOuIZf5FrYw5Pk-Ma4,43
|
|
66
67
|
crackerjack/__init__.py,sha256=8tBSPAru_YDuPpjz05cL7pNbZjYFoRT_agGd_FWa3gY,839
|
|
67
68
|
crackerjack/__main__.py,sha256=lEyi83ChuehqEJgUQ6Ib4ByOofvmhi_0M7oFamMC_1I,6407
|
|
68
|
-
crackerjack/crackerjack.py,sha256=
|
|
69
|
+
crackerjack/crackerjack.py,sha256=Ek7DwsaXxbD_15JYaH9p80vWkEPTFY1BvHxIDEyfJAA,47898
|
|
69
70
|
crackerjack/errors.py,sha256=Wcv0rXfzV9pHOoXYrhQEjyJd4kUUBbdiY-5M9nI8pDw,4050
|
|
70
71
|
crackerjack/interactive.py,sha256=pFItgRUyjOakABLCRz6nIp6_Ycx2LBSeojpYNiTelv0,16126
|
|
71
72
|
crackerjack/py313.py,sha256=buYE7LO11Q64ffowEhTZRFQoAGj_8sg3DTlZuv8M9eo,5890
|
|
72
|
-
crackerjack/pyproject.toml,sha256
|
|
73
|
-
crackerjack-0.22.
|
|
73
|
+
crackerjack/pyproject.toml,sha256=-elPKC69LwnqXesT4iyBPPDAoRcSH4GAiYCL4mY7SRI,4992
|
|
74
|
+
crackerjack-0.22.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|