code-standards 8.151.1__tar.gz → 8.151.40__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 (210) hide show
  1. {code_standards-8.151.1 → code_standards-8.151.40}/PKG-INFO +2 -2
  2. {code_standards-8.151.1 → code_standards-8.151.40}/pyproject.toml +2 -2
  3. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/cli/main.py +88 -10
  4. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/cli-reference.v1.json +2 -2
  5. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/devops_tools.py +13 -3
  6. code_standards-8.151.40/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
  7. code_standards-8.151.1/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
  8. {code_standards-8.151.1 → code_standards-8.151.40}/.gitignore +0 -0
  9. {code_standards-8.151.1 → code_standards-8.151.40}/LICENSE +0 -0
  10. {code_standards-8.151.1 → code_standards-8.151.40}/README.md +0 -0
  11. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/__init__.py +0 -0
  12. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/__main__.py +0 -0
  13. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/_meta.py +0 -0
  14. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/api.py +0 -0
  15. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/cli/__init__.py +0 -0
  16. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
  17. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/LICENSE.actions +0 -0
  18. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/LICENSE.cronstrue +0 -0
  19. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/LICENSE.yaml +0 -0
  20. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/generate.mts +0 -0
  21. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/index.mts +0 -0
  22. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/package-lock.json +0 -0
  23. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/package.json +0 -0
  24. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser/upstream.json +0 -0
  25. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/action-parser.cjs +0 -0
  26. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
  27. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
  28. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
  29. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/checkov.strict.yml +0 -0
  30. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/compile-eslint.mts +0 -0
  31. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/detekt.strict.yml +0 -0
  32. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
  33. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/doctor.config.json +0 -0
  34. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint-compact-formatter.mts +0 -0
  35. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint-required-policy.mts +0 -0
  36. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint-selected-rules.mts +0 -0
  37. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint.application.mjs +0 -0
  38. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint.peers.json +0 -0
  39. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
  40. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/eslint.strict.ts +0 -0
  41. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
  42. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
  43. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
  44. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
  45. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
  46. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/pyright.strict.json +0 -0
  47. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ruff.application.toml +0 -0
  48. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ruff.cast.toml +0 -0
  49. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
  50. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ruff.required.toml +0 -0
  51. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/ruff.strict.toml +0 -0
  52. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +0 -0
  53. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/rule-inventory.v1.json +0 -0
  54. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/rule-ledger.json +0 -0
  55. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/rule-level-source.mts +0 -0
  56. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
  57. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/schemas/google-build-v1-schema.json +0 -0
  58. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/schemas/google-build-v1.LICENSE +0 -0
  59. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
  60. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
  61. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
  62. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
  63. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/swiftformat.strict +0 -0
  64. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
  65. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/taplo.strict.toml +0 -0
  66. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
  67. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/tflint.version.hcl +0 -0
  68. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/tool-json.mts +0 -0
  69. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
  70. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
  71. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/__init__.py +0 -0
  72. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/__init__.py +0 -0
  73. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
  74. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/configs.py +0 -0
  75. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/devops.py +0 -0
  76. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/doctor.py +0 -0
  77. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
  78. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/hooks.py +0 -0
  79. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/launcher.py +0 -0
  80. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/lifecycle.py +0 -0
  81. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/manifest.py +0 -0
  82. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
  83. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
  84. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
  85. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
  86. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
  87. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/service.py +0 -0
  88. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/transaction.py +0 -0
  89. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
  90. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
  91. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
  92. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
  93. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/corpus/__init__.py +0 -0
  94. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/corpus/manifest.py +0 -0
  95. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
  96. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
  97. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
  98. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/baseline.py +0 -0
  99. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/initial_import.py +0 -0
  100. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/models.py +0 -0
  101. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
  102. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/diagnostics/source.py +0 -0
  103. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/filesystem.py +0 -0
  104. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/json_boundary.py +0 -0
  105. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/__init__.py +0 -0
  106. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/_cloudbuild_autofix.py +0 -0
  107. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/action_metadata.py +0 -0
  108. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/analysis.py +0 -0
  109. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/autofix.py +0 -0
  110. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
  111. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
  112. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/cloudbuild_schema.py +0 -0
  113. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/complexity_baseline.py +0 -0
  114. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
  115. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
  116. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/devops_source.py +0 -0
  117. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
  118. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
  119. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/execution_plan.py +0 -0
  120. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/external.py +0 -0
  121. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
  122. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/library_policy.py +0 -0
  123. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/mobile_tools.py +0 -0
  124. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/policy.py +0 -0
  125. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
  126. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
  127. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/prepared_native.py +0 -0
  128. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/process.py +0 -0
  129. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/python_fixes.py +0 -0
  130. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/repo_standards.py +0 -0
  131. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/runner.py +0 -0
  132. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/scheduling.py +0 -0
  133. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/security_tools.py +0 -0
  134. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
  135. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/shell_format.py +0 -0
  136. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
  137. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/test_value.py +0 -0
  138. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
  139. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
  140. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
  141. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rules/_slack_payload.py +0 -0
  142. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
  143. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/text_rules/slack_event_text_in_mrkdwn.py +0 -0
  144. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/textlint.py +0 -0
  145. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
  146. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
  147. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/__init__.py +0 -0
  148. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/_values.py +0 -0
  149. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/artifacts.py +0 -0
  150. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/causality.py +0 -0
  151. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/changes.py +0 -0
  152. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
  153. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/make_checks.py +0 -0
  154. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
  155. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
  156. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/process.py +0 -0
  157. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/publish.py +0 -0
  158. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/registry.py +0 -0
  159. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/release_age.py +0 -0
  160. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/release_detect.py +0 -0
  161. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/retirement.py +0 -0
  162. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
  163. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/rollout.py +0 -0
  164. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/status.py +0 -0
  165. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/tags.py +0 -0
  166. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/test_selection.py +0 -0
  167. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/typescript.py +0 -0
  168. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/verification_process.py +0 -0
  169. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
  170. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/__init__.py +0 -0
  171. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/cli_examples.py +0 -0
  172. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/cli_reference_artifact.py +0 -0
  173. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/cloudbuild_schema_projection.py +0 -0
  174. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
  175. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/config_generation.py +0 -0
  176. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/docs.py +0 -0
  177. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/hooks.py +0 -0
  178. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
  179. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/ledger.py +0 -0
  180. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/repository.py +0 -0
  181. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
  182. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
  183. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +0 -0
  184. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_changes.py +0 -0
  185. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
  186. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
  187. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_examples.py +0 -0
  188. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
  189. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +0 -0
  190. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
  191. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
  192. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
  193. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
  194. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
  195. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +0 -0
  196. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/rules/__init__.py +0 -0
  197. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/rules/catalog.py +0 -0
  198. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/rules/contracts.py +0 -0
  199. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
  200. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/rules/evaluation.py +0 -0
  201. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/schema_boundary.py +0 -0
  202. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/setup/__init__.py +0 -0
  203. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/setup/repository.py +0 -0
  204. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/typed_containers.py +0 -0
  205. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/libs/yaml_boundary.py +0 -0
  206. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/py.typed +0 -0
  207. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/schemas/__init__.py +0 -0
  208. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/schemas/_paths.py +0 -0
  209. {code_standards-8.151.1 → code_standards-8.151.40}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
  210. {code_standards-8.151.1 → code_standards-8.151.40}/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.151.1
