跳转到主要内容

支持懒加载导入的工具

项目描述

Lazy-Imports

Apache-2.0 License Contributor Covenant Python Version pypi
pytest Static Code Checks GitHub issues

这是一个Python工具,用于支持懒加载导入。类似地,模块的实际初始化不会在使用时发生,而是将 ModuleNotFoundError 延迟到模块实际使用时。这在使用各种可选依赖项时很有用,这些依赖项可能并未全部安装,或者有较长的加载时间以及/或较高的资源消耗。

目录

维护者

One Conversation
本项目管理由One Conversation团队负责,该团队隶属于德国电信股份公司。该项目基于来自HuggingFace_LazyModule和来自Optuna框架try_import()。感谢HuggingFace和Optuna同意将其作为一个独立包发布 🤗 ♥。

安装

Lazy-Imports可在Python包索引(PyPI)找到。可以使用pip进行安装。

$ pip install lazy-imports

LazyImporter的使用和示例

关于如何使用Lazy-Imports的一个良好且易于理解的例子可以在__init__.py文件中找到。以下为该文件内容。

import sys
from typing import TYPE_CHECKING

from lazy_imports import LazyImporter

from hpoflow.version import __version__


_import_structure = {
    "mlflow": [
        "normalize_mlflow_entry_name",
        "normalize_mlflow_entry_names_in_dict",
        "check_repo_is_dirty",
    ],
    "optuna": ["SignificanceRepeatedTrainingPruner"],
    "optuna_mlflow": ["OptunaMLflow"],
    "optuna_transformers": ["OptunaMLflowCallback"],
    "utils": ["func_no_exception_caller"],
}

# Direct imports for type-checking
if TYPE_CHECKING:
    from hpoflow.mlflow import (  # noqa: F401
        check_repo_is_dirty,
        normalize_mlflow_entry_name,
        normalize_mlflow_entry_names_in_dict,
    )
    from hpoflow.optuna import SignificanceRepeatedTrainingPruner  # noqa: F401
    from hpoflow.optuna_mlflow import OptunaMLflow  # noqa: F401
    from hpoflow.optuna_transformers import OptunaMLflowCallback  # noqa: F401
    from hpoflow.utils import func_no_exception_caller  # noqa: F401
else:
    sys.modules[__name__] = LazyImporter(
        __name__,
        globals()["__file__"],
        _import_structure,
        extra_objects={"__version__": __version__},
    )

try_import的使用和示例

try_import是一个上下文管理器,可以包装可选包的导入以延迟异常。这样,您不需要在每次调用函数时都导入包,但可以在模块顶部导入包。上下文管理器将异常延迟到实际需要使用包时。以下是一个示例:

from lazy_imports import try_import

with try_import() as optional_package_import:  # use try_import as a context manager
    import optional_package  # optional package that might not be installed

# other non optional functions here

def optional_function():  # optional function that uses the optional package
    optional_package_import.check()  # check if the import was ok or raise a meaningful exception

    optional_package.some_external_function()  # use the optional package here

支持和反馈

以下渠道可用于讨论、反馈和支持请求:

报告安全漏洞

该项目以安全和数据隐私为出发点,以确保您的数据安全。我们感谢安全研究人员和用户首先向我们报告漏洞。为确保您的请求得到及时处理,并保证漏洞的非公开性,请遵循以下指南。

请勿直接在GitHub上报告安全漏洞。GitHub问题可能会被公开查看,因此会导致直接披露。

有关数据隐私、安全概念和其他媒体请求的问题,请发送至opensource@telekom.de邮箱。

贡献

我们对开源的承诺意味着我们鼓励并实际上在鼓励所有感兴趣的相关方参与进来,成为我们的开发者社区的一部分。

鼓励贡献和反馈,并始终欢迎。有关如何贡献以及更多贡献信息,请参阅我们的贡献指南

行为准则

本项目已采用贡献者公约作为我们的行为准则。请参阅我们贡献者公约行为准则的详细信息。所有贡献者都必须遵守行为准则。

许可协议

版权(c)2021 Philip May德国电信股份公司
版权(c)2020,2021 The HuggingFace Team
版权(c)2018 Preferred Networks, Inc.

本软件根据Apache License, Version 2.0(以下简称“许可证”)许可;除非遵守许可证,否则不得使用此文件。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”基础分发,不提供任何明示或暗示的保证或条件。有关许可证中规定的具体权限和限制,请参阅许可证。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

lazy_imports-0.3.1.tar.gz (15.8 kB 查看哈希值)

上传时间

构建分发

lazy_imports-0.3.1-py3-none-any.whl (12.4 kB 查看哈希值)

上传时间 Python 3

支持者