Metadata-Version: 2.4
Name: omdf
Version: 0.0.2
Summary: A tiny specification for defining mirrors, made for both humans and programs to consume.
Author: Emily
Author-email: Emily <emily@kemonomimi.moe>
License-Expression: MIT
Classifier: Intended Audience :: Developers
Requires-Dist: msgspec>=0.21.1
Requires-Dist: pyyaml>=6.0.3
Requires-Python: >=3.14
Project-URL: Repository, https://forge.kemonomimi.moe/otakuemily/omdf.git
Project-URL: Issues, https://forge.kemonomimi.moe/otakuemily/omdf/issues
Description-Content-Type: text/markdown

# Open Mirror Definition File 

A tiny specification for defining mirrors, made for both humans and programs to consume.

## Why does this exist?

As I started migrating to a one canonical to many read-only mirrors model for my repositories, it got really hard to communicate to people *(and now AIs)* where and how to find these mirrors and in what order to try them. So it sparked this, a tiny specification for me and hopefully others to specify how and where to access their code.

## What does an OMDF.yml file look like?

A simple OMDF.yml file looks something like this...

```yaml
# Open Mirror Definition File
# ---------------------------
# Higher equals better
# 
# View the specification and its Python type definitions here:
# https://forge.kemonomimi.moe/otakuemily/omdf

mirrors:
  github.com:
    source: https://github.com/amy/a-super-cool-project
    weight: 30
    writable: false

  gitlab.com:
    source: https://gitlab.com/amy/a-super-cool-project
    weight: 20
    writable: false

  codeberg.org:
    source: https://codeberg.org/amy/a-super-cool-project
    weight: 10
    canonical: true
    writable: true
```

## OMDF Rules

- A OMDF file MUST be represented in YAML (with either `.yml` or `.yaml` extention).
- The file MUST be called `OMDF.{yml,yaml}`.

## OMDF SDK

The specification type definitions SDK can be found on [PyPI](https://pypi.org/project/omdf/) and the [Kemonoforge Package Registry](https://forge.kemonomimi.moe/OtakuEmily/-/packages/pypi/omdf/).