Skip to content

Commit 1f89c4c

Browse files
Update and automate report figure to map repos to objectives (#301)
* Update reporting image to map repos to objectives * Remove extra file * Update objectives.md Co-authored-by: Aimee Barciauskas <[email protected]> * Apply suggestions from code review --------- Co-authored-by: Aimee Barciauskas <[email protected]>
1 parent 0d0afcd commit 1f89c4c

File tree

12 files changed

+1363
-235
lines changed

12 files changed

+1363
-235
lines changed

.github/workflows/deploy.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ on:
44
push:
55
branches:
66
- main
7-
- fixup-docs
8-
- ab/fy26-roadmap
7+
pull_request:
8+
branches:
9+
- main
910

1011
jobs:
1112
build:
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Update Reports
2+
3+
on:
4+
schedule:
5+
# Run every Monday at 9 AM ET (14:00 UTC)
6+
- cron: '0 14 * * 1'
7+
push:
8+
branches:
9+
- main
10+
paths:
11+
- 'reports/*.py'
12+
- 'reports/pyproject.toml'
13+
workflow_dispatch:
14+
15+
jobs:
16+
update-reports:
17+
runs-on: ubuntu-latest
18+
permissions:
19+
contents: write
20+
pull-requests: write
21+
22+
steps:
23+
- name: Checkout repository
24+
uses: actions/checkout@v5
25+
26+
- name: Install uv
27+
uses: astral-sh/setup-uv@v7
28+
with:
29+
version: "0.9.*"
30+
enable-cache: true
31+
32+
- name: Generate config data
33+
working-directory: reports
34+
env:
35+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
run: uv run generate_config.py
37+
38+
- name: Generate commit data
39+
working-directory: reports
40+
env:
41+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
42+
run: uv run main.py
43+
44+
- name: Generate plot
45+
working-directory: reports
46+
run: uv run plot.py
47+
48+
- name: Generate docs page
49+
working-directory: reports
50+
run: uv run generate_docs.py
51+
52+
- name: Create Pull Request
53+
uses: peter-evans/[email protected]
54+
with:
55+
commit-message: "Update reports for ${{ github.run_id }}"
56+
title: "Update reports"
57+
body: |
58+
Automated update of commit reports and visualization.
59+
60+
Generated by GitHub Actions workflow.
61+
branch: update-reports
62+
add-paths: |
63+
reports/output/
64+
docs/images/
65+
docs/objectives.md

docs/images/pi-26.1.png

183 KB
Loading

docs/objectives.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
# Quarterly Objectives
2+
3+
This page tracks quarterly objectives and their related repositories across Program Increments (PIs).
4+
5+
## Current PI: 26.1
6+
7+
| # | Objective | Contributors | Repos |
8+
|---|-----------|--------------|-------|
9+
| [#244](https://github.com/NASA-IMPACT/veda-odd/issues/244) | 🗺️ Add dynamic tiling and timeseries support for Virtual Zar... | jbusecke, hrodmn | titiler, icechunk |
10+
| [#245](https://github.com/NASA-IMPACT/veda-odd/issues/245) | 🌍 Add dynamic tiling and timeseries support for datasets in ... | abarciauskas-bgse, hrodmn | titiler, titiler-cmr, titiler-lambda-layer, titiler-md-demo, python_cmr |
11+
| [#246](https://github.com/NASA-IMPACT/veda-odd/issues/246) | 🤖 Support virtualization of additional data products | sharkinsspatial, maxrjones, jbusecke | virtualizarr, obspec-utils, virtual-tiff, hrrr-parser, async-tiff, virtualizarr-data-pipelines, icechunk |
12+
| [#247](https://github.com/NASA-IMPACT/veda-odd/issues/247) | 🛰 Explore scalable, cloud native approaches for search, disc... | sharkinsspatial, kylebarron | obstore, obspec, zarr-datafusion-search, geoarrow-rs, arrow-zarr |
13+
| [#248](https://github.com/NASA-IMPACT/veda-odd/issues/248) | 🤗 Support community adoption of the technologies incubated b... | sharkinsspatial, chuckwondo, maxrjones, abarciauskas-bgse | geozarr-spec, zarr-python, multiscales, geo-proj, spatial, datacube-guide, geozarr-examples, warp-resample-profiling, pangeo.io, pangeo-docker-images, earthdata-cloud-cookbook |
14+
15+
---
16+
17+
<details markdown>
18+
<summary>PI 25.4 (8 objectives, 5 closed)</summary>
19+
20+
| # | Objective | State | Contributors |
21+
|---|-----------|-------|--------------|
22+
| [#121](https://github.com/NASA-IMPACT/veda-odd/issues/121) | Visualize Web-Optimized Zarr (WOZ) in VEDA (previe... | closed | maxrjones |
23+
| [#122](https://github.com/NASA-IMPACT/veda-odd/issues/122) | Research, develop and document methods for Zarr an... | closed | maxrjones, kylebarron |
24+
| [#197](https://github.com/NASA-IMPACT/veda-odd/issues/197) | 🎬 TiTiler-CMR is production ready | open | abarciauskas-bgse, hrodmn |
25+
| [#198](https://github.com/NASA-IMPACT/veda-odd/issues/198) | 🚀 Dataset support for VEDA instances | closed | maxrjones, jbusecke |
26+
| [#203](https://github.com/NASA-IMPACT/veda-odd/issues/203) | 🗺️Research, develop and document methods for Zarr ... | open | maxrjones |
27+
| [#204](https://github.com/NASA-IMPACT/veda-odd/issues/204) | 🛠️ Zarr Development | open | d-v-b, maxrjones |
28+
| [#205](https://github.com/NASA-IMPACT/veda-odd/issues/205) | 🤗 Community engagement | closed | sharkinsspatial, chuckwondo, maxrjones, abarciauskas-bgse |
29+
| [#206](https://github.com/NASA-IMPACT/veda-odd/issues/206) | 📦 Obstore outreach | closed | chuckwondo, kylebarron |
30+
31+
</details>
32+
33+
<details markdown>
34+
<summary>PI 25.3 (6 objectives, 4 closed)</summary>
35+
36+
| # | Objective | State | Contributors |
37+
|---|-----------|-------|--------------|
38+
| [#118](https://github.com/NASA-IMPACT/veda-odd/issues/118) | Support CMR Modernization | open | sharkinsspatial, kylebarron |
39+
| [#119](https://github.com/NASA-IMPACT/veda-odd/issues/119) | Continue to Build Out the VirtualiZarr Ecosystem | closed | sharkinsspatial, maxrjones |
40+
| [#124](https://github.com/NASA-IMPACT/veda-odd/issues/124) | Publish Cloud-Optimized Datasets | open | chuckwondo, abarciauskas-bgse |
41+
| [#126](https://github.com/NASA-IMPACT/veda-odd/issues/126) | Support TiTiler-CMR Adoption | closed | sharkinsspatial, hrodmn |
42+
| [#127](https://github.com/NASA-IMPACT/veda-odd/issues/127) | Community Involvement | closed | maxrjones, abarciauskas-bgse, hrodmn |
43+
| [#165](https://github.com/NASA-IMPACT/veda-odd/issues/165) | Foundational Zarr-Python and Xarray Contributions | closed | d-v-b, maxrjones |
44+
45+
</details>
46+
47+
<details markdown>
48+
<summary>PI 25.2 (8 objectives, 8 closed)</summary>
49+
50+
| # | Objective | State | Contributors |
51+
|---|-----------|-------|--------------|
52+
| [#31](https://github.com/NASA-IMPACT/veda-odd/issues/31) | Increase data format support in VirtualiZarr | closed | chuckwondo, maxrjones |
53+
| [#34](https://github.com/NASA-IMPACT/veda-odd/issues/34) | Visualize OCO-3 Datasets in VEDA | closed | abarciauskas-bgse |
54+
| [#35](https://github.com/NASA-IMPACT/veda-odd/issues/35) | Deliver Virtual Zarr Stores for NASA Datasets Usin... | closed | abarciauskas-bgse |
55+
| [#36](https://github.com/NASA-IMPACT/veda-odd/issues/36) | Support for Modernizing VirtualiZarr to use zarr-p... | closed | sharkinsspatial, abarciauskas-bgse |
56+
| [#37](https://github.com/NASA-IMPACT/veda-odd/issues/37) | Support CMR Modernization | closed | sharkinsspatial, kylebarron |
57+
| [#40](https://github.com/NASA-IMPACT/veda-odd/issues/40) | Upgrade titiler and titiler-xarray to zarr-Python ... | closed | maxrjones |
58+
| [#41](https://github.com/NASA-IMPACT/veda-odd/issues/41) | Draft Web-Optimized Zarr (WOZ) Standard | closed | maxrjones |
59+
| [#76](https://github.com/NASA-IMPACT/veda-odd/issues/76) | Demonstrate how to tile HLS using titiler-cmr | closed | hrodmn |
60+
61+
</details>
62+
63+
---
64+
65+
## Commits Per Repository
66+
67+
The commits per repository chart uses color-coding to show which objective each repo contributes to. Repos that contribute to multiple objectives are shown with split bars.
68+
69+
![PI-26.1 Commits per Repository](images/pi-26.1.png)
70+
71+
---
72+
73+
## Configuration
74+
75+
Objectives are configured in [`reports/config.py`](https://github.com/NASA-IMPACT/veda-odd/blob/main/reports/config.py).
76+
77+
To regenerate this page from config:
78+
79+
```bash
80+
cd reports
81+
uv run generate_docs.py
82+
```
83+
84+
See [FY26 Roadmap](./fy26-roadmap.md) for the broader context of these objectives.

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ extra:
1111
nav:
1212
- "index.md"
1313
- FY26 Roadmap: "fy26-roadmap.md"
14+
- PI Objectives: "objectives.md"
1415
- ODD Products: "products.md"
1516

1617
theme:

reports/README.md

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,40 @@
66
2. Select public repositories
77
3. Add new token as the environment variable `GH_ODD_PAT`
88

9+
## Configuration
10+
11+
The `config.py` file contains:
12+
- `TIME_RANGE`: Start and end dates for commit analysis
13+
- `OBJECTIVES`: Quarterly objectives with repos and contributors per objective
14+
15+
### Regenerating objectives from GitHub
16+
17+
To fetch the latest objectives from GitHub issues:
18+
19+
```bash
20+
uv run generate_config.py
21+
```
22+
23+
This generates `objectives_config.py` with objectives and contributors from issues labeled `pi-*-objective`. You'll need to manually add repos to each objective, then copy to `config.py`.
24+
25+
### Regenerating docs/objectives.md
26+
27+
To regenerate the objectives documentation page from config:
28+
29+
```bash
30+
uv run generate_docs.py
31+
```
32+
933
## Generating data
1034

11-
1. Update the dates in config.py
12-
2. Add any new contributors to config.py
13-
3. Add any new repositories to config.py
14-
4. Run `uv run main.py`
15-
5. Run `uv run plot.py`
35+
1. Run `uv run main.py` (uses 10 parallel workers by default)
36+
2. Run `uv run plot.py`
37+
38+
`TIME_RANGE` is automatically set to the current fiscal quarter (Q1: Oct-Dec, Q2: Jan-Mar, Q3: Apr-Jun, Q4: Jul-Sep).
39+
40+
The generated chart colors bars by PI objective (see [objectives page](https://nasa-impact.github.io/veda-odd/objectives) for details).
41+
42+
## Performance
43+
44+
- **generate_config.py**: Uses GitHub search API to fetch only objective issues (~2-3 seconds)
45+
- **main.py**: Parallelizes API calls with ThreadPoolExecutor (10x faster than sequential)

0 commit comments

Comments
 (0)