From b8898cfdf5e023e0a967a8343e39d3e272588575 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Sun, 20 Oct 2024 20:30:47 +0200 Subject: [PATCH 01/19] Ultralytics CLA Action --- cla/action.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 cla/action.yml diff --git a/cla/action.yml b/cla/action.yml new file mode 100644 index 000000000..e69de29bb From a892cae6b7b753474f685538b475dbc9eb5adabd Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Sun, 20 Oct 2024 20:31:11 +0200 Subject: [PATCH 02/19] Ultralytics CLA Action --- cla/action.yml | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/cla/action.yml b/cla/action.yml index e69de29bb..6c7eb48b8 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -0,0 +1,60 @@ +# Ultralytics Actions 🚀, AGPL-3.0 License https://ultralytics.com/license + +name: 'Ultralytics CLA' +description: 'Checks if contributors have signed the Ultralytics Contributor License Agreement' + +inputs: + github-token: + description: 'GitHub token' + required: true + organization: + description: 'GitHub organization name' + required: true + repository: + description: 'GitHub repository name' + required: true + branch: + description: 'Branch to store CLA signatures' + required: true + default: 'cla-signatures' + path-to-signatures: + description: 'Path to the JSON file containing CLA signatures' + required: true + default: 'signatures/version1/cla.json' + path-to-document: + description: 'URL to the CLA document' + required: true + default: 'https://docs.ultralytics.com/help/CLA' + allowlist: + description: 'Comma-separated list of users/bots to ignore' + required: false + default: 'dependabot[bot],github-actions,bot*' + pr-sign-comment: + description: 'Comment to trigger CLA signing' + required: true + default: 'I have read the CLA Document and I sign the CLA' + allsigned-prcomment: + description: 'Comment to post when all contributors have signed' + required: true + default: 'All Contributors have signed the CLA. ✅' + +runs: + using: 'composite' + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install ultralytics-action + shell: bash + + - name: Check CLA + run: ultralytics-actions-check-cla + shell: bash From 0632ac527c18a1aef942c46004b6e3e3506889a1 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Sun, 20 Oct 2024 18:31:34 +0000 Subject: [PATCH 03/19] Auto-format by https://ultralytics.com/actions --- cla/action.yml | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/cla/action.yml b/cla/action.yml index 6c7eb48b8..664d39e85 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -1,45 +1,45 @@ # Ultralytics Actions 🚀, AGPL-3.0 License https://ultralytics.com/license -name: 'Ultralytics CLA' -description: 'Checks if contributors have signed the Ultralytics Contributor License Agreement' +name: "Ultralytics CLA" +description: "Checks if contributors have signed the Ultralytics Contributor License Agreement" inputs: github-token: - description: 'GitHub token' + description: "GitHub token" required: true organization: - description: 'GitHub organization name' + description: "GitHub organization name" required: true repository: - description: 'GitHub repository name' + description: "GitHub repository name" required: true branch: - description: 'Branch to store CLA signatures' + description: "Branch to store CLA signatures" required: true - default: 'cla-signatures' + default: "cla-signatures" path-to-signatures: - description: 'Path to the JSON file containing CLA signatures' + description: "Path to the JSON file containing CLA signatures" required: true - default: 'signatures/version1/cla.json' + default: "signatures/version1/cla.json" path-to-document: - description: 'URL to the CLA document' + description: "URL to the CLA document" required: true - default: 'https://docs.ultralytics.com/help/CLA' + default: "https://docs.ultralytics.com/help/CLA" allowlist: - description: 'Comma-separated list of users/bots to ignore' + description: "Comma-separated list of users/bots to ignore" required: false - default: 'dependabot[bot],github-actions,bot*' + default: "dependabot[bot],github-actions,bot*" pr-sign-comment: - description: 'Comment to trigger CLA signing' + description: "Comment to trigger CLA signing" required: true - default: 'I have read the CLA Document and I sign the CLA' + default: "I have read the CLA Document and I sign the CLA" allsigned-prcomment: - description: 'Comment to post when all contributors have signed' + description: "Comment to post when all contributors have signed" required: true - default: 'All Contributors have signed the CLA. ✅' + default: "All Contributors have signed the CLA. ✅" runs: - using: 'composite' + using: "composite" steps: - name: Checkout code uses: actions/checkout@v3 @@ -47,7 +47,7 @@ runs: - name: Set up Python uses: actions/setup-python@v4 with: - python-version: '3.x' + python-version: "3.x" - name: Install dependencies run: | From 02b94d7e52caa8bdb625a46a1ec097121aea6c13 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 21 Oct 2024 18:58:58 +0200 Subject: [PATCH 04/19] Update action.yml --- cla/action.yml | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/cla/action.yml b/cla/action.yml index 664d39e85..d9e84c3a2 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -2,16 +2,12 @@ name: "Ultralytics CLA" description: "Checks if contributors have signed the Ultralytics Contributor License Agreement" - inputs: github-token: description: "GitHub token" required: true - organization: - description: "GitHub organization name" - required: true repository: - description: "GitHub repository name" + description: "GitHub repository name (including organization, e.g., 'org/repo')" required: true branch: description: "Branch to store CLA signatures" @@ -21,7 +17,7 @@ inputs: description: "Path to the JSON file containing CLA signatures" required: true default: "signatures/version1/cla.json" - path-to-document: + cla-document-url: description: "URL to the CLA document" required: true default: "https://docs.ultralytics.com/help/CLA" @@ -43,18 +39,27 @@ runs: steps: - name: Checkout code uses: actions/checkout@v3 - + - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - + - name: Install dependencies run: | python -m pip install --upgrade pip pip install ultralytics-action shell: bash - + - name: Check CLA + env: + GITHUB_TOKEN: ${{ inputs.github-token }} + REPOSITORY: ${{ inputs.repository }} + BRANCH: ${{ inputs.branch }} + PATH_TO_SIGNATURES: ${{ inputs.path-to-signatures }} + CLA_DOCUMENT_URL: ${{ inputs.cla-document-url }} + ALLOWLIST: ${{ inputs.allowlist }} + PR_SIGN_COMMENT: ${{ inputs.pr-sign-comment }} + ALLSIGNED_PRCOMMENT: ${{ inputs.allsigned-prcomment }} run: ultralytics-actions-check-cla shell: bash From 0c12b0fbba315c63bbb4f8733dc0e2d7834df1e8 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 16:59:19 +0000 Subject: [PATCH 05/19] Auto-format by https://ultralytics.com/actions --- cla/action.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cla/action.yml b/cla/action.yml index d9e84c3a2..ad28665a7 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -39,18 +39,18 @@ runs: steps: - name: Checkout code uses: actions/checkout@v3 - + - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - + - name: Install dependencies run: | python -m pip install --upgrade pip pip install ultralytics-action shell: bash - + - name: Check CLA env: GITHUB_TOKEN: ${{ inputs.github-token }} From e13f5b9c6af3b9fc5874f6c0226d414e65fc406c Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:06:32 +0200 Subject: [PATCH 06/19] Simplify Actions --- actions/check_cla.py | 21 +++++++++++++++++++++ cla/action.yml | 29 +++++++++++++---------------- 2 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 actions/check_cla.py diff --git a/actions/check_cla.py b/actions/check_cla.py new file mode 100644 index 000000000..ab9f216bd --- /dev/null +++ b/actions/check_cla.py @@ -0,0 +1,21 @@ +import os + +def main(): + print("RUNNING CHECK_CLA FUNCTION") + github_token = os.environ.get('GITHUB_TOKEN') + cla_repository = os.environ.get('CLA_REPOSITORY') + cla_branch = os.environ.get('CLA_BRANCH') + cla_signatures_path = os.environ.get('CLA_SIGNATURES_PATH') + cla_document_url = os.environ.get('CLA_DOCUMENT_URL') + allowlist = os.environ.get('ALLOWLIST', '').split(',') + sign_comment = os.environ.get('SIGN_COMMENT') + allsigned_comment = os.environ.get('ALLSIGNED_COMMENT') + + # Your CLA check logic here + # Note: You can extract the organization and repository name if needed: + # org, repo = cla_repository.split('/', 1) if '/' in cla_repository else ('', cla_repository) + + # ... rest of your CLA check logic ... + +if __name__ == "__main__": + main() diff --git a/cla/action.yml b/cla/action.yml index ad28665a7..14059c0c9 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -6,18 +6,18 @@ inputs: github-token: description: "GitHub token" required: true - repository: - description: "GitHub repository name (including organization, e.g., 'org/repo')" + cla_repository: + description: "GitHub repository name for storing CLA signatures (including organization, e.g., 'org/repo')" required: true - branch: + cla_branch: description: "Branch to store CLA signatures" required: true default: "cla-signatures" - path-to-signatures: + cla_signatures_path: description: "Path to the JSON file containing CLA signatures" required: true default: "signatures/version1/cla.json" - cla-document-url: + cla_document_url: description: "URL to the CLA document" required: true default: "https://docs.ultralytics.com/help/CLA" @@ -25,11 +25,11 @@ inputs: description: "Comma-separated list of users/bots to ignore" required: false default: "dependabot[bot],github-actions,bot*" - pr-sign-comment: + sign_comment: description: "Comment to trigger CLA signing" required: true default: "I have read the CLA Document and I sign the CLA" - allsigned-prcomment: + allsigned_comment: description: "Comment to post when all contributors have signed" required: true default: "All Contributors have signed the CLA. ✅" @@ -39,27 +39,24 @@ runs: steps: - name: Checkout code uses: actions/checkout@v3 - - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" - - name: Install dependencies run: | python -m pip install --upgrade pip pip install ultralytics-action shell: bash - - name: Check CLA env: GITHUB_TOKEN: ${{ inputs.github-token }} - REPOSITORY: ${{ inputs.repository }} - BRANCH: ${{ inputs.branch }} - PATH_TO_SIGNATURES: ${{ inputs.path-to-signatures }} - CLA_DOCUMENT_URL: ${{ inputs.cla-document-url }} + CLA_REPOSITORY: ${{ inputs.cla_repository }} + CLA_BRANCH: ${{ inputs.cla_branch }} + CLA_SIGNATURES_PATH: ${{ inputs.cla_signatures_path }} + CLA_DOCUMENT_URL: ${{ inputs.cla_document_url }} ALLOWLIST: ${{ inputs.allowlist }} - PR_SIGN_COMMENT: ${{ inputs.pr-sign-comment }} - ALLSIGNED_PRCOMMENT: ${{ inputs.allsigned-prcomment }} + SIGN_COMMENT: ${{ inputs.sign_comment }} + ALLSIGNED_COMMENT: ${{ inputs.allsigned_comment }} run: ultralytics-actions-check-cla shell: bash From 62d31c07976dd681f3206a225537f9c0b3b7fa58 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 17:06:59 +0000 Subject: [PATCH 07/19] Auto-format by https://ultralytics.com/actions --- actions/check_cla.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/actions/check_cla.py b/actions/check_cla.py index ab9f216bd..52547ada9 100644 --- a/actions/check_cla.py +++ b/actions/check_cla.py @@ -1,15 +1,16 @@ import os + def main(): print("RUNNING CHECK_CLA FUNCTION") - github_token = os.environ.get('GITHUB_TOKEN') - cla_repository = os.environ.get('CLA_REPOSITORY') - cla_branch = os.environ.get('CLA_BRANCH') - cla_signatures_path = os.environ.get('CLA_SIGNATURES_PATH') - cla_document_url = os.environ.get('CLA_DOCUMENT_URL') - allowlist = os.environ.get('ALLOWLIST', '').split(',') - sign_comment = os.environ.get('SIGN_COMMENT') - allsigned_comment = os.environ.get('ALLSIGNED_COMMENT') + os.environ.get("GITHUB_TOKEN") + os.environ.get("CLA_REPOSITORY") + os.environ.get("CLA_BRANCH") + os.environ.get("CLA_SIGNATURES_PATH") + os.environ.get("CLA_DOCUMENT_URL") + os.environ.get("ALLOWLIST", "").split(",") + os.environ.get("SIGN_COMMENT") + os.environ.get("ALLSIGNED_COMMENT") # Your CLA check logic here # Note: You can extract the organization and repository name if needed: @@ -17,5 +18,6 @@ def main(): # ... rest of your CLA check logic ... + if __name__ == "__main__": main() From 4e5b295c0b555323f760af8f91d8b2cdde90d028 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:13:51 +0200 Subject: [PATCH 08/19] Simplify Actions --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 17a419359..1d0a6eef6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -88,6 +88,7 @@ ultralytics-actions-summarize-pr = "actions.summarize_pr:main" ultralytics-actions-summarize-release = "actions.summarize_release:main" ultralytics-actions-update-markdown-code-blocks = "actions.update_markdown_code_blocks:main" ultralytics-actions-info = "actions.utils:ultralytics_actions_info" +ultralytics-actions-check-cla = "actions.check_cla:main" [tool.setuptools] packages = { find = { where = ["."], include = ["actions", "actions.*"] } } From c68104addd6e9ca9d0c9d37eca205b09595a1eb8 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:20:23 +0200 Subject: [PATCH 09/19] Simplify Actions --- cla/action.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cla/action.yml b/cla/action.yml index 14059c0c9..506745207 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -39,15 +39,18 @@ runs: steps: - name: Checkout code uses: actions/checkout@v3 + - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.x" + - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install ultralytics-action + pip install -q ultralytics-actions + ultralytics-actions-info shell: bash + - name: Check CLA env: GITHUB_TOKEN: ${{ inputs.github-token }} From 139519629a60f73e0cdf7fca1c340685ffeebf01 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:21:02 +0200 Subject: [PATCH 10/19] Simplify Actions --- cla/action.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/cla/action.yml b/cla/action.yml index 506745207..8e3a756bf 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -33,6 +33,13 @@ inputs: description: "Comment to post when all contributors have signed" required: true default: "All Contributors have signed the CLA. ✅" + openai_api_key: + description: "OpenAI API Key" + required: false + openai_model: + description: "OpenAI Model" + required: false + default: "gpt-4o" runs: using: "composite" From 5eb4caa470ad8bbaef5bb4605cfa601c8896bda5 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:21:45 +0200 Subject: [PATCH 11/19] Simplify Actions --- cla/action.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cla/action.yml b/cla/action.yml index 8e3a756bf..68e6653e9 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -68,5 +68,7 @@ runs: ALLOWLIST: ${{ inputs.allowlist }} SIGN_COMMENT: ${{ inputs.sign_comment }} ALLSIGNED_COMMENT: ${{ inputs.allsigned_comment }} + OPENAI_API_KEY: ${{ inputs.openai_api_key }} + OPENAI_MODEL: ${{ inputs.openai_model }} run: ultralytics-actions-check-cla shell: bash From dfb9b6064e07c8aacc8f3dc56895665bac708fcc Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Mon, 21 Oct 2024 19:27:00 +0200 Subject: [PATCH 12/19] Simplify Actions --- cla/action.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cla/action.yml b/cla/action.yml index 68e6653e9..e4c5b77b1 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -54,7 +54,9 @@ runs: - name: Install dependencies run: | - pip install -q ultralytics-actions + python -m pip install --upgrade pip wheel + pip install -q git+https://github.com/ultralytics/actions@cla-branch + # pip install -q ultralytics-actions ultralytics-actions-info shell: bash From 7705f588a03279ad4537e1823e63ce96f47c98f2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 21 Oct 2024 20:06:46 +0200 Subject: [PATCH 13/19] Update action.yml --- action.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/action.yml b/action.yml index fe0c8eec2..41bf72909 100644 --- a/action.yml +++ b/action.yml @@ -64,11 +64,13 @@ runs: # python -m pip install --upgrade pip wheel # pip install -q git+https://github.com/ultralytics/actions@main codespell tomli run: | - packages="ultralytics-actions" - if [ "${{ inputs.spelling }}" = "true" ]; then - packages="$packages codespell tomli" - fi - pip install -q $packages + # packages="ultralytics-actions" + # if [ "${{ inputs.spelling }}" = "true" ]; then + # packages="$packages codespell tomli" + # fi + # pip install -q $packages + python -m pip install --upgrade pip wheel + pip install -q git+https://github.com/ultralytics/actions@cla-branch codespell tomli ultralytics-actions-info shell: bash From 6fc2263b65f3b283ea808167143c10f74e44ca31 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 27 Oct 2024 18:18:01 +0100 Subject: [PATCH 14/19] Update action.yml --- cla/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cla/action.yml b/cla/action.yml index e4c5b77b1..b68fbbbcb 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -45,10 +45,10 @@ runs: using: "composite" steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: "3.x" From f5c49f7d5fa2287b65a60b406ba3a400a6042f02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2024 00:32:45 +0100 Subject: [PATCH 15/19] Update action.yml --- action.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/action.yml b/action.yml index ea4dd1edb..d643c5010 100644 --- a/action.yml +++ b/action.yml @@ -77,8 +77,6 @@ runs: # if [ "${{ inputs.spelling }}" = "true" ]; then # packages="$packages codespell tomli" # fi - # pip install -q $packages - # python -m pip install --upgrade pip wheel sudo env "PATH=$PATH" uv pip install git+https://github.com/ultralytics/actions@cla-branch codespell tomli --system ultralytics-actions-info shell: bash From deb279f7b699970d3e4085f355c73f1e6236887f Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Tue, 19 Nov 2024 09:07:53 +0000 Subject: [PATCH 16/19] Auto-format by https://ultralytics.com/actions --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 95ff85f04..ef4553e78 100644 --- a/action.yml +++ b/action.yml @@ -78,7 +78,7 @@ runs: if [ "${{ inputs.spelling }}" = "true" ]; then packages="$packages codespell tomli" fi - + # On macOS, don't use sudo as it can cause environment issues if [ "$(uname)" = "Darwin" ]; then pip install -q $packages From 4b352278cd3bffcf40ba0639cce4574366c9ea5c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 29 Apr 2025 19:22:12 +0200 Subject: [PATCH 17/19] Update check_cla.py Signed-off-by: Glenn Jocher --- actions/check_cla.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/actions/check_cla.py b/actions/check_cla.py index 52547ada9..6aae8587b 100644 --- a/actions/check_cla.py +++ b/actions/check_cla.py @@ -2,6 +2,8 @@ def main(): + """Check CLA on pull requests.""" + print("RUNNING CHECK_CLA FUNCTION") os.environ.get("GITHUB_TOKEN") os.environ.get("CLA_REPOSITORY") From de1180eb488aca39b382f54fd9100497e3544e94 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Tue, 29 Apr 2025 17:22:34 +0000 Subject: [PATCH 18/19] Auto-format by https://ultralytics.com/actions --- actions/check_cla.py | 1 - 1 file changed, 1 deletion(-) diff --git a/actions/check_cla.py b/actions/check_cla.py index 6aae8587b..85759fa11 100644 --- a/actions/check_cla.py +++ b/actions/check_cla.py @@ -3,7 +3,6 @@ def main(): """Check CLA on pull requests.""" - print("RUNNING CHECK_CLA FUNCTION") os.environ.get("GITHUB_TOKEN") os.environ.get("CLA_REPOSITORY") From 4f13f92e1fc5f4c5e1572b5c8335e440045d20f7 Mon Sep 17 00:00:00 2001 From: UltralyticsAssistant Date: Sun, 11 May 2025 00:44:28 +0000 Subject: [PATCH 19/19] Auto-format by https://ultralytics.com/actions --- actions/check_cla.py | 2 ++ cla/action.yml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/actions/check_cla.py b/actions/check_cla.py index 85759fa11..e4688b158 100644 --- a/actions/check_cla.py +++ b/actions/check_cla.py @@ -1,3 +1,5 @@ +# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license + import os diff --git a/cla/action.yml b/cla/action.yml index b68fbbbcb..d5399540a 100644 --- a/cla/action.yml +++ b/cla/action.yml @@ -1,4 +1,4 @@ -# Ultralytics Actions 🚀, AGPL-3.0 License https://ultralytics.com/license +# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license name: "Ultralytics CLA" description: "Checks if contributors have signed the Ultralytics Contributor License Agreement"