fspacker.utils package

Submodules

fspacker.utils.checksum module

fspacker.utils.checksum.calc_checksum(filepath: Path, block_size: int = 4096) str[源代码]

计算文件校验和.

参数:
  • filepath (Path) -- 文件路径.

  • block_size (int, optional) -- 读取文件块大小. Defaults to 4096.

返回:

校验和.

返回类型:

str

fspacker.utils.package module

fspacker.utils.package.is_version_satisfied(cached_file: Path, req: Requirement) bool[源代码]

检查缓存文件版本是否满足需求.

参数:
  • cached_file -- 缓存文件.

  • req -- 依赖.

返回:

是否满足版本约束.

返回类型:

bool

fspacker.utils.package.get_cached_package(req: Requirement) Path | None[源代码]

获取满足版本约束的缓存文件.

参数:

req -- 依赖.

返回:

满足版本约束的缓存文件, 无则返回None.

返回类型:

pathlib.Path

fspacker.utils.package.download_to_libs_dir(req: Requirement) Path[源代码]

下载满足版本的包到缓存.

参数:

req -- 依赖.

返回:

下载的文件.

返回类型:

Path

fspacker.utils.package.unpack_wheel(wheel_file: Path, dest_dir: Path, excludes: set[str] | None = None, patterns: set[str] | None = None) None[源代码]
fspacker.utils.package.install_package(req: Requirement, lib_file: Path, dest_dir: Path, *, simplify: bool = False) None[源代码]

从缓存安装到site-packages.

fspacker.utils.package.extract_package_version(filename: str) str[源代码]

从文件名提取版本号, 支持任意长度版本号如 20.0 或 1.20.3.4.

适配格式:

package-1.2.3.tar.gz package-20.0-py3-none-any.whl Package_Name-1.20.3.4.whl

参数:

filename -- 文件名.

返回:

版本号.

返回类型:

str

fspacker.utils.requirement module

本模块包含库所需常用函数.

class fspacker.utils.requirement.RequirementParser[源代码]

基类:object

解析需求字符串为Requirement对象.

classmethod normalize(req_str: str) str[源代码]

规范化需求字符串.

处理特殊情况: 1. 括号包裹的版: shiboken2 (==5.15.2.1) -> shiboken2==5.15.2.1 2. 不规范的版本分隔符: package@1.0 -> package==1.0 3. 移除多余空格和注释.

参数:

req_str -- 需求字符串.

返回:

规范化后的需求字符串, 如果解析失败, 返回 None.

classmethod parse(req_str: str) Requirement | None[源代码]

安全解析需求字符串为Requirement对象.

参数:

req_str -- 需求字符串.

返回:

Requirement对象, 如果解析失败, 返回 None.

抛出:

ProjectPackError -- 解析失败

fspacker.utils.url module

exception fspacker.utils.url.ParseUrlError[源代码]

基类:ValueError

解析 url 失败.

fspacker.utils.url.check_url_access_time(url: str) float[源代码]

测试 url 访问时间.

参数:

url -- 待访问的 url.

返回:

秒.

返回类型:

访问时间, 单位

fspacker.utils.url.get_fastest_url(urls: dict[str, str]) str[源代码]

从给定的URL字典中找出访问速度最快的链接。.

参数:

urls -- 包含多个URL的字典, 格式为 {名称: URL}

返回:

访问速度最快的URL字符串

备注

如果所有URL都无法访问, 将返回空字符串

fspacker.utils.url.validate_url_scheme(url: str, allowed_schemes: set[str]) None[源代码]

验证URL scheme是否被允许.

参数:
  • url -- 待验证的URL

  • allowed_schemes -- 允许的scheme集合

抛出:

ParseUrlError -- 如果scheme不被允许

fspacker.utils.url.safe_read_url_data(url: str, timeout: int = 10) bytes | None[源代码]

读取 url 数据.

参数:
  • url -- 待读取的 url.

  • timeout -- 超时时间, 单位: 秒.

返回:

读取到的数据, 如果读取失败, 返回 None.

抛出:

ParseUrlError -- 如果 scheme 不被允许

Module contents