jupyterlite_core#

配置#

JupyterLite 生命周期可观察的配置对象

class jupyterlite_core.config.LiteBuildConfig(**kwargs)#

JupyterLite 构建的描述

这很可能被配置: - 来自环境变量 - 在 pyproject.toml 中 - 来自命令行 使用直接实例化作为最后的选择。

这在规模上与 jupyter_server_config.json 相似,并将利用 {sys.prefix}/share/jupyter_{notebook,server}_config.d/ 加载器路径

app_archive: Path#

JUPYTERLITE_APP_ARCHIVE

类型:

要使用的应用程序存档。env

apps: Tuple[str]#

要明确包含在构建中的 Lite 应用程序,例如 lab、tree、repl

base_url: str#

JUPYTERLITE_BASE_URL

类型:

[serve] 要使用的前缀。env

cache_dir: Path#

缓存文件夹

contents: Tuple[Path]#

要添加和索引的内容

disable_addons: Tuple[str]#

应该是一个字典

类型:

跳过加载这些附加组件的 entry_point。TODO

extra_file_types: dict#

服务器和浏览器额外的 JupyterLab 兼容文件类型

extra_http_headers: dict#

要添加到所有已服务响应的默认标头的 HTTP 标头

extra_ignore_contents: Tuple[str]#

永远不应包含为内容的附加路径正则表达式

federated_extensions: Tuple[str]#

查找 federated_extensions 的本地路径或 URL

file_types: dict#

服务器和浏览器 JupyterLab 兼容文件类型

http_headers: dict#

要添加到所有已服务响应的 HTTP 标头

ignore_contents: Tuple[str]#

永远不应包含为内容的路径正则表达式

ignore_sys_prefix: Union[bool, Tuple[str]]#

忽略来自 sys.prefix 的组件

lite_dir: Path#

JUPYTERLITE_DIR

类型:

JupyterLite 项目的根文件夹。env

no_libarchive: bool#

不要检测和使用 libarchive-c 以获得更高的性能和更多存档

no_sourcemaps: bool#

从应用程序和扩展中删除所有源映射

no_unused_shared_packages: bool#

删除 –apps 未使用的任何共享包

output_archive: Path#

JUPYTERLITE_OUTPUT_ARCHIVE

类型:

要创建的存档。env

output_dir: Path#

JUPYTERLITE_OUTPUT_DIR

类型:

构建 JupyterLite 站点的位置。env

port: int#

JUPYTERLITE_PORT

类型:

[serve] 在 http 上(不安全地)公开的端口

类型:

//127.0.0.1. env

settings_overrides: Tuple[str]#

要包含的特定 overrides.json

source_date_epoch: Optional[int]#

触发可重复构建,将时间戳限制为该值

常量#

JupyterLite 使用的众所周知(和其他)常量

jupyterlite_core.constants.ADDON_ENTRYPOINT = 'jupyterlite.addon.v0'#

加载项(包括核心)的扩展点

