#!/bin/bash # Use this script to update cassettes for a notebook. The script does the following: # # 1. Delete existing cassettes for the specified notebook # 2. Pre-download and cache nltk and tiktoken files # 3. Modify the notebook to generate cassettes for each cell. # 4. Execute the notebook. # # Important: make sure the notebook is in a clean state, with any desired changes # staged or committed. The script will modify the notebook in place, and these # modifications should be discarded after the cassettes are generated. # # Usage: # In monorepo env, `uv sync --group dev --group test` # `./docs/scripts/update_cassettes.sh path/to/notebook` # e.g., `./docs/scripts/update_cassettes.sh docs/docs/how_to/tool_choice.ipynb` # # Make sure to set any env vars required by the notebook. # Get the working directory from the input argument, default to 'all' if not provided WORKING_DIRECTORY=${1:-all} # Function to delete cassettes delete_cassettes() { local dir=$1 if [ "$dir" == "all" ]; then echo "Deleting all cassettes..." rm -f docs/cassettes/*.msgpack.zlib else # Extract the filename from the directory path local filename=$(basename "$dir" .ipynb) echo "Deleting cassettes for $filename..." rm -f docs/cassettes/${filename}_*.msgpack.zlib fi } # Delete existing cassettes delete_cassettes "$WORKING_DIRECTORY" # Pre-download tiktoken files echo "Pre-downloading nltk and tiktoken files..." uv run python docs/scripts/cache_data.py # Prepare notebooks echo "Preparing notebooks for CI..." uv run python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells --working-directory "$WORKING_DIRECTORY" # Run notebooks echo "Running notebooks..." ./docs/scripts/execute_notebooks.sh "$WORKING_DIRECTORY"