blob: 0a269449447c7d7fc801db48ef04aeab82644b67 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import importlib
import sys
if sys.version_info[:2] < (3, 8):
try:
from pypaimon.manifest import fastavro_py36_compat # noqa: F401
except ImportError:
pass
if sys.version_info[:2] < (3, 7):
# Module-level __getattr__ is unavailable before Python 3.7.
from pypaimon.catalog.catalog_factory import CatalogFactory
from pypaimon.filesystem.pvfs import PaimonVirtualFileSystem
from pypaimon.schema.schema import Schema
from pypaimon.tag.tag import Tag
from pypaimon.tag.tag_manager import TagManager
__all__ = [
"PaimonVirtualFileSystem",
"CatalogFactory",
"Schema",
"Tag",
"TagManager",
"SQLContext",
]
_LAZY_EXPORTS = {
"CatalogFactory": ("pypaimon.catalog.catalog_factory", "CatalogFactory"),
"PaimonVirtualFileSystem": (
"pypaimon.filesystem.pvfs", "PaimonVirtualFileSystem",
),
"Schema": ("pypaimon.schema.schema", "Schema"),
"Tag": ("pypaimon.tag.tag", "Tag"),
"TagManager": ("pypaimon.tag.tag_manager", "TagManager"),
"SQLContext": ("pypaimon_rust.datafusion", "SQLContext"),
}
# Resolution stays unlocked: submodules import these names at their top
# level, so a lock here would deadlock against Python's module locks.
def __getattr__(name):
target = _LAZY_EXPORTS.get(name)
if target is None:
raise AttributeError(
"module 'pypaimon' has no attribute {}".format(name))
module = importlib.import_module(target[0])
value = getattr(module, target[1])
globals()[name] = value
return value