jupyterlite_core.constants.ALL_APP_ARCHIVES = [PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/jupyterlite/checkouts/stable/py/jupyterlite-core/jupyterlite_core/jupyterlite-app-0.3.0.tgz')]#

所有存档

jupyterlite_core.constants.ALL_JSON = 'all.json'#

用于响应夹具(例如设置)的常用文件名

jupyterlite_core.constants.API_CONTENTS = 'api/contents'#

Jupyter 内容 API 的路由

jupyterlite_core.constants.C_LOCALE = 'C'#

用于可重复文件排序的区域设置

jupyterlite_core.constants.DEFAULT_FILE_TYPES = {'base64': {'gzip': [['.tgz', '.gz', '.gzip'], ['application/gzip']], 'ico': [['.ico'], ['image/x-icon']], 'jpeg': [['.jpeg', '.jpg'], ['image/jpeg']], 'pdf': [['.pdf'], ['application/pdf']], 'png': [['.png'], ['image/png']], 'wasm': [['.wasm'], ['application/wasm']], 'wheel': [['.whl'], ['octet/stream', 'application/x-wheel+zip']]}, 'json': {'geojson': [['.geojson'], ['application/geo+json']], 'ipynb': [['.ipynb'], ['application/x-ipynb+json']], 'jsmap': [['.map'], ['application/json']], 'json': [['.json'], ['application/json']]}, 'text': {'css': [['.css'], ['text/css']], 'csv': [['.csv'], ['text/csv']], 'fasta': [['.fasta'], ['text/plain']], 'html': [['.html'], ['text/html']], 'ical': [['.ical', '.ics', '.ifb', '.icalendar'], ['text/calendar']], 'js': [['.js', '.mjs'], ['application/javascript']], 'manifest': [['.manifest'], ['text/cache-manifest']], 'md': [['.md', '.markdown'], ['text/markdown']], 'plain': [['.txt'], ['text/plain']], 'py': [['.py'], ['text/x-python', 'application/x-python-code']], 'svg': [['.svg'], ['image/svg+xml']], 'toml': [['.toml'], ['application/toml']], 'vue': [['.vue'], ['text/plain']], 'xml': [['.xml'], ['application/xml']], 'yaml': [['.yaml', '.yml'], ['application/x-yaml']]}}#

足以服务于我们所有演示文件的各种文件类型

jupyterlite_core.constants.DEFAULT_OUTPUT_DIR = '_output'#

需要一个更好的规范位置

jupyterlite_core.constants.DISABLED_EXTENSIONS = 'disabledExtensions'#

禁用扩展的配置键

jupyterlite_core.constants.EXTENSION_TAR = ('.tgz', '.tar.bz2', '.tar.gz')#

已知的压缩 tar 扩展名

jupyterlite_core.constants.EXTENSION_ZIP = ('.whl', '.zip', '.conda')#

已知的 zip 扩展名

jupyterlite_core.constants.FEDERATED_EXTENSIONS = 'federated_extensions'#

预构建扩展的配置键

jupyterlite_core.constants.HOOKS = ['status', 'init', 'build', 'check', 'serve', 'archive']#

我们的基于 doit 任务的插件系统

jupyterlite_core.constants.HOOK_PARENTS = {'archive': 'build', 'build': 'init', 'check': 'build', 'serve': 'build'}#

上一个钩子的名称

jupyterlite_core.constants.INDEX_HTML = 'index.html'#

一个可预测的 HTML 文件

jupyterlite_core.constants.JSON_FMT = {'indent': 2, 'sort_keys': True}#

规范化 JSON 的默认参数

jupyterlite_core.constants.JUPYTERLITE_IPYNB = 'jupyter-lite.ipynb'#

我们的配置文件

jupyterlite_core.constants.JUPYTERLITE_JSON = 'jupyter-lite.json'#

我们的配置文件

jupyterlite_core.constants.JUPYTERLITE_SCHEMA = 'jupyterlite.schema.v0.json'#

我们的模式

jupyterlite_core.constants.JUPYTER_CONFIG_DATA = 'jupyter-config-data'#

大多数 jupyter 页面上的脚本 DOM ID

jupyterlite_core.constants.LITE_PLUGIN_SETTINGS = 'litePluginSettings'#

lite 插件设置的顶级键

jupyterlite_core.constants.MOD_DIRECTORY = 493#

目录的默认权限

jupyterlite_core.constants.MOD_FILE = 420#

文件默认权限

jupyterlite_core.constants.NPM_SOURCE_DATE_EPOCH = 499162500#

通过检查得出

jupyterlite_core.constants.OVERRIDES_JSON = 'overrides.json'#

设置覆盖。使用 JupyterLab 构建系统,通常位于 $PREFIX/share/jupyter/lab/

jupyterlite_core.constants.PACKAGE_JSON = 'package.json'#

labextension 元数据的规范位置

jupyterlite_core.constants.PHASES = ['pre_', '', 'post_']#

钩子内的生命周期阶段

jupyterlite_core.constants.REQUIREMENTS_TXT = 'requirements.txt'#

通常使用的 pip 依赖项列表

jupyterlite_core.constants.SETTINGS_FILE_TYPES = 'fileTypes'#

文件类型配置键

jupyterlite_core.constants.SETTINGS_OVERRIDES = 'settingsOverrides'#

扩展设置覆盖的配置键

jupyterlite_core.constants.SHA256SUMS = 'SHA256SUMS'#

等效于 sha256sum * 的输出,用于提供本地数据清单

jupyterlite_core.constants.SHARE_LABEXTENSIONS = 'share/jupyter/labextensions'#

环境(或存档)中 labextensions 的规范位置

jupyterlite_core.constants.SOURCEMAPS = ['.js.map', '.mjs.map']#

要被视为源映射的扩展名

jupyterlite_core.constants.SOURCE_DATE_EPOCH = 'SOURCE_DATE_EPOCH'#

用于触发可重复构建的规范环境变量

jupyterlite_core.constants.UTF8 = {'encoding': 'utf-8'}#

jupyterlite 写入和读取的大多数文件的编码

App#

JupyterLite CLI App(s)

class jupyterlite_core.app.BaseLiteApp(**kwargs)#

TODO: 一个未描述的应用程序

property aliases#

获取 CLI 别名,包括插件提供的别名。

emit_alias_help()#

生成别名部分帮助的每一行。

复制自

ipython/traitlets

与上游不同,这也考虑了插件类(及其父类)。

property flags#

获取 CLI 标志,包括插件提供的标志。

class jupyterlite_core.app.DescribedMixin#

一个自描述的 mixin

class jupyterlite_core.app.LiteApp(**kwargs)#

构建准备好的 JupyterLite 网站(或发布)

class jupyterlite_core.app.LiteArchiveApp(**kwargs)#

构建一个 JupyterLite 应用程序存档,可以用作基线

class jupyterlite_core.app.LiteBuildApp(**kwargs)#

构建一个 JupyterLite 网站,包括用户内容

class jupyterlite_core.app.LiteCheckApp(**kwargs)#

使用可用的模式和规则验证 JupyterLite 网站

class jupyterlite_core.app.LiteDoitApp(**kwargs)#

运行 doit 命令

start()#

启动整个过程

class jupyterlite_core.app.LiteInitApp(**kwargs)#

从应用程序存档基线初始化 JupyterLite 网站

class jupyterlite_core.app.LiteListApp(**kwargs)#

描述一个 JupyterLite 网站

class jupyterlite_core.app.LiteRawDoitApp(**kwargs)#

使用完整的 doit CLI,参见 https://pydoit.org/contents.html

告诉 jupyter 不要使用 – 解析参数,例如:

jupyter-lite doit – –help

parse_command_line(argv=None)#

解析命令行参数。

class jupyterlite_core.app.LiteServeApp(**kwargs)#

使用最佳的 HTTP 服务器提供 JupyterLite 站点。

class jupyterlite_core.app.LiteStatusApp(**kwargs)#

报告 JupyterLite 构建可能执行的操作。

class jupyterlite_core.app.LiteTaskApp(**kwargs)#

运行 doit 任务,可以选择使用 –force。

property flags#

CLI 标志,包括一些自定义标志。

force#

忘记任务的先前运行并从头开始重新运行。

start()#

启动整个过程

class jupyterlite_core.app.ManagedApp(**kwargs)#

具有 LiteManager 的应用程序,可以执行一些配置修复。

start()#

启动整个过程

jupyterlite_core.app.lite_flags = {'debug': ({'Application': {'log_level': 10}}, 'set log level to logging.DEBUG (maximize logging output)'), 'ignore-sys-prefix': ({'LiteBuildConfig': {'ignore_sys_prefix': True}}, 'Do not copy anything from sys.prefix'), 'no-libarchive': ({'LiteBuildConfig': {'no_libarchive': True}}, 'Do not try to use libarchive-c for archive operations'), 'no-sourcemaps': ({'LiteBuildConfig': {'no_sourcemaps': True}}, 'Strip all sourcemaps from applications and extensions'), 'no-unused-shared-packages': ({'LiteBuildConfig': {'no_unused_shared_packages': True}}, 'Remove shared packages not used by --apps'), 'y': ({'JupyterApp': {'answer_yes': True}}, 'Answer yes to any questions instead of prompting.')}#

从发现的附加组件中获取的标志的完整集合。

Manager#

JupyterLite 管理器

class jupyterlite_core.manager.LiteManager(**kwargs)#

用于构建 JupyterLite 站点的管理器

它主要负责将 _addons_ 映射到 doit _tasks_,然后调用 doit API。

create_addons()#

从入口点初始化 addons

如果已填充,将参考 disable_addons

子类可以选择覆盖此方法,但鼓励包含默认 addons

doit_run(task, *args, raw=False)#

运行 doit 命令行的一部分

initialize()#

执行管理器的单次初始化

parsed_extra_args#

LiteManager 未使用的额外 CLI 参数

strict#

如果为 True,则在第一个错误时停止当前工作流程

task_prefix#

附加到此管理器生成的全部任务的词缀

Addons#

Archive#

用于生成可作为输入的应用程序档案的 JupyterLite addon

class jupyterlite_core.addons.archive.ArchiveAddon(**kwargs: Any)#

lite_dir 中的内容添加到 output_dir,创建 API 输出

如果设置了 --source-date-epoch (SDE),将启用一些功能以提高最终工件的可重复性。除了将比 SDE 更新的时间戳“钳定”到 SDE 之外,这还会调整 tarball 内部的某些权限

archive(manager)#

pre_archive 之前创建的所有文件添加到档案中

filter_tarinfo(tarinfo)#

对档案应用尽力而为的熵修复,以获得更可重复的档案

log_archive(tarball, prefix='')#

打印有关存档的一些信息

make_archive_stdlib(tarball, root, members)#

实际构建存档。

  • 这比任何其他钩子都花费更长时间
    • 虽然需要维护这个纯 Python 实现,但基于 libarchive 的构建可能更适合例如 CI 性能。

  • 与上游 webpack 构建及其原生打包格式兼容的 npm 兼容 .tgz 是唯一支持的存档格式。

setlocale(name)#

用于更改当前区域设置的上下文管理器

Base#

class jupyterlite_core.addons.base.BaseAddon(**kwargs: Any)#

JupyterLite 构建链的附加组件的基类

子类化此操作是可选的,但提供了一些有用的实用程序

copy_one(src, dest)#

复制一个 Path(文件或文件夹)

dedupe_federated_extensions(config)#

就地更新 federated_extension 列表,确保名称唯一。

delete_one(*src)#

删除……一些东西

extract_one(archive, dest)#

将存档的内容提取到路径中。

fetch_one(url, dest)#

获取一个文件

TODO:启用其他后端、身份验证等。

get_lite_config_paths()#

生成 lite_dir 中存在的所有配置路径。

返回类型:

Generator[Path, None, None]

get_lite_plugin_settings(config_path, plugin_id)#

从配置路径获取插件设置。

键遵循 JupyterLab 设置命名约定,即模块和标识符,例如::rtype: Dict[str, Any]

@jupyterlite/contents:plugin

get_output_config_paths()#

生成在 output_dir 中可能存在的所有配置路径。

返回类型:

Generator[Path, None, None]

property log#

Logger 或 LoggerAdapter 实例

merge_jupyter_config_data(config, in_config)#

合并众所周知的 jupyter-config-data 字段

merge_one_jupyterlite(out_path, in_paths)#

使用 in_paths 的合并内容写入 out_path,其中所有内容都是有效的 jupyter-lite.* 文件。

set_lite_plugin_settings(config_path, plugin_id, settings)#

覆盖配置路径中单个插件的插件设置。

返回类型:

property should_use_libarchive_c#

是否应该使用 libarchive-c(如果可用)?

task(**task)#

确保 doit 任务格式正确。

  • 任务名称可能不包含 = 字符 - 任意替换为 --

timestamp_one(path)#

将时间戳调整为 -source-date-epoch,用于比该时间戳更新的文件

参见 https://reproducible-builds.org/specs/source-date-epoch

内容#

一个与 Jupyter Server 兼容的内容的 JupyterLite 附加组件

class jupyterlite_core.addons.contents.ContentsAddon(**kwargs: Any)#

lite_dir 中的内容添加到 output_dir,创建 API 输出

build(manager)#

执行预填充 /files/ 的主要用户构建

check(manager)#

验证所有 Contents API 是否有效(有点)

property file_src_dest#

将要复制的目录对

这些目录按 反向 顺序处理,因此只有最后一个路径有效

maybe_add_one_path(path, root=None)#

添加文件或文件夹的内容(如果未被忽略)

one_contents_path(output_file_dir, api_path)#

jupyter_server Contents API 生成器的延迟重用

patch_listing_timestamps(listing, sde=None)#

将 Contents 列表的时间戳限制为 SOURCE_DATE_EPOCH

post_build(manager)#

/files/ 中的每个子目录创建一个 Contents API 索引

status(manager)#

生成有关目录状态的一些状态信息

class jupyterlite_core.addons.contents.DateTimeEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)#

