RepoAuditor 0.3.1__tar.gz → 0.4.0__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 (208) hide show
  1. {repoauditor-0.3.1 → repoauditor-0.4.0}/PKG-INFO +1 -1
  2. {repoauditor-0.3.1 → repoauditor-0.4.0}/pyproject.toml +1 -0
  3. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/CommunityStandardsQuery.py +23 -18
  4. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHubPlugin.py +1 -1
  5. repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftware/Module.py +26 -0
  6. repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftware/Requirements/Citation.py +63 -0
  7. repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftware/ScientificSoftwareQuery.py +24 -0
  8. repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftwarePlugin.py +20 -0
  9. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Query.py +3 -2
  10. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/__init__.py +1 -1
  11. repoauditor-0.4.0/src/RepoAuditor/py.typed +0 -0
  12. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/CommunityStandards/CommunityStandardsQuery_UnitTest.py +7 -10
  13. repoauditor-0.4.0/tests/Plugins/ScientificSoftware/ScientificSoftwareQuery_UnitTest.py +16 -0
  14. repoauditor-0.4.0/tests/Plugins/ScientificSoftware_EndToEndTest.py +35 -0
  15. repoauditor-0.4.0/tests/Plugins/__snapshots__/ScientificSoftware_EndToEndTest.ambr +65 -0
  16. repoauditor-0.4.0/tests/__init__.py +0 -0
  17. {repoauditor-0.3.1 → repoauditor-0.4.0}/.copier-answers.yml +0 -0
  18. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/CODEOWNERS +0 -0
  19. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  21. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/ISSUE_TEMPLATE/custom.md +0 -0
  22. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  23. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/actions/release_impl/action.yml +0 -0
  24. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/pull_request_template.md +0 -0
  25. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/release_sources.yaml +0 -0
  26. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/workflows/CICD.yml +0 -0
  27. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/workflows/CICD_impl.yml +0 -0
  28. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/workflows/EndToEnd.yml +0 -0
  29. {repoauditor-0.3.1 → repoauditor-0.4.0}/.github/workflows/codeql.yml +0 -0
  30. {repoauditor-0.3.1 → repoauditor-0.4.0}/.gitignore +0 -0
  31. {repoauditor-0.3.1 → repoauditor-0.4.0}/.pre-commit-config.yaml +0 -0
  32. {repoauditor-0.3.1 → repoauditor-0.4.0}/.python-version +0 -0
  33. {repoauditor-0.3.1 → repoauditor-0.4.0}/CODE_OF_CONDUCT.md +0 -0
  34. {repoauditor-0.3.1 → repoauditor-0.4.0}/GOVERNANCE.md +0 -0
  35. {repoauditor-0.3.1 → repoauditor-0.4.0}/LICENSE +0 -0
  36. {repoauditor-0.3.1 → repoauditor-0.4.0}/MAINTAINERS.md +0 -0
  37. {repoauditor-0.3.1 → repoauditor-0.4.0}/README.md +0 -0
  38. {repoauditor-0.3.1 → repoauditor-0.4.0}/SECURITY.md +0 -0
  39. {repoauditor-0.3.1 → repoauditor-0.4.0}/default_config.yaml +0 -0
  40. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/CONTRIBUTING.md +0 -0
  41. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/DEVELOPMENT.md +0 -0
  42. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/PAT.md +0 -0
  43. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/config_file.md +0 -0
  44. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/index.md +0 -0
  45. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/troubleshooting.md +0 -0
  46. {repoauditor-0.3.1 → repoauditor-0.4.0}/docs/usage.md +0 -0
  47. {repoauditor-0.3.1 → repoauditor-0.4.0}/minisign_key.pub +0 -0
  48. {repoauditor-0.3.1 → repoauditor-0.4.0}/mkdocs.yml +0 -0
  49. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/AutoGitSemVer.yaml +0 -0
  50. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/CommandLineProcessor.py +0 -0
  51. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Display.py +0 -0
  52. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/EntryPoint.py +0 -0
  53. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/ExecuteModules.py +0 -0
  54. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Impl/ParallelSequentialProcessor.py +0 -0
  55. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Impl/__init__.py +0 -0
  56. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Module.py +0 -0
  57. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugin.py +0 -0
  58. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Impl/ExistsRequirementImpl.py +0 -0
  59. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Impl/__init__.py +0 -0
  60. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Module.py +0 -0
  61. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOfConduct.py +0 -0
  62. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/CodeOwners.py +0 -0
  63. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/Contributing.py +0 -0
  64. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/IssueTemplates.py +0 -0
  65. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/LicenseFile.py +0 -0
  66. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/PullRequestTemplates.py +0 -0
  67. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/ReadMe.py +0 -0
  68. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/SecurityPolicy.py +0 -0
  69. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/Requirements/__init__.py +0 -0
  70. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandards/__init__.py +0 -0
  71. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/CommunityStandardsPlugin.py +0 -0
  72. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionQuery.py +0 -0
  73. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowDeletions.py +0 -0
  74. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/AllowMainlineForcePushes.py +0 -0
  75. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals.py +0 -0
  76. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/DoNotAllowBypassSettings.py +0 -0
  77. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/EnsureStatusChecks.py +0 -0
  78. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicEnableRequirementImpl.py +0 -0
  79. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/ClassicValueRequirementImpl.py +0 -0
  80. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/Impl/__init__.py +0 -0
  81. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush.py +0 -0
  82. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireApprovals.py +0 -0
  83. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireCodeOwnerReview.py +0 -0
  84. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireConversationResolution.py +0 -0
  85. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireLinearHistory.py +0 -0
  86. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequirePullRequests.py +0 -0
  87. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireSignedCommits.py +0 -0
  88. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireStatusChecksToPass.py +0 -0
  89. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/RequireUpToDateBranches.py +0 -0
  90. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/ClassicBranchProtectionRequirements/__init__.py +0 -0
  91. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/DefaultBranchQuery.py +0 -0
  92. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/Protected.py +0 -0
  93. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/DefaultBranchRequirements/__init__.py +0 -0
  94. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Impl/Common.py +0 -0
  95. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRequirementImpl.py +0 -0
  96. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Impl/EnableRulesetRequirementImpl.py +0 -0
  97. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Impl/ValueRequirementImpl.py +0 -0
  98. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Impl/__init__.py +0 -0
  99. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/Module.py +0 -0
  100. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetQuery.py +0 -0
  101. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/AllowMainlineForcePushes.py +0 -0
  102. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/DismissStalePullRequestApprovals.py +0 -0
  103. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/EnsureStatusChecks.py +0 -0
  104. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireApprovalMostRecentPush.py +0 -0
  105. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireApprovals.py +0 -0
  106. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireCodeOwnerReview.py +0 -0
  107. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireCodeScanningResults.py +0 -0
  108. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireConversationResolution.py +0 -0
  109. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireLinearHistory.py +0 -0
  110. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequirePullRequests.py +0 -0
  111. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSignedCommits.py +0 -0
  112. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireStatusChecksToPass.py +0 -0
  113. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireSuccessfulDeployments.py +0 -0
  114. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RequireUpToDateBranches.py +0 -0
  115. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RestrictCreations.py +0 -0
  116. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RestrictDeletions.py +0 -0
  117. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/RestrictUpdates.py +0 -0
  118. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/RulesetRequirements/__init__.py +0 -0
  119. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardQuery.py +0 -0
  120. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/AutoMerge.py +0 -0
  121. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DefaultBranch.py +0 -0
  122. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DeleteHeadBranches.py +0 -0
  123. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/DependabotSecurityUpdates.py +0 -0
  124. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Description.py +0 -0
  125. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardEnableRequirementImpl.py +0 -0
  126. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/StandardValueRequirementImpl.py +0 -0
  127. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Impl/__init__.py +0 -0
  128. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/License.py +0 -0
  129. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommit.py +0 -0
  130. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/MergeCommitMessage.py +0 -0
  131. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/Private.py +0 -0
  132. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/RebaseMergeCommit.py +0 -0
  133. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanning.py +0 -0
  134. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SecretScanningPushProtection.py +0 -0
  135. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashCommitMerge.py +0 -0
  136. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SquashMergeCommitMessage.py +0 -0
  137. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SuggestUpdatingPullRequestBranches.py +0 -0
  138. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportDiscussions.py +0 -0
  139. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportIssues.py +0 -0
  140. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportProjects.py +0 -0
  141. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/SupportWikis.py +0 -0
  142. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/TemplateRepository.py +0 -0
  143. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/WebCommitSignoff.py +0 -0
  144. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/StandardRequirements/__init__.py +0 -0
  145. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHub/__init__.py +0 -0
  146. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHubBase/Module.py +0 -0
  147. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Plugins/GitHubBase/__init__.py +0 -0
  148. {repoauditor-0.3.1/src/RepoAuditor/Plugins → repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftware/Requirements}/__init__.py +0 -0
  149. {repoauditor-0.3.1/tests → repoauditor-0.4.0/src/RepoAuditor/Plugins/ScientificSoftware}/__init__.py +0 -0
  150. /repoauditor-0.3.1/src/RepoAuditor/py.typed → /repoauditor-0.4.0/src/RepoAuditor/Plugins/__init__.py +0 -0
  151. {repoauditor-0.3.1 → repoauditor-0.4.0}/src/RepoAuditor/Requirement.py +0 -0
  152. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/CommandLineProcessor_UnitTest.py +0 -0
  153. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/EntryPoint_UnitTest.py +0 -0
  154. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/ExecuteModules_UnitTest.py +0 -0
  155. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Module_UnitTest.py +0 -0
  156. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugin_UnitTest.py +0 -0
  157. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/CommunityStandards/CommunityStandards_UnitTest.py +0 -0
  158. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/CommunityStandards/ExistsRequirementImpl_UnitTest.py +0 -0
  159. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/CommunityStandards_EndToEndTest.py +0 -0
  160. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubEnterprise_EndToEndTest.py +0 -0
  161. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionQuery_UnitTest.py +0 -0
  162. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/DismissStalePullRequestApprovals_UnitTest.py +0 -0
  163. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/EnsureStatusChecks_UnitTest.py +0 -0
  164. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovalMostRecentPush_UnitTest.py +0 -0
  165. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireApprovals_UnitTest.py +0 -0
  166. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireCodeOwnerReview_UnitTest.py +0 -0
  167. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicBranchProtectionRequirements/RequireUpToDateBranches_UnitTest.py +0 -0
  168. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ClassicValueRequirementImpl_UnitTest.py +0 -0
  169. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/DefaultBranchQuery_UnitTest.py +0 -0
  170. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/DefaultBranchRequirements/Protected_UnitTest.py +0 -0
  171. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/EnableRulesetRequirementImpl_UnitTest.py +0 -0
  172. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/GitHubModule_UnitTest.py +0 -0
  173. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/GitHubSession_UnitTest.py +0 -0
  174. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/AllowMainlineForcePushesRule_UnitTest.py +0 -0
  175. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/DismissStalePullRequestApprovalsRule_UnitTest.py +0 -0
  176. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/EnsureStatusChecksRule_UnitTest.py +0 -0
  177. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireApprovalMostRecentPushRule_UnitTest.py +0 -0
  178. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireApprovalsRule_UnitTest.py +0 -0
  179. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireCodeOwnerReviewRule_UnitTest.py +0 -0
  180. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireConversationResolutionRule_UnitTest.py +0 -0
  181. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequirePullRequests_UnitTest.py +0 -0
  182. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireSignedCommits_UnitTest.py +0 -0
  183. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireStatusChecksToPassRule_UnitTest.py +0 -0
  184. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/RequireUpToDateBranchesRule_UnitTest.py +0 -0
  185. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulesetRequirements/__init__.py +0 -0
  186. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/RulsesetQuery_UnitTest.py +0 -0
  187. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardQuery_UnitTest.py +0 -0
  188. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/DependabotSecurityUpdates_UnitTest.py +0 -0
  189. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/Description_UnitTest.py +0 -0
  190. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/License_UnitTest.py +0 -0
  191. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/MergeCommitMessage_UnitTest.py +0 -0
  192. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/Private_UnitTest.py +0 -0
  193. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/SecretScanningPushProtection_UnitTest.py +0 -0
  194. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/SecretScanning_UnitTest.py +0 -0
  195. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/StandardRequirements/SquashMergeCommitMessage_UnitTest.py +0 -0
  196. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/ValueRequrementImpl_UnitTest.py +0 -0
  197. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHubModule/fixtures.py +0 -0
  198. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/GitHub_EndToEndTest.py +0 -0
  199. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/__snapshots__/CommunityStandards_EndToEndTest.ambr +0 -0
  200. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/__snapshots__/GitHubEnterprise_EndToEndTest.ambr +0 -0
  201. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/__snapshots__/GitHub_EndToEndTest.ambr +0 -0
  202. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/conftest.py +0 -0
  203. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Plugins/utilities.py +0 -0
  204. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Query_UnitTest.py +0 -0
  205. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/Requirement_UnitTest.py +0 -0
  206. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/__snapshots__/ExecuteModules_UnitTest.ambr +0 -0
  207. {repoauditor-0.3.1 → repoauditor-0.4.0}/tests/conftest.py +0 -0
  208. {repoauditor-0.3.1 → repoauditor-0.4.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: RepoAuditor
3
- Version: 0.3.1
3
+ Version: 0.4.0
4
4
  Summary: Add your description here
5
5
  Project-URL: Homepage, https://github.com/gt-sse-center/RepoAuditor
6
6
  Project-URL: Documentation, https://github.com/gt-sse-center/RepoAuditor
@@ -41,6 +41,7 @@ repoauditor = "RepoAuditor:EntryPoint.app"
41
41
  [project.entry-points.RepoAuditor]
42
42
  GitHubPlugin = "RepoAuditor.Plugins.GitHubPlugin"
43
43
  CommunityStandardsPlugin = "RepoAuditor.Plugins.CommunityStandardsPlugin"
44
+ ScientificSoftwarePlugin = "RepoAuditor.Plugins.ScientificSoftwarePlugin"
44
45
 
45
46
  [build-system]
46
47
  requires = ["hatchling"]
@@ -23,24 +23,8 @@ from RepoAuditor.Plugins.CommunityStandards.Requirements.SecurityPolicy import S
23
23
  from RepoAuditor.Query import ExecutionStyle, Query
24
24
 
25
25
 
26
- class CommunityStandardsQuery(Query):
27
- """Query with requirements that check for repository Community Standards files."""
28
-
29
- def __init__(self) -> None:
30
- super().__init__(
31
- "CommunityStandardsQuery",
32
- ExecutionStyle.Parallel,
33
- [
34
- ReadMe(),
35
- CodeOfConduct(),
36
- Contributing(),
37
- LicenseFile(),
38
- SecurityPolicy(),
39
- IssueTemplates(),
40
- PullRequestTemplate(),
41
- CodeOwners(),
42
- ],
43
- )
26
+ class CloneRepositoryMixin:
27
+ """A mixin class to clone a repository to a temporary directory."""
44
28
 
45
29
  # ----------------------------------------------------------------------
46
30
  @override
@@ -84,9 +68,30 @@ class CommunityStandardsQuery(Query):
84
68
 
85
69
  return module_data
86
70
 
71
+ # ----------------------------------------------------------------------
87
72
  @override
88
73
  def Cleanup(self, module_data: dict[str, Any]) -> None:
89
74
  """Clean up the cloned repository."""
90
75
  repo_dir = module_data["repo_dir"]
91
76
  repo_dir.cleanup()
92
77
  del module_data
78
+
79
+
80
+ class CommunityStandardsQuery(CloneRepositoryMixin, Query):
81
+ """Query with requirements that check for repository Community Standards files."""
82
+
83
+ def __init__(self) -> None:
84
+ super().__init__(
85
+ "CommunityStandardsQuery",
86
+ ExecutionStyle.Parallel,
87
+ [
88
+ ReadMe(),
89
+ CodeOfConduct(),
90
+ Contributing(),
91
+ LicenseFile(),
92
+ SecurityPolicy(),
93
+ IssueTemplates(),
94
+ PullRequestTemplate(),
95
+ CodeOwners(),
96
+ ],
97
+ )
@@ -14,7 +14,7 @@ from RepoAuditor.Plugins.GitHub.Module import GitHubModule
14
14
 
15
15
 
16
16
  # ----------------------------------------------------------------------
17
- @pluggy.HookimplMarker(APP_NAME)
17
+ @pluggy.HookimplMarker(APP_NAME)(tryfirst=True)
18
18
  def GetModule() -> Module:
19
19
  """Return GitHub Module."""
20
20
  return GitHubModule()
@@ -0,0 +1,26 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Contains the ScientificSoftwareModule object."""
8
+
9
+ from RepoAuditor.Module import ExecutionStyle
10
+ from RepoAuditor.Plugins.GitHubBase.Module import GitHubBaseModule
11
+ from RepoAuditor.Plugins.ScientificSoftware.ScientificSoftwareQuery import ScientificSoftwareQuery
12
+
13
+
14
+ class ScientificSoftwareModule(GitHubBaseModule):
15
+ """Module that validates existence of repository files for Scientific Software."""
16
+
17
+ def __init__(self) -> None:
18
+ super().__init__(
19
+ "ScientificSoftware",
20
+ "Validates existence of repository files for Scientific Software.",
21
+ ExecutionStyle.Parallel,
22
+ [
23
+ ScientificSoftwareQuery(),
24
+ ],
25
+ requires_explicit_include=True,
26
+ )
@@ -0,0 +1,63 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Contains the Citation requirement."""
8
+
9
+ import textwrap
10
+
11
+ from RepoAuditor.Plugins.CommunityStandards.Impl.ExistsRequirementImpl import ExistsRequirementImpl
12
+
13
+
14
+ class Citation(ExistsRequirementImpl):
15
+ """Validates that a CITATION file is present which is used to make the repository citable.
16
+
17
+ Details of how GitHub looks for citation files can be found here: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files
18
+ """
19
+
20
+ def __init__(self) -> None:
21
+ super().__init__(
22
+ "Citation",
23
+ filename="CITATION",
24
+ possible_locations=[
25
+ # GitHub requires the citation file be in the root directory
26
+ "CITATION.cff",
27
+ "CITATION",
28
+ "CITATIONS",
29
+ "CITATION.bib",
30
+ "CITATIONS.bib",
31
+ "CITATION.md",
32
+ "CITATIONS.md",
33
+ "citation.cff",
34
+ "citation",
35
+ "citations",
36
+ "citation.bib",
37
+ "citations.bib",
38
+ "citation.md",
39
+ "citations.md",
40
+ # R packages are located in the `inst` directory
41
+ "inst/CITATION",
42
+ ],
43
+ resolution=textwrap.dedent(
44
+ """\
45
+ 1) Create a CITATION/CITATIONS file in in the root directory.
46
+
47
+ 2) It can have any of the following extensions:
48
+ - [blank] e.g. `CITATION`
49
+ - CITATION.cff
50
+ - CITATION.md
51
+ - CITATION.bib
52
+ """
53
+ ),
54
+ rationale=textwrap.dedent(
55
+ """\
56
+ A citation file helps users correctly cite your software.
57
+
58
+ For more details, please see
59
+ https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files
60
+ """
61
+ ),
62
+ dynamic_arg_name="unrequired",
63
+ )
@@ -0,0 +1,24 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Contains the ScientificSoftwareQuery object."""
8
+
9
+ from RepoAuditor.Plugins.CommunityStandards.CommunityStandardsQuery import CloneRepositoryMixin
10
+ from RepoAuditor.Plugins.ScientificSoftware.Requirements.Citation import Citation
11
+ from RepoAuditor.Query import ExecutionStyle, Query
12
+
13
+
14
+ class ScientificSoftwareQuery(CloneRepositoryMixin, Query):
15
+ """Query with requirements that check the repository for Scientific Software specific files."""
16
+
17
+ def __init__(self) -> None:
18
+ super().__init__(
19
+ "ScientificSoftwareQuery",
20
+ ExecutionStyle.Parallel,
21
+ [
22
+ Citation(),
23
+ ],
24
+ )
@@ -0,0 +1,20 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Contains Plugin functionality."""
8
+
9
+ import pluggy
10
+
11
+ from RepoAuditor import APP_NAME
12
+ from RepoAuditor.Module import Module
13
+ from RepoAuditor.Plugins.ScientificSoftware.Module import ScientificSoftwareModule
14
+
15
+
16
+ # ----------------------------------------------------------------------
17
+ @pluggy.HookimplMarker(APP_NAME)
18
+ def GetModule() -> Module:
19
+ """Return Scientific Software Module."""
20
+ return ScientificSoftwareModule()
@@ -8,6 +8,7 @@
8
8
 
9
9
  import threading
10
10
  from abc import ABC, abstractmethod
11
+ from collections.abc import Sequence
11
12
  from dataclasses import dataclass
12
13
  from typing import Any, Optional, Protocol
13
14
 
@@ -53,7 +54,7 @@ class Query(ABC):
53
54
  self,
54
55
  name: str,
55
56
  style: ExecutionStyle,
56
- requirements: list[Requirement],
57
+ requirements: Sequence[Requirement],
57
58
  ) -> None:
