pre-commit-crocodile 4.2.0__tar.gz → 4.2.1__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 (105) hide show
  1. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/CHANGELOG.md +8 -0
  2. {pre_commit_crocodile-4.2.0/pre_commit_crocodile.egg-info → pre_commit_crocodile-4.2.1}/PKG-INFO +2 -2
  3. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/README.md +1 -1
  4. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1/pre_commit_crocodile.egg-info}/PKG-INFO +2 -2
  5. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/cli/entrypoint.py +9 -0
  6. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/precommit.py +129 -0
  7. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.coveragerc +0 -0
  8. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.cz.yaml +0 -0
  9. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.gitattributes +0 -0
  10. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.gitignore +0 -0
  11. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.gitlab-ci.yml +0 -0
  12. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.markdownlint.json +0 -0
  13. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.pre-commit-config.yaml +0 -0
  14. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.pre-commit-hooks.yaml +0 -0
  15. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.style.yapf +0 -0
  16. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.vscode/extensions.json +0 -0
  17. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/.vscode/settings.json +0 -0
  18. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/LICENSE +0 -0
  19. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/config/cliff.toml +0 -0
  20. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/build/Dockerfile +0 -0
  21. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/codestyle/Dockerfile +0 -0
  22. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/commits/Dockerfile +0 -0
  23. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/deploy/Dockerfile +0 -0
  24. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/pages/Dockerfile +0 -0
  25. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/preview/Dockerfile +0 -0
  26. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/rehost/images.txt +0 -0
  27. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/test-coverage-linux/Dockerfile +0 -0
  28. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/test-coverage-windows/Dockerfile +0 -0
  29. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/containers/test-linux/Dockerfile +0 -0
  30. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/.pages.in +0 -0
  31. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/assets/images/favicon.png +0 -0
  32. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/assets/scripts/mkdocs-exporter.js +0 -0
  33. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/assets/stylesheets/custom.css +0 -0
  34. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/assets/stylesheets/pdf.scss +0 -0
  35. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/commitizen.md +0 -0
  36. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/commits.md +0 -0
  37. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/components.md +0 -0
  38. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/hooks.md +0 -0
  39. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/pre-commit.md +0 -0
  40. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/prepare.sh +0 -0
  41. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/preview.py +0 -0
  42. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/preview.svg +0 -0
  43. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/robots.txt +0 -0
  44. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/settings.md +0 -0
  45. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/template.svg +0 -0
  46. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/templates/covers/back.html.j2 +0 -0
  47. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/docs/templates/covers/front.html.j2 +0 -0
  48. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/mkdocs.yml +0 -0
  49. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/mypy.ini +0 -0
  50. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/pre_commit_crocodile.egg-info/SOURCES.txt +0 -0
  51. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/pre_commit_crocodile.egg-info/dependency_links.txt +0 -0
  52. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/pre_commit_crocodile.egg-info/entry_points.txt +0 -0
  53. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/pre_commit_crocodile.egg-info/requires.txt +0 -0
  54. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/pre_commit_crocodile.egg-info/top_level.txt +0 -0
  55. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/build.txt +0 -0
  56. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/commits.txt +0 -0
  57. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/coverage.txt +0 -0
  58. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/deploy.txt +0 -0
  59. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/docs.txt +0 -0
  60. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/pages.txt +0 -0
  61. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/quality.txt +0 -0
  62. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/runtime.txt +0 -0
  63. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/requirements/tests.txt +0 -0
  64. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/setup.cfg +0 -0
  65. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/setup.py +0 -0
  66. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/sonar-project.properties +0 -0
  67. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/__init__.py +0 -0
  68. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/__main__.py +0 -0
  69. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/assets/.cz.yaml +0 -0
  70. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/assets/.pre-commit-config.yaml +0 -0
  71. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/assets/__init__.py +0 -0
  72. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/cli/__init__.py +0 -0
  73. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/cli/main.py +0 -0
  74. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/__init__.py +0 -0
  75. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/argcomplete.py +0 -0
  76. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/commitizen.py +0 -0
  77. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/gcil.py +0 -0
  78. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/git.py +0 -0
  79. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/radiandevcore.py +0 -0
  80. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/features/readme.py +0 -0
  81. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/hooks/__init__.py +0 -0
  82. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/hooks/check_yaml_ruamel_pure.py +0 -0
  83. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/hooks/configurations.py +0 -0
  84. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/hooks/prepare_commit_message.py +0 -0
  85. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/package/__init__.py +0 -0
  86. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/package/bundle.py +0 -0
  87. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/package/settings.py +0 -0
  88. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/package/updates.py +0 -0
  89. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/package/version.py +0 -0
  90. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/prints/__init__.py +0 -0
  91. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/prints/boxes.py +0 -0
  92. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/prints/colors.py +0 -0
  93. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/system/__init__.py +0 -0
  94. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/system/commands.py +0 -0
  95. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/system/platform.py +0 -0
  96. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/types/__init__.py +0 -0
  97. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/types/environments.py +0 -0
  98. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/src/types/strings.py +0 -0
  99. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/templates/commits.yml +0 -0
  100. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/arguments/test.sh +0 -0
  101. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/colors/test.sh +0 -0
  102. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/macos/test.sh +0 -0
  103. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/settings/test.sh +0 -0
  104. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/versions/test.sh +0 -0
  105. {pre_commit_crocodile-4.2.0 → pre_commit_crocodile-4.2.1}/tests/windows/test.sh +0 -0
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ <a name="4.2.1"></a>
4
+ ## [4.2.1](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/compare/4.2.0...4.2.1) (2025-05-31)
5
+
6
+ ### 🐛 Bug Fixes
7
+
8
+ - **precommit:** fix mismatching excludes upon '--configure' ([039a2da](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/commit/039a2da953da11f48e4fa505ddf32f38322b8d98))
9
+
10
+
3
11
  <a name="4.2.0"></a>