自定义日期感知 JSON 编码器

default(o)#

在子类中实现此方法,使其返回一个可序列化的对象,用于 o,或者调用基类实现(以引发 TypeError)。

例如,要支持任意迭代器,您可以像这样实现默认值

def default(self, o):
    try:
        iterable = iter(o)
    except TypeError:
        pass
    else:
        return list(iterable)
    # Let the base class default method raise the TypeError
    return JSONEncoder.default(self, o)
jupyterlite_core.addons.contents.isoformat(dt)#

一个小的辅助函数,用于使用 Z 表示 UTC ISO 字符串

联合扩展#

一个 JupyterLite 附加组件,用于支持联合扩展

class jupyterlite_core.addons.federated_extensions.FederatedExtensionAddon(**kwargs: Any)#

同步已安装的联合扩展,并更新 jupyter-lite.json

property archive_cache#

存档将在缓存中的位置

build(manager)#

生成一个 doit 任务,将每个本地扩展复制到 output_dir

copy_all_federated_extensions(unarchived)#

实际复制在文件夹中找到的所有联合扩展。

copy_conda2_extensions(conda_pkg)#

从本地嵌套的 .conda 包中复制 labextensions

copy_one_env_extension(pkg_json)#

生成任务,将一个解压缩的磁盘扩展从 sys.prefix 复制到 output dir

