diff --git a/.copier-answers.yml b/.copier-answers.yml index 00ffa0db..a022878a 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,5 +1,5 @@ # Changes here will be overwritten by Copier -_commit: v2.0.1 +_commit: v2.0.3 _src_path: gh:lincc-frameworks/python-project-template author_email: lincc-frameworks-team@lists.lsst.org author_name: LINCC Frameworks diff --git a/.github/ISSUE_TEMPLATE/1-bug_report.md b/.github/ISSUE_TEMPLATE/1-bug_report.md index 220a63d6..16b6b711 100644 --- a/.github/ISSUE_TEMPLATE/1-bug_report.md +++ b/.github/ISSUE_TEMPLATE/1-bug_report.md @@ -13,5 +13,5 @@ assignees: '' Please check the following: - [ ] I have described the situation in which the bug arose, including what code was executed, information about my environment, and any applicable data others will need to reproduce the problem. -- [ ] I have included available evidence of the unexpected behavior (including error messages, screenshots, and/or plots) as well as a descriprion of what I expected instead. -- [ ] If I have a solution in mind, I have provided an explanation and/or pseudocode and/or task list. \ No newline at end of file +- [ ] I have included available evidence of the unexpected behavior (including error messages, screenshots, and/or plots) as well as a description of what I expected instead. +- [ ] If I have a solution in mind, I have provided an explanation and/or pseudocode and/or task list. diff --git a/.github/workflows/asv-main.yml b/.github/workflows/asv-main.yml index f6a6f297..32c25cf5 100644 --- a/.github/workflows/asv-main.yml +++ b/.github/workflows/asv-main.yml @@ -1,7 +1,6 @@ # This workflow will run benchmarks with airspeed velocity (asv), # store the new results in the "benchmarks" branch and publish them # to a dashboard on GH Pages. - name: Run ASV benchmarks for main on: @@ -10,92 +9,60 @@ on: env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true jobs: - - setup-python: - runs-on: ubuntu-latest - - steps: - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: "${{ env.PYTHON_VERSION }}" - asv-main: runs-on: ubuntu-latest - needs: setup-python - permissions: contents: write - defaults: run: - working-directory: ${{ env.WORKING_DIR }} - + working-directory: ${{env.WORKING_DIR}} steps: - - name: Checkout main branch of the repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - - name: Install dependencies - run: | - sudo apt-get update - python -m pip install --upgrade pip - pip install asv==0.6.1 virtualenv tabulate - - - name: Configure git - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - - name: Create ASV machine config file - run: asv machine --machine gh-runner --yes - - - name: Fetch previous results from the "benchmarks" branch - run: | - if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then - git merge origin/benchmarks \ - --allow-unrelated-histories \ - --no-commit - mv ../_results . - fi - - - name: Run ASV for the main branch - run: asv run ALL --skip-existing --verbose || true - - - name: Submit new results to the "benchmarks" branch - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: benchmarks - folder: ${{ env.WORKING_DIR }}/_results - target-folder: _results - - - name: Generate dashboard HTML - run: | - asv show - asv publish - - - name: Deploy to Github pages - uses: JamesIves/github-pages-deploy-action@v4 - with: - branch: gh-pages - folder: ${{ env.WORKING_DIR }}/_html \ No newline at end of file + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} + - name: Checkout main branch of the repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install dependencies + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" + - name: Configure git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + - name: Create ASV machine config file + run: asv machine --machine gh-runner --yes + - name: Fetch previous results from the "benchmarks" branch + run: | + if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then + git merge origin/benchmarks \ + --allow-unrelated-histories \ + --no-commit + mv ../_results . + fi + - name: Run ASV for the main branch + run: asv run ALL --skip-existing --verbose || true + - name: Submit new results to the "benchmarks" branch + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: benchmarks + folder: ${{env.WORKING_DIR}}/_results + target-folder: _results + - name: Generate dashboard HTML + run: | + asv show + asv publish + - name: Deploy to Github pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + branch: gh-pages + folder: ${{env.WORKING_DIR}}/_html \ No newline at end of file diff --git a/.github/workflows/asv-nightly.yml b/.github/workflows/asv-nightly.yml index 80a2d785..28b270ae 100644 --- a/.github/workflows/asv-nightly.yml +++ b/.github/workflows/asv-nightly.yml @@ -1,7 +1,6 @@ # This workflow will run daily at 06:45. # It will run benchmarks with airspeed velocity (asv) # and compare performance with the previous nightly build. - name: Run benchmarks nightly job on: @@ -11,83 +10,63 @@ on: env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks NIGHTLY_HASH_FILE: nightly-hash jobs: - asv-nightly: runs-on: ubuntu-latest - defaults: run: - working-directory: ${{ env.WORKING_DIR }} - + working-directory: ${{env.WORKING_DIR}} steps: - - name: Checkout main branch of the repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: "${{ env.PYTHON_VERSION }}" - - - name: Install dependencies - run: | - sudo apt-get update - python -m pip install --upgrade pip - pip install asv==0.6.1 virtualenv - - - name: Configure git - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - - name: Create ASV machine config file - run: asv machine --machine gh-runner --yes - - - name: Fetch previous results from the "benchmarks" branch - run: | - if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then - git merge origin/benchmarks \ - --allow-unrelated-histories \ - --no-commit - mv ../_results . - fi - - - name: Get nightly dates under comparison - id: nightly-dates - run: | - echo "yesterday=$(date -d yesterday +'%Y-%m-%d')" >> $GITHUB_OUTPUT - echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - - name: Use last nightly commit hash from cache - uses: actions/cache@v4 - with: - path: ${{ env.WORKING_DIR }} - key: nightly-results-${{ steps.nightly-dates.outputs.yesterday }} - - - name: Run comparison of main against last nightly build - run: | - HASH_FILE=${{ env.NIGHTLY_HASH_FILE }} - CURRENT_HASH=${{ github.sha }} - if [ -f $HASH_FILE ]; then - PREV_HASH=$(cat $HASH_FILE) - asv continuous $PREV_HASH $CURRENT_HASH --verbose || true - asv compare $PREV_HASH $CURRENT_HASH --sort ratio --verbose - fi - echo $CURRENT_HASH > $HASH_FILE - - - name: Update last nightly hash in cache - uses: actions/cache@v4 - with: - path: ${{ env.WORKING_DIR }} - key: nightly-results-${{ steps.nightly-dates.outputs.today }} \ No newline at end of file + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} + - name: Checkout main branch of the repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install dependencies + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" + - name: Configure git + run: | + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + - name: Create ASV machine config file + run: asv machine --machine gh-runner --yes + - name: Fetch previous results from the "benchmarks" branch + run: | + if git ls-remote --exit-code origin benchmarks > /dev/null 2>&1; then + git merge origin/benchmarks \ + --allow-unrelated-histories \ + --no-commit + mv ../_results . + fi + - name: Get nightly dates under comparison + id: nightly-dates + run: | + echo "yesterday=$(date -d yesterday +'%Y-%m-%d')" >> $GITHUB_OUTPUT + echo "today=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + - name: Use last nightly commit hash from cache + uses: actions/cache@v4 + with: + path: ${{env.WORKING_DIR}} + key: nightly-results-${{steps.nightly-dates.outputs.yesterday}} + - name: Run comparison of main against last nightly build + run: | + HASH_FILE=${{env.NIGHTLY_HASH_FILE}} + CURRENT_HASH=${{github.sha}} + if [ -f $HASH_FILE ]; then + PREV_HASH=$(cat $HASH_FILE) + asv continuous $PREV_HASH $CURRENT_HASH --verbose || true + asv compare $PREV_HASH $CURRENT_HASH --sort ratio --verbose + fi + echo $CURRENT_HASH > $HASH_FILE + - name: Update last nightly hash in cache + uses: actions/cache@v4 + with: + path: ${{env.WORKING_DIR}} + key: nightly-results-${{steps.nightly-dates.outputs.today}} \ No newline at end of file diff --git a/.github/workflows/asv-pr.yml b/.github/workflows/asv-pr.yml index bf5aed6d..4499eb9f 100644 --- a/.github/workflows/asv-pr.yml +++ b/.github/workflows/asv-pr.yml @@ -11,76 +11,60 @@ on: workflow_dispatch: concurrency: - group: ${{ github.workflow }}-${{ github.ref }} + group: ${{github.workflow}}-${{github.ref}} cancel-in-progress: true env: PYTHON_VERSION: "3.10" - WORKING_DIR: ${{ github.workspace }}/benchmarks - ARTIFACTS_DIR: ${{ github.workspace }}/artifacts + ASV_VERSION: "0.6.4" + WORKING_DIR: ${{github.workspace}}/benchmarks + ARTIFACTS_DIR: ${{github.workspace}}/artifacts jobs: - setup-python: - runs-on: ubuntu-latest - steps: - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} - - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v5 - with: - python-version: ${{ env.PYTHON_VERSION }} asv-pr: runs-on: ubuntu-latest - needs: setup-python defaults: run: - working-directory: ${{ env.WORKING_DIR }} + working-directory: ${{env.WORKING_DIR}} steps: + - name: Set up Python ${{env.PYTHON_VERSION}} + uses: actions/setup-python@v5 + with: + python-version: ${{env.PYTHON_VERSION}} - name: Checkout PR branch of the repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Display Workflow Run Information run: | - echo "Workflow Run ID: ${{ github.run_id }}" - - name: Cache Python ${{ env.PYTHON_VERSION }} - uses: actions/cache@v4 - with: - path: ~/.cache/pip - key: python-${{ env.PYTHON_VERSION }} + echo "Workflow Run ID: ${{github.run_id}}" - name: Install dependencies - run: | - sudo apt-get update - python -m pip install --upgrade pip - pip install asv==0.6.1 virtualenv tabulate lf-asv-formatter + run: pip install "asv[virtualenv]==${{env.ASV_VERSION}}" lf-asv-formatter - name: Make artifacts directory - run: mkdir -p ${{ env.ARTIFACTS_DIR }} + run: mkdir -p ${{env.ARTIFACTS_DIR}} - name: Save pull request number - run: echo ${{ github.event.pull_request.number }} > ${{ env.ARTIFACTS_DIR }}/pr + run: echo ${{github.event.pull_request.number}} > ${{env.ARTIFACTS_DIR}}/pr - name: Get current job logs URL uses: Tiryoh/gha-jobid-action@v1 id: jobs with: - github_token: ${{ secrets.GITHUB_TOKEN }} - job_name: ${{ github.job }} + github_token: ${{secrets.GITHUB_TOKEN}} + job_name: ${{github.job}} - name: Create ASV machine config file run: asv machine --machine gh-runner --yes - name: Save comparison of PR against main branch run: | - git remote add upstream https://github.com/${{ github.repository }}.git + git remote add upstream https://github.com/${{github.repository}}.git git fetch upstream asv continuous upstream/main HEAD --verbose || true asv compare upstream/main HEAD --sort ratio --verbose | tee output - python -m lf_asv_formatter --asv_version "$(echo asv --version)" + python -m lf_asv_formatter --asv_version "$(asv --version | awk '{print $2}')" printf "\n\nClick [here]($STEP_URL) to view all benchmarks." >> output - mv output ${{ env.ARTIFACTS_DIR }} + mv output ${{env.ARTIFACTS_DIR}} env: - STEP_URL: "${{ steps.jobs.outputs.html_url }}#step:11:1" + STEP_URL: ${{steps.jobs.outputs.html_url}}#step:10:1 - name: Upload artifacts (PR number and benchmarks output) uses: actions/upload-artifact@v4 with: name: benchmark-artifacts - path: ${{ env.ARTIFACTS_DIR }} \ No newline at end of file + path: ${{env.ARTIFACTS_DIR}} \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d1278781..3054c0e8 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,9 +1,10 @@ + repos: # Compare the local template version to the latest remote template version # This hook should always pass. It will print a message if the local version # is out of date. - repo: https://github.com/lincc-frameworks/pre-commit-hooks - rev: v0.1.1 + rev: v0.1.2 hooks: - id: check-lincc-frameworks-template-version name: Check template version diff --git a/LICENSE b/LICENSE index aee3ea7c..56e64145 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2023, LINCC Frameworks +Copyright (c) 2024, LINCC Frameworks Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/docs/conf.py b/docs/conf.py index 0e410eb4..4d24b2b2 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,7 +15,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = "lsdb" -copyright = "2023, LINCC Frameworks" +copyright = "2024, LINCC Frameworks" author = "LINCC Frameworks" release = version("lsdb") # for example take major/minor