4
12
  ## [4.2.0](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/compare/4.1.0...4.2.0) (2025-05-31)
5
13
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pre-commit-crocodile
3
- Version: 4.2.0
3
+ Version: 4.2.1
4
4
  Summary: Git hooks intended for developers using pre-commit
5
5
  Home-page: https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile
6
6
  Author: Adrian DC
@@ -88,7 +88,7 @@ Git hooks intended for developers using [pre-commit](https://pre-commit.com/) an
88
88
 
89
89
  ## Preview
90
90
 
91
- ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.0/docs/preview.svg)
91
+ ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.1/docs/preview.svg)
92
92
 
93
93
  ---
94
94
 
@@ -40,7 +40,7 @@ Git hooks intended for developers using [pre-commit](https://pre-commit.com/) an
40
40
 
41
41
  ## Preview
42
42
 
43
- ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.0/docs/preview.svg)
43
+ ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.1/docs/preview.svg)
44
44
 
45
45
  ---
46
46
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pre-commit-crocodile
3
- Version: 4.2.0
3
+ Version: 4.2.1
4
4
  Summary: Git hooks intended for developers using pre-commit
5
5
  Home-page: https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile
6
6
  Author: Adrian DC
@@ -88,7 +88,7 @@ Git hooks intended for developers using [pre-commit](https://pre-commit.com/) an
88
88
 
89
89
  ## Preview
90
90
 
91
- ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.0/docs/preview.svg)
91
+ ![preview.svg](https://gitlab.com/RadianDevCore/tools/pre-commit-crocodile/raw/4.2.1/docs/preview.svg)
92
92
 
93
93
  ---
94
94
 
@@ -192,6 +192,12 @@ class Entrypoint:
192
192
  configuration_file=precommit_configuration.name,
193
193
  )
194
194
 
195
+ # Configure useless excludes
196
+ PreCommit.configure_useless_excludes(
197
+ default=options.default,
198
+ configuration_file=precommit_configuration.name,
199
+ )
200
+
195
201
  # Configre gcil hooks
196
202
  Gcil.configure_hooks(configuration_file=precommit_configuration.name)
197
203
 
@@ -230,6 +236,9 @@ class Entrypoint:
230
236
  # Configure unused hooks
231
237
  PreCommit.configure_unused_hooks(default=options.default)
232
238
 
239
+ # Configure useless excludes
240
+ PreCommit.configure_useless_excludes(default=options.default)
241
+
233
242
  # Configre gcil hooks
234
243
  Gcil.configure_hooks()
235
244
 
@@ -19,6 +19,8 @@ class PreCommit:
19
19
  CONFIGURATION_EXTENSION: str = '.yaml'
20
20
  CONFIGURATION_FILE: str = '.pre-commit-config.yaml'
21
21
  HOOKS_APPLY_ERROR: str = ' does not apply to this repository'
22
+ HOOKS_EXCLUDE_DELIMITER: str = ' for '
23
+ HOOKS_EXCLUDE_ERROR: str = ' does not match any files'
22
24
  PACKAGE: str = 'pre-commit'
23
25
  REV_TEMPLATE: str = '{PACKAGE_REVISION}'
24
26
 
@@ -179,6 +181,133 @@ class PreCommit:
179
181
  # Result
180
182
  return True
181
183
 
