"""Public Python API for qroissant."""

import importlib

__all__ = [
    "AsyncConnection",
    "AsyncPool",
    "AsyncRawResponse",
    "Atom",
    "Attribute",
    "Compression",
    "Connection",
    "DecodeError",
    "DecodeOptions",
    "DecodeOptionsBuilder",
    "Dictionary",
    "EncodeField",
    "EncodeFieldBuilder",
    "EncodeOptions",
    "EncodeOptionsBuilder",
    "Encoding",
    "Endpoint",
    "List",
    "ListInterpretation",
    "MessageHeader",
    "MessageType",
    "OperationError",
    "Pool",
    "PoolClosedError",
    "PoolError",
    "PoolMetrics",
    "PoolOptions",
    "Primitive",
    "ProtocolError",
    "QRuntimeError",
    "QroissantError",
    "RawResponse",
    "Shape",
    "StringInterpretation",
    "SymbolInterpretation",
    "Table",
    "TransportError",
    "Type",
    "UnionMode",
    "Value",
    "Vector",
    "__native_available__",
    "FormattingOptions",
    "FormattingOptionsBuilder",
    "RowDisplay",
    "decode",
    "encode",
    "get_formatting_options",
    "reset_formatting_options",
    "set_formatting_options",
]

try:
    _native = importlib.import_module("qroissant._native")
    for _name in __all__:
        if _name != "__native_available__":
            globals()[_name] = getattr(_native, _name)
    __native_available__ = True
except ImportError:  # pragma: no cover
    __native_available__ = False

if not __native_available__:
    __all__ = ["__native_available__"]
