from __future__ import annotations
import json
import sys
from typing import Any, Optional
from . import _native
__version__ = _native.__version__
__all__ = ["check", "check_bytes", "conformant", "failed", "main", "__version__"]
def check(target: str, max_rows: Optional[int] = None) -> dict[str, Any]:
return json.loads(_native.check(target, max_rows))
def check_bytes(name: str, data: bytes, max_rows: Optional[int] = None) -> dict[str, Any]:
return json.loads(_native.check_bytes(name, data, max_rows))
def failed(report: dict[str, Any], conformance_class: Optional[str] = None) -> list[str]:
return [
o["id"]
for o in report["outcomes"]
if o["status"] == "fail"
and (conformance_class is None or o["id"].startswith(f"/conf/{conformance_class}/"))
]
def conformant(report: dict[str, Any], conformance_class: str = "core") -> bool:
return not failed(report, conformance_class)
def main(argv: Optional[list[str]] = None) -> int:
code = _native.main(sys.argv if argv is None else ["geoparquet-validator", *argv])
if argv is None:
sys.exit(code)
return code