ads2_2022/code/python/models/config-schema.yaml

169 lines
4.7 KiB
YAML

openapi: 3.0.3
info:
version: 0.2.0
title: Schemata for config models
servers:
- url: "."
paths: {}
components:
schemas:
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Config
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Config:
description: |-
Data model for all parts of the configuration.
type: object
required:
- info
- options
- calls
properties:
info:
$ref: "#/components/schemas/Info"
options:
$ref: "#/components/schemas/AppOptions"
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Info
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Info:
description: |-
Contains meta data about project.
type: object
required:
- title
- description
- author
properties:
title:
type: string
description:
type: string
author:
type: string
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# App Options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AppOptions:
description: |-
Options pertaining to the rudimentary setup of the app.
type: object
required:
- log-level
- tsp
- tarjan
- hirschberg
- rucksack
properties:
log-level:
$ref: '#/components/schemas/EnumLogLevel'
verbose:
description: Global setting for verbosity.
type: boolean
default: false
tarjan:
type: object
required:
- verbose
properties:
verbose:
type: boolean
default: false
tsp:
type: object
required:
- verbose
properties:
verbose:
type: boolean
default: false
hirschberg:
type: object
required:
- penality-mismatch
- penality-gap
- move-priorities
properties:
penality-mismatch:
type: number
default: 1
penality-gap:
type: number
default: 1
move-priorities:
type: object
properties:
diagonal:
type: integer
minimum: 0
default: 0
horizontal:
type: integer
minimum: 0
default: 1
vertical:
type: integer
minimum: 0
default: 2
verbose:
type: array
items:
$ref: '#/components/schemas/EnumHirschbergVerbosity'
default: []
show:
type: array
items:
$ref: '#/components/schemas/EnumHirschbergShow'
default: []
rucksack:
type: object
required: []
properties:
verbose:
type: boolean
default: false
show:
type: array
items:
$ref: '#/components/schemas/EnumRucksackShow'
default: []
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enum LogLevel
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EnumLogLevel:
description: |-
Enumeration of settings for log level.
type: string
enum:
- INFO
- DEBUG
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enum Hirschberg - Verbosity options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EnumHirschbergVerbosity:
description: |-
Enumeration of verbosity options for Hirschberg
type: string
enum:
- COSTS
- MOVES
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enum Hirschberg - display options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EnumHirschbergShow:
description: |-
Enumeration of display options for Hirschberg
type: string
enum:
- TREE
- ATOMS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enum Rucksack - display options
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EnumRucksackShow:
description: |-
Enumeration of display options for the Rucksack problem
type: string
enum:
- ALL-WEIGHTS