RepoAuditor 0.2.78__tar.gz → 0.2.79__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.
- {repoauditor-0.2.78 → repoauditor-0.2.79}/PKG-INFO +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/CommandLineProcessor.py +35 -16
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/EntryPoint.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +3 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecks.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Requirement.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/__init__.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/CommandLineProcessor_UnitTest.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +30 -30
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +8 -8
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +1 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/DefaultBranchQueryRequirements/Protected_UnitTest.py +3 -3
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +10 -10
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/RulesetRequirements_UnitTest.py +11 -11
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/DependabotSecurityUpdates_UnitTest.py +7 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/Description_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/Private_UnitTest.py +6 -6
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanningPushProtection_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/SecretScanning_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/SquashMergeCommitMessage_UnitTest.py +9 -8
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +2 -2
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHub_EndToEndTest.py +33 -33
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Requirement_UnitTest.py +2 -1
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.copier-answers.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/CODEOWNERS +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/ISSUE_TEMPLATE/custom.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/actions/release_impl/action.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/pull_request_template.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/release_sources.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/workflows/CICD.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/workflows/CICD_impl.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/workflows/EndToEnd.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.github/workflows/codeql.yml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.gitignore +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.pre-commit-config.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/.python-version +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/CODE_OF_CONDUCT.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/CONTRIBUTING.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/DEVELOPMENT.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/GOVERNANCE.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/LICENSE +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/MAINTAINERS.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/README.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/SECURITY.md +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/default_config.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/minisign_key.pub +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/pyproject.toml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/AutoGitSemVer.yaml +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Display.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/ExecuteModules.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/GitHubPlugin.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Plugins/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/Query.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/src/RepoAuditor/py.typed +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/EntryPoint_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/ExecuteModules_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Module_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugin_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/CommunityStandards/GitHubCommunityStandards_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/CommunityStandards_EndToEndTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/License_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQueryRequirements/MergeCommitMessage_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/GitHubModule/fixtures.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/conftest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Plugins/utilities.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/Query_UnitTest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/__init__.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/tests/conftest.py +0 -0
- {repoauditor-0.2.78 → repoauditor-0.2.79}/uv.lock +0 -0
|
@@ -144,31 +144,50 @@ class CommandLineProcessor:
|
|
|
144
144
|
# Requirement-level args
|
|
145
145
|
for query in module.queries:
|
|
146
146
|
for requirement in query.requirements:
|
|
147
|
-
for key, value in requirement.GetDynamicArgDefinitions().items():
|
|
148
|
-
dynamic_arg_definitions[
|
|
149
|
-
f"{module.name}{argument_separator}{requirement.name}{argument_separator}{key}"
|
|
150
|
-
] = value
|
|
147
|
+
for key, value in requirement.GetDynamicArgDefinitions(argument_separator).items():
|
|
148
|
+
dynamic_arg_definitions[f"{module.name}{argument_separator}{key}"] = value
|
|
151
149
|
|
|
152
150
|
# Now we process the definitions to get the dynamic arguments
|
|
153
151
|
dynamic_args: dict[str, dict[str, Any]] = {}
|
|
154
152
|
|
|
155
|
-
num_acceptable_dynamic_args_parts = 2
|
|
156
|
-
|
|
157
153
|
for key, value in get_dynamic_args_func(dynamic_arg_definitions).items():
|
|
158
|
-
|
|
159
|
-
assert len(parts) >= num_acceptable_dynamic_args_parts
|
|
154
|
+
import re
|
|
160
155
|
|
|
161
|
-
|
|
162
|
-
|
|
156
|
+
pattern = rf"(?P<module>[A-Za-z]+){argument_separator}(?P<has_no>no{argument_separator})?(?P<requirement_or_arg>[A-Za-z0-9]+)(?P<value>{argument_separator}[\S]+)?"
|
|
157
|
+
groups = re.match(
|
|
158
|
+
pattern,
|
|
159
|
+
key,
|
|
160
|
+
).groupdict()
|
|
161
|
+
|
|
162
|
+
# Assert that module and requirement/arg are specified
|
|
163
|
+
assert groups["module"]
|
|
164
|
+
assert groups["requirement_or_arg"]
|
|
165
|
+
|
|
166
|
+
module_name = groups["module"]
|
|
167
|
+
requirement_or_arg = groups["requirement_or_arg"]
|
|
168
|
+
has_no = groups["has_no"]
|
|
169
|
+
|
|
170
|
+
if module_name not in module_map:
|
|
171
|
+
msg = f"'{module_name}' is not a recognized module name."
|
|
163
172
|
raise ValueError(msg)
|
|
164
173
|
|
|
165
|
-
if
|
|
166
|
-
|
|
174
|
+
# The following if-elif block works as follows:
|
|
175
|
+
# First we check if `requirement_or_arg` is all lower case. If it is, then it is a module arg, else it is a requirement.
|
|
176
|
+
# If the flag has a requirement, we first check for a value (e.g. GitHub-License-value), in which case, we assign the value.
|
|
177
|
+
# Else, we check if the flag has a `no` in it, in which case it is a boolean flag with `no`, else (finally) a `yes`.
|
|
178
|
+
if requirement_or_arg.islower():
|
|
179
|
+
dynamic_args.setdefault(module_name, {})[requirement_or_arg] = value
|
|
167
180
|
else:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
181
|
+
if groups["value"]:
|
|
182
|
+
value_key = groups["value"][1:]
|
|
183
|
+
elif has_no:
|
|
184
|
+
value_key = "no"
|
|
185
|
+
else:
|
|
186
|
+
value_key = "yes"
|
|
187
|
+
|
|
188
|
+
dynamic_args.setdefault(module_name, {}).setdefault(None, {}).setdefault(
|
|
189
|
+
requirement_or_arg, {}
|
|
190
|
+
)[value_key] = value
|
|
172
191
|
|
|
173
192
|
return dynamic_args
|
|
174
193
|
|
|
@@ -125,10 +125,10 @@ def _HelpEpilog() -> str:
|
|
|
125
125
|
|
|
126
126
|
for query in module.queries:
|
|
127
127
|
for requirement in query.requirements:
|
|
128
|
-
for key, value in requirement.GetDynamicArgDefinitions().items():
|
|
128
|
+
for key, value in requirement.GetDynamicArgDefinitions(ARGUMENT_SEPARATOR).items():
|
|
129
129
|
requirement_arguments.append(
|
|
130
130
|
TypeInfoToString(
|
|
131
|
-
f"--{module.name}{ARGUMENT_SEPARATOR}{
|
|
131
|
+
f"--{module.name}{ARGUMENT_SEPARATOR}{key}",
|
|
132
132
|
value,
|
|
133
133
|
),
|
|
134
134
|
)
|
|
@@ -61,10 +61,10 @@ class ExistsRequirementImpl(Requirement):
|
|
|
61
61
|
|
|
62
62
|
# ----------------------------------------------------------------------
|
|
63
63
|
@override
|
|
64
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
64
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
65
65
|
"""Get the definitions for the arguments to this requirement."""
|
|
66
66
|
return {
|
|
67
|
-
self.dynamic_arg_name: (
|
|
67
|
+
f"{self.name}{argument_separator}{self.dynamic_arg_name}": (
|
|
68
68
|
bool,
|
|
69
69
|
typer.Option(
|
|
70
70
|
False,
|
|
@@ -22,7 +22,7 @@ class AllowDeletions(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"AllowDeletions",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Rules applied to everyone including administrators",
|
|
27
27
|
"Allow deletions",
|
|
28
28
|
lambda data: data["branch_protection_data"]["allow_deletions"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class AllowMainlineForcePushes(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"AllowMainlineForcePushes",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Rules applied to everyone including administrators",
|
|
27
27
|
"Allow force pushes",
|
|
28
28
|
lambda data: data["branch_protection_data"]["allow_force_pushes"]["enabled"],
|
|
@@ -23,7 +23,7 @@ class DismissStalePullRequestApprovals(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"DismissStalePullRequestApprovals",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Dismiss stale pull request approvals when new commits are pushed",
|
|
29
29
|
_GetValue,
|
|
@@ -22,7 +22,7 @@ class DoNotAllowBypassSettings(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"DoNotAllowBypassSettings",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Do not allow bypassing the above settings",
|
|
28
28
|
lambda data: data["branch_protection_data"]["enforce_admins"]["enabled"],
|
|
@@ -54,10 +54,10 @@ class EnsureStatusChecks(Requirement):
|
|
|
54
54
|
|
|
55
55
|
# ----------------------------------------------------------------------
|
|
56
56
|
@override
|
|
57
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
57
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
58
58
|
"""Get the definitions for the arguments to this requirement."""
|
|
59
59
|
return {
|
|
60
|
-
"
|
|
60
|
+
f"no{argument_separator}{self.name}": (
|
|
61
61
|
bool,
|
|
62
62
|
typer.Option(
|
|
63
63
|
default=False,
|
|
@@ -73,7 +73,7 @@ class EnsureStatusChecks(Requirement):
|
|
|
73
73
|
query_data: dict[str, Any],
|
|
74
74
|
requirement_args: dict[str, Any],
|
|
75
75
|
) -> Requirement.EvaluateImplResult:
|
|
76
|
-
if requirement_args["
|
|
76
|
+
if requirement_args["no"]:
|
|
77
77
|
return Requirement.EvaluateImplResult(
|
|
78
78
|
EvaluateResult.DoesNotApply,
|
|
79
79
|
"The status check requirement has been explicitly disabled.",
|
|
@@ -23,7 +23,7 @@ class RequireApprovalMostRecentPush(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireApprovalMostRecentPush",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Require approval of the most recent reviewable push",
|
|
29
29
|
_GetValue,
|
|
@@ -23,7 +23,7 @@ class RequireCodeOwnerReview(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireCodeOwnerReview",
|
|
25
25
|
False,
|
|
26
|
-
"
|
|
26
|
+
"yes",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require a pull request before merging -> Require review from Code Owners",
|
|
29
29
|
_GetValue,
|
|
@@ -22,7 +22,7 @@ class RequireConversationResolution(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireConversationResolution",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require conversation resolution before merging",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_conversation_resolution"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequireLinearHistory(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireLinearHistory",
|
|
24
24
|
False,
|
|
25
|
-
"
|
|
25
|
+
"yes",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require linear history",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_linear_history"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequirePullRequests(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequirePullRequests",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require a pull request before merging",
|
|
28
28
|
lambda data: "required_pull_request_reviews" in data["branch_protection_data"],
|
|
@@ -22,7 +22,7 @@ class RequireSignedCommits(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireSignedCommits",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require signed commits",
|
|
28
28
|
lambda data: data["branch_protection_data"]["required_signatures"]["enabled"],
|
|
@@ -22,7 +22,7 @@ class RequireStatusChecksToPass(ClassicEnableRequirementImpl):
|
|
|
22
22
|
super().__init__(
|
|
23
23
|
"RequireStatusChecksToPass",
|
|
24
24
|
True,
|
|
25
|
-
"
|
|
25
|
+
"no",
|
|
26
26
|
"Protect matching branches",
|
|
27
27
|
"Require status checks to pass before merging",
|
|
28
28
|
lambda data: "required_status_checks" in data["branch_protection_data"],
|
|
@@ -23,7 +23,7 @@ class RequireUpToDateBranches(ClassicEnableRequirementImpl):
|
|
|
23
23
|
super().__init__(
|
|
24
24
|
"RequireUpToDateBranches",
|
|
25
25
|
True,
|
|
26
|
-
"
|
|
26
|
+
"no",
|
|
27
27
|
"Protect matching branches",
|
|
28
28
|
"Require status checks to pass before merging -> Require branches to be up to date before merging",
|
|
29
29
|
_GetValue,
|
|
@@ -53,10 +53,10 @@ class Protected(Requirement):
|
|
|
53
53
|
|
|
54
54
|
# ----------------------------------------------------------------------
|
|
55
55
|
@override
|
|
56
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
56
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
57
57
|
"""Get the definitions for the arguments to this requirement."""
|
|
58
58
|
return {
|
|
59
|
-
"
|
|
59
|
+
f"no{argument_separator}{self.name}": (
|
|
60
60
|
bool,
|
|
61
61
|
typer.Option(
|
|
62
62
|
default=False,
|
|
@@ -78,7 +78,7 @@ class Protected(Requirement):
|
|
|
78
78
|
if is_protected is None:
|
|
79
79
|
return CreateIncompleteDataResult()
|
|
80
80
|
|
|
81
|
-
if requirement_args["
|
|
81
|
+
if requirement_args["no"]:
|
|
82
82
|
expected_value = False
|
|
83
83
|
provide_rationale = False
|
|
84
84
|
else:
|
|
@@ -60,10 +60,11 @@ class EnableRequirementImpl(Requirement):
|
|
|
60
60
|
|
|
61
61
|
# ----------------------------------------------------------------------
|
|
62
62
|
@override
|
|
63
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
63
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
64
64
|
"""Get the definitions for the arguments to this requirement."""
|
|
65
|
+
arg = f"no{argument_separator}{self.name}" if self.dynamic_arg_name == "no" else f"{self.name}"
|
|
65
66
|
return {
|
|
66
|
-
|
|
67
|
+
arg: (
|
|
67
68
|
bool,
|
|
68
69
|
typer.Option(
|
|
69
70
|
False,
|
|
@@ -65,10 +65,10 @@ class ValueRequirementImpl(Requirement):
|
|
|
65
65
|
|
|
66
66
|
# ----------------------------------------------------------------------
|
|
67
67
|
@override
|
|
68
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
68
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
69
69
|
"""Get the definitions for the arguments to this requirement."""
|
|
70
70
|
return {
|
|
71
|
-
"value": (
|
|
71
|
+
f"{self.name}{argument_separator}value": (
|
|
72
72
|
str,
|
|
73
73
|
typer.Option(
|
|
74
74
|
self.default_value,
|
|
@@ -16,7 +16,7 @@ class RequirePullRequests(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequirePullRequestsRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="pull_request",
|
|
21
21
|
github_ruleset_value="Require a pull request before merging",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "pull_request",
|
|
@@ -16,7 +16,7 @@ class RequireSignedCommits(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequireSignedCommitsRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="required_signatures",
|
|
21
21
|
github_ruleset_value="Require signed commits",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_signatures",
|
|
@@ -16,7 +16,7 @@ class RequireStatusChecks(EnableRulesetRequirementImpl):
|
|
|
16
16
|
super().__init__(
|
|
17
17
|
name="RequireStatusChecksRule",
|
|
18
18
|
enabled_by_default=True,
|
|
19
|
-
dynamic_arg_name="
|
|
19
|
+
dynamic_arg_name="no",
|
|
20
20
|
github_ruleset_type="required_status_checks",
|
|
21
21
|
github_ruleset_value="Require status checks to pass",
|
|
22
22
|
get_configuration_value_func=lambda rule: rule.get("type", "") == "required_status_checks",
|
|
@@ -51,10 +51,10 @@ class Description(Requirement):
|
|
|
51
51
|
|
|
52
52
|
# ----------------------------------------------------------------------
|
|
53
53
|
@override
|
|
54
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
54
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]:
|
|
55
55
|
"""Get the definitions for the arguments to this requirement."""
|
|
56
56
|
return {
|
|
57
|
-
"allow-empty": (
|
|
57
|
+
f"{self.name}{argument_separator}allow-empty": (
|
|
58
58
|
bool,
|
|
59
59
|
typer.Option(
|
|
60
60
|
default=False,
|
|
@@ -52,10 +52,10 @@ class Private(Requirement):
|
|
|
52
52
|
|
|
53
53
|
# ----------------------------------------------------------------------
|
|
54
54
|
@override
|
|
55
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
55
|
+
def GetDynamicArgDefinitions(self, _: str) -> dict[str, TypeDefinitionItemType]:
|
|
56
56
|
"""Get the definitions for the arguments to this requirement."""
|
|
57
57
|
return {
|
|
58
|
-
"
|
|
58
|
+
f"{self.name}": (
|
|
59
59
|
bool,
|
|
60
60
|
typer.Option(
|
|
61
61
|
default=False,
|
|
@@ -71,7 +71,7 @@ class Private(Requirement):
|
|
|
71
71
|
query_data: dict[str, Any],
|
|
72
72
|
requirement_args: dict[str, Any],
|
|
73
73
|
) -> Requirement.EvaluateImplResult:
|
|
74
|
-
expect_private = requirement_args.get("
|
|
74
|
+
expect_private = requirement_args.get("yes", False)
|
|
75
75
|
query_data["__expected_visibility"] = "private" if expect_private else "public"
|
|
76
76
|
|
|
77
77
|
result = query_data["standard"].get("private", None)
|
|
@@ -100,7 +100,7 @@ class Requirement(ABC):
|
|
|
100
100
|
|
|
101
101
|
# ----------------------------------------------------------------------
|
|
102
102
|
@extension
|
|
103
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
103
|
+
def GetDynamicArgDefinitions(self, argument_separator: str) -> dict[str, TypeDefinitionItemType]: # noqa: ARG002
|
|
104
104
|
"""Return information about dynamic arguments that the requirement can consume (often from the command line)."""
|
|
105
105
|
|
|
106
106
|
# No dynamic arguments by default
|
|
@@ -105,7 +105,7 @@ class MyRequirement(Requirement):
|
|
|
105
105
|
|
|
106
106
|
# ----------------------------------------------------------------------
|
|
107
107
|
@override
|
|
108
|
-
def GetDynamicArgDefinitions(self) -> dict[str, TypeDefinitionItemType]:
|
|
108
|
+
def GetDynamicArgDefinitions(self, _) -> dict[str, TypeDefinitionItemType]:
|
|
109
109
|
if not self._has_dynamic_args:
|
|
110
110
|
return {}
|
|
111
111
|
|