3
+ Version: 8.151.40
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/
@@ -31,7 +31,7 @@ Requires-Dist: referencing==0.37.0
31
31
  Requires-Dist: repo-standards==6.14.0
32
32
  Requires-Dist: ruff==0.17.2
33
33
  Requires-Dist: sarj-iac-lint==0.31.0
34
- Requires-Dist: sarj-python-lint==1.88.1
34
+ Requires-Dist: sarj-python-lint==1.88.20
35
35
  Requires-Dist: sarj-rule-contracts==0.5.0
36
36
  Requires-Dist: sarj-sql-lint==0.33.0
37
37
  Requires-Dist: shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "code-standards"
3
- version = "8.151.1"
3
+ version = "8.151.40"
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"
@@ -32,7 +32,7 @@ dependencies = [
32
32
  "ruff==0.17.2",
33
33
  "shellcheck-py==0.11.0.1; (sys_platform == 'darwin' and platform_machine == 'arm64') or (sys_platform == 'darwin' and platform_machine == 'x86_64') or (sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')",
34
34
  "sarj-iac-lint==0.31.0",
35
- "sarj-python-lint==1.88.1",
35
+ "sarj-python-lint==1.88.20",
36
36
  "sarj-sql-lint==0.33.0",
37
37
  "typer==0.27.3",
38
38
  ]
@@ -2101,7 +2101,7 @@ def _staged_file_names(root: Path, *, include_deleted: bool = True) -> list[str]
2101
2101
  cwd=root,
