"""Read YAML from stdin and write JSON to stdout."""

from __future__ import annotations

import datetime
import json
import sys

from yaml import load

try:
    from yaml import CSafeLoader as SafeLoader
except ImportError:
    from yaml import SafeLoader  # type: ignore[assignment]

# unique ISO date marker matching the one present in importer.py
ISO_DATE_MARKER = 'isodate:f23983df-f3df-453c-9904-bcd08af468cc:'


def default(value):
    """Custom default serializer which supports datetime.date types."""
    if isinstance(value, datetime.date):
        return '%s%s' % (ISO_DATE_MARKER, value.isoformat())

    raise TypeError('cannot serialize type: %s' % type(value))


json.dump(load(sys.stdin, Loader=SafeLoader), sys.stdout, default=default)
