pull/388/head
Wyatt Stanke 11 months ago
parent 1aebbe0777
commit faedd6b858
No known key found for this signature in database
GPG Key ID: CE6BA5FFF135536D

@ -1,6 +1,5 @@
--- ---
# These are supported funding model platforms # These are supported funding model platforms
github: [kyegomez] github: [kyegomez]
# patreon: # Replace with a single Patreon username # patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username # open_collective: # Replace with a single Open Collective username

60
.github/action.yml vendored

@ -1,37 +1,33 @@
---
name: "Init Environment" name: "Init Environment"
description: "Initialize environment for tests" description: "Initialize environment for tests"
runs: runs:
using: "composite" using: "composite"
steps: steps:
- name: Checkout actions - name: Checkout actions
uses: actions/checkout@v3 uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4
uses: actions/setup-python@v4 with:
with: python-version: ${{ matrix.python-version }}
python-version: ${{ matrix.python-version }} - name: Install and configure Poetry
uses: snok/install-poetry@v1
- name: Install and configure Poetry with:
uses: snok/install-poetry@v1 virtualenvs-create: true
with: virtualenvs-in-project: true
virtualenvs-create: true installer-parallel: true
virtualenvs-in-project: true - name: Load cached venv
installer-parallel: true id: cached-poetry-dependencies
uses: actions/cache@v3
- name: Load cached venv with:
id: cached-poetry-dependencies path: .venv
uses: actions/cache@v3 key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
with: - name: Install dependencies
path: .venv if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }} run: poetry install --no-interaction --no-root --with test --with dev --all-extras
shell: bash
- name: Install dependencies - name: Activate venv
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' run: |
run: poetry install --no-interaction --no-root --with test --with dev --all-extras source .venv/bin/activate
shell: bash echo PATH=$PATH >> $GITHUB_ENV
shell: bash
- name: Activate venv
run: |
source .venv/bin/activate
echo PATH=$PATH >> $GITHUB_ENV
shell: bash

@ -1,13 +1,11 @@
--- ---
# https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/configuration-options-for-dependency-updates # https://docs.github.com/en/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/configuration-options-for-dependency-updates
version: 2 version: 2
updates: updates:
- package-ecosystem: "github-actions" - package-ecosystem: "github-actions"
directory: "/" directory: "/"
schedule: schedule:
interval: "weekly" interval: "weekly"
- package-ecosystem: "pip" - package-ecosystem: "pip"
directory: "/" directory: "/"
schedule: schedule:

