File: spec.py

package info (click to toggle)
jupyterlab-server 2.25.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 676 kB
  • sloc: python: 3,454; makefile: 13; sh: 2
file content (31 lines) | stat: -rw-r--r-- 825 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

"""OpenAPI spec utils."""
from __future__ import annotations

import os
import typing
from pathlib import Path

if typing.TYPE_CHECKING:
    from openapi_core.spec.paths import Spec

HERE = Path(os.path.dirname(__file__)).resolve()


def get_openapi_spec() -> Spec:
    """Get the OpenAPI spec object."""
    from openapi_core.spec.paths import Spec

    openapi_spec_dict = get_openapi_spec_dict()
    return Spec.from_dict(openapi_spec_dict)  # type:ignore[arg-type]


def get_openapi_spec_dict() -> dict[str, typing.Any]:
    """Get the OpenAPI spec as a dictionary."""
    from ruamel.yaml import YAML

    path = HERE / "rest-api.yml"
    yaml = YAML(typ="safe")
    return yaml.load(path.read_text(encoding="utf-8"))