name: 'Setup Python Dependencies' description: 'Sets up Python with caching for faster workflow runs' author: 'ClaudeForge' inputs: python-version: description: 'Python version to use' required: false default: '3.11' outputs: cache-hit: description: 'Whether the cache was hit' value: ${{ steps.cache-pip.outputs.cache-hit }} python-version: description: 'Python version that was installed' value: ${{ steps.setup-python.outputs.python-version }} runs: using: 'composite' steps: - name: Set up Python id: setup-python uses: actions/setup-python@v5 with: python-version: ${{ inputs.python-version }} - name: Get pip cache dir id: pip-cache shell: bash run: echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - name: Cache pip dependencies id: cache-pip uses: actions/cache@v4 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-pip-${{ inputs.python-version }}-${{ hashFiles('skill/requirements.txt', '**/setup.py', '**/pyproject.toml') }} restore-keys: | ${{ runner.os }}-pip-${{ inputs.python-version }}- ${{ runner.os }}-pip- - name: Install Python dependencies shell: bash run: | python -m pip install --upgrade pip # Install common validation tools pip install flake8 pylint black mypy # Install project dependencies if they exist if [ -f "skill/requirements.txt" ]; then pip install -r skill/requirements.txt fi if [ -f "requirements.txt" ]; then pip install -r requirements.txt fi - name: Display Python info shell: bash run: | echo "Python version: $(python --version)" echo "Pip version: $(pip --version)" echo "Cache hit: ${{ steps.cache-pip.outputs.cache-hit }}"