-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #340 from lincc-frameworks/update_ppt_for_asv
Update to Python Project Template v1.4.5; Integrate with ASV Benchmarking
- Loading branch information
Showing
21 changed files
with
656 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,18 @@ | ||
# Changes here will be overwritten by Copier | ||
_commit: v1.3.3 | ||
_commit: v1.4.5 | ||
_src_path: gh:lincc-frameworks/python-project-template | ||
author_email: [email protected] | ||
author_name: Doug Branton | ||
create_example_module: true | ||
create_example_module: false | ||
custom_install: true | ||
include_benchmarks: true | ||
include_docs: true | ||
include_notebooks: true | ||
module_name: tape | ||
mypy_type_checking: none | ||
package_name: tape | ||
preferred_linter: black | ||
project_license: MIT | ||
project_name: tape | ||
project_organization: lincc-frameworks | ||
use_gitlfs: none | ||
use_isort: false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
<!-- | ||
Thank you for your contribution to the repo :) | ||
Pull Request (PR) Instructions: | ||
Provide a general summary of your changes in the Title above. Fill out each section of the template, and replace the space with an `x` in all the boxes that apply. If you're unsure about any of these, don't hesitate to ask. We're here to help! Once you are satisfied with the pull request, click the "Create pull request" button to submit it for review. | ||
Before submitting this PR, please ensure that your input and responses are entered in the designated space provided below each section to keep all project-related information organized and easily accessible. | ||
How to link to a PR: | ||
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue | ||
--> | ||
|
||
## Change Description | ||
<!--- | ||
Describe your changes in detail. In your description, you should answer questions like "Why is this change required? What problem does it solve?". | ||
If it fixes an open issue, please link to the issue here. If this PR closes an issue, put the word 'closes' before the issue link to auto-close the issue when the PR is merged. | ||
--> | ||
- [ ] My PR includes a link to the issue that I am addressing | ||
|
||
|
||
|
||
## Solution Description | ||
<!-- Please explain the technical solution that I have provided and how it addresses the issue or feature being implemented --> | ||
|
||
|
||
|
||
## Code Quality | ||
- [ ] My code builds (or compiles) cleanly without any errors or warnings | ||
- [ ] My code contains relevant comments and necessary documentation | ||
|
||
## Project-Specific Pull Request Checklists | ||
- [ ] I have added a function that requires a sync_tables command, and have added the neccesary sync_tables call | ||
<!--- Please only use the checklist that apply to your change type(s) --> | ||
|
||
### Bug Fix Checklist | ||
- [ ] My fix includes a new test that breaks as a result of the bug (if possible) | ||
- [ ] My change includes a breaking change | ||
- [ ] My change includes backwards compatibility and deprecation warnings (if possible) | ||
|
||
### New Feature Checklist | ||
- [ ] I have added or updated the docstrings associated with my feature using the [NumPy docstring format](https://numpydoc.readthedocs.io/en/latest/format.html) | ||
- [ ] I have updated the tutorial to highlight my new feature (if appropriate) | ||
- [ ] I have added unit/End-to-End (E2E) test cases to cover my new feature | ||
- [ ] My change includes a breaking change | ||
- [ ] My change includes backwards compatibility and deprecation warnings (if possible) | ||
|
||
### Documentation Change Checklist | ||
- [ ] Any updated docstrings use the [NumPy docstring format](https://numpydoc.readthedocs.io/en/latest/format.html) | ||
|
||
### Build/CI Change Checklist | ||
- [ ] If required or optional dependencies have changed (including version numbers), I have updated the README to reflect this | ||
- [ ] If this is a new CI setup, I have added the associated badge to the README | ||
|
||
<!-- ### Version Change Checklist [For Future Use] --> | ||
|
||
### Other Change Checklist | ||
- [ ] Any new or updated docstrings use the [NumPy docstring format](https://numpydoc.readthedocs.io/en/latest/format.html). | ||
- [ ] I have updated the tutorial to highlight my new feature (if appropriate) | ||
- [ ] I have added unit/End-to-End (E2E) test cases to cover any changes | ||
- [ ] My change includes a breaking change | ||
- [ ] My change includes backwards compatibility and deprecation warnings (if possible) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
# 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: | ||
push: | ||
branches: [ main ] | ||
|
||
env: | ||
PYTHON_VERSION: "3.10" | ||
WORKING_DIR: ${{ github.workspace }}/benchmarks | ||
|
||
concurrency: | ||
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@v3 | ||
with: | ||
path: ~/.cache/pip | ||
key: python-${{ env.PYTHON_VERSION }} | ||
|
||
- name: Set up Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v4 | ||
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 }} | ||
|
||
steps: | ||
- name: Checkout main branch of the repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Cache Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/cache@v3 | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
# 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: | ||
schedule: | ||
- cron: 45 6 * * * | ||
workflow_dispatch: | ||
|
||
env: | ||
PYTHON_VERSION: "3.10" | ||
WORKING_DIR: ${{ github.workspace }}/benchmarks | ||
NIGHTLY_HASH_FILE: nightly-hash | ||
|
||
jobs: | ||
|
||
asv-nightly: | ||
runs-on: ubuntu-latest | ||
|
||
defaults: | ||
run: | ||
working-directory: ${{ env.WORKING_DIR }} | ||
|
||
steps: | ||
- name: Checkout main branch of the repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Cache Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/cache@v3 | ||
with: | ||
path: ~/.cache/pip | ||
key: python-${{ env.PYTHON_VERSION }} | ||
|
||
- name: Set up Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v4 | ||
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@v3 | ||
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@v3 | ||
with: | ||
path: ${{ env.WORKING_DIR }} | ||
key: nightly-results-${{ steps.nightly-dates.outputs.today }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
# This workflow will run benchmarks with airspeed velocity (asv) for pull requests. | ||
# It will compare the performance of the main branch with the performance of the merge | ||
# with the new changes and publish a comment with this assessment. | ||
|
||
name: Run ASV benchmarks for PR | ||
|
||
on: | ||
pull_request: | ||
branches: [ main ] | ||
|
||
env: | ||
PYTHON_VERSION: "3.10" | ||
WORKING_DIR: ${{ github.workspace }}/benchmarks | ||
|
||
concurrency: | ||
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@v3 | ||
with: | ||
path: ~/.cache/pip | ||
key: python-${{ env.PYTHON_VERSION }} | ||
|
||
- name: Set up Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: "${{ env.PYTHON_VERSION }}" | ||
|
||
asv-pr: | ||
runs-on: ubuntu-latest | ||
needs: setup-python | ||
|
||
permissions: | ||
actions: read | ||
pull-requests: write | ||
|
||
defaults: | ||
run: | ||
working-directory: ${{ env.WORKING_DIR }} | ||
|
||
steps: | ||
- name: Checkout PR branch of the repository | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
|
||
- name: Cache Python ${{ env.PYTHON_VERSION }} | ||
uses: actions/cache@v3 | ||
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 lf-asv-formatter | ||
- name: Get current job logs URL | ||
uses: Tiryoh/gha-jobid-action@v0 | ||
id: jobs | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
job_name: ${{ github.job }} | ||
|
||
- name: Create ASV machine config file | ||
run: asv machine --machine gh-runner --yes | ||
|
||
- name: Run comparison of PR against main branch | ||
run: | | ||
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)" | ||
printf "\n\nClick [here]($STEP_URL) to view all benchmarks." >> output | ||
env: | ||
STEP_URL: "${{ steps.jobs.outputs.html_url }}#step:8:1" | ||
|
||
- name: Find benchmarks comment | ||
uses: peter-evans/find-comment@v2 | ||
id: find-comment | ||
with: | ||
issue-number: ${{ github.event.pull_request.number }} | ||
comment-author: 'github-actions[bot]' | ||
body-includes: view all benchmarks | ||
|
||
- name: Create or update benchmarks comment | ||
uses: peter-evans/create-or-update-comment@v3 | ||
with: | ||
comment-id: ${{ steps.find-comment.outputs.comment-id }} | ||
issue-number: ${{ github.event.pull_request.number }} | ||
body-path: ${{ env.WORKING_DIR }}/output | ||
edit-mode: replace |
Oops, something went wrong.