copy_one_extension(pkg_json)#

生成一个任务,将一个解压缩的磁盘扩展从任何地方复制到 output dir

copy_one_federated_extension(pkg_json)#

实际从提取的存档中复制一个 labextension

copy_one_folder_extension(path)#

生成一个任务,将一个扩展从给定的路径复制

copy_simple_archive_extensions(archive)#

生成任务,从本地简单存档中提取和复制 labextensions

ensure_federated_settings(manager, lab_extensions, all_federated_json)#

确保来自联合扩展的设置在单个文件中聚合

env_extensions(root)#

所有联合扩展的列表

property ext_cache#

扩展将在缓存中的位置

extra_labextensions_path#

查找联合 JupyterLab 扩展的额外路径

get_federated_settings(extension)#

获取联合扩展的设置

is_prebuilt(pkg_json)#

验证这是一个实际的预构建扩展,包含加载信息

property output_extensions#

labextensions 在输出文件夹中的位置

patch_jupyterlite_json(jupyterlite_json)#

将联合扩展添加到 jupyter-lite.json

post_build(manager)#

更新根 jupyter-lite.json,并将每个输出主题复制到每个应用程序

post_init(manager)#

处理联合扩展的下载

pre_build(manager)#

生成一个 doit 任务,将每个联合扩展复制到 output_dir