2102
2102
  check=True,
2103
2103
  capture_output=True,
2104
- env=_git_environment(),
2104
+ env=_git_environment(staged=True),
2105
2105
  )
2106
2106
  names = [part.decode("utf-8", errors="surrogateescape") for part in completed.stdout.split(b"\0") if part]
2107
2107
  return list(dict.fromkeys(names))
@@ -2165,22 +2165,46 @@ def _unstaged_versions(root: Path, staged_paths: Iterable[str]) -> tuple[str, ..
2165
2165
  if git is None:
2166
2166
  msg = "git is required for --staged"
2167
2167
  raise OSError(msg)
2168
+ selected = set(_repository_relative_names(root, staged_paths))
2169
+ if not selected:
2170
+ return ()
2171
+ # Keep the index byte-exact; compare text content and refine opaque binary records internally.
2168
2172
  completed = subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- fixed argv, no shell.
2169
- [git, "diff", "--name-only", "-z"],
2173
+ [
2174
+ git,
2175
+ "--literal-pathspecs",
2176
+ "-c",
2177
+ "diff.autoRefreshIndex=false",
2178
+ "diff",
2179
+ "--no-ext-diff",
2180
+ "--no-textconv",
2181
+ "--exit-code",
2182
+ "--numstat",
2183
+ "-z",
2184
+ "--no-renames",
2185
+ "--",
2186
+ *sorted(selected),
2187
+ ],
2170
2188
  cwd=root,
2171
- check=True,
2189
+ check=False,
2172
2190
  capture_output=True,
2173
- env=_git_environment(),
2191
+ env=_git_environment(staged=True),
2174
2192
  )
2175
- unstaged = {part.decode("utf-8", errors="surrogateescape") for part in completed.stdout.split(b"\0") if part}
2176
- selected = set(_repository_relative_names(root, staged_paths))
2193
+ if completed.returncode not in {0, 1}:
2194
+ completed.check_returncode()
2195
+ entries = _numstat_entries(completed.stdout)
2196
+ unstaged = {
2197
+ path
2198
+ for path, binary in entries.items()
2199
+ if path in selected and (not binary or _binary_worktree_differs(root, git, path))
2200
+ }
2177
2201
  if selected:
2178
2202
  tracked = subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- literal selected paths and NUL records preserve authored filenames.
2179
2203
  [git, "--literal-pathspecs", "ls-files", "-v", "-z", "--", *sorted(selected)],
2180
2204
  cwd=root,
2181
2205
  check=True,
2182
2206
  capture_output=True,
2183
- env=_git_environment(),
2207
+ env=_git_environment(staged=True),
2184
2208
  )
