diff --git a/.github/workflows/run_notebooks.yml b/.github/workflows/run_notebooks.yml index 6750612b485..14c70f779bf 100644 --- a/.github/workflows/run_notebooks.yml +++ b/.github/workflows/run_notebooks.yml @@ -2,11 +2,19 @@ name: Run notebooks on: workflow_dispatch: + inputs: + python_version: + description: 'Python version' + required: false + default: '3.11' + working-directory: + description: 'Working directory or subset (e.g., docs/docs/tutorials/llm_chain.ipynb)' + required: false + default: 'all' schedule: - cron: '0 13 * * *' env: - PYTHON_VERSION: "3.11" POETRY_VERSION: "1.7.1" jobs: @@ -20,7 +28,7 @@ jobs: - name: Set up Python + Poetry ${{ env.POETRY_VERSION }} uses: "./.github/actions/poetry_setup" with: - python-version: ${{ env.PYTHON_VERSION }} + python-version: ${{ github.event.inputs.python_version || '3.11' }} poetry-version: ${{ env.POETRY_VERSION }} working-directory: ${{ inputs.working-directory }} cache-key: run-notebooks @@ -43,7 +51,6 @@ jobs: - name: Prepare notebooks run: | - python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells - name: Run notebooks @@ -53,4 +60,4 @@ jobs: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }} run: | - ./docs/scripts/execute_notebooks.sh + ./docs/scripts/execute_notebooks.sh ${{ github.event.inputs.working-directory || 'all' }} diff --git a/docs/scripts/execute_notebooks.sh b/docs/scripts/execute_notebooks.sh index a2442ac7ff9..8ac1cdb9182 100755 --- a/docs/scripts/execute_notebooks.sh +++ b/docs/scripts/execute_notebooks.sh @@ -3,6 +3,9 @@ # Read the list of notebooks to skip from the JSON file SKIP_NOTEBOOKS=$(python -c "import json; print('\n'.join(json.load(open('docs/notebooks_no_execution.json'))))") +# Get the working directory or specific notebook file from the input parameter +WORKING_DIRECTORY=$1 + # Function to execute a single notebook execute_notebook() { file="$1" @@ -22,8 +25,12 @@ execute_notebook() { export -f execute_notebook -# Find all notebooks and filter out those in the skip list -notebooks=$(find docs/docs/tutorials -name "*.ipynb" | grep -v ".ipynb_checkpoints" | grep -vFf <(echo "$SKIP_NOTEBOOKS")) +# Determine the list of notebooks to execute +if [ "$WORKING_DIRECTORY" == "all" ]; then + notebooks=$(find docs/docs/tutorials -name "*.ipynb" | grep -v ".ipynb_checkpoints" | grep -vFf <(echo "$SKIP_NOTEBOOKS")) +else + notebooks=$(find "$WORKING_DIRECTORY" -name "*.ipynb" | grep -v ".ipynb_checkpoints" | grep -vFf <(echo "$SKIP_NOTEBOOKS")) +fi # Execute notebooks sequentially for file in $notebooks; do