conda / conda/ceps

Revamp the `conda/schemas` repository

Open
#52 5 comments 3 reactions 0 assignees View on GitHub
Dominant language
No language data
Stars
34
Forks
41
Avg merge
1h 46m
Merged PRs (30d)
1

Description

> Note: I was going to post this in `conda/schemas` directly but I can't tag the steering team from there, hence the issue here.

We have a few CEPs coming up (see #51 #8 #50) where it has been suggested that we document the proposed standards with an accompanying JSON schema in the `conda/schemas` repo.

As I start writing some of these schemas down, I will be using `pydantic` to write reusable models that can auto export JSON documents. I wonder if there's an interest in doing this retroactively for existing models that have not been standardized yet, so if this catches up, I'd like to propose the following repository structure:

- `examples/`: Real-life examples of the documented file types, that can be used in test suites if necessary.
- `schemas/`: Publishable JSON schema documents.
- `models/:` Python scripts that generate JSON schemas into `schemas/`. Most likely using `pydantic`.
- `scripts/`: Other helper utilities (e.g. refresh all JSON schemas from their models, publish to a HTML tree, etc).
- `tests/`: Automations to make sure the proposed models actually implement the existing "standards" (as in `examples/`), but also reject non-compliant files (e.g. extra keys due to typos).

Eventually I can foresee how the `models` directory becomes a collection of well structured modules with no extra dependencies (other than Pydantic) that would be best served as an importable Python package. Downstream packages (maybe including `conda`!) could benefit from using these models to transparently add typing their code paths, or at least compare their custom implementations to accepted community standards in their test suites.

I'd love to hear thoughts from @conda-incubator/steering! Thanks!

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.