184
+ # Configure useless excludes
185
+ @staticmethod
186
+ def configure_useless_excludes(
187
+ default: bool,
188
+ configuration_file: str = CONFIGURATION_FILE,
189
+ ) -> bool:
190
+
191
+ # Variables
192
+ configuration_moved: bool = False
193
+ configuration_tmp: bool = False
194
+ data_lines: List[str]
195
+ hook_exclude: str = 'exclude: '
196
+ hook_id: str = '- id: '
197
+ hook_offset: str
198
+ hook_property: bool
199
+ hook_section: bool
200
+ hooks_unused: List[str] = []
201
+
202
+ # Fake pre-commit configuration
203
+ if default and configuration_file != PreCommit.CONFIGURATION_FILE:
204
+ if Path(PreCommit.CONFIGURATION_FILE).exists():
205
+ move(PreCommit.CONFIGURATION_FILE, f'{PreCommit.CONFIGURATION_FILE}.tmp')
206
+ configuration_moved = True
207
+ else:
208
+ configuration_tmp = True
209
+ copyfile(
210
+ configuration_file,
211
+ PreCommit.CONFIGURATION_FILE,
212
+ )
213
+
214
+ # Prestage pre-commit configuration
215
+ if not default or configuration_moved or configuration_tmp:
216
+ Commands.run(Git.BINARY, [
217
+ 'add',
218
+ PreCommit.CONFIGURATION_FILE,
219
+ ])
220
+
221
+ # Configure pre-commit unused hooks
222
+ print(' ')
223
+ print(f'{Colors.BOLD} - Configure sources: '
224
+ f'{Colors.YELLOW_LIGHT}check-useless-excludes'
225
+ f'{Colors.RESET}')
226
+ print(' ')
227
+ for line in Commands.output(PreCommit.BINARY, [
228
+ 'run',
229
+ ] + PreCommit.__flags_configuration + [
230
+ '--all-files',
231
+ 'check-useless-excludes',
232
+ ]).splitlines():
233
+ if PreCommit.HOOKS_EXCLUDE_ERROR not in line:
234
+ continue
235
+ hooks_unused += [
236
+ line[line.find(PreCommit.HOOKS_EXCLUDE_DELIMITER) \
237
+ + len(PreCommit.HOOKS_EXCLUDE_DELIMITER) \
238
+ :line.find(PreCommit.HOOKS_EXCLUDE_ERROR)]
239
+ ]
240
+
241
+ # Cleanup fake pre-commit configuration
242
+ if configuration_moved or configuration_tmp:
243
+ Path(PreCommit.CONFIGURATION_FILE).unlink()
244
+
245
+ # Restore pre-commit configurations
246
+ if configuration_moved:
247
+ move(f'{PreCommit.CONFIGURATION_FILE}.tmp', PreCommit.CONFIGURATION_FILE)
248
+
249
+ # Reset pre-commit configuration
250
+ if not default or configuration_moved or configuration_tmp:
251
+ Commands.run(Git.BINARY, [
252
+ 'reset',
253
+ 'HEAD',
254
+ PreCommit.CONFIGURATION_FILE,
255
+ ])
256
+
257
+ # Show unused hooks
258
+ print(f'detected unused hooks in configuration: {", ".join(hooks_unused) or "-"}')
259
+
260
+ # Disable pre-commit unused hooks
261
+ if hooks_unused:
262
+
263
+ # Parse pre-commit hooks
264
+ data_lines = []
265
+ hook_property = False
266
+ hook_section = False
267
+ with open(
268
+ configuration_file,
269
+ encoding='utf8',
270
+ mode='r',
271
+ ) as f:
272
+ for line in f.readlines():
273
+ line_stripped = line.strip()
274
+
275
+ # Parse lines
276
+ if not line_stripped:
277
+ data_lines.append(line)
278
+ hook_property = False
279
+ hook_section = False
280
+ elif any(
281
+ line_stripped == f'{hook_id}{hook}' for hook in hooks_unused):
282
+ data_lines.append(line)
283
+ hook_offset = line[0:line.find(hook_id)]
284
+ hook_property = False
285
+ hook_section = True
286
+ elif line_stripped.startswith(hook_id):
287
+ data_lines.append(line)
288
+ hook_property = False
289
+ hook_section = False
290
+ elif hook_section and line_stripped.startswith(hook_exclude):
291
+ data_lines.append(line.replace(hook_exclude, f'# {hook_exclude}'))
292
+ hook_property = True
293
+ elif hook_property and line.startswith(hook_offset + ' '):
294
+ data_lines.append(
295
+ f'{hook_offset} # {line[len(hook_offset) + 2:]}')
296
+ else:
297
+ data_lines.append(line)
298
+ hook_property = False
299
+
300
+ # Write pre-commit hooks
301
+ with open(
302
+ configuration_file,
303
+ encoding='utf8',
304
+ mode='w',
305
+ ) as f:
306
+ f.writelines(data_lines)
307
+
308
+ # Result
309
+ return True
310
+
182
311
  # Dependencies
183
312
  @staticmethod
184
313
  def dependencies() -> bool: