Skip to content

CI: Check py folders for init files #44

CI: Check py folders for init files

CI: Check py folders for init files #44

Workflow file for this run

name: Test PR
on:
pull_request:
env:
# Please make sure this version is included in the `matrix`, as the
# `matrix` section can't use `env`, so it must be entered manually
DEFAULT_PYTHON_VERSION: '3.11'
# It would be nice to be able to also define a DEFAULT_UBUNTU_VERSION
# but sadly `env` can't be used either in `runs-on`.
jobs:
validate-structure:
name: Validate Python Package Structure
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check for __init__.py files using counts
run: |
echo "Comparing directory count in proto with __init__.py count in py..."
PROTO_BASE="proto/frequenz/api/common"
PYTHON_BASE="py/frequenz/api/common" # Match the base for comparison
# Count directories in the specific proto path
proto_dirs=$(find "$PROTO_BASE" -type d | wc -l)
echo "Found $proto_dirs directories under $PROTO_BASE"
# Count __init__.py files in the corresponding python path
py_inits=$(find "$PYTHON_BASE" -type f -name "__init__.py" | wc -l)
echo "Found $py_inits '__init__.py' files under $PYTHON_BASE"
if [ "$proto_dirs" -ne "$py_inits" ]; then
echo "Validation failed: Mismatch between proto directory count ($proto_dirs) and python __init__.py count ($py_inits)."
echo "Ensure (manually!) every directory under $PROTO_BASE has a corresponding directory with __init__.py under $PYTHON_BASE."
exit 1
else
echo "Validation successful: Proto directory count matches python __init__.py count ($proto_dirs)."
fi
protolint:
name: Check proto files with protolint
runs-on: ubuntu-24.04
steps:
- name: Setup Git
uses: frequenz-floss/[email protected]
- name: Fetch sources
uses: actions/checkout@v4
with:
submodules: true
- name: Run protolint
# Only use hashes here, as we are passing the github token, we want to
# make sure updates are done consciously to avoid security issues if the
# action repo gets hacked
uses: yoheimuta/action-protolint@e62319541dc5107df5e3a5010acb8987004d3d25 # v1.3.0
with:
fail_on_error: true
filter_mode: nofilter
github_token: ${{ secrets.github_token }}
protolint_flags: proto/
protolint_version: "0.52.0"
reporter: github-check
nox:
name: Test with nox
runs-on: ubuntu-24.04
steps:
- name: Run nox
uses: frequenz-floss/[email protected]
with:
python-version: "3.11"
nox-session: ci_checks_max
test-docs:
name: Test documentation website generation
runs-on: ubuntu-24.04
steps:
- name: Setup Git
uses: frequenz-floss/[email protected]
- name: Fetch sources
uses: actions/checkout@v4
with:
submodules: true
- name: Setup Python
uses: frequenz-floss/[email protected]
with:
python-version: ${{ env.DEFAULT_PYTHON_VERSION }}
dependencies: .[dev-mkdocs]
- name: Generate the documentation
env:
MIKE_VERSION: gh-${{ github.job }}
run: |
mike deploy $MIKE_VERSION
mike set-default $MIKE_VERSION
- name: Upload site
uses: actions/upload-artifact@v4
with:
name: docs-site
path: site/
if-no-files-found: error