58
59
  self.name = name
59
60
  self.style = style
@@ -75,7 +76,7 @@ class Query(ABC):
75
76
  status_func: OnStatusFunc,
76
77
  *,
77
78
  max_num_threads: Optional[int] = None,
78
- ) -> list["Query.EvaluateInfo"]:
79
+ ) -> Sequence["Query.EvaluateInfo"]:
79
80
  """Evaluate the Query given the query data and the data from the requirements."""
80
81
  status_info = StatusInfo()
81
82
  status_info_lock = threading.Lock()
@@ -2,4 +2,4 @@ APP_NAME = "RepoAuditor"
2
2
 
3
3
  # Note that the default value below will be used until the value
4
4
  # here is explicitly updated by the Continuous Integration system.
5
- __version__ = "0.3.1"
5
+ __version__ = "0.4.0"
File without changes
@@ -36,6 +36,8 @@ def patch_temp_directory(monkeypatch):
36
36
  class TestCommunityStandardsQuery:
37
37
  """Tests for CommunityStandardsQuery class."""
38
38
 
39
+ query = CommunityStandardsQuery()
40
+
39
41
  def test_GetData(self, module_data, monkeypatch):
40
42
  """Test the GetData method."""
41
43
  monkeypatch.setattr(
@@ -53,8 +55,7 @@ class TestCommunityStandardsQuery:
53
55
  mock_clone_from,
54
56
  )
