code-standards 8.104.2__tar.gz → 8.105.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.
- {code_standards-8.104.2 → code_standards-8.105.1}/PKG-INFO +7 -5
- {code_standards-8.104.2 → code_standards-8.105.1}/README.md +3 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/pyproject.toml +4 -4
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/api.py +69 -33
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/cli/main.py +86 -86
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/cli-reference.v1.json +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/eslint-compact-formatter.mts +10 -5
- code_standards-8.105.1/src/sarj_standards/configs/eslint-required-policy.mts +142 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/eslint-selected-rules.mts +67 -10
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/eslint.peers.json +2 -2
- code_standards-8.105.1/src/sarj_standards/configs/ruff.required.toml +5 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/rule-calibration-campaign.v1.json +8 -0
- code_standards-8.105.1/src/sarj_standards/configs/rule-inventory.v1.json +1 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/rule-ledger.json +3 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/doctor.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/hooks.py +5 -5
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/lifecycle.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/baseline.py +4 -4
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/analysis.py +9 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/external.py +30 -19
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/mobile_tools.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/policy.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/repo_standards.py +5 -5
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/runner.py +2 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/textlint.py +6 -6
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/artifacts.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/causality.py +2 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/registry.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/release_age.py +1 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/cli_reference_artifact.py +2 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/docs.py +12 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/hooks.py +7 -7
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/repository.py +2 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_catalog_artifact.py +5 -5
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_changes.py +3 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_examples.py +3 -3
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_inventory_artifact.py +2 -2
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/third_party_catalog_artifact.py +1 -1
- code_standards-8.105.1/src/sarj_standards/schemas/rule-catalog.v1.json +1 -0
- code_standards-8.104.2/src/sarj_standards/configs/rule-inventory.v1.json +0 -1
- code_standards-8.104.2/src/sarj_standards/schemas/rule-catalog.v1.json +0 -1
- {code_standards-8.104.2 → code_standards-8.105.1}/.gitignore +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/LICENSE +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/__main__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/_meta.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/cli/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/Mintfile.mobile.strict +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/actionlint.strict.yaml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/basedpyright.python315-watch.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/basedpyright.strict.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/checkov.strict.yml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/detekt.strict.yml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/devops-verification.v1.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/doctor.config.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/eslint.application.mjs +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/eslint.strict.mjs +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/hadolint.strict.yaml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/ktlint.strict.editorconfig +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/markdownlint.strict.yaml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/mobile-tools.versions.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/mobsf.strict.yml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/pyright.strict.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/ruff.application.toml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/ruff.cast.toml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/ruff.python315-watch.toml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/ruff.strict.toml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/rule-level-source.mts +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/schemas/SKAFFOLD-LICENSE +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/schemas/skaffold-v4beta7.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/schemas/upstream-schemas.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/semgrep-overrides.txt +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/shellcheck.strict.rc +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/swiftformat.strict +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/swiftlint.strict.yml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/taplo.strict.toml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/tflint.strict.hcl +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/tflint.version.hcl +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/tool-json.mts +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/yamllint.strict.yaml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/configs/zizmor.strict.yml +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/age_transition.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/configs.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/devops.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/exclusions.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/launcher.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/manifest.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/native_bootstrap.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/packagemanager.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/repository_baseline.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/retired_suppressions.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/scaffold.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/service.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/transaction.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/upgrade.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/adoption/uvtool.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/catalogs/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/catalogs/slack_automations.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/corpus/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/corpus/manifest.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/corpus/snapshot.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/analysis.schema.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/models.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/serialize.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/diagnostics/source.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/filesystem.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/json_boundary.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/chart_schemas.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/cloudbuild.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/devops_programs.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/devops_schema.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/devops_source.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/devops_tools.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/duplicate_code.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/embedded_shell.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/kubernetes_context.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/library_policy.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/prepared_devops.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/prepared_kubernetes.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/scheduling.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/security_tools.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/shell_ast.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/shell_format.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/shell_policy.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/test_value.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/text_rule_base.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/text_rules/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/text_rules/_registry.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/text_rules/cloudbuild_contract.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/toml_literals.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/linting/unused_modules.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/_values.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/changes.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/ci_artifacts.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/make_checks.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/metadata_verification.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/native_test_setup.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/process.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/publish.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/release_detect.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/retirement.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/reviewed_analysis.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/rollout.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/status.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/tags.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/test_selection.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/typescript.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/verification_process.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/release/wheel_tests.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/comment_corpus.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/config_generation.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/immutable_git.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/ledger.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/ruff_freshness.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_authoring.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_checkout.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_dependencies.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_imports.mts +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_level_source.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_lifecycle.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_maintenance.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/rule_registration.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/repository/shell_checks.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/rules/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/rules/catalog.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/rules/contracts.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/rules/corpus_runner.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/rules/evaluation.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/schema_boundary.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/setup/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/setup/repository.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/typed_containers.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/libs/yaml_boundary.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/py.typed +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/schemas/__init__.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/schemas/_paths.py +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/src/sarj_standards/schemas/rule-catalog.v1.schema.json +0 -0
- {code_standards-8.104.2 → code_standards-8.105.1}/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.
|
|
3
|
+
Version: 8.105.1
|
|
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/
|
|
@@ -30,10 +30,10 @@ Requires-Dist: pyyaml==6.0.3
|
|
|
30
30
|
Requires-Dist: referencing==0.37.0
|
|
31
31
|
Requires-Dist: repo-standards==6.11.0
|
|
32
32
|
Requires-Dist: ruff==0.17.0
|
|
33
|
-
Requires-Dist: sarj-iac-lint==0.
|
|
34
|
-
Requires-Dist: sarj-python-lint==1.
|
|
33
|
+
Requires-Dist: sarj-iac-lint==0.25.0
|
|
34
|
+
Requires-Dist: sarj-python-lint==1.64.0
|
|
35
35
|
Requires-Dist: sarj-rule-contracts==0.2.5
|
|
36
|
-
Requires-Dist: sarj-sql-lint==0.
|
|
36
|
+
Requires-Dist: sarj-sql-lint==0.23.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')
|
|
38
38
|
Requires-Dist: typer==0.27.3
|
|
39
39
|
Description-Content-Type: text/markdown
|
|
@@ -67,7 +67,9 @@ Use repeatable `check --rule ENGINE:ID` selectors to select native rules, ESLint
|
|
|
67
67
|
|
|
68
68
|
Selected ESLint checks apply live inline suppressions and validate selected bulk suppression counts. The complete lint gate owns unused inline-directive and inline-configuration checks: a partial run cannot establish whether an unselected rule's directive is needed.
|
|
69
69
|
|
|
70
|
-
The complete
|
|
70
|
+
The complete Python and JavaScript/TypeScript source gate requires named, line-local exceptions with concrete reasons. SARJ523 rejects blanket Python waivers, scoped Ruff file/range disables and weakened Pyright source settings; SARJ419 also rejects missing explanations. Bare sarj-noqa markers cannot waive Python, SQL or IaC findings. Required Ruff blanket-ignore checks and an independent ESLint suppression-policy pass remain active despite source disables, consumer rule configuration, rule exclusions and diagnostic baselines. The ESLint pass bans file/range disables, ts-ignore and ts-nocheck while retaining described local ts-expect-error exceptions. Generated-source headers cannot authorize their own waiver; explicit whole-path exclusions retain that boundary. A reason is not proof that an exception is justified. Native parse/read/size failures make checks incomplete. Explicit tool delegation, partial and own-CI options retain their declared scope and coverage notices.
|
|
71
|
+
|
|
72
|
+
The complete Standards gate enforces Ruff's ban on `typing.cast` and `typing_extensions.cast` even when source comments, consumer Ruff configuration or manifest rule exceptions suppress `banned-api`; these cast findings cannot enter or consume the diagnostic baseline. Wildcard imports, bounded literal `getattr` names and proven read-only typing module namespace lookups through `__dict__`, `vars` and `__getattribute__` retain the same ban. Other banned APIs retain their existing exception policy. Prefer discriminated unions, explicit narrowing and typed contracts. The warning `python:no-dual-shape-model-field-reader` (SARJ522) identifies private helpers that read the same declared Pydantic fields through model `getattr` and mapping lookup branches, returning `object` or `Any`. Normalize raw input once and read typed attributes. Opaque inputs, raw validators and genuinely dynamic reflection remain supported. Review changes to missing-field handling, coercion, generated defaults and validation errors; there is no autofix.
|
|
71
73
|
|
|
72
74
|
Python boolean traps are owned by Ruff FBT001, FBT002 and FBT003: positional boolean annotations, defaults and literal arguments are checked; keyword-only inputs, named arguments and the existing test exemptions remain allowed. The typed ESLint policy uses `@sarj/no-boolean-selector-parameter` at warning severity. This adapter retains maintained SonarJS S2301 detection and adds concise-arrow conditional dispatch. Prefer separate intention-revealing operations or an explicit string-literal mode. Boolean data, syntactic value mappings, stable same-operation data choices, setters and independently declared callback or inherited contracts remain allowed. Independent JSX helpers are checked; types and references establish callback contracts. It requires type information and a direct broad-boolean parameter condition. Multi-statement bodies, short-circuit guards, nullable or literal-only inputs and indirect predicates remain outside its scope. The inherited upstream block-body `onX` property exemption remains a documented blind spot. Use `code-standards check --rule eslint:no-boolean-selector-parameter` to inspect it. Noncomputed property reads count as data without proving getter effects; computed reads, including literal keys, remain outside that exemption. API changes require manual review; the rule provides no automatic rewrite.
|
|
73
75
|
|
|
@@ -27,7 +27,9 @@ Use repeatable `check --rule ENGINE:ID` selectors to select native rules, ESLint
|
|
|
27
27
|
|
|
28
28
|
Selected ESLint checks apply live inline suppressions and validate selected bulk suppression counts. The complete lint gate owns unused inline-directive and inline-configuration checks: a partial run cannot establish whether an unselected rule's directive is needed.
|
|
29
29
|
|
|
30
|
-
The complete
|
|
30
|
+
The complete Python and JavaScript/TypeScript source gate requires named, line-local exceptions with concrete reasons. SARJ523 rejects blanket Python waivers, scoped Ruff file/range disables and weakened Pyright source settings; SARJ419 also rejects missing explanations. Bare sarj-noqa markers cannot waive Python, SQL or IaC findings. Required Ruff blanket-ignore checks and an independent ESLint suppression-policy pass remain active despite source disables, consumer rule configuration, rule exclusions and diagnostic baselines. The ESLint pass bans file/range disables, ts-ignore and ts-nocheck while retaining described local ts-expect-error exceptions. Generated-source headers cannot authorize their own waiver; explicit whole-path exclusions retain that boundary. A reason is not proof that an exception is justified. Native parse/read/size failures make checks incomplete. Explicit tool delegation, partial and own-CI options retain their declared scope and coverage notices.
|
|
31
|
+
|
|
32
|
+
The complete Standards gate enforces Ruff's ban on `typing.cast` and `typing_extensions.cast` even when source comments, consumer Ruff configuration or manifest rule exceptions suppress `banned-api`; these cast findings cannot enter or consume the diagnostic baseline. Wildcard imports, bounded literal `getattr` names and proven read-only typing module namespace lookups through `__dict__`, `vars` and `__getattribute__` retain the same ban. Other banned APIs retain their existing exception policy. Prefer discriminated unions, explicit narrowing and typed contracts. The warning `python:no-dual-shape-model-field-reader` (SARJ522) identifies private helpers that read the same declared Pydantic fields through model `getattr` and mapping lookup branches, returning `object` or `Any`. Normalize raw input once and read typed attributes. Opaque inputs, raw validators and genuinely dynamic reflection remain supported. Review changes to missing-field handling, coercion, generated defaults and validation errors; there is no autofix.
|
|
31
33
|
|
|
32
34
|
Python boolean traps are owned by Ruff FBT001, FBT002 and FBT003: positional boolean annotations, defaults and literal arguments are checked; keyword-only inputs, named arguments and the existing test exemptions remain allowed. The typed ESLint policy uses `@sarj/no-boolean-selector-parameter` at warning severity. This adapter retains maintained SonarJS S2301 detection and adds concise-arrow conditional dispatch. Prefer separate intention-revealing operations or an explicit string-literal mode. Boolean data, syntactic value mappings, stable same-operation data choices, setters and independently declared callback or inherited contracts remain allowed. Independent JSX helpers are checked; types and references establish callback contracts. It requires type information and a direct broad-boolean parameter condition. Multi-statement bodies, short-circuit guards, nullable or literal-only inputs and indirect predicates remain outside its scope. The inherited upstream block-body `onX` property exemption remains a documented blind spot. Use `code-standards check --rule eslint:no-boolean-selector-parameter` to inspect it. Noncomputed property reads count as data without proving getter effects; computed reads, including literal keys, remain outside that exemption. API changes require manual review; the rule provides no automatic rewrite.
|
|
33
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "code-standards"
|
|
3
|
-
version = "8.
|
|
3
|
+
version = "8.105.1"
|
|
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"
|
|
@@ -31,9 +31,9 @@ dependencies = [
|
|
|
31
31
|
"repo-standards==6.11.0",
|
|
32
32
|
"ruff==0.17.0",
|
|
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
|
-
"sarj-iac-lint==0.
|
|
35
|
-
"sarj-python-lint==1.
|
|
36
|
-
"sarj-sql-lint==0.
|
|
34
|
+
"sarj-iac-lint==0.25.0",
|
|
35
|
+
"sarj-python-lint==1.64.0",
|
|
36
|
+
"sarj-sql-lint==0.23.0",
|
|
37
37
|
"typer==0.27.3",
|
|
38
38
|
]
|
|
39
39
|
|
|
@@ -324,33 +324,15 @@ class Standards:
|
|
|
324
324
|
return _with_coverage(
|
|
325
325
|
_without_baselined_diagnostics(native, baseline_counts, changed_scope=changed_scope), coverage
|
|
326
326
|
)
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
)
|
|
335
|
-
)
|
|
336
|
-
elif selected_groups.typescript and not eslint:
|
|
337
|
-
coverage.append(
|
|
338
|
-
CoverageNotice(
|
|
339
|
-
"eslint",
|
|
340
|
-
"ESLint is left to the repository's own CI",
|
|
341
|
-
len(selected_groups.typescript),
|
|
342
|
-
CoverageDisposition.NOT_REQUESTED,
|
|
343
|
-
)
|
|
344
|
-
)
|
|
345
|
-
if selected_groups.python and not python_type_check:
|
|
346
|
-
coverage.append(
|
|
347
|
-
CoverageNotice(
|
|
348
|
-
"basedpyright",
|
|
349
|
-
"Python type checking is left to the repository's own CI",
|
|
350
|
-
len(selected_groups.python),
|
|
351
|
-
CoverageDisposition.NOT_REQUESTED,
|
|
352
|
-
)
|
|
327
|
+
coverage.extend(
|
|
328
|
+
_source_analyzer_coverage(
|
|
329
|
+
selected_groups,
|
|
330
|
+
adopted,
|
|
331
|
+
full=rule_selection is None and not upstream_rules.ids,
|
|
332
|
+
python_type_check=python_type_check,
|
|
333
|
+
eslint=eslint,
|
|
353
334
|
)
|
|
335
|
+
)
|
|
354
336
|
|
|
355
337
|
def external_analysis() -> tuple[ToolReport, ...]:
|
|
356
338
|
return _selected_external_analysis(
|
|
@@ -573,6 +555,57 @@ def _operation_result(
|
|
|
573
555
|
return Result(status, findings, changes, exit_code)
|
|
574
556
|
|
|
575
557
|
|
|
558
|
+
def _source_analyzer_coverage(
|
|
559
|
+
selected_groups: GroupedPaths,
|
|
560
|
+
adopted: Manifest | None,
|
|
561
|
+
*,
|
|
562
|
+
full: bool,
|
|
563
|
+
python_type_check: bool,
|
|
564
|
+
eslint: bool,
|
|
565
|
+
) -> list[CoverageNotice]:
|
|
566
|
+
coverage: list[CoverageNotice] = []
|
|
567
|
+
if full and selected_groups.python and adopted is not None:
|
|
568
|
+
requested_python_tools = ("ruff", "pyright") if python_type_check else ("ruff",)
|
|
569
|
+
coverage.extend(
|
|
570
|
+
CoverageNotice(
|
|
571
|
+
"basedpyright" if tool == "pyright" else tool,
|
|
572
|
+
"disabled by repository capabilities",
|
|
573
|
+
len(selected_groups.python),
|
|
574
|
+
CoverageDisposition.NOT_REQUESTED,
|
|
575
|
+
)
|
|
576
|
+
for tool in requested_python_tools
|
|
577
|
+
if tool not in adopted.enabled_capabilities
|
|
578
|
+
)
|
|
579
|
+
if selected_groups.typescript and not eslint:
|
|
580
|
+
coverage.append(
|
|
581
|
+
CoverageNotice(
|
|
582
|
+
"eslint",
|
|
583
|
+
"ESLint is left to the repository's own CI",
|
|
584
|
+
len(selected_groups.typescript),
|
|
585
|
+
CoverageDisposition.NOT_REQUESTED,
|
|
586
|
+
)
|
|
587
|
+
)
|
|
588
|
+
elif selected_groups.typescript and adopted is not None and "eslint" not in adopted.configs:
|
|
589
|
+
coverage.append(
|
|
590
|
+
CoverageNotice(
|
|
591
|
+
"eslint",
|
|
592
|
+
"disabled by repository capabilities",
|
|
593
|
+
len(selected_groups.typescript),
|
|
594
|
+
CoverageDisposition.NOT_REQUESTED,
|
|
595
|
+
)
|
|
596
|
+
)
|
|
597
|
+
if selected_groups.python and not python_type_check:
|
|
598
|
+
coverage.append(
|
|
599
|
+
CoverageNotice(
|
|
600
|
+
"basedpyright",
|
|
601
|
+
"Python type checking is left to the repository's own CI",
|
|
602
|
+
len(selected_groups.python),
|
|
603
|
+
CoverageDisposition.NOT_REQUESTED,
|
|
604
|
+
)
|
|
605
|
+
)
|
|
606
|
+
return coverage
|
|
607
|
+
|
|
608
|
+
|
|
576
609
|
def _prepared_only_analysis(
|
|
577
610
|
root: Path,
|
|
578
611
|
adopted: Manifest | None,
|
|
@@ -820,7 +853,7 @@ def _with_library_policy(
|
|
|
820
853
|
|
|
821
854
|
|
|
822
855
|
def _with_repository_analysis(root: Path, native: AnalysisReport, *, staged: bool) -> AnalysisReport:
|
|
823
|
-
from .libs.linting.repo_standards import ( # ruff: ignore[import-outside-top-level]
|
|
856
|
+
from .libs.linting.repo_standards import ( # ruff: ignore[import-outside-top-level] -- load libs.linting.repo_standards only when this selected operation executes.
|
|
824
857
|
analyze as analyze_repository,
|
|
825
858
|
)
|
|
826
859
|
|
|
@@ -926,7 +959,7 @@ def _rule_selection(values: Sequence[str | RuleSelector] | None) -> RuleSelectio
|
|
|
926
959
|
from sarj_standards.libs.linting import ( # ruff: ignore[import-outside-top-level] -- load the upstream selectors with the catalog.
|
|
927
960
|
security_tools,
|
|
928
961
|
)
|
|
929
|
-
from sarj_standards.libs.repository import ( # ruff: ignore[import-outside-top-level]
|
|
962
|
+
from sarj_standards.libs.repository import ( # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.repository only when this selected operation executes.
|
|
930
963
|
rule_catalog_artifact,
|
|
931
964
|
)
|
|
932
965
|
|
|
@@ -953,7 +986,7 @@ def _rule_selection(values: Sequence[str | RuleSelector] | None) -> RuleSelectio
|
|
|
953
986
|
|
|
954
987
|
|
|
955
988
|
def _routed_for_selection(grouped: object, selected: RuleSelection | None) -> set[str]:
|
|
956
|
-
from sarj_standards.libs.linting.runner import ( # ruff: ignore[import-outside-top-level]
|
|
989
|
+
from sarj_standards.libs.linting.runner import ( # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.linting.runner only when this selected operation executes.
|
|
957
990
|
GroupedPaths,
|
|
958
991
|
)
|
|
959
992
|
|
|
@@ -996,10 +1029,10 @@ def _filter_report_selectors(
|
|
|
996
1029
|
|
|
997
1030
|
|
|
998
1031
|
def _warning_rule_keys(mode: AnalysisMode, selected: RuleSelection | None) -> frozenset[RuleSelector]:
|
|
999
|
-
from sarj_standards.libs.linting.policy import ( # ruff: ignore[import-outside-top-level]
|
|
1032
|
+
from sarj_standards.libs.linting.policy import ( # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.linting.policy only when this selected operation executes.
|
|
1000
1033
|
warning_selectors,
|
|
1001
1034
|
)
|
|
1002
|
-
from sarj_standards.libs.linting.test_value import SELECTORS # ruff: ignore[import-outside-top-level]
|
|
1035
|
+
from sarj_standards.libs.linting.test_value import SELECTORS # ruff: ignore[import-outside-top-level] -- load sarj_standards.libs.linting.test_value only when this selected operation executes.
|
|
1003
1036
|
|
|
1004
1037
|
warnings = warning_selectors()
|
|
1005
1038
|
if mode is AnalysisMode.OBSERVE and selected is not None:
|
|
@@ -1020,8 +1053,11 @@ def _with_warning_severity(
|
|
|
1020
1053
|
tool,
|
|
1021
1054
|
diagnostics=tuple(
|
|
1022
1055
|
replace(item, severity=Severity.WARNING)
|
|
1023
|
-
if
|
|
1024
|
-
|
|
1056
|
+
if "required-source-policy" not in item.tags
|
|
1057
|
+
and (
|
|
1058
|
+
_selector_for_diagnostic(item) in selectors
|
|
1059
|
+
or (tool.name == "eslint" and upstream_rules.warning_only and item.rule_id in upstream_rules.ids)
|
|
1060
|
+
)
|
|
1025
1061
|
else item
|
|
1026
1062
|
for item in tool.diagnostics
|
|
1027
1063
|
),
|