code-standards 8.129.2__tar.gz → 8.129.4__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 (201) hide show
  1. {code_standards-8.129.2 → code_standards-8.129.4}/PKG-INFO +1 -1
  2. {code_standards-8.129.2 → code_standards-8.129.4}/pyproject.toml +1 -1
  3. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
  4. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/lifecycle.py +10 -4
  5. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/analysis.py +14 -4
  6. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/hooks.py +37 -24
  7. {code_standards-8.129.2 → code_standards-8.129.4}/.gitignore +0 -0
  8. {code_standards-8.129.2 → code_standards-8.129.4}/LICENSE +0 -0
  9. {code_standards-8.129.2 → code_standards-8.129.4}/README.md +0 -0
  10. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/__init__.py +0 -0
  11. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/__main__.py +0 -0
  12. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/_meta.py +0 -0
  13. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/api.py +0 -0
  14. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/cli/__init__.py +0 -0
  15. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/cli/main.py +0 -0
  16. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
  17. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
  18. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
  19. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
  20. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
  21. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/index.mts +0 -0
  22. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
  23. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/package.json +0 -0
  24. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
  25. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/action-parser.cjs +0 -0
  26. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
  27. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
  28. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
  29. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/checkov.strict.yml +0 -0
  30. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/compile-eslint.mts +0 -0
  31. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/detekt.strict.yml +0 -0
  32. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
  33. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/doctor.config.json +0 -0
  34. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
  35. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
  36. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
  37. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint.application.mjs +0 -0
  38. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint.peers.json +0 -0
  39. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
  40. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/eslint.strict.ts +0 -0
  41. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
  42. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
  43. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
  44. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
  45. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
  46. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/pyright.strict.json +0 -0
  47. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ruff.application.toml +0 -0
  48. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ruff.cast.toml +0 -0
  49. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
  50. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ruff.required.toml +0 -0
  51. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/ruff.strict.toml +0 -0
  52. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +0 -0
  53. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/rule-inventory.v1.json +0 -0
  54. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/rule-ledger.json +0 -0
  55. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/rule-level-source.mts +0 -0
  56. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
  57. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
  58. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
  59. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
  60. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
  61. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
  62. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
  63. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/swiftformat.strict +0 -0
  64. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
  65. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/taplo.strict.toml +0 -0
  66. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
  67. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/tflint.version.hcl +0 -0
  68. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/tool-json.mts +0 -0
  69. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
  70. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
  71. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/__init__.py +0 -0
  72. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/__init__.py +0 -0
  73. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
  74. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/configs.py +0 -0
  75. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/devops.py +0 -0
  76. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/doctor.py +0 -0
  77. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
  78. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/hooks.py +0 -0
  79. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/launcher.py +0 -0
  80. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/manifest.py +0 -0
  81. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
  82. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
  83. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
  84. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
  85. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
  86. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/service.py +0 -0
  87. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/transaction.py +0 -0
  88. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
  89. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
  90. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
  91. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
  92. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/corpus/__init__.py +0 -0
  93. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/corpus/manifest.py +0 -0
  94. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
  95. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
  96. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
  97. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
  98. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/models.py +0 -0
  99. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
  100. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/diagnostics/source.py +0 -0
  101. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/filesystem.py +0 -0
  102. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/json_boundary.py +0 -0
  103. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/__init__.py +0 -0
  104. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/action_metadata.py +0 -0
  105. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
  106. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
  107. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
  108. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
  109. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
  110. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
  111. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/devops_source.py +0 -0
  112. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/devops_tools.py +0 -0
  113. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
  114. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
  115. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/external.py +0 -0
  116. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
  117. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/library_policy.py +0 -0
  118. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
  119. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/policy.py +0 -0
  120. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
  121. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
  122. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/prepared_native.py +0 -0
  123. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
  124. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
  125. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/runner.py +0 -0
  126. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/scheduling.py +0 -0
  127. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/security_tools.py +0 -0
  128. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
  129. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/shell_format.py +0 -0
  130. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
  131. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/test_value.py +0 -0
  132. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
  133. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
  134. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
  135. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
  136. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/textlint.py +0 -0
  137. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
  138. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
  139. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/__init__.py +0 -0
  140. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/_values.py +0 -0
  141. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/artifacts.py +0 -0
  142. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/causality.py +0 -0
  143. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/changes.py +0 -0
  144. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
  145. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/make_checks.py +0 -0
  146. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
  147. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
  148. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/process.py +0 -0
  149. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/publish.py +0 -0
  150. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/registry.py +0 -0
  151. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/release_age.py +0 -0
  152. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/release_detect.py +0 -0
  153. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/retirement.py +0 -0
  154. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
  155. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/rollout.py +0 -0
  156. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/status.py +0 -0
  157. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/tags.py +0 -0
  158. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/test_selection.py +0 -0
  159. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/typescript.py +0 -0
  160. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/verification_process.py +0 -0
  161. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
  162. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/__init__.py +0 -0
  163. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
  164. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
  165. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
  166. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/config_generation.py +0 -0
  167. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/docs.py +0 -0
  168. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
  169. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/ledger.py +0 -0
  170. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/repository.py +0 -0
  171. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
  172. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
  173. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
  174. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_changes.py +0 -0
  175. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
  176. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
  177. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
  178. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
  179. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
  180. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
  181. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
  182. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
  183. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
  184. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
  185. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
  186. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/rules/__init__.py +0 -0
  187. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/rules/catalog.py +0 -0
  188. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/rules/contracts.py +0 -0
  189. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
  190. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/rules/evaluation.py +0 -0
  191. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/schema_boundary.py +0 -0
  192. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/setup/__init__.py +0 -0
  193. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/setup/repository.py +0 -0
  194. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/typed_containers.py +0 -0
  195. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/libs/yaml_boundary.py +0 -0
  196. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/py.typed +0 -0
  197. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/schemas/__init__.py +0 -0
  198. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/schemas/_paths.py +0 -0
  199. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/schemas/rule-catalog.v1.json +0 -0
  200. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
  201. {code_standards-8.129.2 → code_standards-8.129.4}/src/sarj_standards/schemas/slack-automations.v1.schema.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: code-standards