55
57
 
56
- query = CommunityStandardsQuery()
57
- query_data = query.GetData(module_data)
58
+ query_data = self.query.GetData(module_data)
58
59
 
59
60
  assert query_data["repo_dir"].name == "test_temp_directory"
60
61
 
@@ -77,8 +78,7 @@ class TestCommunityStandardsQuery:
77
78
 
78
79
  monkeypatch.setattr(Repo, "clone_from", mock_clone_from)
79
80
 
80
- query = CommunityStandardsQuery()
81
- _ = query.GetData(module_data)
81
+ _ = self.query.GetData(module_data)
82
82
 
83
83
  def test_GetData_does_not_add_pat(self, module_data, monkeypatch):
84
84
  """Test the GetData method preserves the URL when no PAT is provided"""
@@ -97,8 +97,7 @@ class TestCommunityStandardsQuery:
97
97
 
98
98
  monkeypatch.setattr(Repo, "clone_from", mock_clone_from)
99
99
 
100
- query = CommunityStandardsQuery()
101
- _ = query.GetData(module_data)
100
+ _ = self.query.GetData(module_data)
102
101
 
103
102
  def test_GetData_handles_gitpython_errors(self, module_data, monkeypatch):
104
103
  """Test the GetData method handles errors raised by the gitpyhon module"""
