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
# 从应用程序和扩展中删除所有源映射
删除 –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
]# 触发可重复构建,将时间戳限制为该值
-
app_archive:
常量#
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()#
生成别名部分帮助的每一行。
复制自
与上游不同,这也考虑了插件类(及其父类)。
- 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.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()#
启动整个过程
- 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,用于比该时间戳更新的文件
内容#
一个与 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 特定的任务
报告#
用于生成哈希值的 JupyterLite 插件
服务#
用于服务的 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 已更改)
手动从共享包中删除未使用的 webpack 块