Switch to side-by-side view

--- a
+++ b/.github/workflows/tests_talk2biomodels.yml
@@ -0,0 +1,125 @@
+# This is a basic workflow to help you get started with GitHub Actions
+name: TESTS Talk2BioModels
+
+# Controls when the workflow will run
+on:
+  # Triggers the workflow on push or pull request events
+  pull_request:
+    branches: [ main ]
+    paths:
+      - 'aiagents4pharma/talk2biomodels/**'
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+env:
+  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+  NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
+
+# This workflow contains jobs covering linting and code coverage (along with testing).
+jobs:
+  pylint-windows-ubuntu-macos:
+    # The type of runner that the job will run on
+    name: pylint-windows-ubuntu-macos
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+            os: [windows-latest, ubuntu-latest, macos-13]
+
+    # Steps represent a sequence of tasks that will be executed as part of the job
+    steps:
+      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+      - uses: actions/checkout@v3
+
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: 3.12
+
+      # install requirements
+      - name: Install the requirements
+        run: |
+          pip3 install --break-system-packages -r requirements.txt
+
+      # pylint
+      - name: Run pylint
+        run: |
+          pylint --disable=R0801,R0902,W0221,W0122 aiagents4pharma/talk2biomodels
+
+  # code coverage job for ubuntu and macos
+  code-cov-ubuntu-macos:
+    name: code-coverage-ubuntu-macos
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+          os: [ubuntu-latest, macos-13]
+    steps:
+    - name: Checkout code
+      uses: actions/checkout@v3
+
+    - name: Set up Python
+      uses: actions/setup-python@v4
+      with:
+        python-version: 3.12
+
+    - name: Install dependencies
+      run: pip3 install -r requirements.txt  # Adjust this according to your project
+
+    - name: Run tests with coverage
+      run: coverage run --include=aiagents4pharma/talk2biomodels/* -m pytest --cache-clear aiagents4pharma/talk2biomodels/tests/
+
+    - name: Check coverage
+      run: |
+        coverage report -m
+        TOTAL_COVERAGE=$(coverage report -m | awk 'END {print int($NF)}')
+        if [[ $TOTAL_COVERAGE -ne 100 ]]; then
+          echo "Code coverage is not 100%. Please check the coverage report."
+          exit 1
+        fi
+      env:
+        COVERAGE_FILE: './.coverage'
+
+  # code coverage job for windows
+  code-cov-windows:
+    name: code-coverage-windows
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+          os: [windows-latest]
+
+    steps:
+    - name: Checkout code
+      uses: actions/checkout@v3
+
+    - name: Set up Python
+      uses: actions/setup-python@v4
+      with:
+        python-version: 3.12
+
+    - name: Install dependencies
+      run: pip3 install -r requirements.txt  # Adjust this according to your project
+
+    - name: Run tests with coverage
+      run: coverage run --include=aiagents4pharma/talk2biomodels/* -m pytest --cache-clear aiagents4pharma/talk2biomodels/tests/
+
+    - name: Check coverage
+      run: |
+        coverage report -m
+        # $TOTAL_COVERAGE=(& coverage report -m | Select-Object -Last 1) -replace "[^\d]"  # Extract the last line and remove non-numeric characters
+        $TOTAL_COVERAGE=(& coverage report -m | Select-Object -Last 1)
+        # split and extract the last element
+        $TOTAL_COVERAGE=($TOTAL_COVERAGE -split " ")[-1]
+        # remove non-numeric characters
+        $TOTAL_COVERAGE=($TOTAL_COVERAGE -replace "[^\d]")
+        # convert to int
+        $TOTAL_COVERAGE=[int]$TOTAL_COVERAGE
+        echo "Total coverage: $TOTAL_COVERAGE"
+        if ($TOTAL_COVERAGE -ne 100) {
+          Write-Host "Code coverage is not 100%. Please check the coverage report."
+          exit 1
+        }
+      env:
+        COVERAGE_FILE: './.coverage'