@@ -115,15 +114,13 @@ class TestCommunityStandardsQuery:
115
114
 
116
115
  monkeypatch.setattr(Repo, "clone_from", mock_clone_from)
117
116
 
118
- query = CommunityStandardsQuery()
119
117
  with pytest.raises(RuntimeError) as e_info:
120
- _ = query.GetData(module_data)
118
+ _ = self.query.GetData(module_data)
121
119
  assert gitpython_error_msg in str(e_info)
122
120
 
123
121
  def test_Cleanup(self, module_data):
124
122
  """Test the Cleanup method."""
125
- query = CommunityStandardsQuery()
126
123
  module_data["repo_dir"] = MockTemporaryDirectory()
127
- result = query.Cleanup(module_data)
124
+ result = self.query.Cleanup(module_data)
128
125
 
129
126
  assert result is None
@@ -0,0 +1,16 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """Unit tests for ScientificSoftwareQuery.py"""
8
+
9
+ from RepoAuditor.Plugins.ScientificSoftware.ScientificSoftwareQuery import ScientificSoftwareQuery
10
+ from CommunityStandards.CommunityStandardsQuery_UnitTest import TestCommunityStandardsQuery
11
+
12
+
13
+ class TestScientificSoftwareQuery(TestCommunityStandardsQuery):
14
+ """Tests for ScientificSoftwareQuery class."""
15
+
16
+ query = ScientificSoftwareQuery()
@@ -0,0 +1,35 @@
1
+ # -------------------------------------------------------------------------------
2
+ # |
3
+ # | Copyright (c) 2024 Scientific Software Engineering Center at Georgia Tech
4
+ # | Distributed under the MIT License.
5
+ # |
6
+ # -------------------------------------------------------------------------------
7
+ """End-to-end tests for the ScientificSoftware plugin."""
8
+
9
+ import pytest
10
+ from dbrownell_Common.TestHelpers.StreamTestHelpers import (
11
+ InitializeStreamCapabilities,
12
+ )
13
+ from typer.testing import CliRunner
14
+ from utilities import ScrubDurationGithuburlAndSpaces
15
+
16
+ from RepoAuditor.EntryPoint import app
17
+
18
+ # ----------------------------------------------------------------------
19
+ pytest.fixture(InitializeStreamCapabilities(), scope="session", autouse=True)
20
+
21
+
22
+ # ----------------------------------------------------------------------
23
+ class TestScientificSoftware:
24
+ """End-to-end tests for files in a GitHub repository which implements scientific software."""
25
+
26
+ # ----------------------------------------------------------------------
27
+ def test_NoCitation(self, pat_args, snapshot):
28
+ """Test if no CITATION file exists in the repository."""
29
+ result = CliRunner().invoke(
30
+ app,
31
+ pat_args,
32
+ )
33
+
34
+ assert result.exit_code == -1, result.output
35
+ assert ScrubDurationGithuburlAndSpaces(result.stdout) == snapshot
@@ -0,0 +1,65 @@
1
+ # serializer version: 1
2
+ # name: TestScientificSoftware.test_NoCitation
3
+ '''
4
+ Processing 1 module...
5
+ Processing 'ScientificSoftware' (1 of 1)...
6
+
7
+
8
+
9
+
10
+ DONE! (-1, <scrubbed duration>)
11
+ DONE! (-1, <scrubbed duration>)
12
+
13
+
14
+ ╭───────────────────────────────────────────────── ScientificSoftware ─────────────────────────────────────────────────╮
15
+ │ │
16
+ │ Validates existence of repository files for Scientific Software. │
17
+ │ │
18
+ │ │
19
+ │ Successful: 0 (0.00%) │
20
+ │ Warnings: 0 (0.00%) │
21
+ │ Errors: 1 (100.00%) │
22
+ │ Skipped: 0 (0.00%) │
23
+ │ │
24
+ │ ╭─ [Error] Citation ───────────────────────────────────────────────────────────────────────────────────────────────╮ │
25
+ │ │ │ │
26
+ │ │ Validates that CITATION file exists. │ │
27
+ │ │ │ │
28
+ │ │ ERROR: No CITATION file found. │ │
29
+ │ │ │ │
30
+ │ │ Resolution │ │
31
+ │ │ ---------- │ │
32
+ │ │ 1) Create a CITATION/CITATIONS file in in the root directory. │ │
33
+ │ │ │ │
34
+ │ │ 2) It can have any of the following extensions: │ │
35
+ │ │ - e.g. `CITATION` │ │
36
+ │ │ - CITATION.cff │ │
37
+ │ │ - CITATION.md │ │
38
+ │ │ - CITATION.bib │ │
39
+ │ │ │ │
40
+ │ │ Rationale │ │
41
+ │ │ --------- │ │
42
+ │ │ A citation file helps users correctly cite your software. │ │
43
+ │ │ │ │
44
+ │ │ For more details, please see │ │
45
+ │ │ https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repos │ │
46
+ │ │ itory/about-citation-files │ │
47
+ │ │ │ │
48
+ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
49
+ │ ╭─ Metrics ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
50
+ │ │ │ │
51
+ │ │ │ │
52
+ │ │ Successful: 0 (0.00%) │ │
53
+ │ │ Warnings: 0 (0.00%) │ │
54
+ │ │ Errors: 1 (100.00%) │ │
55
+ │ │ Skipped: 0 (0.00%) │ │
56
+ │ │ │ │
57
+ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
58
+ │ │
59
+ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
60
+
61
+ Results: DONE! (-1, <scrubbed duration>)
62
+
63
+
64
+ '''
65
+ # ---
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes