Switch to side-by-side view

--- a
+++ b/.github/workflows/tests_talk2knowledgegraphs.yml
@@ -0,0 +1,397 @@
+# This is a basic workflow to help you get started with GitHub Actions
+name: TESTS Talk2KnowledgeGraphs
+
+# Controls when the workflow will run
+on:
+  # Triggers the workflow on push or pull request events
+  pull_request:
+    branches: [ main ]
+    paths:
+      - 'aiagents4pharma/talk2knowledgegraphs/**'
+
+  # Allows you to run this workflow manually from the Actions tab
+  workflow_dispatch:
+
+env:
+  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
+
+# This workflow contains jobs covering linting and code coverage (along with testing).
+jobs:
+  # pylint job for macos
+  pylint-macos:
+    # The type of runner that the job will run on
+    name: pylint
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+            os: [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@v4
+
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: 3.12
+
+      - name: Cache files
+        uses: actions/cache@v4
+        id: cache
+        with:
+          path: |
+            ${{ github.workspace }}/venv/*
+          key: ${{ runner.os }}-venv
+
+      # install requirements
+      - name: Install the requirements
+        if: steps.cache.outputs.cache-hit != 'true'
+        working-directory: ${{ github.workspace }}
+        run: |
+          python3 -m venv venv
+          source venv/bin/activate
+          pip install --upgrade pip
+          pip3 install --break-system-packages -r requirements.txt
+
+      # pylint
+      - name: Run pylint
+        working-directory: ${{ github.workspace }}
+        run: |
+          source venv/bin/activate
+          pylint --disable=R0801,R0902,W0221,W0122 aiagents4pharma/talk2knowledgegraphs
+
+  # pylint job for ubuntu
+  pylint-ubuntu:
+    # The type of runner that the job will run on
+    name: pylint
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+            os: [ubuntu-latest]
+
+    # 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@v4
+
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: 3.12
+
+      - name: Cache files
+        uses: actions/cache@v4
+        id: cache
+        with:
+          path: |
+            ${{ github.workspace }}/venv/*
+          key: ${{ runner.os }}-venv
+
+      # install requirements
+      - name: Install the requirements
+        if: steps.cache.outputs.cache-hit != 'true'
+        working-directory: ${{ github.workspace }}
+        run: |
+          python3 -m venv venv
+          source venv/bin/activate
+          pip install --upgrade pip
+          pip3 install --break-system-packages -r requirements.txt
+
+      # pylint
+      - name: Run pylint
+        working-directory: ${{ github.workspace }}
+        run: |
+          source venv/bin/activate
+          pylint --disable=R0801,R0902,W0221,W0122 aiagents4pharma/talk2knowledgegraphs
+
+  # pylint job for windows
+  pylint-windows:
+    # The type of runner that the job will run on
+    name: pylint
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+            os: [windows-latest]
+
+    # 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@v4
+
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: 3.12
+
+      - name: Cache files
+        uses: actions/cache@v4
+        id: cache
+        with:
+          path: |
+            ${{ github.workspace }}\venv\*
+          key: ${{ runner.os }}-venv
+
+      # install requirements
+      - name: Install the requirements
+        if: steps.cache.outputs.cache-hit != 'true'
+        working-directory: ${{ github.workspace }}
+        run: |
+          python3 -m venv venv
+          venv\Scripts\activate
+          pip install --upgrade pip
+          pip3 install --break-system-packages -r requirements.txt
+
+      # pylint
+      - name: Run pylint
+        working-directory: ${{ github.workspace }}
+        run: |
+          venv\Scripts\activate
+          pylint --disable=R0801,R0902,W0221,W0122 aiagents4pharma/talk2knowledgegraphs
+
+  # code coverage job for macos
+  code-cov-macos:
+    name: code-coverage
+    needs: pylint-macos
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+          os: [macos-13]
+
+    steps:
+    - name: Checkout code
+      uses: actions/checkout@v4
+
+    - name: Set up Python
+      uses: actions/setup-python@v4
+      with:
+        python-version: 3.12
+
+    - name: Cache venv
+      uses: actions/cache@v4
+      id: cache_venv
+      with:
+        path: |
+          ${{ github.workspace }}/venv/*
+        key: ${{ runner.os }}-venv
+
+    - name: Cache Ollama models
+      uses: actions/cache@v4
+      id: cache_ollama
+      with:
+        path: |
+          /Users/runner/.ollama/models/*
+        key: ${{ runner.os }}-ollama
+
+    - name: Install and Pull Ollama models
+      if: steps.cache_ollama.outputs.cache-hit != 'true'
+      working-directory: ${{ github.workspace }}
+      run: |
+        source venv/bin/activate
+        brew install ollama
+        ollama serve &
+        sleep 10
+        ollama pull llama3.2:1b
+        ollama list
+
+    - name: Reading cached Ollama models
+      working-directory: ${{ github.workspace }}
+      run: |
+        echo "Cache Hit Status - ${{ steps.cache_ollama.outputs.cache-hit }}"
+        source venv/bin/activate
+        brew install ollama
+        ollama serve &
+        sleep 10
+        ollama list
+
+    - name: Run tests with coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        source venv/bin/activate
+        coverage run --include=aiagents4pharma/talk2knowledgegraphs/* -m pytest --cache-clear aiagents4pharma/talk2knowledgegraphs/tests/
+
+    - name: Check coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        source venv/bin/activate
+        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 ubuntu
+  code-cov-ubuntu:
+    name: code-coverage
+    needs: pylint-ubuntu
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+          os: [ubuntu-latest]
+
+    steps:
+    - name: Checkout code
+      uses: actions/checkout@v4
+
+    - name: Set up Python
+      uses: actions/setup-python@v4
+      with:
+        python-version: 3.12
+
+    - name: Cache venv
+      uses: actions/cache@v4
+      id: cache_venv
+      with:
+        path: |
+          ${{ github.workspace }}/venv/*
+        key: ${{ runner.os }}-venv
+
+    - name: Cache Ollama models
+      uses: actions/cache@v4
+      id: cache_ollama
+      with:
+        path: |
+          /usr/share/ollama/.ollama/models/*
+          test
+        key: ${{ runner.os }}-ollama
+
+    - name: Install and Pull Ollama models
+      if: steps.cache_ollama.outputs.cache-hit != 'true'
+      working-directory: ${{ github.workspace }}
+      run: |
+        mkdir test
+        echo "Hello, World!" > test/hello.txt
+        source venv/bin/activate
+        curl -fsSL https://ollama.com/install.sh | sh
+        ollama serve &
+        sleep 10
+        ollama pull llama3.2:1b
+        ls -l ~/.ollama/
+        ls -l /usr/share/ollama/.ollama/
+
+    - name: Reading cached Ollama models
+      working-directory: ${{ github.workspace }}
+      run: |
+        cat test/hello.txt
+        echo "Cache Hit Status - ${{ steps.cache_ollama.outputs.cache-hit }}"
+        source venv/bin/activate
+        curl -fsSL https://ollama.com/install.sh | sh
+        ollama serve &
+        sleep 10
+        mkdir -p ~/.ollama/models/
+        cp -r /usr/share/ollama/.ollama/models/* ~/.ollama/models/
+        ollama list
+        du -sh ~/.ollama/
+        du -sh /usr/share/ollama/.ollama/
+
+    - name: Run tests with coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        source venv/bin/activate
+        coverage run --include=aiagents4pharma/talk2knowledgegraphs/* -m pytest --cache-clear aiagents4pharma/talk2knowledgegraphs/tests/
+
+    - name: Check coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        source venv/bin/activate
+        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
+    needs: pylint-windows
+    runs-on: ${{ matrix.os }}
+
+    strategy:
+        matrix:
+          os: [windows-latest]
+
+    steps:
+    - name: Checkout code
+      uses: actions/checkout@v4
+
+    - name: Set up Python
+      uses: actions/setup-python@v4
+      with:
+        python-version: 3.12
+
+    - name: Cache venv
+      uses: actions/cache@v4
+      id: cache_venv
+      with:
+        path: |
+          ${{ github.workspace }}\venv\*
+        key: ${{ runner.os }}-venv
+
+    - name: Cache Ollama models
+      uses: actions/cache@v4
+      id: cache_ollama
+      with:
+        path: |
+          C:\Users\runneradmin\.ollama\models
+        key: ${{ runner.os }}-ollama
+
+    - name: Install and Pull Ollama models
+      if: steps.cache_ollama.outputs.cache-hit != 'true'
+      working-directory: ${{ github.workspace }}
+      run: |
+        venv\Scripts\activate
+        curl -L https://ollama.com/download/ollama-windows-amd64.zip -o ollama-windows-amd64.zip
+        tar -xzf .\ollama-windows-amd64.zip
+        start ollama serve
+        sleep 10
+        cmd /k ollama pull llama3.2:1b
+        cmd /k ollama list
+
+    - name: Reading cached Ollama models
+      working-directory: ${{ github.workspace }}
+      run: |
+        echo "Cache Hit Status - ${{ steps.cache_ollama.outputs.cache-hit }}"
+        venv\Scripts\activate
+        curl -L https://ollama.com/download/ollama-windows-amd64.zip -o ollama-windows-amd64.zip
+        tar -xzf .\ollama-windows-amd64.zip
+        start ollama serve
+        sleep 10
+        cmd /k ollama list
+
+    - name: Run tests with coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        venv\Scripts\activate
+        coverage run --include=aiagents4pharma/talk2knowledgegraphs/* -m pytest --cache-clear aiagents4pharma/talk2knowledgegraphs/tests/
+
+    - name: Check coverage
+      working-directory: ${{ github.workspace }}
+      run: |
+        venv\Scripts\activate
+        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'