crackerjack 0.22.3__py3-none-any.whl → 0.22.5__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 +5 -5
- crackerjack/.ruff_cache/0.12.1/5056746222905752453 +0 -0
- crackerjack/.ruff_cache/0.12.2/5056746222905752453 +0 -0
- crackerjack/crackerjack.py +56 -34
- crackerjack/pyproject.toml +4 -4
- {crackerjack-0.22.3.dist-info → crackerjack-0.22.5.dist-info}/METADATA +4 -4
- {crackerjack-0.22.3.dist-info → crackerjack-0.22.5.dist-info}/RECORD +10 -9
- {crackerjack-0.22.3.dist-info → crackerjack-0.22.5.dist-info}/WHEEL +1 -1
- {crackerjack-0.22.3.dist-info → crackerjack-0.22.5.dist-info}/entry_points.txt +0 -0
- {crackerjack-0.22.3.dist-info → crackerjack-0.22.5.dist-info}/licenses/LICENSE +0 -0
|
@@ -21,7 +21,7 @@ repos:
|
|
|
21
21
|
|
|
22
22
|
# Package management - once structure is valid
|
|
23
23
|
- repo: https://github.com/pdm-project/pdm
|
|
24
|
-
rev: 2.25.
|
|
24
|
+
rev: 2.25.4
|
|
25
25
|
hooks:
|
|
26
26
|
- id: pdm-lock-check
|
|
27
27
|
- id: pdm-sync
|
|
@@ -29,7 +29,7 @@ repos:
|
|
|
29
29
|
- keyring
|
|
30
30
|
|
|
31
31
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
32
|
-
rev: 0.7.
|
|
32
|
+
rev: 0.7.20
|
|
33
33
|
hooks:
|
|
34
34
|
- id: uv-lock
|
|
35
35
|
files: ^pyproject\.toml$
|
|
@@ -50,7 +50,7 @@ repos:
|
|
|
50
50
|
- tomli
|
|
51
51
|
|
|
52
52
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
53
|
-
rev: v0.12.
|
|
53
|
+
rev: v0.12.2
|
|
54
54
|
hooks:
|
|
55
55
|
- id: ruff-check
|
|
56
56
|
- id: ruff-format
|
|
@@ -96,12 +96,12 @@ repos:
|
|
|
96
96
|
- libcst>=1.1.0
|
|
97
97
|
|
|
98
98
|
- repo: https://github.com/PyCQA/bandit
|
|
99
|
-
rev: '1.8.
|
|
99
|
+
rev: '1.8.6'
|
|
100
100
|
hooks:
|
|
101
101
|
- id: bandit
|
|
102
102
|
args: ["-c", "pyproject.toml"]
|
|
103
103
|
|
|
104
104
|
- repo: https://github.com/RobertCraigie/pyright-python
|
|
105
|
-
rev: v1.1.
|
|
105
|
+
rev: v1.1.403
|
|
106
106
|
hooks:
|
|
107
107
|
- id: pyright
|
|
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"[bright_yellow]⚠️ Warning: Failed to remove line comments from {file_path}: {e}[/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"[bright_yellow]⚠️ Warning: Failed to remove docstrings from {file_path}: {e}[/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"[
|
|
103
|
+
f"[bright_yellow]⚠️ Warning: Failed to remove extra whitespace from {file_path}: {e}[/bright_yellow]"
|
|
104
104
|
)
|
|
105
105
|
code = original_code
|
|
106
106
|
cleaning_failed = True
|
|
@@ -108,20 +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"[
|
|
111
|
+
f"[bright_yellow]⚠️ Warning: Failed to reformat {file_path}: {e}[/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"[bright_yellow]⚠️ Partially cleaned: {file_path}[/bright_yellow]"
|
|
119
119
|
)
|
|
120
120
|
else:
|
|
121
|
-
self.console.print(
|
|
121
|
+
self.console.print(
|
|
122
|
+
f"[bright_green]🧹 Cleaned: {file_path}[/bright_green]"
|
|
123
|
+
)
|
|
122
124
|
except PermissionError as e:
|
|
123
125
|
self.console.print(
|
|
124
|
-
f"[
|
|
126
|
+
f"[bright_red]❌ Failed to clean: {file_path} (Permission denied)[/bright_red]"
|
|
125
127
|
)
|
|
126
128
|
handle_error(
|
|
127
129
|
ExecutionError(
|
|
@@ -135,7 +137,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
135
137
|
)
|
|
136
138
|
except OSError as e:
|
|
137
139
|
self.console.print(
|
|
138
|
-
f"[
|
|
140
|
+
f"[bright_red]❌ Failed to clean: {file_path} (File system error)[/bright_red]"
|
|
139
141
|
)
|
|
140
142
|
handle_error(
|
|
141
143
|
ExecutionError(
|
|
@@ -149,7 +151,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
149
151
|
)
|
|
150
152
|
except UnicodeDecodeError as e:
|
|
151
153
|
self.console.print(
|
|
152
|
-
f"[
|
|
154
|
+
f"[bright_red]❌ Failed to clean: {file_path} (Encoding error)[/bright_red]"
|
|
153
155
|
)
|
|
154
156
|
handle_error(
|
|
155
157
|
ExecutionError(
|
|
@@ -163,7 +165,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
163
165
|
)
|
|
164
166
|
except Exception as e:
|
|
165
167
|
self.console.print(
|
|
166
|
-
f"[
|
|
168
|
+
f"[bright_red]❌ Failed to clean: {file_path} (Unexpected error)[/bright_red]"
|
|
167
169
|
)
|
|
168
170
|
handle_error(
|
|
169
171
|
ExecutionError(
|
|
@@ -613,7 +615,7 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
613
615
|
formatted_code = temp_path.read_text()
|
|
614
616
|
else:
|
|
615
617
|
self.console.print(
|
|
616
|
-
f"[
|
|
618
|
+
f"[bright_yellow]⚠️ Ruff formatting failed: {result.stderr}[/bright_yellow]"
|
|
617
619
|
)
|
|
618
620
|
handle_error(
|
|
619
621
|
ExecutionError(
|
|
@@ -627,7 +629,9 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
627
629
|
)
|
|
628
630
|
formatted_code = code
|
|
629
631
|
except Exception as e:
|
|
630
|
-
self.console.print(
|
|
632
|
+
self.console.print(
|
|
633
|
+
f"[bright_red]❌ Error running Ruff: {e}[/bright_red]"
|
|
634
|
+
)
|
|
631
635
|
handle_error(
|
|
632
636
|
ExecutionError(
|
|
633
637
|
message="Error running Ruff",
|
|
@@ -644,7 +648,9 @@ class CodeCleaner(BaseModel, arbitrary_types_allowed=True):
|
|
|
644
648
|
temp_path.unlink()
|
|
645
649
|
return formatted_code
|
|
646
650
|
except Exception as e:
|
|
647
|
-
self.console.print(
|
|
651
|
+
self.console.print(
|
|
652
|
+
f"[bright_red]❌ Error during reformatting: {e}[/bright_red]"
|
|
653
|
+
)
|
|
648
654
|
handle_error(
|
|
649
655
|
ExecutionError(
|
|
650
656
|
message="Error during reformatting",
|
|
@@ -816,7 +822,7 @@ class ConfigManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
816
822
|
self, cmd: list[str], **kwargs: t.Any
|
|
817
823
|
) -> subprocess.CompletedProcess[str]:
|
|
818
824
|
if self.dry_run:
|
|
819
|
-
self.console.print(f"[
|
|
825
|
+
self.console.print(f"[dim cyan]🔍 Would run: {' '.join(cmd)}[/dim cyan]")
|
|
820
826
|
return CompletedProcess(cmd, 0, "", "")
|
|
821
827
|
return execute(cmd, **kwargs)
|
|
822
828
|
|
|
@@ -838,7 +844,7 @@ class ProjectManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
838
844
|
["pdm", "list", "--freeze"], capture_output=True, text=True
|
|
839
845
|
).stdout.splitlines()
|
|
840
846
|
if not len([pkg for pkg in installed_pkgs if "pre-commit" in pkg]):
|
|
841
|
-
self.console.print("Initializing project...")
|
|
847
|
+
self.console.print("[bright_blue]🚀 Initializing project...[/bright_blue]")
|
|
842
848
|
self.execute_command(["pdm", "self", "add", "keyring"])
|
|
843
849
|
self.execute_command(["pdm", "config", "python.use_uv", "true"])
|
|
844
850
|
self.execute_command(["git", "init"])
|
|
@@ -853,22 +859,28 @@ class ProjectManager(BaseModel, arbitrary_types_allowed=True):
|
|
|
853
859
|
self.config_manager.update_pyproject_configs()
|
|
854
860
|
|
|
855
861
|
def run_pre_commit(self) -> None:
|
|
856
|
-
self.console.print(
|
|
862
|
+
self.console.print(
|
|
863
|
+
"\n[bright_blue]🔍 Running pre-commit hooks...[/bright_blue]\n"
|
|
864
|
+
)
|
|
857
865
|
cmd = ["pre-commit", "run", "--all-files"]
|
|
858
866
|
if hasattr(self, "options") and getattr(self.options, "ai_agent", False):
|
|
859
867
|
cmd.extend(["-c", ".pre-commit-config-ai.yaml"])
|
|
860
868
|
check_all = self.execute_command(cmd)
|
|
861
869
|
if check_all.returncode > 0:
|
|
870
|
+
self.execute_command(["pdm", "lock"])
|
|
871
|
+
self.console.print("\n[bright_green]✅ Lock file updated[/bright_green]\n")
|
|
862
872
|
check_all = self.execute_command(cmd)
|
|
863
873
|
if check_all.returncode > 0:
|
|
864
|
-
self.console.print(
|
|
874
|
+
self.console.print(
|
|
875
|
+
"\n\n[bright_red]❌ Pre-commit failed. Please fix errors.[/bright_red]\n"
|
|
876
|
+
)
|
|
865
877
|
raise SystemExit(1)
|
|
866
878
|
|
|
867
879
|
def execute_command(
|
|
868
880
|
self, cmd: list[str], **kwargs: t.Any
|
|
869
881
|
) -> subprocess.CompletedProcess[str]:
|
|
870
882
|
if self.dry_run:
|
|
871
|
-
self.console.print(f"[
|
|
883
|
+
self.console.print(f"[dim cyan]🔍 Would run: {' '.join(cmd)}[/dim cyan]")
|
|
872
884
|
return CompletedProcess(cmd, 0, "", "")
|
|
873
885
|
return execute(cmd, **kwargs)
|
|
874
886
|
|
|
@@ -911,7 +923,7 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
911
923
|
self.pkg_name = self.pkg_path.stem.lower().replace("-", "_")
|
|
912
924
|
self.pkg_dir = self.pkg_path / self.pkg_name
|
|
913
925
|
self.pkg_dir.mkdir(exist_ok=True)
|
|
914
|
-
self.console.print("\
|
|
926
|
+
self.console.print("\n[bright_magenta]🎯 Crackerjacking...[/bright_magenta]\n")
|
|
915
927
|
self.config_manager.pkg_name = self.pkg_name
|
|
916
928
|
self.project_manager.pkg_name = self.pkg_name
|
|
917
929
|
self.project_manager.pkg_dir = self.pkg_dir
|
|
@@ -923,9 +935,7 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
923
935
|
["pdm", "install"], capture_output=True, text=True
|
|
924
936
|
)
|
|
925
937
|
if result.returncode == 0:
|
|
926
|
-
self.console.print("PDM installed
|
|
927
|
-
self.execute_command(["pdm", "lock"])
|
|
928
|
-
self.console.print("Lock file updated: ✅\n")
|
|
938
|
+
self.console.print("[bright_green]✅ PDM installed[/bright_green]\n")
|
|
929
939
|
else:
|
|
930
940
|
self.console.print(
|
|
931
941
|
"\n\n❌ PDM installation failed. Is PDM is installed? Run `pipx install pdm` and try again.\n\n"
|
|
@@ -945,7 +955,9 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
945
955
|
if self.pkg_path.stem == "crackerjack":
|
|
946
956
|
tests_dir = self.pkg_path / "tests"
|
|
947
957
|
if tests_dir.exists() and tests_dir.is_dir():
|
|
948
|
-
self.console.print(
|
|
958
|
+
self.console.print(
|
|
959
|
+
"\n[bright_blue]🧹 Cleaning tests directory...[/bright_blue]\n"
|
|
960
|
+
)
|
|
949
961
|
self.code_cleaner.clean_files(tests_dir)
|
|
950
962
|
|
|
951
963
|
def _get_test_timeout(self, options: OptionsProtocol, project_size: str) -> int:
|
|
@@ -1042,26 +1054,34 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1042
1054
|
|
|
1043
1055
|
def _print_ai_agent_files(self, options: t.Any) -> None:
|
|
1044
1056
|
if getattr(options, "ai_agent", False):
|
|
1045
|
-
self.console.print(
|
|
1046
|
-
|
|
1057
|
+
self.console.print(
|
|
1058
|
+
"[dim cyan]📄 Structured test results: test-results.xml[/dim cyan]"
|
|
1059
|
+
)
|
|
1060
|
+
self.console.print("[dim cyan]📊 Coverage report: coverage.json[/dim cyan]")
|
|
1047
1061
|
if options.benchmark or options.benchmark_regression:
|
|
1048
|
-
self.console.print(
|
|
1062
|
+
self.console.print(
|
|
1063
|
+
"[dim cyan]⏱️ Benchmark results: benchmark.json[/dim cyan]"
|
|
1064
|
+
)
|
|
1049
1065
|
|
|
1050
1066
|
def _handle_test_failure(self, result: t.Any, options: t.Any) -> None:
|
|
1051
1067
|
if result.stderr:
|
|
1052
1068
|
self.console.print(result.stderr)
|
|
1053
|
-
self.console.print(
|
|
1069
|
+
self.console.print(
|
|
1070
|
+
"\n\n[bright_red]❌ Tests failed. Please fix errors.[/bright_red]\n"
|
|
1071
|
+
)
|
|
1054
1072
|
self._print_ai_agent_files(options)
|
|
1055
1073
|
raise SystemExit(1)
|
|
1056
1074
|
|
|
1057
1075
|
def _handle_test_success(self, options: t.Any) -> None:
|
|
1058
|
-
self.console.print(
|
|
1076
|
+
self.console.print(
|
|
1077
|
+
"\n\n[bright_green]✅ Tests passed successfully![/bright_green]\n"
|
|
1078
|
+
)
|
|
1059
1079
|
self._print_ai_agent_files(options)
|
|
1060
1080
|
|
|
1061
1081
|
def _run_tests(self, options: t.Any) -> None:
|
|
1062
1082
|
if not options.test:
|
|
1063
1083
|
return
|
|
1064
|
-
self.console.print("\n\
|
|
1084
|
+
self.console.print("\n\n[bright_blue]🧪 Running tests...[/bright_blue]\n")
|
|
1065
1085
|
test_command = self._prepare_pytest_command(options)
|
|
1066
1086
|
result = self.execute_command(test_command, capture_output=True, text=True)
|
|
1067
1087
|
if result.stdout:
|
|
@@ -1082,7 +1102,7 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1082
1102
|
default=False,
|
|
1083
1103
|
):
|
|
1084
1104
|
self.console.print(
|
|
1085
|
-
f"[yellow]Skipping {option} version bump[/yellow]"
|
|
1105
|
+
f"[dim yellow]⏭️ Skipping {option} version bump[/dim yellow]"
|
|
1086
1106
|
)
|
|
1087
1107
|
return
|
|
1088
1108
|
self.execute_command(["pdm", "bump", option])
|
|
@@ -1096,7 +1116,9 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1096
1116
|
self.console.print(build.stdout)
|
|
1097
1117
|
if build.returncode > 0:
|
|
1098
1118
|
self.console.print(build.stderr)
|
|
1099
|
-
self.console.print(
|
|
1119
|
+
self.console.print(
|
|
1120
|
+
"\n\n[bright_red]❌ Build failed. Please fix errors.[/bright_red]\n"
|
|
1121
|
+
)
|
|
1100
1122
|
raise SystemExit(1)
|
|
1101
1123
|
self.execute_command(["pdm", "publish", "--no-build"])
|
|
1102
1124
|
|
|
@@ -1112,7 +1134,7 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1112
1134
|
self, cmd: list[str], **kwargs: t.Any
|
|
1113
1135
|
) -> subprocess.CompletedProcess[str]:
|
|
1114
1136
|
if self.dry_run:
|
|
1115
|
-
self.console.print(f"[
|
|
1137
|
+
self.console.print(f"[dim cyan]🔍 Would run: {' '.join(cmd)}[/dim cyan]")
|
|
1116
1138
|
return CompletedProcess(cmd, 0, "", "")
|
|
1117
1139
|
return execute(cmd, **kwargs)
|
|
1118
1140
|
|
|
@@ -1130,12 +1152,12 @@ class Crackerjack(BaseModel, arbitrary_types_allowed=True):
|
|
|
1130
1152
|
if not options.skip_hooks:
|
|
1131
1153
|
self.project_manager.run_pre_commit()
|
|
1132
1154
|
else:
|
|
1133
|
-
self.console.print("Skipping pre-commit hooks")
|
|
1155
|
+
self.console.print("[dim yellow]⏭️ Skipping pre-commit hooks[/dim yellow]")
|
|
1134
1156
|
self._run_tests(options)
|
|
1135
1157
|
self._bump_version(options)
|
|
1136
1158
|
self._publish_project(options)
|
|
1137
1159
|
self._commit_and_push(options)
|
|
1138
|
-
self.console.print("\n🍺 Crackerjack complete
|
|
1160
|
+
self.console.print("\n[bright_green]🍺 Crackerjack complete![/bright_green]\n")
|
|
1139
1161
|
|
|
1140
1162
|
|
|
1141
1163
|
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.4"
|
|
8
8
|
description = "Crackerjack: code quality toolkit"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
keywords = [
|
|
@@ -43,7 +43,7 @@ classifiers = [
|
|
|
43
43
|
dependencies = [
|
|
44
44
|
"autotyping>=24.9",
|
|
45
45
|
"keyring>=25.6",
|
|
46
|
-
"pdm>=2.25.
|
|
46
|
+
"pdm>=2.25.4",
|
|
47
47
|
"pdm-bump>=0.9.12",
|
|
48
48
|
"pre-commit>=4.2",
|
|
49
49
|
"pydantic>=2.11.7",
|
|
@@ -53,12 +53,12 @@ dependencies = [
|
|
|
53
53
|
"pytest-cov>=6.2.1",
|
|
54
54
|
"pytest-mock>=3.14.1",
|
|
55
55
|
"pytest-timeout>=2.4",
|
|
56
|
-
"pytest-xdist>=3.
|
|
56
|
+
"pytest-xdist>=3.8",
|
|
57
57
|
"pyyaml>=6.0.2",
|
|
58
58
|
"rich>=14",
|
|
59
59
|
"tomli-w>=1.2",
|
|
60
60
|
"typer>=0.16",
|
|
61
|
-
"uv>=0.7.
|
|
61
|
+
"uv>=0.7.20",
|
|
62
62
|
]
|
|
63
63
|
urls.documentation = "https://github.com/lesleslie/crackerjack"
|
|
64
64
|
urls.homepage = "https://github.com/lesleslie/crackerjack"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: crackerjack
|
|
3
|
-
Version: 0.22.
|
|
3
|
+
Version: 0.22.5
|
|
4
4
|
Summary: Crackerjack: code quality toolkit
|
|
5
5
|
Keywords: bandit,black,creosote,mypy,pyright,pytest,refurb,ruff
|
|
6
6
|
Author-Email: lesleslie <les@wedgwoodwebworks.com>
|
|
@@ -24,7 +24,7 @@ Project-URL: repository, https://github.com/lesleslie/crackerjack
|
|
|
24
24
|
Requires-Python: >=3.13
|
|
25
25
|
Requires-Dist: autotyping>=24.9
|
|
26
26
|
Requires-Dist: keyring>=25.6
|
|
27
|
-
Requires-Dist: pdm>=2.25.
|
|
27
|
+
Requires-Dist: pdm>=2.25.4
|
|
28
28
|
Requires-Dist: pdm-bump>=0.9.12
|
|
29
29
|
Requires-Dist: pre-commit>=4.2
|
|
30
30
|
Requires-Dist: pydantic>=2.11.7
|
|
@@ -34,12 +34,12 @@ Requires-Dist: pytest-benchmark>=5.1
|
|
|
34
34
|
Requires-Dist: pytest-cov>=6.2.1
|
|
35
35
|
Requires-Dist: pytest-mock>=3.14.1
|
|
36
36
|
Requires-Dist: pytest-timeout>=2.4
|
|
37
|
-
Requires-Dist: pytest-xdist>=3.
|
|
37
|
+
Requires-Dist: pytest-xdist>=3.8
|
|
38
38
|
Requires-Dist: pyyaml>=6.0.2
|
|
39
39
|
Requires-Dist: rich>=14
|
|
40
40
|
Requires-Dist: tomli-w>=1.2
|
|
41
41
|
Requires-Dist: typer>=0.16
|
|
42
|
-
Requires-Dist: uv>=0.7.
|
|
42
|
+
Requires-Dist: uv>=0.7.20
|
|
43
43
|
Description-Content-Type: text/markdown
|
|
44
44
|
|
|
45
45
|
# Crackerjack: Elevate Your Python Development
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
crackerjack-0.22.
|
|
2
|
-
crackerjack-0.22.
|
|
3
|
-
crackerjack-0.22.
|
|
4
|
-
crackerjack-0.22.
|
|
1
|
+
crackerjack-0.22.5.dist-info/METADATA,sha256=pGEjlwaqIfLpvrANmlGJEAjy21Oic4IXb4US3942REI,26251
|
|
2
|
+
crackerjack-0.22.5.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
3
|
+
crackerjack-0.22.5.dist-info/entry_points.txt,sha256=6OYgBcLyFCUgeqLgnvMyOJxPCWzgy7se4rLPKtNonMs,34
|
|
4
|
+
crackerjack-0.22.5.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=_GTHSBIDUlTh01Uyc5eFhRztjmijazgtLBmUR9F7tbw,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,7 +34,8 @@ 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=
|
|
37
|
+
crackerjack/.ruff_cache/0.12.1/5056746222905752453,sha256=UxoFQP8tlpGMcB9BbAm1BAjoFw-gY9SUtnIPU9SUbl0,256
|
|
38
|
+
crackerjack/.ruff_cache/0.12.2/5056746222905752453,sha256=BRKJPWFn7zDA9vGp8CAjZFikLRIZDkaZ_X0u81T51co,256
|
|
38
39
|
crackerjack/.ruff_cache/0.2.0/10047773857155985907,sha256=j9LNa_RQ4Plor7go1uTYgz17cEENKvZQ-dP6b9MX0ik,248
|
|
39
40
|
crackerjack/.ruff_cache/0.2.1/8522267973936635051,sha256=u_aPBMibtAp_iYvLwR88GMAECMcIgHezxMyuapmU2P4,248
|
|
40
41
|
crackerjack/.ruff_cache/0.2.2/18053836298936336950,sha256=Xb_ebP0pVuUfSqPEZKlhQ70so_vqkEfMYpuHQ06iR5U,248
|
|
@@ -64,9 +65,9 @@ crackerjack/.ruff_cache/0.9.9/8843823720003377982,sha256=e4ymkXfQsUg5e_mtO34xTsa
|
|
|
64
65
|
crackerjack/.ruff_cache/CACHEDIR.TAG,sha256=WVMVbX4MVkpCclExbq8m-IcOZIOuIZf5FrYw5Pk-Ma4,43
|
|
65
66
|
crackerjack/__init__.py,sha256=8tBSPAru_YDuPpjz05cL7pNbZjYFoRT_agGd_FWa3gY,839
|
|
66
67
|
crackerjack/__main__.py,sha256=lEyi83ChuehqEJgUQ6Ib4ByOofvmhi_0M7oFamMC_1I,6407
|
|
67
|
-
crackerjack/crackerjack.py,sha256=
|
|
68
|
+
crackerjack/crackerjack.py,sha256=1OpXtQFcclc9-_Nxg6XNyM8Qau0rxT49zCrgiFiZrG8,45086
|
|
68
69
|
crackerjack/errors.py,sha256=QEPtVuMtKtQHuawgr1ToMaN1KbUg5h9-4mS33YB5Znk,4062
|
|
69
70
|
crackerjack/interactive.py,sha256=y5QbyR2Wp8WkC_iC89ZqETm-wjAN9X5DK1L3yetpjN4,16153
|
|
70
71
|
crackerjack/py313.py,sha256=buYE7LO11Q64ffowEhTZRFQoAGj_8sg3DTlZuv8M9eo,5890
|
|
71
|
-
crackerjack/pyproject.toml,sha256=
|
|
72
|
-
crackerjack-0.22.
|
|
72
|
+
crackerjack/pyproject.toml,sha256=gR7tLiMe3MxYV0a0wAPH3gSE4T2ruPlURIkhSKNWJbA,4988
|
|
73
|
+
crackerjack-0.22.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|