3
- Version: 8.129.2
3
+ Version: 8.129.4
4
4
  Summary: One deterministic quality gate for Sarj Python, TypeScript, Swift, Kotlin, shell, SQL, IaC, and repository policy.
5
5
  Project-URL: Homepage, https://code-standards.sarj.ai/
6
6
  Project-URL: Documentation, https://code-standards.sarj.ai/cli/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-standards"
3
- version = "8.129.2"
3
+ version = "8.129.4"
4
4
  description = "One deterministic quality gate for Sarj Python, TypeScript, Swift, Kotlin, shell, SQL, IaC, and repository policy."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.14"
@@ -3305,6 +3305,6 @@
3305
3305
  },
3306
3306
  "program": "code-standards",
3307
3307
  "schemaVersion": 1,
3308
- "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.129.2).",
3309
- "version": "8.129.2"
3308
+ "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.129.4).",
3309
+ "version": "8.129.4"
3310
3310
  }
@@ -490,7 +490,9 @@ def execute(commands: Iterable[Command]) -> int:
490
490
  hook_transaction: transaction.FileTransaction | None = None
491
491
  try:
492
492
  if command.label in {_PRECOMMIT_HOOK_LABEL, _LEFTHOOK_HOOK_LABEL}:
493
- hook_transaction = _capture_hook_transaction(command.cwd)
493
+ hook_transaction = _capture_hook_transaction(
494
+ command.cwd, lefthook=command.label == _LEFTHOOK_HOOK_LABEL
495
+ )
494
496
  completed = subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- pass the fixed executable as an argv sequence with shell execution disabled.
495
497
  [executable, *command.argv[1:]],
496
498
  cwd=command.cwd,
@@ -498,9 +500,9 @@ def execute(commands: Iterable[Command]) -> int:
498
500
  env=_command_environment(),
499
501
  timeout=_COMMAND_TIMEOUT.total_seconds(),
500
502
  )
501
- except subprocess.TimeoutExpired:
503
+ except subprocess.TimeoutExpired as exc:
502
504
  _report_hook_rollback(hook_transaction)
503
- sys.stderr.write(f"error: {command.label} exceeded {_COMMAND_TIMEOUT.total_seconds():g}s and was stopped\n")
505
+ sys.stderr.write(f"error: {command.label} exceeded {exc.timeout:g}s and was stopped\n")
504
506
  return 2
505
507
  except BaseException:
506
508
  _report_hook_rollback(hook_transaction)
@@ -518,7 +520,11 @@ def execute(commands: Iterable[Command]) -> int:
518
520
  return 0
519
521
 
520
522
 