@ -4,10 +4,8 @@
# Add 'label1' to any changes within 'example' folder or any subfolders # Add 'label1' to any changes within 'example' folder or any subfolders
example_change: example_change:
- example/** - example/**
# Add 'label2' to any file changes within 'example2' folder # Add 'label2' to any file changes within 'example2' folder
example2_change: example2/* example2_change: example2/*
# Add label3 to any change to .txt files within the entire repository. # Add label3 to any change to .txt files within the entire repository.
# Quotation marks are required for the leading asterisk # Quotation marks are required for the leading asterisk
text_files: text_files:

@ -1,5 +1,5 @@
---
name: release name: release
on: on:
pull_request: pull_request:
types: types:
@ -8,15 +8,13 @@ on:
- master - master
paths: paths:
- 'pyproject.toml' - 'pyproject.toml'
env: env:
POETRY_VERSION: "1.4.2" POETRY_VERSION: "1.4.2"
jobs: jobs:
if_release: if_release:
if: | if: |
${{ github.event.pull_request.merged == true }} ${{ github.event.pull_request.merged == true }}
&& ${{ contains(github.event.pull_request.labels.*.name, 'release') }} && ${{ contains(github.event.pull_request.labels.*.name, 'release') }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -45,5 +43,5 @@ jobs:
- name: Publish to PyPI - name: Publish to PyPI
env: env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }} POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }}
run: | run: |-
poetry publish poetry publish

@ -1,3 +1,4 @@
---
# This workflow uses actions that are not certified by GitHub. # This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by # They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support # separate terms of service, privacy policy, and support
@ -12,19 +13,16 @@
# https://github.com/codacy/codacy-analysis-cli. # https://github.com/codacy/codacy-analysis-cli.
name: Codacy Security Scan name: Codacy Security Scan
on: on:
push: push:
branches: [ "master" ] branches: ["master"]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ "master" ] branches: ["master"]
schedule: schedule:
- cron: '18 23 * * 4' - cron: '18 23 * * 4'
permissions: permissions:
contents: read contents: read
jobs: jobs:
codacy-security-scan: codacy-security-scan:
permissions: permissions:
@ -37,7 +35,6 @@ jobs:
# Checkout the repository to the GitHub Actions runner # Checkout the repository to the GitHub Actions runner
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
- name: Run Codacy Analysis CLI - name: Run Codacy Analysis CLI
uses: codacy/codacy-analysis-cli-action@33d455949345bddfdb845fba76b57b70cc83754b uses: codacy/codacy-analysis-cli-action@33d455949345bddfdb845fba76b57b70cc83754b
@ -53,7 +50,6 @@ jobs:
# Force 0 exit code to allow SARIF file generation # Force 0 exit code to allow SARIF file generation
# This will handover control about PR rejection to the GitHub side # This will handover control about PR rejection to the GitHub side
max-allowed-issues: 2147483647 max-allowed-issues: 2147483647
# Upload the SARIF file generated in the previous step # Upload the SARIF file generated in the previous step
- name: Upload SARIF results file - name: Upload SARIF results file
uses: github/codeql-action/upload-sarif@v3 uses: github/codeql-action/upload-sarif@v3

@ -1,3 +1,4 @@
---
# For most projects, this workflow file will not need changing; you simply need # For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository. # to commit it to your repository.
# #
@ -10,16 +11,14 @@
# supported CodeQL languages. # supported CodeQL languages.
# #
name: "CodeQL" name: "CodeQL"
on: on:
push: push:
branches: [ "master" ] branches: ["master"]
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ "master" ] branches: ["master"]
schedule: schedule:
- cron: '33 12 * * 5' - cron: '33 12 * * 5'
jobs: jobs:
analyze: analyze:
name: Analyze name: Analyze
@ -34,49 +33,42 @@ jobs:
actions: read actions: read
contents: read contents: read
security-events: write security-events: write
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
language: [ 'python' ] language: ['python']
# CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ] # CodeQL supports [ 'c-cpp', 'csharp', 'go', 'java-kotlin', 'javascript-typescript', 'python', 'ruby', 'swift' ]
# Use only 'java-kotlin' to analyze code written in Java, Kotlin or both # Use only 'java-kotlin' to analyze code written in Java, Kotlin or both
# Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both # Use only 'javascript-typescript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning.
# Initializes the CodeQL tools for scanning. - name: Initialize CodeQL
- name: Initialize CodeQL uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v3 with:
with: languages: ${{ matrix.language }}
languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file.
# If you wish to specify custom queries, you can do so here or in a config file. # By default, queries listed here will override any specified in a config file.
# By default, queries listed here will override any specified in a config file. # Prefix the list here with "+" to use these queries and those in the config file.
# Prefix the list here with "+" to use these queries and those in the config file. # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
# queries: security-extended,security-and-quality # queries: security-extended,security-and-quality
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). # If the Autobuild fails above, remove it and uncomment the following three lines.
# If this step fails, then you should remove it and run the build manually (see below) # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
- name: Autobuild
uses: github/codeql-action/autobuild@v3
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# If the Autobuild fails above, remove it and uncomment the following three lines.
# modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
# - run: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis # - run: |
uses: github/codeql-action/analyze@v3 # echo "Run, Build Application using script"
with: # ./location_of_script_within_repo/buildscript.sh
category: "/language:${{matrix.language}}" - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{matrix.language}}"

@ -1,5 +1,5 @@
---
name: Docs WorkAgent name: Docs WorkAgent
on: on:
push: push:
branches: branches:
@ -17,4 +17,4 @@ jobs:
- run: pip install mkdocs-material - run: pip install mkdocs-material
- run: pip install mkdocs-glightbox - run: pip install mkdocs-glightbox
- run: pip install "mkdocstrings[python]" - run: pip install "mkdocstrings[python]"
- run: mkdocs gh-deploy --force - run: mkdocs gh-deploy --force

@ -1,3 +1,4 @@
---
# This workflow will triage pull requests and apply a label based on the # This workflow will triage pull requests and apply a label based on the
# paths that are modified in the pull request. # paths that are modified in the pull request.
# #
@ -7,16 +8,13 @@
name: Labeler name: Labeler
on: [pull_request_target] on: [pull_request_target]
jobs: jobs:
label: label:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/labeler@v5 - uses: actions/labeler@v5
with: with:
repo-token: "${{ secrets.GITHUB_TOKEN }}" repo-token: "${{ secrets.GITHUB_TOKEN }}"

@ -1,8 +1,6 @@
---
name: Lint name: Lint
on: [push, pull_request] # yamllint disable-line rule:truthy
on: [push, pull_request] # yamllint disable-line rule:truthy
jobs: jobs:
yaml-lint: yaml-lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest

@ -1,9 +1,8 @@
---
name: "PR Labeler" name: "PR Labeler"
on: on:
pull_request_target: pull_request_target:
types: ["opened", "reopened", "ready_for_review"] types: ["opened", "reopened", "ready_for_review"]
jobs: jobs:
triage: triage:
permissions: permissions:
@ -11,5 +10,5 @@ jobs:
pull-requests: write pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/labeler@v5 - uses: actions/labeler@v5
if: ${{ github.event.pull_request.draft == false }} if: ${{ github.event.pull_request.draft == false }}

@ -1,29 +1,21 @@
---
name: Pull Request Checks name: Pull Request Checks
on: on:
pull_request: pull_request:
branches: branches:
- master - master
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: 3.x python-version: 3.x
- name: Install dependencies - name: Install dependencies
run: | run: "pip install -r requirements.txt\npip install swarms\npip install pytest \n"
pip install -r requirements.txt
pip install swarms
pip install pytest
- name: Run tests and checks - name: Run tests and checks
run: | run: |
pytest pytest

@ -1,3 +1,4 @@
---
name: readthedocs/actions name: readthedocs/actions
on: on:
pull_request_target: pull_request_target:
@ -5,14 +6,12 @@ on:
- opened - opened
paths: paths:
- "docs/**" - "docs/**"
permissions: permissions:
pull-requests: write pull-requests: write
jobs: jobs:
pull-request-links: pull-request-links:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: readthedocs/actions/preview@v1 - uses: readthedocs/actions/preview@v1
with: with:
project-slug: swarms project-slug: swarms

@ -1,7 +1,6 @@
---
name: Pylint name: Pylint
on: [push] on: [push]
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -9,15 +8,15 @@ jobs:
matrix: matrix:
python-version: ["3.8", "3.9", "3.10"] python-version: ["3.8", "3.9", "3.10"]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install pylint pip install pylint
- name: Analysing the code with pylint - name: Analysing the code with pylint
run: | run: |
pylint $(git ls-files '*.py') pylint $(git ls-files '*.py')

@ -1,39 +1,35 @@
---
# This workflow will install Python dependencies, run tests and lint with a single version of Python # This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Python application name: Python application
on: on:
push: push:
branches: [ "master" ] branches: ["master"]
pull_request: pull_request:
branches: [ "master" ] branches: ["master"]
permissions: permissions:
contents: read contents: read
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Python 3.10 - name: Set up Python 3.10
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: "3.10" python-version: "3.10"
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
pip install flake8 pytest swarms pip install flake8 pytest swarms
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8 - name: Lint with flake8
run: | run: |
# stop the build if there are Python syntax errors or undefined names # stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest - name: Test with pytest
run: | run: |
pytest pytest

@ -1,41 +1,38 @@
---
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
name: Python package name: Python package
on: on:
push: push:
branches: [ "master" ] branches: ["master"]
pull_request: pull_request:
branches: [ "master" ] branches: ["master"]
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
python-version: ["3.7", "3.9", "3.10", "3.11"] python-version: ["3.7", "3.9", "3.10", "3.11"]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install dependencies - name: Install dependencies
run: | run: |
python -m pip install --upgrade pip python -m pip install --upgrade pip
python -m pip install --upgrade swarms python -m pip install --upgrade swarms
python -m pip install flake8 pytest swarms python -m pip install flake8 pytest swarms
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8 - name: Lint with flake8
run: | run: |
# stop the build if there are Python syntax errors or undefined names # stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest - name: Test with pytest
run: | run: |-
pytest pytest

@ -1,17 +1,13 @@
---
name: Upload Python Package name: Upload Python Package
on: # yamllint disable-line rule:truthy
on: # yamllint disable-line rule:truthy
release: release:
types: [published] types: [published]
permissions: permissions:
contents: read contents: read
jobs: jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up Python - name: Set up Python

@ -1,27 +1,24 @@
---
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
# #
# You can adjust the behavior by modifying this file. # You can adjust the behavior by modifying this file.
# For more information, see: # For more information, see:
# https://github.com/actions/stale # https://github.com/actions/stale
name: Mark stale issues and pull requests name: Mark stale issues and pull requests
on: on:
schedule: schedule:
- cron: '26 12 * * *' - cron: '26 12 * * *'
jobs: jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@v9 - uses: actions/stale@v9
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'Stale issue message' stale-issue-message: 'Stale issue message'
stale-pr-message: 'Stale pull request message' stale-pr-message: 'Stale pull request message'
stale-issue-label: 'no-issue-activity' stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity' stale-pr-label: 'no-pr-activity'

@ -1,49 +1,49 @@
---
# This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time. # This workflow warns and then closes issues and PRs that have had no activity for a specified amount of time.
# #
# You can adjust the behavior by modifying this file. # You can adjust the behavior by modifying this file.
# For more information, see: # For more information, see:
# https://github.com/actions/stale # https://github.com/actions/stale
name: Mark stale issues and pull requests name: Mark stale issues and pull requests
on: on:
schedule: schedule:
# Scheduled to run at 1.30 UTC everyday # Scheduled to run at 1.30 UTC everyday
- cron: '30 1 * * *' - cron: '30 1 * * *'
jobs: jobs:
stale: stale:
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions:
issues: write issues: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/stale@v9 - uses: actions/stale@v9
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-issue-stale: 14 days-before-issue-stale: 14
days-before-issue-close: 14 days-before-issue-close: 14
stale-issue-label: "status:stale" stale-issue-label: "status:stale"
close-issue-reason: not_planned close-issue-reason: not_planned
any-of-labels: "status:awaiting user response,status:more data needed" any-of-labels: "status:awaiting user response,status:more data needed"
stale-issue-message: > stale-issue-message: >
Marking this issue as stale since it has been open for 14 days with no activity. Marking this issue as stale since it has been open for 14 days with no activity. This issue will be closed if no further
This issue will be closed if no further activity occurs. activity occurs.
close-issue-message: >
This issue was closed because it has been inactive for 28 days. close-issue-message: >
Please post a new issue if you need further assistance. Thanks! This issue was closed because it has been inactive for 28 days. Please post a new issue if you need further assistance.
days-before-pr-stale: 14 Thanks!
days-before-pr-close: 14
stale-pr-label: "status:stale" days-before-pr-stale: 14
stale-pr-message: > days-before-pr-close: 14
Marking this pull request as stale since it has been open for 14 days with no activity. stale-pr-label: "status:stale"
This PR will be closed if no further activity occurs. stale-pr-message: >
close-pr-message: > Marking this pull request as stale since it has been open for 14 days with no activity. This PR will be closed if no
This pull request was closed because it has been inactive for 28 days. further activity occurs.
Please open a new pull request if you need further assistance. Thanks!
# Label that can be assigned to issues to exclude them from being marked as stale close-pr-message: >
exempt-issue-labels: 'override-stale' This pull request was closed because it has been inactive for 28 days. Please open a new pull request if you need further
# Label that can be assigned to PRs to exclude them from being marked as stale assistance. Thanks!
exempt-pr-labels: "override-stale"
# Label that can be assigned to issues to exclude them from being marked as stale
exempt-issue-labels: 'override-stale'
# Label that can be assigned to PRs to exclude them from being marked as stale
exempt-pr-labels: "override-stale"

@ -1,14 +1,12 @@
---
name: test name: test
on: on:
push: push:
branches: [master] branches: [master]
pull_request: pull_request:
workflow_dispatch: workflow_dispatch:
env: env:
POETRY_VERSION: "1.4.2" POETRY_VERSION: "1.4.2"
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -30,14 +28,9 @@ jobs:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
poetry-version: "1.4.2" poetry-version: "1.4.2"
cache-key: ${{ matrix.test_type }} cache-key: ${{ matrix.test_type }}
install-command: install-command: if [ "${{ matrix.test_type }}" == "core" ]; then echo "Running core tests, installing dependencies with
if [ "${{ matrix.test_type }}" == "core" ]; then poetry..." poetry install else echo "Running extended tests, installing dependencies with poetry..." poetry install -E
echo "Running core tests, installing dependencies with poetry..." extended_testing fi
poetry install
else
echo "Running extended tests, installing dependencies with poetry..."
poetry install -E extended_testing
fi
- name: Run ${{matrix.test_type}} tests - name: Run ${{matrix.test_type}} tests
run: | run: |
if [ "${{ matrix.test_type }}" == "core" ]; then if [ "${{ matrix.test_type }}" == "core" ]; then
@ -56,13 +49,13 @@ jobs:
poetry-version: "1.4.2" poetry-version: "1.4.2"
cache-key: ${{ matrix.test_type }} cache-key: ${{ matrix.test_type }}
install-command: | install-command: |
if [ "${{ matrix.test_type }}" == "core" ]; then if [ "${{ matrix.test_type }}" == "core" ]; then
echo "Running core tests, installing dependencies with poetry..." echo "Running core tests, installing dependencies with poetry..."
poetry install poetry install
else else
echo "Running extended tests, installing dependencies with poetry..." echo "Running extended tests, installing dependencies with poetry..."
poetry install -E extended_testing poetry install -E extended_testing
fi fi
- name: Run ${{matrix.test_type}} tests - name: Run ${{matrix.test_type}} tests
run: | run: |
if [ "${{ matrix.test_type }}" == "core" ]; then if [ "${{ matrix.test_type }}" == "core" ]; then
@ -93,13 +86,13 @@ jobs:
poetry-version: "1.4.2" poetry-version: "1.4.2"
cache-key: ${{ matrix.test_type }} cache-key: ${{ matrix.test_type }}
install-command: | install-command: |
if [ "${{ matrix.test_type }}" == "core" ]; then if [ "${{ matrix.test_type }}" == "core" ]; then
echo "Running core tests, installing dependencies with poetry..." echo "Running core tests, installing dependencies with poetry..."
poetry install poetry install
else else
echo "Running extended tests, installing dependencies with poetry..." echo "Running extended tests, installing dependencies with poetry..."
poetry install -E extended_testing poetry install -E extended_testing
fi fi
- name: Run ${{matrix.test_type}} tests - name: Run ${{matrix.test_type}} tests
run: | run: |
if [ "${{ matrix.test_type }}" == "core" ]; then if [ "${{ matrix.test_type }}" == "core" ]; then
@ -107,4 +100,4 @@ jobs:
else else
make extended_tests make extended_tests
fi fi
shell: bash shell: bash

@ -1,81 +1,80 @@
---
# Notebook-related checks # Notebook-related checks
name: Presubmit checks name: Presubmit checks
on: on:
# Relevant PRs # Relevant PRs
pull_request: pull_request:
paths: paths:
- "swarms/**" - "swarms/**"
- "tests/**" - "tests/**"
# Allow manual runs # Allow manual runs
workflow_dispatch: workflow_dispatch:
jobs: jobs:
test3_11: test3_11:
name: Test Py3.11 name: Test Py3.11
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.11' python-version: '3.11'
- name: Run tests - name: Run tests
run: | run: |
python --version python --version
pip install .[dev] pip install .[dev]
python -m pytest python -m pytest
test3_10: test3_10:
name: Test Py3.10 name: Test Py3.10
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.10' python-version: '3.10'
- name: Run tests - name: Run tests
run: | run: |
python --version python --version
pip install -q .[dev] pip install -q .[dev]
python -m pytest python -m pytest
test3_9: test3_9:
name: Test Py3.9 name: Test Py3.9
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.9' python-version: '3.9'
- name: Run tests - name: Run tests
run: | run: |
python --version python --version
pip install .[dev] pip install .[dev]
python -m pytest python -m pytest
pytype3_10: pytype3_10:
name: pytype 3.10 name: pytype 3.10
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.10' python-version: '3.10'
- name: Run pytype - name: Run pytype
run: | run: |
python --version python --version
pip install .[dev] pip install .[dev]
pip install -q gspread ipython pip install -q gspread ipython
pytype pytype
format: format:
name: Check format with black name: Check format with black
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: actions/setup-python@v5 - uses: actions/setup-python@v5
with: with:
python-version: '3.11' python-version: '3.11'
- name: Check format - name: Check format
run: | run: |
python --version python --version
pip install -q . pip install -q .
pip install -q black pip install -q black
black . --check black . --check

@ -1,27 +1,22 @@
---
name: Unit Tests name: Unit Tests
on: on:
push: push:
branches: branches:
- master - master
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v5 uses: actions/setup-python@v5
with: with:
python-version: "3.10" python-version: "3.10"
- name: Install dependencies - name: Install dependencies
run: | run: |
pip install -r requirements.txt pip install -r requirements.txt
pip install pytest pip install pytest
- name: Run unit tests - name: Run unit tests
run: pytest run: pytest

@ -1,36 +1,27 @@
---
name: build name: build
on: on:
push: push:
branches: [ main ] branches: [main]
pull_request: pull_request:
branches: [ main ] branches: [main]
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Setup Python
- name: Setup Python uses: actions/setup-python@v5
uses: actions/setup-python@v5 with:
with: python-version: '3.9'
python-version: '3.9' - name: Install dependencies
run: |
- name: Install dependencies pip install -r requirements.txt
run: | pip install pytest
pip install -r requirements.txt pip install swarms
pip install pytest - name: Run Python unit tests
pip install swarms run: pytest
- name: Verify that the Docker image for the action builds
- name: Run Python unit tests run: docker build . --file Dockerfile
run: pytest - name: Verify integration test results
run: pytest
- name: Verify that the Docker image for the action builds
run: docker build . --file Dockerfile
- name: Verify integration test results
run: pytest

@ -1,11 +1,10 @@
---
name: Welcome WorkAgent name: Welcome WorkAgent
on: on:
issues: issues:
types: [opened] types: [opened]
pull_request_target: pull_request_target:
types: [opened] types: [opened]
jobs: jobs:
build: build:
name: 👋 Welcome name: 👋 Welcome
@ -16,4 +15,4 @@ jobs:
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: "Hello there, thank you for opening an Issue ! 🙏🏻 The team was notified and they will get back to you asap." issue-message: "Hello there, thank you for opening an Issue ! 🙏🏻 The team was notified and they will get back to you asap."
pr-message: "Hello there, thank you for opening an PR ! 🙏🏻 The team was notified and they will get back to you asap." pr-message: "Hello there, thank you for opening an PR ! 🙏🏻 The team was notified and they will get back to you asap."

@ -1,18 +1,19 @@
---
repos: repos:
- repo: https://github.com/ambv/black - repo: https://github.com/ambv/black
rev: 22.3.0 rev: 22.3.0
hooks: hooks:
- id: black - id: black
- repo: https://github.com/charliermarsh/ruff-pre-commit - repo: https://github.com/charliermarsh/ruff-pre-commit
rev: 'v0.0.255' rev: 'v0.0.255'
hooks: hooks:
- id: ruff - id: ruff
args: [----unsafe-fixes] args: ['----unsafe-fixes']
- repo: https://github.com/nbQA-dev/nbQA - repo: https://github.com/nbQA-dev/nbQA
rev: 1.6.3 rev: 1.6.3
hooks: hooks:
- id: nbqa-black - id: nbqa-black
additional_dependencies: [ipython==8.12, black] additional_dependencies: [ipython==8.12, black]
- id: nbqa-ruff - id: nbqa-ruff
args: ["--ignore=I001"] args: ["--ignore=I001"]
additional_dependencies: [ipython==8.12, ruff] additional_dependencies: [ipython==8.12, ruff]

@ -1,13 +1,11 @@
---
version: 2 version: 2
build: build:
os: ubuntu-22.04 os: ubuntu-22.04
tools: tools:
python: "3.11" python: "3.11"
mkdocs: mkdocs:
configuration: mkdocs.yml configuration: mkdocs.yml
python: python:
install: install:
- requirements: requirements.txt - requirements: requirements.txt

@ -1,3 +1,4 @@
---
site_name: Swarms Docs site_name: Swarms Docs
plugins: plugins:
- glightbox - glightbox
@ -16,15 +17,15 @@ extra:
- icon: fontawesome/brands/python - icon: fontawesome/brands/python
link: https://pypi.org/project/Swarms/ link: https://pypi.org/project/Swarms/
theme: theme:
name: material name: material
custom_dir: docs/overrides custom_dir: docs/overrides
logo: assets/img/SwarmsLogoIcon.png logo: assets/img/SwarmsLogoIcon.png
palette: palette:
# Palette toggle for light mode # Palette toggle for light mode
- scheme: default - scheme: default
primary: black primary: black
toggle: toggle:
icon: material/brightness-7 icon: material/brightness-7
name: Switch to dark mode name: Switch to dark mode
# Palette toggle for dark mode # Palette toggle for dark mode
- scheme: slate - scheme: slate
@ -32,14 +33,14 @@ theme:
toggle: toggle:
icon: material/brightness-4 icon: material/brightness-4
name: Switch to light mode name: Switch to light mode
features: features:
- content.code.copy - content.code.copy
- content.code.annotate - content.code.annotate
- navigation.tabs - navigation.tabs
- navigation.sections - navigation.sections
- navigation.expand - navigation.expand
- navigation.top - navigation.top
- announce.dismiss - announce.dismiss
markdown_extensions: markdown_extensions:
- pymdownx.highlight: - pymdownx.highlight:
anchor_linenums: true anchor_linenums: true
@ -55,126 +56,126 @@ markdown_extensions:
- def_list - def_list
- footnotes - footnotes
nav: nav:
- Home: - Home:
- Overview: "index.md" - Overview: "index.md"
- Contributing: "contributing.md" - Contributing: "contributing.md"
- Swarms: - Swarms:
- Overview: "swarms/index.md" - Overview: "swarms/index.md"
- swarms.agents: - swarms.agents:
- Agents: - Agents:
- WorkerAgent: "swarms/agents/workeragent.md" - WorkerAgent: "swarms/agents/workeragent.md"
- OmniAgent: "swarms/agents/omni_agent.md" - OmniAgent: "swarms/agents/omni_agent.md"
- AbstractAgent: "swarms/agents/abstractagent.md" - AbstractAgent: "swarms/agents/abstractagent.md"
- ToolAgent: "swarms/agents/toolagent.md" - ToolAgent: "swarms/agents/toolagent.md"
- swarms.models: - swarms.models:
- Language: - Language:
- BaseLLM: "swarms/models/base_llm.md" - BaseLLM: "swarms/models/base_llm.md"
- Overview: "swarms/models/index.md" - Overview: "swarms/models/index.md"
- HuggingFaceLLM: "swarms/models/huggingface.md" - HuggingFaceLLM: "swarms/models/huggingface.md"
- Anthropic: "swarms/models/anthropic.md" - Anthropic: "swarms/models/anthropic.md"
- OpenAI: "swarms/models/openai.md" - OpenAI: "swarms/models/openai.md"
- Zephyr: "swarms/models/zephyr.md" - Zephyr: "swarms/models/zephyr.md"
- BioGPT: "swarms/models/biogpt.md" - BioGPT: "swarms/models/biogpt.md"
- vLLM: "swarms/models/vllm.md" - vLLM: "swarms/models/vllm.md"
- MPT7B: "swarms/models/mpt.md" - MPT7B: "swarms/models/mpt.md"
- Mistral: "swarms/models/mistral.md" - Mistral: "swarms/models/mistral.md"
- Mixtral: "swarms/models/mixtral.md" - Mixtral: "swarms/models/mixtral.md"
- MultiModal: - MultiModal:
- BaseMultiModalModel: "swarms/models/base_multimodal_model.md" - BaseMultiModalModel: "swarms/models/base_multimodal_model.md"
- Fuyu: "swarms/models/fuyu.md" - Fuyu: "swarms/models/fuyu.md"
- Vilt: "swarms/models/vilt.md" - Vilt: "swarms/models/vilt.md"
- Idefics: "swarms/models/idefics.md" - Idefics: "swarms/models/idefics.md"
- BingChat: "swarms/models/bingchat.md" - BingChat: "swarms/models/bingchat.md"
- Kosmos: "swarms/models/kosmos.md" - Kosmos: "swarms/models/kosmos.md"
- Nougat: "swarms/models/nougat.md" - Nougat: "swarms/models/nougat.md"
- Dalle3: "swarms/models/dalle3.md" - Dalle3: "swarms/models/dalle3.md"
- GPT4V: "swarms/models/gpt4v.md" - GPT4V: "swarms/models/gpt4v.md"
- LayoutLMDocumentQA: "swarms/models/layoutlm_document_qa.md" - LayoutLMDocumentQA: "swarms/models/layoutlm_document_qa.md"
- DistilWhisperModel: "swarms/models/distilled_whisperx.md" - DistilWhisperModel: "swarms/models/distilled_whisperx.md"
- ElevenLabsText2SpeechTool: "swarms/models/elevenlabs.md" - ElevenLabsText2SpeechTool: "swarms/models/elevenlabs.md"
- OpenAITTS: "swarms/models/openai_tts.md" - OpenAITTS: "swarms/models/openai_tts.md"
- Gemini: "swarms/models/gemini.md" - Gemini: "swarms/models/gemini.md"
- ZeroscopeTTV: "swarms/models/zeroscope.md" - ZeroscopeTTV: "swarms/models/zeroscope.md"
- swarms.structs: - swarms.structs:
- Foundational Structures: - Foundational Structures:
- agent: "swarms/structs/agent.md" - agent: "swarms/structs/agent.md"
- basestructure: "swarms/structs/basestructure.md" - basestructure: "swarms/structs/basestructure.md"
- artifactupload: "swarms/structs/artifactupload.md" - artifactupload: "swarms/structs/artifactupload.md"
- taskinput: "swarms/structs/taskinput.md" - taskinput: "swarms/structs/taskinput.md"
- stepinput: "swarms/structs/stepinput.md" - stepinput: "swarms/structs/stepinput.md"
- artifact: "swarms/structs/artifact.md" - artifact: "swarms/structs/artifact.md"
- task: "swarms/structs/task.md" - task: "swarms/structs/task.md"
- Task Queue Base: "swarms/structs/taskqueuebase.md" - Task Queue Base: "swarms/structs/taskqueuebase.md"
- Workflows: - Workflows:
- recursiveworkflow: "swarms/structs/recursiveworkflow.md" - recursiveworkflow: "swarms/structs/recursiveworkflow.md"
- concurrentworkflow: "swarms/structs/concurrentworkflow.md" - concurrentworkflow: "swarms/structs/concurrentworkflow.md"
- nonlinearworkflow: "swarms/structs/nonlinearworkflow.md" - nonlinearworkflow: "swarms/structs/nonlinearworkflow.md"
- sequential_workflow: "swarms/structs/sequential_workflow.md" - sequential_workflow: "swarms/structs/sequential_workflow.md"
- workflow: "swarms/structs/workflow.md" - workflow: "swarms/structs/workflow.md"
- baseworkflow: "swarms/structs/baseworkflow.md" - baseworkflow: "swarms/structs/baseworkflow.md"
- Multi Agent Architectures: - Multi Agent Architectures:
- conversation: "swarms/structs/conversation.md" - conversation: "swarms/structs/conversation.md"
- groupchat: "swarms/structs/groupchat.md" - groupchat: "swarms/structs/groupchat.md"
- swarmnetwork: "swarms/structs/swarmnetwork.md" - swarmnetwork: "swarms/structs/swarmnetwork.md"
- groupchatmanager: "swarms/structs/groupchatmanager.md" - groupchatmanager: "swarms/structs/groupchatmanager.md"
- MajorityVoting: "swarms/structs/majorityvoting.md" - MajorityVoting: "swarms/structs/majorityvoting.md"
- swarms.tokenizers: - swarms.tokenizers:
- Language: - Language:
- Tokenizer: "swarms/tokenizers/tokenizer.md" - Tokenizer: "swarms/tokenizers/tokenizer.md"
- CohereTokenizer: "swarms/tokenizers/coheretokenizer.md" - CohereTokenizer: "swarms/tokenizers/coheretokenizer.md"
- BaseTokenizer: "swarms/tokenizers/basetokenizer.md" - BaseTokenizer: "swarms/tokenizers/basetokenizer.md"
- HuggingfaceTokenizer: "swarms/tokenizers/huggingfacetokenizer.md" - HuggingfaceTokenizer: "swarms/tokenizers/huggingfacetokenizer.md"
- SentencepieceTokenizer: "swarms/tokenizers/sentencepiecetokenizer.md" - SentencepieceTokenizer: "swarms/tokenizers/sentencepiecetokenizer.md"
- AnthropicTokenizer: "swarms/tokenizers/anthropictokenizer.md" - AnthropicTokenizer: "swarms/tokenizers/anthropictokenizer.md"
- OpenaiTokenizer: "swarms/tokenizers/openaitokenizer.md" - OpenaiTokenizer: "swarms/tokenizers/openaitokenizer.md"
- swarms.memory: - swarms.memory:
- Vector Databases: - Vector Databases:
- Weaviate: "swarms/memory/weaviate.md" - Weaviate: "swarms/memory/weaviate.md"
- PineconeDB: "swarms/memory/pinecone.md" - PineconeDB: "swarms/memory/pinecone.md"
- PGVectorStore: "swarms/memory/pg.md" - PGVectorStore: "swarms/memory/pg.md"
- ShortTermMemory: "swarms/memory/short_term_memory.md" - ShortTermMemory: "swarms/memory/short_term_memory.md"
- swarms.utils: - swarms.utils:
- Misc: - Misc:
- pdf_to_text: "swarms/utils/pdf_to_text.md" - pdf_to_text: "swarms/utils/pdf_to_text.md"
- load_model_torch: "swarms/utils/load_model_torch.md" - load_model_torch: "swarms/utils/load_model_torch.md"
- metrics_decorator: "swarms/utils/metrics_decorator.md" - metrics_decorator: "swarms/utils/metrics_decorator.md"
- prep_torch_inference: "swarms/utils/prep_torch_inference.md" - prep_torch_inference: "swarms/utils/prep_torch_inference.md"
- find_image_path: "swarms/utils/find_image_path.md" - find_image_path: "swarms/utils/find_image_path.md"
- print_class_parameters: "swarms/utils/print_class_parameters.md" - print_class_parameters: "swarms/utils/print_class_parameters.md"
- extract_code_from_markdown: "swarms/utils/extract_code_from_markdown.md" - extract_code_from_markdown: "swarms/utils/extract_code_from_markdown.md"
- check_device: "swarms/utils/check_device.md" - check_device: "swarms/utils/check_device.md"
- display_markdown_message: "swarms/utils/display_markdown_message.md" - display_markdown_message: "swarms/utils/display_markdown_message.md"
- phoenix_tracer: "swarms/utils/phoenix_tracer.md" - phoenix_tracer: "swarms/utils/phoenix_tracer.md"
- limit_tokens_from_string: "swarms/utils/limit_tokens_from_string.md" - limit_tokens_from_string: "swarms/utils/limit_tokens_from_string.md"
- math_eval: "swarms/utils/math_eval.md" - math_eval: "swarms/utils/math_eval.md"
- Guides: - Guides:
- Overview: "examples/index.md" - Overview: "examples/index.md"
- Agents: - Agents:
- Agent: "examples/flow.md" - Agent: "examples/flow.md"
- OmniAgent: "examples/omni_agent.md" - OmniAgent: "examples/omni_agent.md"
- Swarms: - Swarms:
- SequentialWorkflow: "examples/reliable_autonomous_agents.md" - SequentialWorkflow: "examples/reliable_autonomous_agents.md"
- 2O+ Autonomous Agent Blogs: "examples/ideas.md" - 2O+ Autonomous Agent Blogs: "examples/ideas.md"
- Applications: - Applications:
- CustomerSupport: - CustomerSupport:
- Overview: "applications/customer_support.md" - Overview: "applications/customer_support.md"
- Marketing: - Marketing:
- Overview: "applications/marketing_agencies.md" - Overview: "applications/marketing_agencies.md"
- Corporate: - Corporate:
- FAQ: "corporate/faq.md" - FAQ: "corporate/faq.md"
- Purpose: "corporate/purpose.md" - Purpose: "corporate/purpose.md"
- Roadmap: "corporate/roadmap.md" - Roadmap: "corporate/roadmap.md"
- Weaknesses: "corporate/failures.md" - Weaknesses: "corporate/failures.md"
- Design: "corporate/design.md" - Design: "corporate/design.md"
- Flywheel: "corporate/flywheel.md" - Flywheel: "corporate/flywheel.md"
- Bounties: "corporate/bounties.md" - Bounties: "corporate/bounties.md"
- Metric: "corporate/metric.md" - Metric: "corporate/metric.md"
- Distribution: "corporate/distribution" - Distribution: "corporate/distribution"
- Research: "corporate/research.md" - Research: "corporate/research.md"
- Demos: "corporate/demos.md" - Demos: "corporate/demos.md"
- Architecture: "corporate/architecture.md" - Architecture: "corporate/architecture.md"
- Checklist: "corporate/checklist.md" - Checklist: "corporate/checklist.md"
- Hiring: "corporate/hiring.md" - Hiring: "corporate/hiring.md"
- SwarmCloud: "corporate/swarm_cloud.md" - SwarmCloud: "corporate/swarm_cloud.md"
- SwarmMemo: "corporate/swarm_memo.md" - SwarmMemo: "corporate/swarm_memo.md"
- Data Room: "corporate/data_room.md" - Data Room: "corporate/data_room.md"

Loading…
Cancel
Save