resolve_one_extension(path_or_url, init)#

生成任务尝试将一个 URL 或本地文件夹/存档解析为一个(组)联合扩展

Lite#

一个 JupyterLite 附加组件,用于 jupyterlite 特定的任务

class jupyterlite_core.addons.lite.LiteAddon(**kwargs: Any)#

确保 jupyterlite 文件已合并,并验证它们

build(manager)#

将 jupyter-lite.json 合并到 output_dir

check(manager)#

将模式验证应用于 output_dir 中的所有 jupyter-lite.json

property lite_files#

所有源 jupyter-lite.* 文件

报告#

用于生成哈希值的 JupyterLite 插件

class jupyterlite_core.addons.report.ReportAddon(**kwargs: Any)#

更新站点内容的各种格式的静态列表

将来以各种格式拥有这些内容对于各种发布任务非常有用

pre_archive(manager)#

生成发行版中所有文件的哈希文件。

由于对于数百个文件来说,这相对昂贵,因此尽可能晚地执行此操作,同时仍然提供一些有用的发布/QA 功能。

待办事项:与前端就该文件制定一些协议,

或其派生文件,因为它包含某些缓存任务所需的精确信息。

property sha256sums#

哈希文件的位置。

服务#

用于服务的 JupyterLite 插件

class jupyterlite_core.addons.serve.ServeAddon(**kwargs: Any)#

设置#

用于支持扩展设置的 JupyterLite 插件

class jupyterlite_core.addons.settings.SettingsAddon(**kwargs: Any)#

同步已安装的 overrides.json 并更新 jupyter-lite.json

property output_extensions#

labextensions 在输出文件夹中的位置

patch_one_overrides(jupyterlite_json, overrides_json)#

更新和规范化 settingsOverrides

post_build(manager)#

根据应用程序添加来自 overrides.json 的设置(如果存在)

静态#

用于 jupyterlab 核心 的 JupyterLite 插件

class jupyterlite_core.addons.static.StaticAddon(**kwargs: Any)#

将核心“黄金标准”工件复制到输出文件夹

app_archive#

自定义 npm 风格的 tarball 的路径(例如,带有 package/package.json)。这也可以通过 $JUPYTERLITE_APP_ARCHIVE 环境变量指定。

init(manager)#

解压并复制 tarball 文件到 output_dir

post_init(manager)#

可能删除源映射,或者如果未安装应用程序,则删除所有静态资产

pre_init(manager)#

在任何其他操作之前,我们需要确保 output_dir 存在且为空(如果基线 tarball 已更改)

prune_unused_shared_packages(all_apps, apps_to_remove)#

手动从共享包中删除未使用的 webpack 块