From c1d8fc0826947ac30b4ae1c57f3a7bd396dd01cd Mon Sep 17 00:00:00 2001 From: danielfromearth Date: Mon, 20 Apr 2026 14:49:45 -0400 Subject: [PATCH 1/2] docs: change sidebar logo to _images/asdc-logo.png --- _images/asdc-logo.png | Bin 0 -> 34720 bytes _quarto.yml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 _images/asdc-logo.png diff --git a/_images/asdc-logo.png b/_images/asdc-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6042fa55c7b1d85925edbe6630c57a07dc9855 GIT binary patch literal 34720 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 fHzFf)RLcJcNp2+xu;(=E00000NkvXXu0mjfz Date: Mon, 20 Apr 2026 14:58:41 -0400 Subject: [PATCH 2/2] docs: consolidate contributing guidance into contributing.qmd Move environment files, pre-commit hooks, and data file policy from README.md into contributing.qmd as the single source of truth. Slim README to quick-start setup with a pointer to the Contributing Guide. --- README.md | 37 ++------------------- additional_quarto_docs/contributing.qmd | 43 +++++++++++++++++++++---- 2 files changed, 39 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index bec2a38..dd593ac 100644 --- a/README.md +++ b/README.md @@ -26,41 +26,8 @@ quarto preview # live-preview the site at localhost ``` See the [Contributing Guide](https://nasa.github.io/ASDC_Data_and_User_Services/contributing.html) -for notebook style and content guidelines. - -### Environment files - -This repo has two environment definitions. They serve different purposes: - -| File | Managed by | Purpose | -|------|------------|---------| -| `pyproject.toml` / `uv.lock` | `uv` | **Local development.** All packages needed to run every notebook. Use `uv sync` to install. | -| `environment.yml` | conda (CI only) | **Site builds.** Minimal Jupyter kernel so Quarto can render pre-executed notebooks. You should not need this locally. | - -Quarto is configured with `freeze: true`, which means it never re-executes -notebook code during a build. It converts the already-rendered `.ipynb` outputs -straight to HTML. This keeps CI fast and avoids the need for data access -credentials in the build environment. - -### Pre-commit hooks - -The pre-commit configuration runs on every commit: - -- **gitleaks** — secret detection -- **ruff** — Python linting and formatting -- **markdown-link-check** — broken link detection -- **check-notebook-headers** — validates required sections (summary, prerequisites, author) -- **check-notebook-imports** — cross-references imports against `pyproject.toml` (warn-only) - -See [`.git-hooks/README.md`](.git-hooks/README.md) for details on the custom -notebook hooks. - -## Data files - -Notebooks should fetch data programmatically at runtime (e.g., via -`earthaccess` or `harmony-py`) rather than committing data files to the -repository. Large files such as `.nc`, `.hdf`, and `.h5` are not tracked -by git and should stay that way. +for notebook style guidelines, content requirements, pre-commit hooks, and data +file policy. ## Questions or issues? diff --git a/additional_quarto_docs/contributing.qmd b/additional_quarto_docs/contributing.qmd index 53a355a..49009c4 100644 --- a/additional_quarto_docs/contributing.qmd +++ b/additional_quarto_docs/contributing.qmd @@ -5,24 +5,55 @@ date: last-modified citation_url: https://nasa.github.io/ASDC_Data_and_User_Services/contributing.html --- -*This contributing guide is a draft, and still under active, open development.* +*This contributing guide is under active development.* -### Style Guidelines +## Style guidelines The following are recommended and/or enforced via the CI/CD workflow: -- **Python Version**: This project requires Python 3.10 or higher. All code and notebooks should be compatible with Python 3.10+. +- **Python version** — Python 3.10 or higher. All code and notebooks should be compatible with Python 3.10+. - Use `ruff` for linting and formatting. - Wherever possible and appropriate, move inline comments into notebook Markdown cells. - Wherever possible and appropriate, replace static references to local files with code that will programmatically pull data files when running a notebook. -### Content Guidelines +## Content guidelines Ensure each notebook contains, at a minimum: -- A quarto header with an auto-generated "last published" date included +- A Quarto header with an auto-generated "last published" date included - A Markdown header section with: - A **Summary** or **Overview** block - A **Prerequisites** block - A **Notebook Author/Affiliation** block -- Numbered sections that use Markdown hash symbols (#) for headings +- Numbered sections that use Markdown hash symbols (`#`) for headings + +## Data files + +Notebooks should fetch data programmatically at runtime (e.g., via +`earthaccess` or `harmony-py`) rather than committing data files to the +repository. Large files such as `.nc`, `.hdf`, and `.h5` are not tracked +by git and should stay that way. + +## Environment files + +This repo has two environment definitions. They serve different purposes: + +| File | Managed by | Purpose | +|------|------------|----------| +| `pyproject.toml` / `uv.lock` | `uv` | **Local development.** All packages needed to run every notebook. Use `uv sync` to install. | +| `environment.yml` | conda (CI only) | **Site builds.** Minimal Jupyter kernel so Quarto can render pre-executed notebooks. You should not need this locally. | + +Quarto is configured with `freeze: true`, which means it never re-executes +notebook code during a build. It converts the already-rendered `.ipynb` outputs +straight to HTML. This keeps CI fast and avoids the need for data access +credentials in the build environment. + +## Pre-commit hooks + +The pre-commit configuration runs on every commit: + +- **gitleaks** — secret detection +- **ruff** — Python linting and formatting +- **markdown-link-check** — broken link detection +- **check-notebook-headers** — validates required sections (summary, prerequisites, author) +- **check-notebook-imports** — cross-references imports against `pyproject.toml` (warn-only)