2185
2209
  unstaged.update(
2186
2210
  entry[2:].decode("utf-8", errors="surrogateescape")
@@ -2190,6 +2214,60 @@ def _unstaged_versions(root: Path, staged_paths: Iterable[str]) -> tuple[str, ..
2190
2214
  return tuple(sorted(unstaged & selected))
2191
2215
 
2192
2216
 
2217
+ def _numstat_entries(output: bytes) -> dict[str, bool]:
2218
+ if not output:
2219
+ return {}
2220
+ if not output.endswith(b"\0"):
2221
+ msg = "git diff returned malformed numstat output"
2222
+ raise OSError(msg)
2223
+ entries: dict[str, bool] = {}
2224
+ for record in output[:-1].split(b"\0"):
2225
+ try:
2226
+ added, deleted, raw_path = record.split(b"\t", 2)
2227
+ except ValueError as exc:
2228
+ msg = "git diff returned malformed numstat output"
2229
+ raise OSError(msg) from exc
2230
+ if not raw_path:
2231
+ msg = "git diff returned malformed numstat output"
2232
+ raise OSError(msg)
2233
+ binary = added == deleted == b"-"
2234
+ if not binary and not (added.isdigit() and deleted.isdigit()):
2235
+ msg = "git diff returned malformed numstat output"
2236
+ raise OSError(msg)
2237
+ path = raw_path.decode("utf-8", errors="surrogateescape")
2238
+ if path not in entries or not binary:
2239
+ entries[path] = binary
2240
+ return entries
2241
+
2242
+
2243
+ def _binary_worktree_differs(root: Path, git: str, path: str) -> bool:
2244
+ # Binary numstat records can be stat-only. Internal patch generation compares canonical content and mode.
2245
+ completed = subprocess.run( # ruff: ignore[subprocess-without-shell-equals-true] -- fixed argv and literal selected path, no shell.
2246
+ [
2247
+ git,
2248
+ "--literal-pathspecs",
2249
+ "-c",
2250
+ "diff.autoRefreshIndex=false",
2251
+ "diff",
2252
+ "--no-ext-diff",
2253
+ "--no-textconv",
2254
+ "--exit-code",
2255
+ "--patch",
2256
+ "--no-renames",
2257
+ "--no-color",
2258
+ "--",
2259
+ path,
2260
+ ],
2261
+ cwd=root,
2262
+ check=False,
2263
+ capture_output=True,
2264
+ env=_git_environment(staged=True),
2265
+ )
2266
+ if completed.returncode not in {0, 1}:
2267
+ completed.check_returncode()
2268
+ return bool(completed.stdout)
2269
+
2270
+
2193
2271
  def _repository_relative_names(root: Path, paths: Iterable[str]) -> list[str]:
2194
2272
  repository = root.resolve()
2195
2273
  relative_names: list[str] = []
@@ -2207,11 +2285,11 @@ def _repository_relative_names(root: Path, paths: Iterable[str]) -> list[str]:
2207
2285
  return list(dict.fromkeys(relative_names))
2208
2286
 
2209
2287
 
2210
- def _git_environment() -> dict[str, str]:
2288
+ def _git_environment(*, staged: bool = False) -> dict[str, str]:
2211
2289
  return {
2212
2290
  name: value
2213
- for name, value in os.environ.items() # ruff: ignore[banned-api] -- intentionally sanitize Git hook routing.
2214
- if name in _GIT_SAFE_ENV
2291
+ for name, value in os.environ.items() # ruff: ignore[banned-api] -- staged hooks retain only Git's prospective index selection in addition to the closed environment.
2292
+ if name in _GIT_SAFE_ENV or (staged and name == "GIT_INDEX_FILE")
2215
2293
  }
2216
2294
 
2217
2295
 
@@ -3316,6 +3316,6 @@
3316
3316
  },
3317
3317
  "program": "code-standards",
3318
3318
  "schemaVersion": 1,
3319
- "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.151.1).",
3320
- "version": "8.151.1"
3319
+ "summary": "Adopt, check, fix, diagnose, and update sarj-ai standards (v8.151.40).",
3320
+ "version": "8.151.40"
3321
3321
  }
@@ -65,6 +65,9 @@ TOOLS: Final = MappingProxyType(
65
65
  )
66
66
 
67
67
 
68
+ _VERSION_QUERY_TIMEOUTS: Final = MappingProxyType({"knip": 15})
69
+
70
+
68
71
  class NativeToolError(ValueError):
69
72
  pass
70
73
 
@@ -140,7 +143,12 @@ def _installed_tool(tool: NativeTool, *, root: Path, runner: ProcessExecutor, ma
140
143
 
141
144
 
142
145
  def _attest(tool: NativeTool, *, root: Path, runner: ProcessExecutor) -> NativeTool:
143
- output = _version_output(_argv(tool, tool.version_args), root=root, runner=runner)
146
+ output = _version_output(
147
+ _argv(tool, tool.version_args),
148
+ root=root,
149
+ runner=runner,
150
+ timeout_seconds=_VERSION_QUERY_TIMEOUTS.get(tool.name, 5),
151
+ )
144
152
  actual = _version(tool, output.stderr if tool.version_stderr else output.stdout)
145
153
  if output.returncode or actual != tool.version:
146
154
  msg = f"{tool.name} {actual} is installed; exact version {tool.version} is required"
@@ -148,9 +156,11 @@ def _attest(tool: NativeTool, *, root: Path, runner: ProcessExecutor) -> NativeT
148
156
  return tool
149
157
 
150
158
 
151
- def _version_output(argv: Sequence[str], *, root: Path, runner: ProcessExecutor) -> ProcessOutput:
159
+ def _version_output(
160
+ argv: Sequence[str], *, root: Path, runner: ProcessExecutor, timeout_seconds: float = 5
161
+ ) -> ProcessOutput:
152
162
  try:
153
- return runner.run(process_request(argv, cwd=root, timeout_seconds=5))
163
+ return runner.run(process_request(argv, cwd=root, timeout_seconds=timeout_seconds))
154
164
  except subprocess.TimeoutExpired as error:
155
165
  msg = f"{Path(argv[0]).name} query timed out after {error.timeout} seconds"
156
166
  raise NativeToolError(msg) from error