521
- def _capture_hook_transaction(root: Path) -> transaction.FileTransaction:
523
+ def _capture_hook_transaction(root: Path, *, lefthook: bool = False) -> transaction.FileTransaction:
524
+ if lefthook:
525
+ from sarj_standards.libs.repository import hooks as repository_hooks # ruff: ignore[import-outside-top-level] -- load the selected manager's resolved hook ownership only for Lefthook installation.
526
+
527
+ return repository_hooks.capture_transaction(root)
522
528
  hooks_dir = _precommit_hook_path(root).parent
523
529
  names = (
524
530
  "pre-commit",
@@ -297,8 +297,12 @@ def _run_native(
297
297
  else:
298
298
  native_result = checker_module.analyze(selected_rules, paths)
299
299
  cache: dict[Path, SourceDocument | PythonSourceDocument | None] = {}
300
+ resolved_paths: dict[Path, Path] = {}
300
301
  diagnostics = tuple(
301
- normalize_native(item, source=name, root=root, metadata=metadata, documents=cache) for item in native_result
302
+ normalize_native(
303
+ item, source=name, root=root, metadata=metadata, documents=cache, resolved_paths=resolved_paths
304
+ )
305
+ for item in native_result
302
306
  )
303
307
  return ToolReport(
304
308
  name,
@@ -375,8 +379,13 @@ def normalize_native(
375
379
  root: Path,
376
380
  metadata: Mapping[str, _NativeRuleMetadata],
377
381
  documents: dict[Path, SourceDocument | PythonSourceDocument | None],
382
+ resolved_paths: dict[Path, Path] | None = None,
378
383
  ) -> Diagnostic:
379
- resolved = item.path.resolve()
384
+ resolved = None if resolved_paths is None else resolved_paths.get(item.path)
385
+ if resolved is None:
386
+ resolved = item.path.resolve()
387
+ if resolved_paths is not None:
388
+ resolved_paths[item.path] = resolved
380
389
  document = documents.get(resolved)
381
390
  if resolved not in documents:
382
391
  try:
@@ -400,16 +409,17 @@ def normalize_native(
400
409
 
401
410
  if item.code in PROTECTED_SUPPRESSION_CODES:
402
411
  tags = ("non-baselineable", "required-source-policy")
412
+ relative_path = _relative_path(resolved, root)
403
413
  return Diagnostic(
404
414
  code=item.code,
405
415
  rule_id=rule_id,
406
416
  message=item.message,
407
417
  severity=_severity(item),
408
418
  source=source,
409
- location=Location(_relative_path(resolved, root), position=position),
419
+ location=Location(relative_path, position=position),
410
420
  help=help_text,
411
421
  tags=tags,
412
- fixes=_python_fixes(item, document, _relative_path(resolved, root)) if source == "sarj-python-lint" else (),
422
+ fixes=_python_fixes(item, document, relative_path) if source == "sarj-python-lint" else (),
413
423
  )
414
424
 
415
425
 
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from datetime import timedelta
3
4
  import hashlib
4
5
  import os
5
6
  from pathlib import Path
@@ -20,6 +21,9 @@ from sarj_standards.libs.typed_containers import is_object_mapping
20
21
 
21
22
 
22
23
  _VERSION: Final = "2.2.1"
24
+ _CORE_HOOKS: Final = ("pre-commit", "pre-push", "commit-msg")
25
+ _LFS_POST_HOOKS: Final = ("post-checkout", "post-commit", "post-merge")
26
+ _DISCOVERY_TIMEOUT: Final = timedelta(seconds=5)
23
27
  _ARCHITECTURES: Final = MappingProxyType({"aarch64": "arm64", "amd64": "x86_64"})
24
28
  _EXPORT_ASSIGNMENT_PARTS: Final = 2
25
29
  _UVX_PATH_MARKER: Final = "# sarj-standards: uvx-path"
@@ -41,9 +45,7 @@ def install(root: Path) -> int:
41
45
  raise OSError(msg)
42
46
  native_binary = _native_binary()
43
47
  durable_binary = _hook_path(root, "pre-commit").parent / f".sarj-lefthook{native_binary.suffix}"
44
- hook_targets = _hook_transaction_targets(durable_binary.parent)
45
- transaction.validate_targets(durable_binary.parent, hook_targets)
46
- hook_transaction = transaction.FileTransaction.capture(durable_binary.parent, hook_targets)
48
+ hook_transaction = capture_transaction(root)
47
49
  try:
48
50
  _install_managed_hooks(root, binary, native_binary, durable_binary, Path(uvx))
49
51
  except BaseException as exc:
@@ -93,13 +95,20 @@ def _install_managed_hooks(
93
95
 
94
96
  def _configured_hooks(root: Path, binary: Path) -> frozenset[str]:
95
97
  completed = subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- pass the fixed executable as an argv sequence with shell execution disabled.
96
- [str(binary), "dump", "--format", "json"], cwd=root, check=True, capture_output=True, text=True
98
+ [str(binary), "dump", "--format", "json"],
99
+ cwd=root,
100
+ check=True,
101
+ capture_output=True,
102
+ text=True,
103
+ timeout=_DISCOVERY_TIMEOUT.total_seconds(),
97
104
  )
98
105
  configuration = parse_json(completed.stdout)
99
106
  if not is_object_mapping(configuration):
100
107
  msg = "Lefthook resolved configuration must be a JSON object"
101
108
  raise ValueError(msg)
102
- return frozenset(name for name in configuration if isinstance(name, str))
109
+ configured = frozenset(name for name in configuration if isinstance(name, str))
110
+ # Native install refreshes remotes, so only local post hooks have stable ownership before installation.
111
+ return configured.difference(_LFS_POST_HOOKS) if configuration.get("remotes") else configured
103
112
 
104
113
 
105
114
  def _harden_precommit_entry(contents: str, root: Path) -> str:
@@ -127,19 +136,22 @@ def _harden_managed_call(contents: str, *, hook_type: str) -> str:
127
136
  return contents.replace(original, expected, 1)
128
137
 
129
138
 
130
- def _hook_transaction_targets(hooks_dir: Path) -> tuple[Path, ...]:
131
- return tuple(
132
- hooks_dir / name
133
- for name in (
134
- "pre-commit",
135
- "pre-commit.legacy",
136
- "commit-msg",
137
- "commit-msg.legacy",
138
- "pre-push",
139
- "pre-push.legacy",
140
- ".sarj-lefthook",
141
- ".sarj-lefthook.exe",
142
- )
139
+ def capture_transaction(root: Path) -> transaction.FileTransaction:
140
+ hooks_dir = _hook_path(root, "pre-commit").parent
141
+ transaction.validate_targets(hooks_dir, _hook_transaction_targets(hooks_dir, frozenset()))
142
+ configured = _configured_hooks(root, _binary("lefthook"))
143
+ paths = _hook_transaction_targets(hooks_dir, configured)
144
+ transaction.validate_targets(hooks_dir, paths)
145
+ return transaction.FileTransaction.capture(hooks_dir, paths)
146
+
147
+
148
+ def _hook_transaction_targets(hooks_dir: Path, configured: frozenset[str]) -> tuple[Path, ...]:
149
+ post_hooks = tuple(name for name in _LFS_POST_HOOKS if name in configured)
150
+ return (
151
+ *(hooks_dir / name for hook in _CORE_HOOKS for name in (hook, f"{hook}.legacy")),
152
+ *(hooks_dir / name for hook in post_hooks for name in (hook, f"{hook}.legacy", f"{hook}.old")),
153
+ hooks_dir / ".sarj-lefthook",
154
+ hooks_dir / ".sarj-lefthook.exe",
143
155
  )
144
156
 
145
157
 
@@ -286,11 +298,7 @@ def _native_binary() -> Path:
286
298
 
287
299
 
288
300
  def _hook_paths(root: Path) -> list[Path]:
289
- return [
290
- path
291
- for hook_name in ("pre-commit", "pre-push", "commit-msg")
292
- if (path := _hook_path(root, hook_name)).is_file()
293
- ]
301
+ return [path for hook_name in (*_CORE_HOOKS, *_LFS_POST_HOOKS) if (path := _hook_path(root, hook_name)).is_file()]
294
302
 
295
303
 
296
304
  def _hook_path(root: Path, hook_name: str) -> Path:
@@ -313,5 +321,10 @@ def _git(root: Path, *args: str) -> str:
313
321
  msg = "git is required to manage repository hooks"
314
322
  raise OSError(msg)
315
323
  return subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- pass the fixed executable as an argv sequence with shell execution disabled.
316
- [executable, *args], cwd=root, check=True, capture_output=True, text=True
324
+ [executable, *args],
325
+ cwd=root,
326
+ check=True,
327
+ capture_output=True,
328
+ text=True,
329
+ timeout=_DISCOVERY_TIMEOUT.total_seconds(),
317
330
  ).stdout