| @@ -7,13 +7,13 @@ __pycache__/ | |||||
| *.so | *.so | ||||
| *.ipynb | *.ipynb | ||||
| .ipynb_checkpoints | .ipynb_checkpoints | ||||
| _build | |||||
| # _build | |||||
| build/ | build/ | ||||
| dist/ | dist/ | ||||
| *.pkl | *.pkl | ||||
| *.hd5 | *.hd5 | ||||
| *.csv | *.csv | ||||
| *.html | |||||
| # *.html | |||||
| *.xml | *.xml | ||||
| .env | .env | ||||
| .vim | .vim | ||||
| @@ -30,8 +30,5 @@ dist/ | |||||
| .idea/ | .idea/ | ||||
| .DS_Store | .DS_Store | ||||
| node_modules/ | node_modules/ | ||||
| build/ | |||||
| _build/ | |||||
| dist/ | |||||
| cache/ | cache/ | ||||
| tmp/ | tmp/ | ||||
| @@ -1,40 +1,3 @@ | |||||
| # Learnware Market 规范 | |||||
| ## 1 提交规范 | |||||
| # Learnware Market | |||||
| ### 1.1 Commit 内容 | |||||
| 请按照以下方式提交: | |||||
| 按照 前缀 + Space + 后缀 的方法提交 | |||||
| * 前缀有三种选择,可使用逗号链接 | |||||
| * [ENH]:表示 enhancement,意味着增加新功能 | |||||
| * [DOC]:表示修改了文档 | |||||
| * [FIX]:表示修改了 bug,修改了 tyoo | |||||
| * [MNT]:表示其他小修改,比如更新版本号 | |||||
| * 后缀表示具体修改的内容,首字母大写 | |||||
| * 举例:一下都合法 | |||||
| * [DOC] Fix the document | |||||
| * [FIX, ENT] Fix the bug and add some feature | |||||
| ### 1.2 格式 | |||||
| 提交前使用以下命令进行format: | |||||
| ``` | |||||
| black -l 120 . | |||||
| ``` | |||||
| 其中black安装命令为: | |||||
| ``` | |||||
| pip install black | |||||
| ``` | |||||
| ## 2 以开发模式安装方法 | |||||
| 使用以下方式进行安装开发: | |||||
| * 使用 python 3.8 进行开发 | |||||
| * 安装代码(代码根目录运行 | |||||
| ``` | |||||
| python setup.py develop | |||||
| ``` | |||||
| * 直接增加,删除修改对应文件即可 | |||||
| This is learnware market project. | |||||
| @@ -0,0 +1,28 @@ | |||||
| # Learnware Market 提交规范 | |||||
| ## 1.1 comments 格式 | |||||
| 请按照以下方式提交: | |||||
| 按照 前缀 + Space + 后缀 的方法提交 | |||||
| * 前缀有三种选择,可使用逗号链接 | |||||
| * [ENH]:表示 enhancement,意味着增加新功能 | |||||
| * [DOC]:表示修改了文档 | |||||
| * [FIX]:表示修改了 bug,修改了 tyoo | |||||
| * [MNT]:表示其他小修改,比如更新版本号 | |||||
| * 后缀表示具体修改的内容,首字母大写 | |||||
| * 举例:一下都合法 | |||||
| * [DOC] Fix the document | |||||
| * [FIX, ENT] Fix the bug and add some feature | |||||
| ### 1.2 format 代码 | |||||
| 提交前使用以下命令进行format: | |||||
| ``` | |||||
| black -l 120 . | |||||
| ``` | |||||
| 其中black安装命令为: | |||||
| ``` | |||||
| pip install black | |||||
| ``` | |||||
| @@ -0,0 +1,9 @@ | |||||
| # Learnware Market 开发模式安装方法 | |||||
| 使用以下方式进行安装开发: | |||||
| * 使用 python 3.8 进行开发 | |||||
| * 安装代码(代码根目录运行 | |||||
| ``` | |||||
| python setup.py develop | |||||
| ``` | |||||
| * 直接增加,删除修改对应文件即可实时修改 import 的包功能 | |||||
| @@ -0,0 +1,51 @@ | |||||
| # Learnware Market 代码规范 | |||||
| ## 1 类和函数命名 | |||||
| * 关于类名使用大驼峰方法 | |||||
| * 函数使用小写和下划线的形式 | |||||
| ## 2 相对引用和绝对引用 | |||||
| * 在learnware包内务必使用相对 import 的方法 | |||||
| * 在learnware包外使用绝对 import 的方法 | |||||
| ## 3 如果读取通用配置 | |||||
| * 在需要一些全局配置时使用下属语句进行获取全局配置 (包内相对引用使用) | |||||
| ```python | |||||
| from learnware.config import C | |||||
| print(C.root_path) # 获取项目全局路径 | |||||
| ``` | |||||
| * 如果要修改或者增添全局配置,直接在 learnware.config 的 _DEFAULT_CONFIG 中进行增删和修改即可 | |||||
| ## 4 关于路径硬编码 | |||||
| * 请勿使用路径硬编码 | |||||
| * 例如我想的到当前文件的文件夹路径,我可以用下述语句: | |||||
| ```python | |||||
| os.path.dirname(os.path.abspath(__file__)) | |||||
| ``` | |||||
| * 例如我想获取文件根目录路径下的cache文件夹,我可以使用下述语句: | |||||
| ```python | |||||
| from learnware.config import C | |||||
| cache_dirpath = os.path.join(C.root_path, 'cache') | |||||
| ``` | |||||
| ## 5 关于通用函数的位置 | |||||
| * 全局通用函数请写在 learn.utils 中 | |||||
| * 如果是子包通用函数,写在该子包的 utils 中即可,例如 learnware.specification.utils 中存放了 generate_stat_spec 作为该子包通用函数 | |||||
| ## 6 关于如何打 log | |||||
| * 当出现一些不符合期待行为(例如参数缺失等),请使用 logger 功能 (包内相对引用使用) | |||||
| * 例子: | |||||
| ```python | |||||
| from learnware.logger import get_module_logger | |||||
| def function(self): | |||||
| self.logger = get_module_logger(self.__class__.__name__) | |||||
| self.logger.info("this is a info") | |||||
| self.logger.warning("this is a warning") | |||||
| ``` | |||||
| @@ -1,12 +1,12 @@ | |||||
| # Minimal makefile for Sphinx documentation | # Minimal makefile for Sphinx documentation | ||||
| # | # | ||||
| # You can set these variables from the command line, and also | |||||
| # from the environment for the first two. | |||||
| SPHINXOPTS ?= | |||||
| SPHINXBUILD ?= sphinx-build | |||||
| SOURCEDIR = source | |||||
| BUILDDIR = build | |||||
| # You can set these variables from the command line. | |||||
| SPHINXOPTS = | |||||
| SPHINXBUILD = python3 -msphinx | |||||
| SPHINXPROJ = learnware | |||||
| SOURCEDIR = . | |||||
| BUILDDIR = _build | |||||
| # Put it first so that "make" without argument is like "make help". | # Put it first so that "make" without argument is like "make help". | ||||
| help: | help: | ||||
| @@ -17,4 +17,4 @@ help: | |||||
| # Catch-all target: route all unknown targets to Sphinx using the new | # Catch-all target: route all unknown targets to Sphinx using the new | ||||
| # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). | ||||
| %: Makefile | %: Makefile | ||||
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | |||||
| @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) | |||||
| @@ -0,0 +1,4 @@ | |||||
| # Sphinx build info version 1 | |||||
| # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | |||||
| config: b5cd31d294cf0ae8d96bb2ee3edfd253 | |||||
| tags: 645f666f9bcd5a90fca523b33c5a78b7 | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _market: | |||||
| ================================ | |||||
| Market | |||||
| ================================ | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _spec: | |||||
| ================================ | |||||
| Specification | |||||
| ================================ | |||||
| @@ -0,0 +1,39 @@ | |||||
| .. learnware documentation master file, created by | |||||
| sphinx-quickstart on Tue Mar 28 22:06:47 2023. | |||||
| You can adapt this file completely to your liking, but it should at least | |||||
| contain the root `toctree` directive. | |||||
| ============================================================ | |||||
| ``Learnware`` Documentation | |||||
| ============================================================ | |||||
| ``Learnware`` is ... | |||||
| .. _user_guide: | |||||
| Document Structure | |||||
| ==================== | |||||
| .. toctree:: | |||||
| :hidden: | |||||
| Home <self> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: GETTING STARTED: | |||||
| Introduction <introduction/intro.rst> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: COMPONENTS: | |||||
| Market <components/market.rst> | |||||
| Specification <components/spec.rst> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: REFERENCES: | |||||
| API <references/api.rst> | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _intro: | |||||
| ================================ | |||||
| Introduction | |||||
| ================================ | |||||
| @@ -0,0 +1,33 @@ | |||||
| .. _api: | |||||
| ================================ | |||||
| API Reference | |||||
| ================================ | |||||
| Here you can find all ``learnware`` interfaces. | |||||
| Market | |||||
| ==================== | |||||
| .. autoclass:: learnware.market.LearnwareMarket | |||||
| :members: | |||||
| Learnware | |||||
| ==================== | |||||
| .. autoclass:: learnware.learnware.Learnware | |||||
| :members: | |||||
| Specification | |||||
| ==================== | |||||
| .. autoclass:: learnware.specification.Specification | |||||
| :members: | |||||
| .. autoclass:: learnware.specification.StatSpecification | |||||
| :members: | |||||
| @@ -0,0 +1,903 @@ | |||||
| /* | |||||
| * basic.css | |||||
| * ~~~~~~~~~ | |||||
| * | |||||
| * Sphinx stylesheet -- basic theme. | |||||
| * | |||||
| * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | |||||
| * :license: BSD, see LICENSE for details. | |||||
| * | |||||
| */ | |||||
| /* -- main layout ----------------------------------------------------------- */ | |||||
| div.clearer { | |||||
| clear: both; | |||||
| } | |||||
| div.section::after { | |||||
| display: block; | |||||
| content: ''; | |||||
| clear: left; | |||||
| } | |||||
| /* -- relbar ---------------------------------------------------------------- */ | |||||
| div.related { | |||||
| width: 100%; | |||||
| font-size: 90%; | |||||
| } | |||||
| div.related h3 { | |||||
| display: none; | |||||
| } | |||||
| div.related ul { | |||||
| margin: 0; | |||||
| padding: 0 0 0 10px; | |||||
| list-style: none; | |||||
| } | |||||
| div.related li { | |||||
| display: inline; | |||||
| } | |||||
| div.related li.right { | |||||
| float: right; | |||||
| margin-right: 5px; | |||||
| } | |||||
| /* -- sidebar --------------------------------------------------------------- */ | |||||
| div.sphinxsidebarwrapper { | |||||
| padding: 10px 5px 0 10px; | |||||
| } | |||||
| div.sphinxsidebar { | |||||
| float: left; | |||||
| width: 230px; | |||||
| margin-left: -100%; | |||||
| font-size: 90%; | |||||
| word-wrap: break-word; | |||||
| overflow-wrap : break-word; | |||||
| } | |||||
| div.sphinxsidebar ul { | |||||
| list-style: none; | |||||
| } | |||||
| div.sphinxsidebar ul ul, | |||||
| div.sphinxsidebar ul.want-points { | |||||
| margin-left: 20px; | |||||
| list-style: square; | |||||
| } | |||||
| div.sphinxsidebar ul ul { | |||||
| margin-top: 0; | |||||
| margin-bottom: 0; | |||||
| } | |||||
| div.sphinxsidebar form { | |||||
| margin-top: 10px; | |||||
| } | |||||
| div.sphinxsidebar input { | |||||
| border: 1px solid #98dbcc; | |||||
| font-family: sans-serif; | |||||
| font-size: 1em; | |||||
| } | |||||
| div.sphinxsidebar #searchbox form.search { | |||||
| overflow: hidden; | |||||
| } | |||||
| div.sphinxsidebar #searchbox input[type="text"] { | |||||
| float: left; | |||||
| width: 80%; | |||||
| padding: 0.25em; | |||||
| box-sizing: border-box; | |||||
| } | |||||
| div.sphinxsidebar #searchbox input[type="submit"] { | |||||
| float: left; | |||||
| width: 20%; | |||||
| border-left: none; | |||||
| padding: 0.25em; | |||||
| box-sizing: border-box; | |||||
| } | |||||
| img { | |||||
| border: 0; | |||||
| max-width: 100%; | |||||
| } | |||||
| /* -- search page ----------------------------------------------------------- */ | |||||
| ul.search { | |||||
| margin: 10px 0 0 20px; | |||||
| padding: 0; | |||||
| } | |||||
| ul.search li { | |||||
| padding: 5px 0 5px 20px; | |||||
| background-image: url(file.png); | |||||
| background-repeat: no-repeat; | |||||
| background-position: 0 7px; | |||||
| } | |||||
| ul.search li a { | |||||
| font-weight: bold; | |||||
| } | |||||
| ul.search li p.context { | |||||
| color: #888; | |||||
| margin: 2px 0 0 30px; | |||||
| text-align: left; | |||||
| } | |||||
| ul.keywordmatches li.goodmatch a { | |||||
| font-weight: bold; | |||||
| } | |||||
| /* -- index page ------------------------------------------------------------ */ | |||||
| table.contentstable { | |||||
| width: 90%; | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| } | |||||
| table.contentstable p.biglink { | |||||
| line-height: 150%; | |||||
| } | |||||
| a.biglink { | |||||
| font-size: 1.3em; | |||||
| } | |||||
| span.linkdescr { | |||||
| font-style: italic; | |||||
| padding-top: 5px; | |||||
| font-size: 90%; | |||||
| } | |||||
| /* -- general index --------------------------------------------------------- */ | |||||
| table.indextable { | |||||
| width: 100%; | |||||
| } | |||||
| table.indextable td { | |||||
| text-align: left; | |||||
| vertical-align: top; | |||||
| } | |||||
| table.indextable ul { | |||||
| margin-top: 0; | |||||
| margin-bottom: 0; | |||||
| list-style-type: none; | |||||
| } | |||||
| table.indextable > tbody > tr > td > ul { | |||||
| padding-left: 0em; | |||||
| } | |||||
| table.indextable tr.pcap { | |||||
| height: 10px; | |||||
| } | |||||
| table.indextable tr.cap { | |||||
| margin-top: 10px; | |||||
| background-color: #f2f2f2; | |||||
| } | |||||
| img.toggler { | |||||
| margin-right: 3px; | |||||
| margin-top: 3px; | |||||
| cursor: pointer; | |||||
| } | |||||
| div.modindex-jumpbox { | |||||
| border-top: 1px solid #ddd; | |||||
| border-bottom: 1px solid #ddd; | |||||
| margin: 1em 0 1em 0; | |||||
| padding: 0.4em; | |||||
| } | |||||
| div.genindex-jumpbox { | |||||
| border-top: 1px solid #ddd; | |||||
| border-bottom: 1px solid #ddd; | |||||
| margin: 1em 0 1em 0; | |||||
| padding: 0.4em; | |||||
| } | |||||
| /* -- domain module index --------------------------------------------------- */ | |||||
| table.modindextable td { | |||||
| padding: 2px; | |||||
| border-collapse: collapse; | |||||
| } | |||||
| /* -- general body styles --------------------------------------------------- */ | |||||
| div.body { | |||||
| min-width: 360px; | |||||
| max-width: 800px; | |||||
| } | |||||
| div.body p, div.body dd, div.body li, div.body blockquote { | |||||
| -moz-hyphens: auto; | |||||
| -ms-hyphens: auto; | |||||
| -webkit-hyphens: auto; | |||||
| hyphens: auto; | |||||
| } | |||||
| a.headerlink { | |||||
| visibility: hidden; | |||||
| } | |||||
| h1:hover > a.headerlink, | |||||
| h2:hover > a.headerlink, | |||||
| h3:hover > a.headerlink, | |||||
| h4:hover > a.headerlink, | |||||
| h5:hover > a.headerlink, | |||||
| h6:hover > a.headerlink, | |||||
| dt:hover > a.headerlink, | |||||
| caption:hover > a.headerlink, | |||||
| p.caption:hover > a.headerlink, | |||||
| div.code-block-caption:hover > a.headerlink { | |||||
| visibility: visible; | |||||
| } | |||||
| div.body p.caption { | |||||
| text-align: inherit; | |||||
| } | |||||
| div.body td { | |||||
| text-align: left; | |||||
| } | |||||
| .first { | |||||
| margin-top: 0 !important; | |||||
| } | |||||
| p.rubric { | |||||
| margin-top: 30px; | |||||
| font-weight: bold; | |||||
| } | |||||
| img.align-left, figure.align-left, .figure.align-left, object.align-left { | |||||
| clear: left; | |||||
| float: left; | |||||
| margin-right: 1em; | |||||
| } | |||||
| img.align-right, figure.align-right, .figure.align-right, object.align-right { | |||||
| clear: right; | |||||
| float: right; | |||||
| margin-left: 1em; | |||||
| } | |||||
| img.align-center, figure.align-center, .figure.align-center, object.align-center { | |||||
| display: block; | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| } | |||||
| img.align-default, figure.align-default, .figure.align-default { | |||||
| display: block; | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| } | |||||
| .align-left { | |||||
| text-align: left; | |||||
| } | |||||
| .align-center { | |||||
| text-align: center; | |||||
| } | |||||
| .align-default { | |||||
| text-align: center; | |||||
| } | |||||
| .align-right { | |||||
| text-align: right; | |||||
| } | |||||
| /* -- sidebars -------------------------------------------------------------- */ | |||||
| div.sidebar, | |||||
| aside.sidebar { | |||||
| margin: 0 0 0.5em 1em; | |||||
| border: 1px solid #ddb; | |||||
| padding: 7px; | |||||
| background-color: #ffe; | |||||
| width: 40%; | |||||
| float: right; | |||||
| clear: right; | |||||
| overflow-x: auto; | |||||
| } | |||||
| p.sidebar-title { | |||||
| font-weight: bold; | |||||
| } | |||||
| nav.contents, | |||||
| aside.topic, | |||||
| div.admonition, div.topic, blockquote { | |||||
| clear: left; | |||||
| } | |||||
| /* -- topics ---------------------------------------------------------------- */ | |||||
| nav.contents, | |||||
| aside.topic, | |||||
| div.topic { | |||||
| border: 1px solid #ccc; | |||||
| padding: 7px; | |||||
| margin: 10px 0 10px 0; | |||||
| } | |||||
| p.topic-title { | |||||
| font-size: 1.1em; | |||||
| font-weight: bold; | |||||
| margin-top: 10px; | |||||
| } | |||||
| /* -- admonitions ----------------------------------------------------------- */ | |||||
| div.admonition { | |||||
| margin-top: 10px; | |||||
| margin-bottom: 10px; | |||||
| padding: 7px; | |||||
| } | |||||
| div.admonition dt { | |||||
| font-weight: bold; | |||||
| } | |||||
| p.admonition-title { | |||||
| margin: 0px 10px 5px 0px; | |||||
| font-weight: bold; | |||||
| } | |||||
| div.body p.centered { | |||||
| text-align: center; | |||||
| margin-top: 25px; | |||||
| } | |||||
| /* -- content of sidebars/topics/admonitions -------------------------------- */ | |||||
| div.sidebar > :last-child, | |||||
| aside.sidebar > :last-child, | |||||
| nav.contents > :last-child, | |||||
| aside.topic > :last-child, | |||||
| div.topic > :last-child, | |||||
| div.admonition > :last-child { | |||||
| margin-bottom: 0; | |||||
| } | |||||
| div.sidebar::after, | |||||
| aside.sidebar::after, | |||||
| nav.contents::after, | |||||
| aside.topic::after, | |||||
| div.topic::after, | |||||
| div.admonition::after, | |||||
| blockquote::after { | |||||
| display: block; | |||||
| content: ''; | |||||
| clear: both; | |||||
| } | |||||
| /* -- tables ---------------------------------------------------------------- */ | |||||
| table.docutils { | |||||
| margin-top: 10px; | |||||
| margin-bottom: 10px; | |||||
| border: 0; | |||||
| border-collapse: collapse; | |||||
| } | |||||
| table.align-center { | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| } | |||||
| table.align-default { | |||||
| margin-left: auto; | |||||
| margin-right: auto; | |||||
| } | |||||
| table caption span.caption-number { | |||||
| font-style: italic; | |||||
| } | |||||
| table caption span.caption-text { | |||||
| } | |||||
| table.docutils td, table.docutils th { | |||||
| padding: 1px 8px 1px 5px; | |||||
| border-top: 0; | |||||
| border-left: 0; | |||||
| border-right: 0; | |||||
| border-bottom: 1px solid #aaa; | |||||
| } | |||||
| th { | |||||
| text-align: left; | |||||
| padding-right: 5px; | |||||
| } | |||||
| table.citation { | |||||
| border-left: solid 1px gray; | |||||
| margin-left: 1px; | |||||
| } | |||||
| table.citation td { | |||||
| border-bottom: none; | |||||
| } | |||||
| th > :first-child, | |||||
| td > :first-child { | |||||
| margin-top: 0px; | |||||
| } | |||||
| th > :last-child, | |||||
| td > :last-child { | |||||
| margin-bottom: 0px; | |||||
| } | |||||
| /* -- figures --------------------------------------------------------------- */ | |||||
| div.figure, figure { | |||||
| margin: 0.5em; | |||||
| padding: 0.5em; | |||||
| } | |||||
| div.figure p.caption, figcaption { | |||||
| padding: 0.3em; | |||||
| } | |||||
| div.figure p.caption span.caption-number, | |||||
| figcaption span.caption-number { | |||||
| font-style: italic; | |||||
| } | |||||
| div.figure p.caption span.caption-text, | |||||
| figcaption span.caption-text { | |||||
| } | |||||
| /* -- field list styles ----------------------------------------------------- */ | |||||
| table.field-list td, table.field-list th { | |||||
| border: 0 !important; | |||||
| } | |||||
| .field-list ul { | |||||
| margin: 0; | |||||
| padding-left: 1em; | |||||
| } | |||||
| .field-list p { | |||||
| margin: 0; | |||||
| } | |||||
| .field-name { | |||||
| -moz-hyphens: manual; | |||||
| -ms-hyphens: manual; | |||||
| -webkit-hyphens: manual; | |||||
| hyphens: manual; | |||||
| } | |||||
| /* -- hlist styles ---------------------------------------------------------- */ | |||||
| table.hlist { | |||||
| margin: 1em 0; | |||||
| } | |||||
| table.hlist td { | |||||
| vertical-align: top; | |||||
| } | |||||
| /* -- object description styles --------------------------------------------- */ | |||||
| .sig { | |||||
| font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; | |||||
| } | |||||
| .sig-name, code.descname { | |||||
| background-color: transparent; | |||||
| font-weight: bold; | |||||
| } | |||||
| .sig-name { | |||||
| font-size: 1.1em; | |||||
| } | |||||
| code.descname { | |||||
| font-size: 1.2em; | |||||
| } | |||||
| .sig-prename, code.descclassname { | |||||
| background-color: transparent; | |||||
| } | |||||
| .optional { | |||||
| font-size: 1.3em; | |||||
| } | |||||
| .sig-paren { | |||||
| font-size: larger; | |||||
| } | |||||
| .sig-param.n { | |||||
| font-style: italic; | |||||
| } | |||||
| /* C++ specific styling */ | |||||
| .sig-inline.c-texpr, | |||||
| .sig-inline.cpp-texpr { | |||||
| font-family: unset; | |||||
| } | |||||
| .sig.c .k, .sig.c .kt, | |||||
| .sig.cpp .k, .sig.cpp .kt { | |||||
| color: #0033B3; | |||||
| } | |||||
| .sig.c .m, | |||||
| .sig.cpp .m { | |||||
| color: #1750EB; | |||||
| } | |||||
| .sig.c .s, .sig.c .sc, | |||||
| .sig.cpp .s, .sig.cpp .sc { | |||||
| color: #067D17; | |||||
| } | |||||
| /* -- other body styles ----------------------------------------------------- */ | |||||
| ol.arabic { | |||||
| list-style: decimal; | |||||
| } | |||||
| ol.loweralpha { | |||||
| list-style: lower-alpha; | |||||
| } | |||||
| ol.upperalpha { | |||||
| list-style: upper-alpha; | |||||
| } | |||||
| ol.lowerroman { | |||||
| list-style: lower-roman; | |||||
| } | |||||
| ol.upperroman { | |||||
| list-style: upper-roman; | |||||
| } | |||||
| :not(li) > ol > li:first-child > :first-child, | |||||
| :not(li) > ul > li:first-child > :first-child { | |||||
| margin-top: 0px; | |||||
| } | |||||
| :not(li) > ol > li:last-child > :last-child, | |||||
| :not(li) > ul > li:last-child > :last-child { | |||||
| margin-bottom: 0px; | |||||
| } | |||||
| ol.simple ol p, | |||||
| ol.simple ul p, | |||||
| ul.simple ol p, | |||||
| ul.simple ul p { | |||||
| margin-top: 0; | |||||
| } | |||||
| ol.simple > li:not(:first-child) > p, | |||||
| ul.simple > li:not(:first-child) > p { | |||||
| margin-top: 0; | |||||
| } | |||||
| ol.simple p, | |||||
| ul.simple p { | |||||
| margin-bottom: 0; | |||||
| } | |||||
| aside.footnote > span, | |||||
| div.citation > span { | |||||
| float: left; | |||||
| } | |||||
| aside.footnote > span:last-of-type, | |||||
| div.citation > span:last-of-type { | |||||
| padding-right: 0.5em; | |||||
| } | |||||
| aside.footnote > p { | |||||
| margin-left: 2em; | |||||
| } | |||||
| div.citation > p { | |||||
| margin-left: 4em; | |||||
| } | |||||
| aside.footnote > p:last-of-type, | |||||
| div.citation > p:last-of-type { | |||||
| margin-bottom: 0em; | |||||
| } | |||||
| aside.footnote > p:last-of-type:after, | |||||
| div.citation > p:last-of-type:after { | |||||
| content: ""; | |||||
| clear: both; | |||||
| } | |||||
| dl.field-list { | |||||
| display: grid; | |||||
| grid-template-columns: fit-content(30%) auto; | |||||
| } | |||||
| dl.field-list > dt { | |||||
| font-weight: bold; | |||||
| word-break: break-word; | |||||
| padding-left: 0.5em; | |||||
| padding-right: 5px; | |||||
| } | |||||
| dl.field-list > dd { | |||||
| padding-left: 0.5em; | |||||
| margin-top: 0em; | |||||
| margin-left: 0em; | |||||
| margin-bottom: 0em; | |||||
| } | |||||
| dl { | |||||
| margin-bottom: 15px; | |||||
| } | |||||
| dd > :first-child { | |||||
| margin-top: 0px; | |||||
| } | |||||
| dd ul, dd table { | |||||
| margin-bottom: 10px; | |||||
| } | |||||
| dd { | |||||
| margin-top: 3px; | |||||
| margin-bottom: 10px; | |||||
| margin-left: 30px; | |||||
| } | |||||
| dl > dd:last-child, | |||||
| dl > dd:last-child > :last-child { | |||||
| margin-bottom: 0; | |||||
| } | |||||
| dt:target, span.highlighted { | |||||
| background-color: #fbe54e; | |||||
| } | |||||
| rect.highlighted { | |||||
| fill: #fbe54e; | |||||
| } | |||||
| dl.glossary dt { | |||||
| font-weight: bold; | |||||
| font-size: 1.1em; | |||||
| } | |||||
| .versionmodified { | |||||
| font-style: italic; | |||||
| } | |||||
| .system-message { | |||||
| background-color: #fda; | |||||
| padding: 5px; | |||||
| border: 3px solid red; | |||||
| } | |||||
| .footnote:target { | |||||
| background-color: #ffa; | |||||
| } | |||||
| .line-block { | |||||
| display: block; | |||||
| margin-top: 1em; | |||||
| margin-bottom: 1em; | |||||
| } | |||||
| .line-block .line-block { | |||||
| margin-top: 0; | |||||
| margin-bottom: 0; | |||||
| margin-left: 1.5em; | |||||
| } | |||||
| .guilabel, .menuselection { | |||||
| font-family: sans-serif; | |||||
| } | |||||
| .accelerator { | |||||
| text-decoration: underline; | |||||
| } | |||||
| .classifier { | |||||
| font-style: oblique; | |||||
| } | |||||
| .classifier:before { | |||||
| font-style: normal; | |||||
| margin: 0 0.5em; | |||||
| content: ":"; | |||||
| display: inline-block; | |||||
| } | |||||
| abbr, acronym { | |||||
| border-bottom: dotted 1px; | |||||
| cursor: help; | |||||
| } | |||||
| /* -- code displays --------------------------------------------------------- */ | |||||
| pre { | |||||
| overflow: auto; | |||||
| overflow-y: hidden; /* fixes display issues on Chrome browsers */ | |||||
| } | |||||
| pre, div[class*="highlight-"] { | |||||
| clear: both; | |||||
| } | |||||
| span.pre { | |||||
| -moz-hyphens: none; | |||||
| -ms-hyphens: none; | |||||
| -webkit-hyphens: none; | |||||
| hyphens: none; | |||||
| white-space: nowrap; | |||||
| } | |||||
| div[class*="highlight-"] { | |||||
| margin: 1em 0; | |||||
| } | |||||
| td.linenos pre { | |||||
| border: 0; | |||||
| background-color: transparent; | |||||
| color: #aaa; | |||||
| } | |||||
| table.highlighttable { | |||||
| display: block; | |||||
| } | |||||
| table.highlighttable tbody { | |||||
| display: block; | |||||
| } | |||||
| table.highlighttable tr { | |||||
| display: flex; | |||||
| } | |||||
| table.highlighttable td { | |||||
| margin: 0; | |||||
| padding: 0; | |||||
| } | |||||
| table.highlighttable td.linenos { | |||||
| padding-right: 0.5em; | |||||
| } | |||||
| table.highlighttable td.code { | |||||
| flex: 1; | |||||
| overflow: hidden; | |||||
| } | |||||
| .highlight .hll { | |||||
| display: block; | |||||
| } | |||||
| div.highlight pre, | |||||
| table.highlighttable pre { | |||||
| margin: 0; | |||||
| } | |||||
| div.code-block-caption + div { | |||||
| margin-top: 0; | |||||
| } | |||||
| div.code-block-caption { | |||||
| margin-top: 1em; | |||||
| padding: 2px 5px; | |||||
| font-size: small; | |||||
| } | |||||
| div.code-block-caption code { | |||||
| background-color: transparent; | |||||
| } | |||||
| table.highlighttable td.linenos, | |||||
| span.linenos, | |||||
| div.highlight span.gp { /* gp: Generic.Prompt */ | |||||
| user-select: none; | |||||
| -webkit-user-select: text; /* Safari fallback only */ | |||||
| -webkit-user-select: none; /* Chrome/Safari */ | |||||
| -moz-user-select: none; /* Firefox */ | |||||
| -ms-user-select: none; /* IE10+ */ | |||||
| } | |||||
| div.code-block-caption span.caption-number { | |||||
| padding: 0.1em 0.3em; | |||||
| font-style: italic; | |||||
| } | |||||
| div.code-block-caption span.caption-text { | |||||
| } | |||||
| div.literal-block-wrapper { | |||||
| margin: 1em 0; | |||||
| } | |||||
| code.xref, a code { | |||||
| background-color: transparent; | |||||
| font-weight: bold; | |||||
| } | |||||
| h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { | |||||
| background-color: transparent; | |||||
| } | |||||
| .viewcode-link { | |||||
| float: right; | |||||
| } | |||||
| .viewcode-back { | |||||
| float: right; | |||||
| font-family: sans-serif; | |||||
| } | |||||
| div.viewcode-block:target { | |||||
| margin: -1px -10px; | |||||
| padding: 0 10px; | |||||
| } | |||||
| /* -- math display ---------------------------------------------------------- */ | |||||
| img.math { | |||||
| vertical-align: middle; | |||||
| } | |||||
| div.body div.math p { | |||||
| text-align: center; | |||||
| } | |||||
| span.eqno { | |||||
| float: right; | |||||
| } | |||||
| span.eqno a.headerlink { | |||||
| position: absolute; | |||||
| z-index: 1; | |||||
| } | |||||
| div.math:hover a.headerlink { | |||||
| visibility: visible; | |||||
| } | |||||
| /* -- printout stylesheet --------------------------------------------------- */ | |||||
| @media print { | |||||
| div.document, | |||||
| div.documentwrapper, | |||||
| div.bodywrapper { | |||||
| margin: 0 !important; | |||||
| width: 100%; | |||||
| } | |||||
| div.sphinxsidebar, | |||||
| div.related, | |||||
| div.footer, | |||||
| #top-link { | |||||
| display: none; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1 @@ | |||||
| .clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}} | |||||
| @@ -0,0 +1,156 @@ | |||||
| /* | |||||
| * doctools.js | |||||
| * ~~~~~~~~~~~ | |||||
| * | |||||
| * Base JavaScript utilities for all Sphinx HTML documentation. | |||||
| * | |||||
| * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | |||||
| * :license: BSD, see LICENSE for details. | |||||
| * | |||||
| */ | |||||
| "use strict"; | |||||
| const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ | |||||
| "TEXTAREA", | |||||
| "INPUT", | |||||
| "SELECT", | |||||
| "BUTTON", | |||||
| ]); | |||||
| const _ready = (callback) => { | |||||
| if (document.readyState !== "loading") { | |||||
| callback(); | |||||
| } else { | |||||
| document.addEventListener("DOMContentLoaded", callback); | |||||
| } | |||||
| }; | |||||
| /** | |||||
| * Small JavaScript module for the documentation. | |||||
| */ | |||||
| const Documentation = { | |||||
| init: () => { | |||||
| Documentation.initDomainIndexTable(); | |||||
| Documentation.initOnKeyListeners(); | |||||
| }, | |||||
| /** | |||||
| * i18n support | |||||
| */ | |||||
| TRANSLATIONS: {}, | |||||
| PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), | |||||
| LOCALE: "unknown", | |||||
| // gettext and ngettext don't access this so that the functions | |||||
| // can safely bound to a different name (_ = Documentation.gettext) | |||||
| gettext: (string) => { | |||||
| const translated = Documentation.TRANSLATIONS[string]; | |||||
| switch (typeof translated) { | |||||
| case "undefined": | |||||
| return string; // no translation | |||||
| case "string": | |||||
| return translated; // translation exists | |||||
| default: | |||||
| return translated[0]; // (singular, plural) translation tuple exists | |||||
| } | |||||
| }, | |||||
| ngettext: (singular, plural, n) => { | |||||
| const translated = Documentation.TRANSLATIONS[singular]; | |||||
| if (typeof translated !== "undefined") | |||||
| return translated[Documentation.PLURAL_EXPR(n)]; | |||||
| return n === 1 ? singular : plural; | |||||
| }, | |||||
| addTranslations: (catalog) => { | |||||
| Object.assign(Documentation.TRANSLATIONS, catalog.messages); | |||||
| Documentation.PLURAL_EXPR = new Function( | |||||
| "n", | |||||
| `return (${catalog.plural_expr})` | |||||
| ); | |||||
| Documentation.LOCALE = catalog.locale; | |||||
| }, | |||||
| /** | |||||
| * helper function to focus on search bar | |||||
| */ | |||||
| focusSearchBar: () => { | |||||
| document.querySelectorAll("input[name=q]")[0]?.focus(); | |||||
| }, | |||||
| /** | |||||
| * Initialise the domain index toggle buttons | |||||
| */ | |||||
| initDomainIndexTable: () => { | |||||
| const toggler = (el) => { | |||||
| const idNumber = el.id.substr(7); | |||||
| const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); | |||||
| if (el.src.substr(-9) === "minus.png") { | |||||
| el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; | |||||
| toggledRows.forEach((el) => (el.style.display = "none")); | |||||
| } else { | |||||
| el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; | |||||
| toggledRows.forEach((el) => (el.style.display = "")); | |||||
| } | |||||
| }; | |||||
| const togglerElements = document.querySelectorAll("img.toggler"); | |||||
| togglerElements.forEach((el) => | |||||
| el.addEventListener("click", (event) => toggler(event.currentTarget)) | |||||
| ); | |||||
| togglerElements.forEach((el) => (el.style.display = "")); | |||||
| if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); | |||||
| }, | |||||
| initOnKeyListeners: () => { | |||||
| // only install a listener if it is really needed | |||||
| if ( | |||||
| !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && | |||||
| !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS | |||||
| ) | |||||
| return; | |||||
| document.addEventListener("keydown", (event) => { | |||||
| // bail for input elements | |||||
| if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; | |||||
| // bail with special keys | |||||
| if (event.altKey || event.ctrlKey || event.metaKey) return; | |||||
| if (!event.shiftKey) { | |||||
| switch (event.key) { | |||||
| case "ArrowLeft": | |||||
| if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | |||||
| const prevLink = document.querySelector('link[rel="prev"]'); | |||||
| if (prevLink && prevLink.href) { | |||||
| window.location.href = prevLink.href; | |||||
| event.preventDefault(); | |||||
| } | |||||
| break; | |||||
| case "ArrowRight": | |||||
| if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; | |||||
| const nextLink = document.querySelector('link[rel="next"]'); | |||||
| if (nextLink && nextLink.href) { | |||||
| window.location.href = nextLink.href; | |||||
| event.preventDefault(); | |||||
| } | |||||
| break; | |||||
| } | |||||
| } | |||||
| // some keyboard layouts may need Shift to get / | |||||
| switch (event.key) { | |||||
| case "/": | |||||
| if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; | |||||
| Documentation.focusSearchBar(); | |||||
| event.preventDefault(); | |||||
| } | |||||
| }); | |||||
| }, | |||||
| }; | |||||
| // quick alias for translations | |||||
| const _ = Documentation.gettext; | |||||
| _ready(Documentation.init); | |||||
| @@ -0,0 +1,14 @@ | |||||
| var DOCUMENTATION_OPTIONS = { | |||||
| URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), | |||||
| VERSION: '0.1.0.99', | |||||
| LANGUAGE: 'en-US', | |||||
| COLLAPSE_INDEX: false, | |||||
| BUILDER: 'html', | |||||
| FILE_SUFFIX: '.html', | |||||
| LINK_SUFFIX: '.html', | |||||
| HAS_SOURCE: true, | |||||
| SOURCELINK_SUFFIX: '.txt', | |||||
| NAVIGATION_WITH_KEYS: false, | |||||
| SHOW_SEARCH_SUMMARY: true, | |||||
| ENABLE_SEARCH_SHORTCUTS: true, | |||||
| }; | |||||
| @@ -0,0 +1 @@ | |||||
| !function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=4)}({4:function(e,t,r){}}); | |||||
| @@ -0,0 +1,4 @@ | |||||
| /** | |||||
| * @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed | |||||
| */ | |||||
| !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document); | |||||
| @@ -0,0 +1,4 @@ | |||||
| /** | |||||
| * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed | |||||
| */ | |||||
| !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document); | |||||
| @@ -0,0 +1,199 @@ | |||||
| /* | |||||
| * language_data.js | |||||
| * ~~~~~~~~~~~~~~~~ | |||||
| * | |||||
| * This script contains the language-specific data used by searchtools.js, | |||||
| * namely the list of stopwords, stemmer, scorer and splitter. | |||||
| * | |||||
| * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | |||||
| * :license: BSD, see LICENSE for details. | |||||
| * | |||||
| */ | |||||
| var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; | |||||
| /* Non-minified version is copied as a separate JS file, is available */ | |||||
| /** | |||||
| * Porter Stemmer | |||||
| */ | |||||
| var Stemmer = function() { | |||||
| var step2list = { | |||||
| ational: 'ate', | |||||
| tional: 'tion', | |||||
| enci: 'ence', | |||||
| anci: 'ance', | |||||
| izer: 'ize', | |||||
| bli: 'ble', | |||||
| alli: 'al', | |||||
| entli: 'ent', | |||||
| eli: 'e', | |||||
| ousli: 'ous', | |||||
| ization: 'ize', | |||||
| ation: 'ate', | |||||
| ator: 'ate', | |||||
| alism: 'al', | |||||
| iveness: 'ive', | |||||
| fulness: 'ful', | |||||
| ousness: 'ous', | |||||
| aliti: 'al', | |||||
| iviti: 'ive', | |||||
| biliti: 'ble', | |||||
| logi: 'log' | |||||
| }; | |||||
| var step3list = { | |||||
| icate: 'ic', | |||||
| ative: '', | |||||
| alize: 'al', | |||||
| iciti: 'ic', | |||||
| ical: 'ic', | |||||
| ful: '', | |||||
| ness: '' | |||||
| }; | |||||
| var c = "[^aeiou]"; // consonant | |||||
| var v = "[aeiouy]"; // vowel | |||||
| var C = c + "[^aeiouy]*"; // consonant sequence | |||||
| var V = v + "[aeiou]*"; // vowel sequence | |||||
| var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 | |||||
| var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 | |||||
| var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 | |||||
| var s_v = "^(" + C + ")?" + v; // vowel in stem | |||||
| this.stemWord = function (w) { | |||||
| var stem; | |||||
| var suffix; | |||||
| var firstch; | |||||
| var origword = w; | |||||
| if (w.length < 3) | |||||
| return w; | |||||
| var re; | |||||
| var re2; | |||||
| var re3; | |||||
| var re4; | |||||
| firstch = w.substr(0,1); | |||||
| if (firstch == "y") | |||||
| w = firstch.toUpperCase() + w.substr(1); | |||||
| // Step 1a | |||||
| re = /^(.+?)(ss|i)es$/; | |||||
| re2 = /^(.+?)([^s])s$/; | |||||
| if (re.test(w)) | |||||
| w = w.replace(re,"$1$2"); | |||||
| else if (re2.test(w)) | |||||
| w = w.replace(re2,"$1$2"); | |||||
| // Step 1b | |||||
| re = /^(.+?)eed$/; | |||||
| re2 = /^(.+?)(ed|ing)$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| re = new RegExp(mgr0); | |||||
| if (re.test(fp[1])) { | |||||
| re = /.$/; | |||||
| w = w.replace(re,""); | |||||
| } | |||||
| } | |||||
| else if (re2.test(w)) { | |||||
| var fp = re2.exec(w); | |||||
| stem = fp[1]; | |||||
| re2 = new RegExp(s_v); | |||||
| if (re2.test(stem)) { | |||||
| w = stem; | |||||
| re2 = /(at|bl|iz)$/; | |||||
| re3 = new RegExp("([^aeiouylsz])\\1$"); | |||||
| re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); | |||||
| if (re2.test(w)) | |||||
| w = w + "e"; | |||||
| else if (re3.test(w)) { | |||||
| re = /.$/; | |||||
| w = w.replace(re,""); | |||||
| } | |||||
| else if (re4.test(w)) | |||||
| w = w + "e"; | |||||
| } | |||||
| } | |||||
| // Step 1c | |||||
| re = /^(.+?)y$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| stem = fp[1]; | |||||
| re = new RegExp(s_v); | |||||
| if (re.test(stem)) | |||||
| w = stem + "i"; | |||||
| } | |||||
| // Step 2 | |||||
| re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| stem = fp[1]; | |||||
| suffix = fp[2]; | |||||
| re = new RegExp(mgr0); | |||||
| if (re.test(stem)) | |||||
| w = stem + step2list[suffix]; | |||||
| } | |||||
| // Step 3 | |||||
| re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| stem = fp[1]; | |||||
| suffix = fp[2]; | |||||
| re = new RegExp(mgr0); | |||||
| if (re.test(stem)) | |||||
| w = stem + step3list[suffix]; | |||||
| } | |||||
| // Step 4 | |||||
| re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; | |||||
| re2 = /^(.+?)(s|t)(ion)$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| stem = fp[1]; | |||||
| re = new RegExp(mgr1); | |||||
| if (re.test(stem)) | |||||
| w = stem; | |||||
| } | |||||
| else if (re2.test(w)) { | |||||
| var fp = re2.exec(w); | |||||
| stem = fp[1] + fp[2]; | |||||
| re2 = new RegExp(mgr1); | |||||
| if (re2.test(stem)) | |||||
| w = stem; | |||||
| } | |||||
| // Step 5 | |||||
| re = /^(.+?)e$/; | |||||
| if (re.test(w)) { | |||||
| var fp = re.exec(w); | |||||
| stem = fp[1]; | |||||
| re = new RegExp(mgr1); | |||||
| re2 = new RegExp(meq1); | |||||
| re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); | |||||
| if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) | |||||
| w = stem; | |||||
| } | |||||
| re = /ll$/; | |||||
| re2 = new RegExp(mgr1); | |||||
| if (re.test(w) && re2.test(w)) { | |||||
| re = /.$/; | |||||
| w = w.replace(re,""); | |||||
| } | |||||
| // and turn initial Y back to y | |||||
| if (firstch == "y") | |||||
| w = firstch.toLowerCase() + w.substr(1); | |||||
| return w; | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,74 @@ | |||||
| pre { line-height: 125%; } | |||||
| td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | |||||
| span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } | |||||
| td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | |||||
| span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } | |||||
| .highlight .hll { background-color: #ffffcc } | |||||
| .highlight { background: #eeffcc; } | |||||
| .highlight .c { color: #408090; font-style: italic } /* Comment */ | |||||
| .highlight .err { border: 1px solid #FF0000 } /* Error */ | |||||
| .highlight .k { color: #007020; font-weight: bold } /* Keyword */ | |||||
| .highlight .o { color: #666666 } /* Operator */ | |||||
| .highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ | |||||
| .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ | |||||
| .highlight .cp { color: #007020 } /* Comment.Preproc */ | |||||
| .highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ | |||||
| .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ | |||||
| .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ | |||||
| .highlight .gd { color: #A00000 } /* Generic.Deleted */ | |||||
| .highlight .ge { font-style: italic } /* Generic.Emph */ | |||||
| .highlight .gr { color: #FF0000 } /* Generic.Error */ | |||||
| .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ | |||||
| .highlight .gi { color: #00A000 } /* Generic.Inserted */ | |||||
| .highlight .go { color: #333333 } /* Generic.Output */ | |||||
| .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ | |||||
| .highlight .gs { font-weight: bold } /* Generic.Strong */ | |||||
| .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ | |||||
| .highlight .gt { color: #0044DD } /* Generic.Traceback */ | |||||
| .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ | |||||
| .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ | |||||
| .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ | |||||
| .highlight .kp { color: #007020 } /* Keyword.Pseudo */ | |||||
| .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ | |||||
| .highlight .kt { color: #902000 } /* Keyword.Type */ | |||||
| .highlight .m { color: #208050 } /* Literal.Number */ | |||||
| .highlight .s { color: #4070a0 } /* Literal.String */ | |||||
| .highlight .na { color: #4070a0 } /* Name.Attribute */ | |||||
| .highlight .nb { color: #007020 } /* Name.Builtin */ | |||||
| .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ | |||||
| .highlight .no { color: #60add5 } /* Name.Constant */ | |||||
| .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ | |||||
| .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ | |||||
| .highlight .ne { color: #007020 } /* Name.Exception */ | |||||
| .highlight .nf { color: #06287e } /* Name.Function */ | |||||
| .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ | |||||
| .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ | |||||
| .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ | |||||
| .highlight .nv { color: #bb60d5 } /* Name.Variable */ | |||||
| .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ | |||||
| .highlight .w { color: #bbbbbb } /* Text.Whitespace */ | |||||
| .highlight .mb { color: #208050 } /* Literal.Number.Bin */ | |||||
| .highlight .mf { color: #208050 } /* Literal.Number.Float */ | |||||
| .highlight .mh { color: #208050 } /* Literal.Number.Hex */ | |||||
| .highlight .mi { color: #208050 } /* Literal.Number.Integer */ | |||||
| .highlight .mo { color: #208050 } /* Literal.Number.Oct */ | |||||
| .highlight .sa { color: #4070a0 } /* Literal.String.Affix */ | |||||
| .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ | |||||
| .highlight .sc { color: #4070a0 } /* Literal.String.Char */ | |||||
| .highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ | |||||
| .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ | |||||
| .highlight .s2 { color: #4070a0 } /* Literal.String.Double */ | |||||
| .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ | |||||
| .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ | |||||
| .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ | |||||
| .highlight .sx { color: #c65d09 } /* Literal.String.Other */ | |||||
| .highlight .sr { color: #235388 } /* Literal.String.Regex */ | |||||
| .highlight .s1 { color: #4070a0 } /* Literal.String.Single */ | |||||
| .highlight .ss { color: #517918 } /* Literal.String.Symbol */ | |||||
| .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ | |||||
| .highlight .fm { color: #06287e } /* Name.Function.Magic */ | |||||
| .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ | |||||
| .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ | |||||
| .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ | |||||
| .highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ | |||||
| .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ | |||||
| @@ -0,0 +1,566 @@ | |||||
| /* | |||||
| * searchtools.js | |||||
| * ~~~~~~~~~~~~~~~~ | |||||
| * | |||||
| * Sphinx JavaScript utilities for the full-text search. | |||||
| * | |||||
| * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. | |||||
| * :license: BSD, see LICENSE for details. | |||||
| * | |||||
| */ | |||||
| "use strict"; | |||||
| /** | |||||
| * Simple result scoring code. | |||||
| */ | |||||
| if (typeof Scorer === "undefined") { | |||||
| var Scorer = { | |||||
| // Implement the following function to further tweak the score for each result | |||||
| // The function takes a result array [docname, title, anchor, descr, score, filename] | |||||
| // and returns the new score. | |||||
| /* | |||||
| score: result => { | |||||
| const [docname, title, anchor, descr, score, filename] = result | |||||
| return score | |||||
| }, | |||||
| */ | |||||
| // query matches the full name of an object | |||||
| objNameMatch: 11, | |||||
| // or matches in the last dotted part of the object name | |||||
| objPartialMatch: 6, | |||||
| // Additive scores depending on the priority of the object | |||||
| objPrio: { | |||||
| 0: 15, // used to be importantResults | |||||
| 1: 5, // used to be objectResults | |||||
| 2: -5, // used to be unimportantResults | |||||
| }, | |||||
| // Used when the priority is not in the mapping. | |||||
| objPrioDefault: 0, | |||||
| // query found in title | |||||
| title: 15, | |||||
| partialTitle: 7, | |||||
| // query found in terms | |||||
| term: 5, | |||||
| partialTerm: 2, | |||||
| }; | |||||
| } | |||||
| const _removeChildren = (element) => { | |||||
| while (element && element.lastChild) element.removeChild(element.lastChild); | |||||
| }; | |||||
| /** | |||||
| * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping | |||||
| */ | |||||
| const _escapeRegExp = (string) => | |||||
| string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string | |||||
| const _displayItem = (item, searchTerms) => { | |||||
| const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; | |||||
| const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; | |||||
| const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; | |||||
| const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; | |||||
| const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; | |||||
| const [docName, title, anchor, descr, score, _filename] = item; | |||||
| let listItem = document.createElement("li"); | |||||
| let requestUrl; | |||||
| let linkUrl; | |||||
| if (docBuilder === "dirhtml") { | |||||
| // dirhtml builder | |||||
| let dirname = docName + "/"; | |||||
| if (dirname.match(/\/index\/$/)) | |||||
| dirname = dirname.substring(0, dirname.length - 6); | |||||
| else if (dirname === "index/") dirname = ""; | |||||
| requestUrl = docUrlRoot + dirname; | |||||
| linkUrl = requestUrl; | |||||
| } else { | |||||
| // normal html builders | |||||
| requestUrl = docUrlRoot + docName + docFileSuffix; | |||||
| linkUrl = docName + docLinkSuffix; | |||||
| } | |||||
| let linkEl = listItem.appendChild(document.createElement("a")); | |||||
| linkEl.href = linkUrl + anchor; | |||||
| linkEl.dataset.score = score; | |||||
| linkEl.innerHTML = title; | |||||
| if (descr) | |||||
| listItem.appendChild(document.createElement("span")).innerHTML = | |||||
| " (" + descr + ")"; | |||||
| else if (showSearchSummary) | |||||
| fetch(requestUrl) | |||||
| .then((responseData) => responseData.text()) | |||||
| .then((data) => { | |||||
| if (data) | |||||
| listItem.appendChild( | |||||
| Search.makeSearchSummary(data, searchTerms) | |||||
| ); | |||||
| }); | |||||
| Search.output.appendChild(listItem); | |||||
| }; | |||||
| const _finishSearch = (resultCount) => { | |||||
| Search.stopPulse(); | |||||
| Search.title.innerText = _("Search Results"); | |||||
| if (!resultCount) | |||||
| Search.status.innerText = Documentation.gettext( | |||||
| "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." | |||||
| ); | |||||
| else | |||||
| Search.status.innerText = _( | |||||
| `Search finished, found ${resultCount} page(s) matching the search query.` | |||||
| ); | |||||
| }; | |||||
| const _displayNextItem = ( | |||||
| results, | |||||
| resultCount, | |||||
| searchTerms | |||||
| ) => { | |||||
| // results left, load the summary and display it | |||||
| // this is intended to be dynamic (don't sub resultsCount) | |||||
| if (results.length) { | |||||
| _displayItem(results.pop(), searchTerms); | |||||
| setTimeout( | |||||
| () => _displayNextItem(results, resultCount, searchTerms), | |||||
| 5 | |||||
| ); | |||||
| } | |||||
| // search finished, update title and status message | |||||
| else _finishSearch(resultCount); | |||||
| }; | |||||
| /** | |||||
| * Default splitQuery function. Can be overridden in ``sphinx.search`` with a | |||||
| * custom function per language. | |||||
| * | |||||
| * The regular expression works by splitting the string on consecutive characters | |||||
| * that are not Unicode letters, numbers, underscores, or emoji characters. | |||||
| * This is the same as ``\W+`` in Python, preserving the surrogate pair area. | |||||
| */ | |||||
| if (typeof splitQuery === "undefined") { | |||||
| var splitQuery = (query) => query | |||||
| .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) | |||||
| .filter(term => term) // remove remaining empty strings | |||||
| } | |||||
| /** | |||||
| * Search Module | |||||
| */ | |||||
| const Search = { | |||||
| _index: null, | |||||
| _queued_query: null, | |||||
| _pulse_status: -1, | |||||
| htmlToText: (htmlString) => { | |||||
| const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); | |||||
| htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); | |||||
| const docContent = htmlElement.querySelector('[role="main"]'); | |||||
| if (docContent !== undefined) return docContent.textContent; | |||||
| console.warn( | |||||
| "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." | |||||
| ); | |||||
| return ""; | |||||
| }, | |||||
| init: () => { | |||||
| const query = new URLSearchParams(window.location.search).get("q"); | |||||
| document | |||||
| .querySelectorAll('input[name="q"]') | |||||
| .forEach((el) => (el.value = query)); | |||||
| if (query) Search.performSearch(query); | |||||
| }, | |||||
| loadIndex: (url) => | |||||
| (document.body.appendChild(document.createElement("script")).src = url), | |||||
| setIndex: (index) => { | |||||
| Search._index = index; | |||||
| if (Search._queued_query !== null) { | |||||
| const query = Search._queued_query; | |||||
| Search._queued_query = null; | |||||
| Search.query(query); | |||||
| } | |||||
| }, | |||||
| hasIndex: () => Search._index !== null, | |||||
| deferQuery: (query) => (Search._queued_query = query), | |||||
| stopPulse: () => (Search._pulse_status = -1), | |||||
| startPulse: () => { | |||||
| if (Search._pulse_status >= 0) return; | |||||
| const pulse = () => { | |||||
| Search._pulse_status = (Search._pulse_status + 1) % 4; | |||||
| Search.dots.innerText = ".".repeat(Search._pulse_status); | |||||
| if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); | |||||
| }; | |||||
| pulse(); | |||||
| }, | |||||
| /** | |||||
| * perform a search for something (or wait until index is loaded) | |||||
| */ | |||||
| performSearch: (query) => { | |||||
| // create the required interface elements | |||||
| const searchText = document.createElement("h2"); | |||||
| searchText.textContent = _("Searching"); | |||||
| const searchSummary = document.createElement("p"); | |||||
| searchSummary.classList.add("search-summary"); | |||||
| searchSummary.innerText = ""; | |||||
| const searchList = document.createElement("ul"); | |||||
| searchList.classList.add("search"); | |||||
| const out = document.getElementById("search-results"); | |||||
| Search.title = out.appendChild(searchText); | |||||
| Search.dots = Search.title.appendChild(document.createElement("span")); | |||||
| Search.status = out.appendChild(searchSummary); | |||||
| Search.output = out.appendChild(searchList); | |||||
| const searchProgress = document.getElementById("search-progress"); | |||||
| // Some themes don't use the search progress node | |||||
| if (searchProgress) { | |||||
| searchProgress.innerText = _("Preparing search..."); | |||||
| } | |||||
| Search.startPulse(); | |||||
| // index already loaded, the browser was quick! | |||||
| if (Search.hasIndex()) Search.query(query); | |||||
| else Search.deferQuery(query); | |||||
| }, | |||||
| /** | |||||
| * execute search (requires search index to be loaded) | |||||
| */ | |||||
| query: (query) => { | |||||
| const filenames = Search._index.filenames; | |||||
| const docNames = Search._index.docnames; | |||||
| const titles = Search._index.titles; | |||||
| const allTitles = Search._index.alltitles; | |||||
| const indexEntries = Search._index.indexentries; | |||||
| // stem the search terms and add them to the correct list | |||||
| const stemmer = new Stemmer(); | |||||
| const searchTerms = new Set(); | |||||
| const excludedTerms = new Set(); | |||||
| const highlightTerms = new Set(); | |||||
| const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); | |||||
| splitQuery(query.trim()).forEach((queryTerm) => { | |||||
| const queryTermLower = queryTerm.toLowerCase(); | |||||
| // maybe skip this "word" | |||||
| // stopwords array is from language_data.js | |||||
| if ( | |||||
| stopwords.indexOf(queryTermLower) !== -1 || | |||||
| queryTerm.match(/^\d+$/) | |||||
| ) | |||||
| return; | |||||
| // stem the word | |||||
| let word = stemmer.stemWord(queryTermLower); | |||||
| // select the correct list | |||||
| if (word[0] === "-") excludedTerms.add(word.substr(1)); | |||||
| else { | |||||
| searchTerms.add(word); | |||||
| highlightTerms.add(queryTermLower); | |||||
| } | |||||
| }); | |||||
| if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js | |||||
| localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) | |||||
| } | |||||
| // console.debug("SEARCH: searching for:"); | |||||
| // console.info("required: ", [...searchTerms]); | |||||
| // console.info("excluded: ", [...excludedTerms]); | |||||
| // array of [docname, title, anchor, descr, score, filename] | |||||
| let results = []; | |||||
| _removeChildren(document.getElementById("search-progress")); | |||||
| const queryLower = query.toLowerCase(); | |||||
| for (const [title, foundTitles] of Object.entries(allTitles)) { | |||||
| if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { | |||||
| for (const [file, id] of foundTitles) { | |||||
| let score = Math.round(100 * queryLower.length / title.length) | |||||
| results.push([ | |||||
| docNames[file], | |||||
| titles[file] !== title ? `${titles[file]} > ${title}` : title, | |||||
| id !== null ? "#" + id : "", | |||||
| null, | |||||
| score, | |||||
| filenames[file], | |||||
| ]); | |||||
| } | |||||
| } | |||||
| } | |||||
| // search for explicit entries in index directives | |||||
| for (const [entry, foundEntries] of Object.entries(indexEntries)) { | |||||
| if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { | |||||
| for (const [file, id] of foundEntries) { | |||||
| let score = Math.round(100 * queryLower.length / entry.length) | |||||
| results.push([ | |||||
| docNames[file], | |||||
| titles[file], | |||||
| id ? "#" + id : "", | |||||
| null, | |||||
| score, | |||||
| filenames[file], | |||||
| ]); | |||||
| } | |||||
| } | |||||
| } | |||||
| // lookup as object | |||||
| objectTerms.forEach((term) => | |||||
| results.push(...Search.performObjectSearch(term, objectTerms)) | |||||
| ); | |||||
| // lookup as search terms in fulltext | |||||
| results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); | |||||
| // let the scorer override scores with a custom scoring function | |||||
| if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); | |||||
| // now sort the results by score (in opposite order of appearance, since the | |||||
| // display function below uses pop() to retrieve items) and then | |||||
| // alphabetically | |||||
| results.sort((a, b) => { | |||||
| const leftScore = a[4]; | |||||
| const rightScore = b[4]; | |||||
| if (leftScore === rightScore) { | |||||
| // same score: sort alphabetically | |||||
| const leftTitle = a[1].toLowerCase(); | |||||
| const rightTitle = b[1].toLowerCase(); | |||||
| if (leftTitle === rightTitle) return 0; | |||||
| return leftTitle > rightTitle ? -1 : 1; // inverted is intentional | |||||
| } | |||||
| return leftScore > rightScore ? 1 : -1; | |||||
| }); | |||||
| // remove duplicate search results | |||||
| // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept | |||||
| let seen = new Set(); | |||||
| results = results.reverse().reduce((acc, result) => { | |||||
| let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); | |||||
| if (!seen.has(resultStr)) { | |||||
| acc.push(result); | |||||
| seen.add(resultStr); | |||||
| } | |||||
| return acc; | |||||
| }, []); | |||||
| results = results.reverse(); | |||||
| // for debugging | |||||
| //Search.lastresults = results.slice(); // a copy | |||||
| // console.info("search results:", Search.lastresults); | |||||
| // print the results | |||||
| _displayNextItem(results, results.length, searchTerms); | |||||
| }, | |||||
| /** | |||||
| * search for object names | |||||
| */ | |||||
| performObjectSearch: (object, objectTerms) => { | |||||
| const filenames = Search._index.filenames; | |||||
| const docNames = Search._index.docnames; | |||||
| const objects = Search._index.objects; | |||||
| const objNames = Search._index.objnames; | |||||
| const titles = Search._index.titles; | |||||
| const results = []; | |||||
| const objectSearchCallback = (prefix, match) => { | |||||
| const name = match[4] | |||||
| const fullname = (prefix ? prefix + "." : "") + name; | |||||
| const fullnameLower = fullname.toLowerCase(); | |||||
| if (fullnameLower.indexOf(object) < 0) return; | |||||
| let score = 0; | |||||
| const parts = fullnameLower.split("."); | |||||
| // check for different match types: exact matches of full name or | |||||
| // "last name" (i.e. last dotted part) | |||||
| if (fullnameLower === object || parts.slice(-1)[0] === object) | |||||
| score += Scorer.objNameMatch; | |||||
| else if (parts.slice(-1)[0].indexOf(object) > -1) | |||||
| score += Scorer.objPartialMatch; // matches in last name | |||||
| const objName = objNames[match[1]][2]; | |||||
| const title = titles[match[0]]; | |||||
| // If more than one term searched for, we require other words to be | |||||
| // found in the name/title/description | |||||
| const otherTerms = new Set(objectTerms); | |||||
| otherTerms.delete(object); | |||||
| if (otherTerms.size > 0) { | |||||
| const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); | |||||
| if ( | |||||
| [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) | |||||
| ) | |||||
| return; | |||||
| } | |||||
| let anchor = match[3]; | |||||
| if (anchor === "") anchor = fullname; | |||||
| else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; | |||||
| const descr = objName + _(", in ") + title; | |||||
| // add custom score for some objects according to scorer | |||||
| if (Scorer.objPrio.hasOwnProperty(match[2])) | |||||
| score += Scorer.objPrio[match[2]]; | |||||
| else score += Scorer.objPrioDefault; | |||||
| results.push([ | |||||
| docNames[match[0]], | |||||
| fullname, | |||||
| "#" + anchor, | |||||
| descr, | |||||
| score, | |||||
| filenames[match[0]], | |||||
| ]); | |||||
| }; | |||||
| Object.keys(objects).forEach((prefix) => | |||||
| objects[prefix].forEach((array) => | |||||
| objectSearchCallback(prefix, array) | |||||
| ) | |||||
| ); | |||||
| return results; | |||||
| }, | |||||
| /** | |||||
| * search for full-text terms in the index | |||||
| */ | |||||
| performTermsSearch: (searchTerms, excludedTerms) => { | |||||
| // prepare search | |||||
| const terms = Search._index.terms; | |||||
| const titleTerms = Search._index.titleterms; | |||||
| const filenames = Search._index.filenames; | |||||
| const docNames = Search._index.docnames; | |||||
| const titles = Search._index.titles; | |||||
| const scoreMap = new Map(); | |||||
| const fileMap = new Map(); | |||||
| // perform the search on the required terms | |||||
| searchTerms.forEach((word) => { | |||||
| const files = []; | |||||
| const arr = [ | |||||
| { files: terms[word], score: Scorer.term }, | |||||
| { files: titleTerms[word], score: Scorer.title }, | |||||
| ]; | |||||
| // add support for partial matches | |||||
| if (word.length > 2) { | |||||
| const escapedWord = _escapeRegExp(word); | |||||
| Object.keys(terms).forEach((term) => { | |||||
| if (term.match(escapedWord) && !terms[word]) | |||||
| arr.push({ files: terms[term], score: Scorer.partialTerm }); | |||||
| }); | |||||
| Object.keys(titleTerms).forEach((term) => { | |||||
| if (term.match(escapedWord) && !titleTerms[word]) | |||||
| arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); | |||||
| }); | |||||
| } | |||||
| // no match but word was a required one | |||||
| if (arr.every((record) => record.files === undefined)) return; | |||||
| // found search word in contents | |||||
| arr.forEach((record) => { | |||||
| if (record.files === undefined) return; | |||||
| let recordFiles = record.files; | |||||
| if (recordFiles.length === undefined) recordFiles = [recordFiles]; | |||||
| files.push(...recordFiles); | |||||
| // set score for the word in each file | |||||
| recordFiles.forEach((file) => { | |||||
| if (!scoreMap.has(file)) scoreMap.set(file, {}); | |||||
| scoreMap.get(file)[word] = record.score; | |||||
| }); | |||||
| }); | |||||
| // create the mapping | |||||
| files.forEach((file) => { | |||||
| if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) | |||||
| fileMap.get(file).push(word); | |||||
| else fileMap.set(file, [word]); | |||||
| }); | |||||
| }); | |||||
| // now check if the files don't contain excluded terms | |||||
| const results = []; | |||||
| for (const [file, wordList] of fileMap) { | |||||
| // check if all requirements are matched | |||||
| // as search terms with length < 3 are discarded | |||||
| const filteredTermCount = [...searchTerms].filter( | |||||
| (term) => term.length > 2 | |||||
| ).length; | |||||
| if ( | |||||
| wordList.length !== searchTerms.size && | |||||
| wordList.length !== filteredTermCount | |||||
| ) | |||||
| continue; | |||||
| // ensure that none of the excluded terms is in the search result | |||||
| if ( | |||||
| [...excludedTerms].some( | |||||
| (term) => | |||||
| terms[term] === file || | |||||
| titleTerms[term] === file || | |||||
| (terms[term] || []).includes(file) || | |||||
| (titleTerms[term] || []).includes(file) | |||||
| ) | |||||
| ) | |||||
| break; | |||||
| // select one (max) score for the file. | |||||
| const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); | |||||
| // add result to the result list | |||||
| results.push([ | |||||
| docNames[file], | |||||
| titles[file], | |||||
| "", | |||||
| null, | |||||
| score, | |||||
| filenames[file], | |||||
| ]); | |||||
| } | |||||
| return results; | |||||
| }, | |||||
| /** | |||||
| * helper function to return a node containing the | |||||
| * search summary for a given text. keywords is a list | |||||
| * of stemmed words. | |||||
| */ | |||||
| makeSearchSummary: (htmlText, keywords) => { | |||||
| const text = Search.htmlToText(htmlText); | |||||
| if (text === "") return null; | |||||
| const textLower = text.toLowerCase(); | |||||
| const actualStartPosition = [...keywords] | |||||
| .map((k) => textLower.indexOf(k.toLowerCase())) | |||||
| .filter((i) => i > -1) | |||||
| .slice(-1)[0]; | |||||
| const startWithContext = Math.max(actualStartPosition - 120, 0); | |||||
| const top = startWithContext === 0 ? "" : "..."; | |||||
| const tail = startWithContext + 240 < text.length ? "..." : ""; | |||||
| let summary = document.createElement("p"); | |||||
| summary.classList.add("context"); | |||||
| summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; | |||||
| return summary; | |||||
| }, | |||||
| }; | |||||
| _ready(Search.init); | |||||
| @@ -0,0 +1,144 @@ | |||||
| /* Highlighting utilities for Sphinx HTML documentation. */ | |||||
| "use strict"; | |||||
| const SPHINX_HIGHLIGHT_ENABLED = true | |||||
| /** | |||||
| * highlight a given string on a node by wrapping it in | |||||
| * span elements with the given class name. | |||||
| */ | |||||
| const _highlight = (node, addItems, text, className) => { | |||||
| if (node.nodeType === Node.TEXT_NODE) { | |||||
| const val = node.nodeValue; | |||||
| const parent = node.parentNode; | |||||
| const pos = val.toLowerCase().indexOf(text); | |||||
| if ( | |||||
| pos >= 0 && | |||||
| !parent.classList.contains(className) && | |||||
| !parent.classList.contains("nohighlight") | |||||
| ) { | |||||
| let span; | |||||
| const closestNode = parent.closest("body, svg, foreignObject"); | |||||
| const isInSVG = closestNode && closestNode.matches("svg"); | |||||
| if (isInSVG) { | |||||
| span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); | |||||
| } else { | |||||
| span = document.createElement("span"); | |||||
| span.classList.add(className); | |||||
| } | |||||
| span.appendChild(document.createTextNode(val.substr(pos, text.length))); | |||||
| parent.insertBefore( | |||||
| span, | |||||
| parent.insertBefore( | |||||
| document.createTextNode(val.substr(pos + text.length)), | |||||
| node.nextSibling | |||||
| ) | |||||
| ); | |||||
| node.nodeValue = val.substr(0, pos); | |||||
| if (isInSVG) { | |||||
| const rect = document.createElementNS( | |||||
| "http://www.w3.org/2000/svg", | |||||
| "rect" | |||||
| ); | |||||
| const bbox = parent.getBBox(); | |||||
| rect.x.baseVal.value = bbox.x; | |||||
| rect.y.baseVal.value = bbox.y; | |||||
| rect.width.baseVal.value = bbox.width; | |||||
| rect.height.baseVal.value = bbox.height; | |||||
| rect.setAttribute("class", className); | |||||
| addItems.push({ parent: parent, target: rect }); | |||||
| } | |||||
| } | |||||
| } else if (node.matches && !node.matches("button, select, textarea")) { | |||||
| node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); | |||||
| } | |||||
| }; | |||||
| const _highlightText = (thisNode, text, className) => { | |||||
| let addItems = []; | |||||
| _highlight(thisNode, addItems, text, className); | |||||
| addItems.forEach((obj) => | |||||
| obj.parent.insertAdjacentElement("beforebegin", obj.target) | |||||
| ); | |||||
| }; | |||||
| /** | |||||
| * Small JavaScript module for the documentation. | |||||
| */ | |||||
| const SphinxHighlight = { | |||||
| /** | |||||
| * highlight the search words provided in localstorage in the text | |||||
| */ | |||||
| highlightSearchWords: () => { | |||||
| if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight | |||||
| // get and clear terms from localstorage | |||||
| const url = new URL(window.location); | |||||
| const highlight = | |||||
| localStorage.getItem("sphinx_highlight_terms") | |||||
| || url.searchParams.get("highlight") | |||||
| || ""; | |||||
| localStorage.removeItem("sphinx_highlight_terms") | |||||
| url.searchParams.delete("highlight"); | |||||
| window.history.replaceState({}, "", url); | |||||
| // get individual terms from highlight string | |||||
| const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); | |||||
| if (terms.length === 0) return; // nothing to do | |||||
| // There should never be more than one element matching "div.body" | |||||
| const divBody = document.querySelectorAll("div.body"); | |||||
| const body = divBody.length ? divBody[0] : document.querySelector("body"); | |||||
| window.setTimeout(() => { | |||||
| terms.forEach((term) => _highlightText(body, term, "highlighted")); | |||||
| }, 10); | |||||
| const searchBox = document.getElementById("searchbox"); | |||||
| if (searchBox === null) return; | |||||
| searchBox.appendChild( | |||||
| document | |||||
| .createRange() | |||||
| .createContextualFragment( | |||||
| '<p class="highlight-link">' + | |||||
| '<a href="javascript:SphinxHighlight.hideSearchWords()">' + | |||||
| _("Hide Search Matches") + | |||||
| "</a></p>" | |||||
| ) | |||||
| ); | |||||
| }, | |||||
| /** | |||||
| * helper function to hide the search marks again | |||||
| */ | |||||
| hideSearchWords: () => { | |||||
| document | |||||
| .querySelectorAll("#searchbox .highlight-link") | |||||
| .forEach((el) => el.remove()); | |||||
| document | |||||
| .querySelectorAll("span.highlighted") | |||||
| .forEach((el) => el.classList.remove("highlighted")); | |||||
| localStorage.removeItem("sphinx_highlight_terms") | |||||
| }, | |||||
| initEscapeListener: () => { | |||||
| // only install a listener if it is really needed | |||||
| if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; | |||||
| document.addEventListener("keydown", (event) => { | |||||
| // bail for input elements | |||||
| if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; | |||||
| // bail with special keys | |||||
| if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; | |||||
| if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { | |||||
| SphinxHighlight.hideSearchWords(); | |||||
| event.preventDefault(); | |||||
| } | |||||
| }); | |||||
| }, | |||||
| }; | |||||
| _ready(SphinxHighlight.highlightSearchWords); | |||||
| _ready(SphinxHighlight.initEscapeListener); | |||||
| @@ -0,0 +1,122 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Market — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="../_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | |||||
| <script src="../_static/doctools.js"></script> | |||||
| <script src="../_static/sphinx_highlight.js"></script> | |||||
| <script src="../_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="../genindex.html" /> | |||||
| <link rel="search" title="Search" href="../search.html" /> | |||||
| <link rel="next" title="Specification" href="spec.html" /> | |||||
| <link rel="prev" title="Introduction" href="../introduction/intro.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="../index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul class="current"> | |||||
| <li class="toctree-l1 current"><a class="current reference internal" href="#">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="../references/api.html#market">Market</a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="../index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Market</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| <a href="../_sources/components/market.rst.txt" rel="nofollow"> View page source</a> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <section id="market"> | |||||
| <span id="id1"></span><h1>Market<a class="headerlink" href="#market" title="Permalink to this heading"></a></h1> | |||||
| </section> | |||||
| </div> | |||||
| </div> | |||||
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> | |||||
| <a href="../introduction/intro.html" class="btn btn-neutral float-left" title="Introduction" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> | |||||
| <a href="spec.html" class="btn btn-neutral float-right" title="Specification" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> | |||||
| </div> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,122 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Specification — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="../_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | |||||
| <script src="../_static/doctools.js"></script> | |||||
| <script src="../_static/sphinx_highlight.js"></script> | |||||
| <script src="../_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="../genindex.html" /> | |||||
| <link rel="search" title="Search" href="../search.html" /> | |||||
| <link rel="next" title="API Reference" href="../references/api.html" /> | |||||
| <link rel="prev" title="Market" href="market.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="../index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul class="current"> | |||||
| <li class="toctree-l1"><a class="reference internal" href="market.html">Market</a></li> | |||||
| <li class="toctree-l1 current"><a class="current reference internal" href="#">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="../references/api.html#market">Market</a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="../index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Specification</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| <a href="../_sources/components/spec.rst.txt" rel="nofollow"> View page source</a> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <section id="specification"> | |||||
| <span id="spec"></span><h1>Specification<a class="headerlink" href="#specification" title="Permalink to this heading"></a></h1> | |||||
| </section> | |||||
| </div> | |||||
| </div> | |||||
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> | |||||
| <a href="market.html" class="btn btn-neutral float-left" title="Market" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> | |||||
| <a href="../references/api.html" class="btn btn-neutral float-right" title="API Reference" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> | |||||
| </div> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,207 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Index — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | |||||
| <script src="_static/doctools.js"></script> | |||||
| <script src="_static/sphinx_highlight.js"></script> | |||||
| <script src="_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="#" /> | |||||
| <link rel="search" title="Search" href="search.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#market">Market</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.market.LearnwareMarket"><code class="docutils literal notranslate"><span class="pre">LearnwareMarket</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#learnware">Learnware</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.learnware.Learnware"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#specification">Specification</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.Specification"><code class="docutils literal notranslate"><span class="pre">Specification</span></code></a></li> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.StatSpecification"><code class="docutils literal notranslate"><span class="pre">StatSpecification</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Index</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <h1 id="index">Index</h1> | |||||
| <div class="genindex-jumpbox"> | |||||
| <a href="#A"><strong>A</strong></a> | |||||
| | <a href="#D"><strong>D</strong></a> | |||||
| | <a href="#G"><strong>G</strong></a> | |||||
| | <a href="#L"><strong>L</strong></a> | |||||
| | <a href="#R"><strong>R</strong></a> | |||||
| | <a href="#S"><strong>S</strong></a> | |||||
| | <a href="#U"><strong>U</strong></a> | |||||
| </div> | |||||
| <h2 id="A">A</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.add_learnware">add_learnware() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="D">D</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.delete_learnware">delete_learnware() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="G">G</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.get_learnware_by_ids">get_learnware_by_ids() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.get_property_list">get_property_list() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="L">L</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.learnware.Learnware">Learnware (class in learnware.learnware)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket">LearnwareMarket (class in learnware.market)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="R">R</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.reload_market">reload_market() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="S">S</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.search_learnware">search_learnware() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.specification.Specification">Specification (class in learnware.specification)</a> | |||||
| </li> | |||||
| <li><a href="references/api.html#learnware.specification.StatSpecification">StatSpecification (class in learnware.specification)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| <h2 id="U">U</h2> | |||||
| <table style="width: 100%" class="indextable genindextable"><tr> | |||||
| <td style="width: 33%; vertical-align: top;"><ul> | |||||
| <li><a href="references/api.html#learnware.market.LearnwareMarket.update_learnware">update_learnware() (learnware.market.LearnwareMarket method)</a> | |||||
| </li> | |||||
| </ul></td> | |||||
| </tr></table> | |||||
| </div> | |||||
| </div> | |||||
| <footer> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,172 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Learnware Documentation — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | |||||
| <script src="_static/doctools.js"></script> | |||||
| <script src="_static/sphinx_highlight.js"></script> | |||||
| <script src="_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="genindex.html" /> | |||||
| <link rel="search" title="Search" href="search.html" /> | |||||
| <link rel="next" title="Introduction" href="introduction/intro.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="#"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul class="current"> | |||||
| <li class="toctree-l1 current"><a class="current reference internal" href="#">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#market">Market</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.market.LearnwareMarket"><code class="docutils literal notranslate"><span class="pre">LearnwareMarket</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#learnware">Learnware</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.learnware.Learnware"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#specification">Specification</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.Specification"><code class="docutils literal notranslate"><span class="pre">Specification</span></code></a></li> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.StatSpecification"><code class="docutils literal notranslate"><span class="pre">StatSpecification</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="#">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="#" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code> Documentation</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| <a href="_sources/index.rst.txt" rel="nofollow"> View page source</a> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <section id="learnware-documentation"> | |||||
| <h1><code class="docutils literal notranslate"><span class="pre">Learnware</span></code> Documentation<a class="headerlink" href="#learnware-documentation" title="Permalink to this heading"></a></h1> | |||||
| <p><code class="docutils literal notranslate"><span class="pre">Learnware</span></code> is …</p> | |||||
| <section id="document-structure"> | |||||
| <span id="user-guide"></span><h2>Document Structure<a class="headerlink" href="#document-structure" title="Permalink to this heading"></a></h2> | |||||
| <div class="toctree-wrapper compound"> | |||||
| </div> | |||||
| <div class="toctree-wrapper compound"> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| </div> | |||||
| <div class="toctree-wrapper compound"> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| </div> | |||||
| <div class="toctree-wrapper compound"> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#market">Market</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.market.LearnwareMarket"><code class="docutils literal notranslate"><span class="pre">LearnwareMarket</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#learnware">Learnware</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.learnware.Learnware"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#specification">Specification</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.Specification"><code class="docutils literal notranslate"><span class="pre">Specification</span></code></a></li> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.StatSpecification"><code class="docutils literal notranslate"><span class="pre">StatSpecification</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </section> | |||||
| </section> | |||||
| </div> | |||||
| </div> | |||||
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> | |||||
| <a href="introduction/intro.html" class="btn btn-neutral float-right" title="Introduction" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> | |||||
| </div> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,122 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Introduction — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="../_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | |||||
| <script src="../_static/doctools.js"></script> | |||||
| <script src="../_static/sphinx_highlight.js"></script> | |||||
| <script src="../_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="../genindex.html" /> | |||||
| <link rel="search" title="Search" href="../search.html" /> | |||||
| <link rel="next" title="Market" href="../components/market.html" /> | |||||
| <link rel="prev" title="Learnware Documentation" href="../index.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="../index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul class="current"> | |||||
| <li class="toctree-l1 current"><a class="current reference internal" href="#">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="../references/api.html#market">Market</a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="../index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Introduction</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| <a href="../_sources/introduction/intro.rst.txt" rel="nofollow"> View page source</a> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <section id="introduction"> | |||||
| <span id="intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h1> | |||||
| </section> | |||||
| </div> | |||||
| </div> | |||||
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> | |||||
| <a href="../index.html" class="btn btn-neutral float-left" title="Learnware Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> | |||||
| <a href="../components/market.html" class="btn btn-neutral float-right" title="Market" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> | |||||
| </div> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,139 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Python Module Index — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | |||||
| <script src="_static/doctools.js"></script> | |||||
| <script src="_static/sphinx_highlight.js"></script> | |||||
| <script src="_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="genindex.html" /> | |||||
| <link rel="search" title="Search" href="search.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#module-learnware.market">Market</a></li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#learnware">Learnware</a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Python Module Index</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <h1>Python Module Index</h1> | |||||
| <div class="modindex-jumpbox"> | |||||
| <a href="#cap-l"><strong>l</strong></a> | |||||
| </div> | |||||
| <table class="indextable modindextable"> | |||||
| <tr class="pcap"><td></td><td> </td><td></td></tr> | |||||
| <tr class="cap" id="cap-l"><td></td><td> | |||||
| <strong>l</strong></td><td></td></tr> | |||||
| <tr> | |||||
| <td><img src="_static/minus.png" class="toggler" | |||||
| id="toggle-1" style="display: none" alt="-" /></td> | |||||
| <td> | |||||
| <code class="xref">learnware</code></td><td> | |||||
| <em></em></td></tr> | |||||
| <tr class="cg-1"> | |||||
| <td></td> | |||||
| <td>    | |||||
| <a href="references/api.html#module-learnware.market"><code class="xref">learnware.market</code></a></td><td> | |||||
| <em></em></td></tr> | |||||
| </table> | |||||
| </div> | |||||
| </div> | |||||
| <footer> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,334 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>API Reference — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="../_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> | |||||
| <script src="../_static/doctools.js"></script> | |||||
| <script src="../_static/sphinx_highlight.js"></script> | |||||
| <script src="../_static/js/theme.js"></script> | |||||
| <link rel="index" title="Index" href="../genindex.html" /> | |||||
| <link rel="search" title="Search" href="../search.html" /> | |||||
| <link rel="prev" title="Specification" href="../components/spec.html" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="../index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="../components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul class="current"> | |||||
| <li class="toctree-l1 current"><a class="current reference internal" href="#">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="#market">Market</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="#learnware.market.LearnwareMarket"><code class="docutils literal notranslate"><span class="pre">LearnwareMarket</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="#learnware">Learnware</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="#learnware.learnware.Learnware"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="#specification">Specification</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="#learnware.specification.Specification"><code class="docutils literal notranslate"><span class="pre">Specification</span></code></a></li> | |||||
| <li class="toctree-l3"><a class="reference internal" href="#learnware.specification.StatSpecification"><code class="docutils literal notranslate"><span class="pre">StatSpecification</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="../index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">API Reference</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| <a href="../_sources/references/api.rst.txt" rel="nofollow"> View page source</a> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <section id="api-reference"> | |||||
| <span id="api"></span><h1>API Reference<a class="headerlink" href="#api-reference" title="Permalink to this heading"></a></h1> | |||||
| <p>Here you can find all <code class="docutils literal notranslate"><span class="pre">learnware</span></code> interfaces.</p> | |||||
| <section id="market"> | |||||
| <h2>Market<a class="headerlink" href="#market" title="Permalink to this heading"></a></h2> | |||||
| <dl class="py class"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket"> | |||||
| <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">learnware.market.</span></span><span class="sig-name descname"><span class="pre">LearnwareMarket</span></span><a class="headerlink" href="#learnware.market.LearnwareMarket" title="Permalink to this definition"></a></dt> | |||||
| <dd><p>Market for Learnware</p> | |||||
| <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># Provide some python examples</span> | |||||
| <span class="n">learnmarket</span> <span class="o">=</span> <span class="n">LearnwareMarket</span><span class="p">()</span> | |||||
| </pre></div> | |||||
| </div> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.add_learnware"> | |||||
| <span class="sig-name descname"><span class="pre">add_learnware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">learnware_name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stat_spec_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">properties</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">desc</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">bool</span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.add_learnware" title="Permalink to this definition"></a></dt> | |||||
| <dd><p>Add a learnware into the market.</p> | |||||
| <div class="admonition note"> | |||||
| <p class="admonition-title">Note</p> | |||||
| <p>Given a prediction of a certain time, all signals before this time will be prepared well.</p> | |||||
| </div> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><ul class="simple"> | |||||
| <li><p><strong>learnware_name</strong> (<em>str</em>) – Name of new learnware.</p></li> | |||||
| <li><p><strong>model_path</strong> (<em>str</em>) – Filepath for learnware model, a zipped file.</p></li> | |||||
| <li><p><strong>stat_spec_path</strong> (<em>str</em>) – Filepath for statistical specification, a ‘.npy’ file. | |||||
| How to pass parameters requires further discussion.</p></li> | |||||
| <li><p><strong>properties</strong> (<em>dict</em>) – property for new learnware, in dictionary format.</p></li> | |||||
| <li><p><strong>desc</strong> (<em>str</em>) – Brief desciption for new learnware.</p></li> | |||||
| </ul> | |||||
| </dd> | |||||
| <dt class="field-even">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p>str indicating model_id, bool indicating whether the learnware is added successfully.</p> | |||||
| </dd> | |||||
| <dt class="field-odd">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>Tuple[str, bool]</p> | |||||
| </dd> | |||||
| <dt class="field-even">Raises<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p><strong>FileNotFoundError</strong> – file for model or statistical specification not found</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.delete_learnware"> | |||||
| <span class="sig-name descname"><span class="pre">delete_learnware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.delete_learnware" title="Permalink to this definition"></a></dt> | |||||
| <dd><blockquote> | |||||
| <div><p>deleted a learnware from market</p> | |||||
| </div></blockquote> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p><strong>id</strong> (<em>str</em>) – id of learnware to be deleted</p> | |||||
| </dd> | |||||
| <dt class="field-even">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p>True if the target learnware is deleted successfully.</p> | |||||
| </dd> | |||||
| <dt class="field-odd">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>bool</p> | |||||
| </dd> | |||||
| <dt class="field-even">Raises<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p><strong>Exception</strong> – Raise an excpetion when give id is NOT found in learnware list</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.get_learnware_by_ids"> | |||||
| <span class="sig-name descname"><span class="pre">get_learnware_by_ids</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">]</span></span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#learnware.learnware.Learnware" title="learnware.learnware.base.Learnware"><span class="pre">Learnware</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><a class="reference internal" href="#learnware.learnware.Learnware" title="learnware.learnware.base.Learnware"><span class="pre">Learnware</span></a><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.get_learnware_by_ids" title="Permalink to this definition"></a></dt> | |||||
| <dd><blockquote> | |||||
| <div><p>Get Learnware from market by id</p> | |||||
| </div></blockquote> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p><strong>id</strong> (<em>Union</em><em>[</em><em>str</em><em>, </em><em>List</em><em>[</em><em>str</em><em>]</em><em>]</em>) – Given one id or a list of ids as target.</p> | |||||
| </dd> | |||||
| <dt class="field-even">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p><p>Return a Learnware object or a list of Learnware objects based on the type of input param.</p> | |||||
| <ul class="simple"> | |||||
| <li><p>The returned items are search results.</p></li> | |||||
| <li><p>’None’ indicating the target id not found.</p></li> | |||||
| </ul> | |||||
| </p> | |||||
| </dd> | |||||
| <dt class="field-odd">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>Union[<a class="reference internal" href="#learnware.learnware.Learnware" title="learnware.learnware.Learnware">Learnware</a>, List[<a class="reference internal" href="#learnware.learnware.Learnware" title="learnware.learnware.Learnware">Learnware</a>]]</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.get_property_list"> | |||||
| <span class="sig-name descname"><span class="pre">get_property_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">dict</span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.get_property_list" title="Permalink to this definition"></a></dt> | |||||
| <dd><p>Return all properties available</p> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>All properties in dictionary format</p> | |||||
| </dd> | |||||
| <dt class="field-even">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p>dict</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.reload_market"> | |||||
| <span class="sig-name descname"><span class="pre">reload_market</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">market_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">property_list_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">load_mode</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'database'</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.reload_market" title="Permalink to this definition"></a></dt> | |||||
| <dd><p>Reload the market when server restared.</p> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><ul class="simple"> | |||||
| <li><p><strong>market_path</strong> (<em>str</em>) – Directory for market data. ‘_IP_:_port_’ for loading from database.</p></li> | |||||
| <li><p><strong>property_list_path</strong> (<em>str</em>) – Directory for available properties. Should be a json file.</p></li> | |||||
| <li><p><strong>load_mode</strong> (<em>str</em><em>, </em><em>optional</em>) – Type of reload source. Currently, only ‘database’ is available. Defaults to ‘database’, by default “database”</p></li> | |||||
| </ul> | |||||
| </dd> | |||||
| <dt class="field-even">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p>A flag indicating whether the market is reload successfully.</p> | |||||
| </dd> | |||||
| <dt class="field-odd">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>bool</p> | |||||
| </dd> | |||||
| <dt class="field-even">Raises<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><ul class="simple"> | |||||
| <li><p><strong>NotImplementedError</strong> – Reload method NOT implemented. Currently, only loading from database is supported.</p></li> | |||||
| <li><p><strong>FileNotFoundError</strong> – Loading source/property_list NOT found. Check whether the source and property_list are available.</p></li> | |||||
| </ul> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.search_learnware"> | |||||
| <span class="sig-name descname"><span class="pre">search_learnware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">target_properties</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">target_stat_specification</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">List</span><span class="p"><span class="pre">[</span></span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">]</span></span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.search_learnware" title="Permalink to this definition"></a></dt> | |||||
| <dd><blockquote> | |||||
| <div><p>Search Learnware based on properties and statistical specification.</p> | |||||
| <ul class="simple"> | |||||
| <li><p>Return random learnwares when both target_properties and target_stat_specification is None</p></li> | |||||
| <li><p>Search only based on properties when target_stat_specification is None</p></li> | |||||
| <li><p>Filter through properties and rank according to statistical specification otherwise</p></li> | |||||
| </ul> | |||||
| </div></blockquote> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><ul class="simple"> | |||||
| <li><p><strong>target_properties</strong> (<em>dict</em><em>, </em><em>optional</em>) – Properties selected by user, by default None</p></li> | |||||
| <li><p><strong>target_stat_specification</strong> (<em>str</em><em>, </em><em>optional</em>) – statistical specification uploaded by user, by default None</p></li> | |||||
| </ul> | |||||
| </dd> | |||||
| <dt class="field-even">Returns<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p><p>return two items:</p> | |||||
| <ul class="simple"> | |||||
| <li><p>first is recommended combination, None when no recommended combination is calculated or statistical specification is not provided.</p></li> | |||||
| <li><p>second is a list of matched learnwares</p></li> | |||||
| </ul> | |||||
| </p> | |||||
| </dd> | |||||
| <dt class="field-odd">Return type<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p>Tuple[Any, Dict[str, List[Any]]]</p> | |||||
| </dd> | |||||
| <dt class="field-even">Raises<span class="colon">:</span></dt> | |||||
| <dd class="field-even"><p><strong>FileNotFoundError</strong> – Give file path is empty.</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| <dl class="py method"> | |||||
| <dt class="sig sig-object py" id="learnware.market.LearnwareMarket.update_learnware"> | |||||
| <span class="sig-name descname"><span class="pre">update_learnware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">bool</span></span></span><a class="headerlink" href="#learnware.market.LearnwareMarket.update_learnware" title="Permalink to this definition"></a></dt> | |||||
| <dd><blockquote> | |||||
| <div><p>Update Learnware with id and content to be updated. | |||||
| Empty interface. TODO</p> | |||||
| </div></blockquote> | |||||
| <dl class="field-list simple"> | |||||
| <dt class="field-odd">Parameters<span class="colon">:</span></dt> | |||||
| <dd class="field-odd"><p><strong>id</strong> (<em>str</em>) – id of target learnware.</p> | |||||
| </dd> | |||||
| </dl> | |||||
| </dd></dl> | |||||
| </dd></dl> | |||||
| </section> | |||||
| <section id="learnware"> | |||||
| <h2>Learnware<a class="headerlink" href="#learnware" title="Permalink to this heading"></a></h2> | |||||
| <dl class="py class"> | |||||
| <dt class="sig sig-object py" id="learnware.learnware.Learnware"> | |||||
| <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">learnware.learnware.</span></span><span class="sig-name descname"><span class="pre">Learnware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">specification</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#learnware.specification.Specification" title="learnware.specification.base.Specification"><span class="pre">Specification</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">desc</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#learnware.learnware.Learnware" title="Permalink to this definition"></a></dt> | |||||
| <dd></dd></dl> | |||||
| </section> | |||||
| <section id="specification"> | |||||
| <h2>Specification<a class="headerlink" href="#specification" title="Permalink to this heading"></a></h2> | |||||
| <dl class="py class"> | |||||
| <dt class="sig sig-object py" id="learnware.specification.Specification"> | |||||
| <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">learnware.specification.</span></span><span class="sig-name descname"><span class="pre">Specification</span></span><a class="headerlink" href="#learnware.specification.Specification" title="Permalink to this definition"></a></dt> | |||||
| <dd></dd></dl> | |||||
| <dl class="py class"> | |||||
| <dt class="sig sig-object py" id="learnware.specification.StatSpecification"> | |||||
| <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">learnware.specification.</span></span><span class="sig-name descname"><span class="pre">StatSpecification</span></span><a class="headerlink" href="#learnware.specification.StatSpecification" title="Permalink to this definition"></a></dt> | |||||
| <dd></dd></dl> | |||||
| </section> | |||||
| </section> | |||||
| </div> | |||||
| </div> | |||||
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> | |||||
| <a href="../components/spec.html" class="btn btn-neutral float-left" title="Specification" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> | |||||
| </div> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,145 @@ | |||||
| <!DOCTYPE html> | |||||
| <html class="writer-html5" lang="en-US" > | |||||
| <head> | |||||
| <meta charset="utf-8" /> | |||||
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
| <title>Search — learnware 0.1.0.99 documentation</title> | |||||
| <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> | |||||
| <link rel="stylesheet" href="_static/css/theme.css" type="text/css" /> | |||||
| <!--[if lt IE 9]> | |||||
| <script src="_static/js/html5shiv.min.js"></script> | |||||
| <![endif]--> | |||||
| <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script> | |||||
| <script src="_static/doctools.js"></script> | |||||
| <script src="_static/sphinx_highlight.js"></script> | |||||
| <script src="_static/js/theme.js"></script> | |||||
| <script src="_static/searchtools.js"></script> | |||||
| <script src="_static/language_data.js"></script> | |||||
| <link rel="index" title="Index" href="genindex.html" /> | |||||
| <link rel="search" title="Search" href="#" /> | |||||
| </head> | |||||
| <body class="wy-body-for-nav"> | |||||
| <div class="wy-grid-for-nav"> | |||||
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> | |||||
| <div class="wy-side-scroll"> | |||||
| <div class="wy-side-nav-search" > | |||||
| <a href="index.html"> | |||||
| </a> | |||||
| <div role="search"> | |||||
| <form id="rtd-search-form" class="wy-form" action="#" method="get"> | |||||
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> | |||||
| <input type="hidden" name="check_keywords" value="yes" /> | |||||
| <input type="hidden" name="area" value="default" /> | |||||
| </form> | |||||
| </div> | |||||
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="index.html">Home</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">GETTING STARTED:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="introduction/intro.html">Introduction</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">COMPONENTS:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/market.html">Market</a></li> | |||||
| <li class="toctree-l1"><a class="reference internal" href="components/spec.html">Specification</a></li> | |||||
| </ul> | |||||
| <p class="caption" role="heading"><span class="caption-text">REFERENCES:</span></p> | |||||
| <ul> | |||||
| <li class="toctree-l1"><a class="reference internal" href="references/api.html">API</a><ul> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#market">Market</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.market.LearnwareMarket"><code class="docutils literal notranslate"><span class="pre">LearnwareMarket</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#learnware">Learnware</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.learnware.Learnware"><code class="docutils literal notranslate"><span class="pre">Learnware</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| <li class="toctree-l2"><a class="reference internal" href="references/api.html#specification">Specification</a><ul> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.Specification"><code class="docutils literal notranslate"><span class="pre">Specification</span></code></a></li> | |||||
| <li class="toctree-l3"><a class="reference internal" href="references/api.html#learnware.specification.StatSpecification"><code class="docutils literal notranslate"><span class="pre">StatSpecification</span></code></a></li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </li> | |||||
| </ul> | |||||
| </div> | |||||
| </div> | |||||
| </nav> | |||||
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > | |||||
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> | |||||
| <a href="index.html">learnware</a> | |||||
| </nav> | |||||
| <div class="wy-nav-content"> | |||||
| <div class="rst-content"> | |||||
| <div role="navigation" aria-label="Page navigation"> | |||||
| <ul class="wy-breadcrumbs"> | |||||
| <li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li> | |||||
| <li class="breadcrumb-item active">Search</li> | |||||
| <li class="wy-breadcrumbs-aside"> | |||||
| </li> | |||||
| </ul> | |||||
| <hr/> | |||||
| </div> | |||||
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> | |||||
| <div itemprop="articleBody"> | |||||
| <noscript> | |||||
| <div id="fallback" class="admonition warning"> | |||||
| <p class="last"> | |||||
| Please activate JavaScript to enable the search functionality. | |||||
| </p> | |||||
| </div> | |||||
| </noscript> | |||||
| <div id="search-results"> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <footer> | |||||
| <hr/> | |||||
| <div role="contentinfo"> | |||||
| <p>© Copyright 2023, LAMDA Group.</p> | |||||
| </div> | |||||
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a | |||||
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> | |||||
| provided by <a href="https://readthedocs.org">Read the Docs</a>. | |||||
| </footer> | |||||
| </div> | |||||
| </div> | |||||
| </section> | |||||
| </div> | |||||
| <script> | |||||
| jQuery(function () { | |||||
| SphinxRtdTheme.Navigation.enable(true); | |||||
| }); | |||||
| </script> | |||||
| <script> | |||||
| jQuery(function() { Search.loadIndex("searchindex.js"); }); | |||||
| </script> | |||||
| <script id="searchindexloader"></script> | |||||
| </body> | |||||
| </html> | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _market: | |||||
| ================================ | |||||
| Market | |||||
| ================================ | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _spec: | |||||
| ================================ | |||||
| Specification | |||||
| ================================ | |||||
| @@ -0,0 +1,113 @@ | |||||
| import pkg_resources | |||||
| # Configuration file for the Sphinx documentation builder. | |||||
| # | |||||
| # For the full list of built-in configuration values, see the documentation: | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html | |||||
| # -- General configuration ------------------------------------------------ | |||||
| # If your documentation needs a minimal Sphinx version, state it here. | |||||
| # | |||||
| # needs_sphinx = '1.0' | |||||
| # Add any Sphinx extension module names here, as strings. They can be | |||||
| # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | |||||
| # ones. | |||||
| extensions = [ | |||||
| "sphinx.ext.autodoc", | |||||
| "sphinx.ext.todo", | |||||
| "sphinx.ext.mathjax", | |||||
| "sphinx.ext.napoleon", | |||||
| ] | |||||
| language = "en_US" | |||||
| # Add any paths that contain templates here, relative to this directory. | |||||
| templates_path = ["_templates"] | |||||
| # The suffix(es) of source filenames. | |||||
| # You can specify multiple suffix as a list of string: | |||||
| # | |||||
| # source_suffix = ['.rst', '.md'] | |||||
| source_suffix = ".rst" | |||||
| # The master toctree document. | |||||
| master_doc = "index" | |||||
| # -- Project information ----------------------------------------------------- | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information | |||||
| project = "learnware" | |||||
| copyright = "2023, LAMDA Group" | |||||
| author = "LAMDA Group" | |||||
| # The version info for the project you're documenting, acts as replacement for | |||||
| # |version| and |release|, also used in various other places throughout the | |||||
| # built documents. | |||||
| # | |||||
| # The short X.Y version. | |||||
| version = pkg_resources.get_distribution("learnware").version | |||||
| # The full version, including alpha/beta/rc tags. | |||||
| release = pkg_resources.get_distribution("learnware").version | |||||
| release = "0.1.0.99" | |||||
| # -- Options for HTML output ------------------------------------------------- | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output | |||||
| # List of patterns, relative to source directory, that match files and | |||||
| # directories to ignore when looking for source files. | |||||
| # This patterns also effect to html_static_path and html_extra_path | |||||
| exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] | |||||
| # The name of the Pygments (syntax highlighting) style to use. | |||||
| pygments_style = "sphinx" | |||||
| # If true, `todo` and `todoList` produce output, else they produce nothing. | |||||
| todo_include_todos = False | |||||
| # If true, '()' will be appended to :func: etc. cross-reference text. | |||||
| add_function_parentheses = False | |||||
| # If true, the current module name will be prepended to all description | |||||
| # unit titles (such as .. function::). | |||||
| add_module_names = True | |||||
| # If true, `todo` and `todoList` produce output, else they produce nothing. | |||||
| todo_include_todos = True | |||||
| # -- Options for HTML output ---------------------------------------------- | |||||
| # The theme to use for HTML and HTML Help pages. See the documentation for | |||||
| # a list of builtin themes. | |||||
| # | |||||
| html_theme = "sphinx_rtd_theme" | |||||
| # html_logo = '_static/img/logo/1.png' | |||||
| # Theme options are theme-specific and customize the look and feel of a theme | |||||
| # further. For a list of options available for each theme, see the | |||||
| # documentation. | |||||
| # html_context = { | |||||
| # "display_github": False, | |||||
| # "last_updated": True, | |||||
| # "commit": True, | |||||
| # "github_user": "Microsoft", | |||||
| # "github_repo": "QLib", | |||||
| # 'github_version': 'master', | |||||
| # 'conf_py_path': '/docs/', | |||||
| # } | |||||
| # | |||||
| html_theme_options = { | |||||
| "logo_only": True, | |||||
| "collapse_navigation": False, | |||||
| "display_version": False, | |||||
| "navigation_depth": 3, | |||||
| } | |||||
| @@ -0,0 +1,39 @@ | |||||
| .. learnware documentation master file, created by | |||||
| sphinx-quickstart on Tue Mar 28 22:06:47 2023. | |||||
| You can adapt this file completely to your liking, but it should at least | |||||
| contain the root `toctree` directive. | |||||
| ============================================================ | |||||
| ``Learnware`` Documentation | |||||
| ============================================================ | |||||
| ``Learnware`` is ... | |||||
| .. _user_guide: | |||||
| Document Structure | |||||
| ==================== | |||||
| .. toctree:: | |||||
| :hidden: | |||||
| Home <self> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: GETTING STARTED: | |||||
| Introduction <introduction/intro.rst> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: COMPONENTS: | |||||
| Market <components/market.rst> | |||||
| Specification <components/spec.rst> | |||||
| .. toctree:: | |||||
| :maxdepth: 3 | |||||
| :caption: REFERENCES: | |||||
| API <references/api.rst> | |||||
| @@ -0,0 +1,5 @@ | |||||
| .. _intro: | |||||
| ================================ | |||||
| Introduction | |||||
| ================================ | |||||
| @@ -1,35 +0,0 @@ | |||||
| @ECHO OFF | |||||
| pushd %~dp0 | |||||
| REM Command file for Sphinx documentation | |||||
| if "%SPHINXBUILD%" == "" ( | |||||
| set SPHINXBUILD=sphinx-build | |||||
| ) | |||||
| set SOURCEDIR=source | |||||
| set BUILDDIR=build | |||||
| %SPHINXBUILD% >NUL 2>NUL | |||||
| if errorlevel 9009 ( | |||||
| echo. | |||||
| echo.The 'sphinx-build' command was not found. Make sure you have Sphinx | |||||
| echo.installed, then set the SPHINXBUILD environment variable to point | |||||
| echo.to the full path of the 'sphinx-build' executable. Alternatively you | |||||
| echo.may add the Sphinx directory to PATH. | |||||
| echo. | |||||
| echo.If you don't have Sphinx installed, grab it from | |||||
| echo.https://www.sphinx-doc.org/ | |||||
| exit /b 1 | |||||
| ) | |||||
| if "%1" == "" goto help | |||||
| %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% | |||||
| goto end | |||||
| :help | |||||
| %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% | |||||
| :end | |||||
| popd | |||||
| @@ -0,0 +1,33 @@ | |||||
| .. _api: | |||||
| ================================ | |||||
| API Reference | |||||
| ================================ | |||||
| Here you can find all ``learnware`` interfaces. | |||||
| Market | |||||
| ==================== | |||||
| .. autoclass:: learnware.market.LearnwareMarket | |||||
| :members: | |||||
| Learnware | |||||
| ==================== | |||||
| .. autoclass:: learnware.learnware.Learnware | |||||
| :members: | |||||
| Specification | |||||
| ==================== | |||||
| .. autoclass:: learnware.specification.Specification | |||||
| :members: | |||||
| .. autoclass:: learnware.specification.StatSpecification | |||||
| :members: | |||||
| @@ -1,28 +0,0 @@ | |||||
| # Configuration file for the Sphinx documentation builder. | |||||
| # | |||||
| # For the full list of built-in configuration values, see the documentation: | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html | |||||
| # -- Project information ----------------------------------------------------- | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information | |||||
| project = "learnware" | |||||
| copyright = "2023, LAMDA Group" | |||||
| author = "LAMDA Group" | |||||
| release = "0.1.0.99" | |||||
| # -- General configuration --------------------------------------------------- | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration | |||||
| extensions = [] | |||||
| templates_path = ["_templates"] | |||||
| exclude_patterns = [] | |||||
| language = "zh_CN" | |||||
| # -- Options for HTML output ------------------------------------------------- | |||||
| # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output | |||||
| html_theme = "alabaster" | |||||
| html_static_path = ["_static"] | |||||
| @@ -1,20 +0,0 @@ | |||||
| .. learnware documentation master file, created by | |||||
| sphinx-quickstart on Tue Mar 28 22:06:47 2023. | |||||
| You can adapt this file completely to your liking, but it should at least | |||||
| contain the root `toctree` directive. | |||||
| Welcome to learnware's documentation! | |||||
| ===================================== | |||||
| .. toctree:: | |||||
| :maxdepth: 2 | |||||
| :caption: Contents: | |||||
| Indices and tables | |||||
| ================== | |||||
| * :ref:`genindex` | |||||
| * :ref:`modindex` | |||||
| * :ref:`search` | |||||
| @@ -0,0 +1,57 @@ | |||||
| import os | |||||
| import copy | |||||
| class Config: | |||||
| def __init__(self, default_conf): | |||||
| self.__dict__["_default_config"] = copy.deepcopy(default_conf) # avoiding conflictions with __getattr__ | |||||
| self.reset() | |||||
| def __getitem__(self, key): | |||||
| return self.__dict__["_config"][key] | |||||
| def __getattr__(self, attr): | |||||
| if attr in self.__dict__["_config"]: | |||||
| return self.__dict__["_config"][attr] | |||||
| raise AttributeError(f"No such {attr} in self._config") | |||||
| def get(self, key, default=None): | |||||
| return self.__dict__["_config"].get(key, default) | |||||
| def __setitem__(self, key, value): | |||||
| self.__dict__["_config"][key] = value | |||||
| def __setattr__(self, attr, value): | |||||
| self.__dict__["_config"][attr] = value | |||||
| def __contains__(self, item): | |||||
| return item in self.__dict__["_config"] | |||||
| def __getstate__(self): | |||||
| return self.__dict__ | |||||
| def __setstate__(self, state): | |||||
| self.__dict__.update(state) | |||||
| def __str__(self): | |||||
| return str(self.__dict__["_config"]) | |||||
| def __repr__(self): | |||||
| return str(self.__dict__["_config"]) | |||||
| def reset(self): | |||||
| self.__dict__["_config"] = copy.deepcopy(self._default_config) | |||||
| def update(self, *args, **kwargs): | |||||
| self.__dict__["_config"].update(*args, **kwargs) | |||||
| ROOT_DIRPATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |||||
| _DEFAULT_CONFIG = { | |||||
| "root_path": ROOT_DIRPATH, | |||||
| "logging_level": "INFO", | |||||
| } | |||||
| C = Config(_DEFAULT_CONFIG) | |||||
| @@ -1,3 +1 @@ | |||||
| class BaseLearnware: | |||||
| def __init__(self) -> None: | |||||
| pass | |||||
| from .base import Learnware | |||||
| @@ -23,4 +23,4 @@ class Learnware: | |||||
| def update(self): | def update(self): | ||||
| # Empty Interface. | # Empty Interface. | ||||
| raise Exception("'update' Method NOT Implemented.") | |||||
| raise NotImplementedError("'update' Method NOT Implemented.") | |||||
| @@ -0,0 +1,25 @@ | |||||
| import logging | |||||
| import logging.handlers | |||||
| from .config import C | |||||
| def get_module_logger(module_name, level=None): | |||||
| """ | |||||
| Get a logger for a specific module. | |||||
| :param module_name: str | |||||
| Logic module name. | |||||
| :param level: int | |||||
| :param sh_level: int | |||||
| Stream handler log level. | |||||
| :param log_format: str | |||||
| :return: Logger | |||||
| Logger object. | |||||
| """ | |||||
| if level is None: | |||||
| level = C.logging_level | |||||
| # Get logger. | |||||
| module_logger = logging.getLogger(module_name) | |||||
| module_logger.setLevel(level) | |||||
| return module_logger | |||||
| @@ -1 +1 @@ | |||||
| from .base_market import LearnwareMarket | |||||
| from .base import LearnwareMarket | |||||
| @@ -2,21 +2,28 @@ import numpy as np | |||||
| import pandas as pd | import pandas as pd | ||||
| from typing import Tuple, Any, List, Union, Dict | from typing import Tuple, Any, List, Union, Dict | ||||
| import os | import os | ||||
| from ..learnware import BaseLearnware | |||||
| from ..learnware import Learnware | |||||
| class LearnwareMarket: | class LearnwareMarket: | ||||
| """Market for Learnware | |||||
| .. code-block:: python | |||||
| # Provide some python examples | |||||
| learnmarket = LearnwareMarket() | |||||
| """ | |||||
| def __init__(self): | def __init__(self): | ||||
| """ | |||||
| Initializing an empty market | |||||
| """ | |||||
| self.learnware_list = {} # id:BaseLearnware | |||||
| """Initializing an empty market""" | |||||
| self.learnware_list = {} # id:Learnware | |||||
| self.count = 0 | self.count = 0 | ||||
| self.property_list = None | self.property_list = None | ||||
| def reload_market(self, market_path: str, property_list_path: str, load_mode: str = "database") -> bool: | def reload_market(self, market_path: str, property_list_path: str, load_mode: str = "database") -> bool: | ||||
| """ | |||||
| Reload the market when server restared. | |||||
| """Reload the market when server restared. | |||||
| Parameters | Parameters | ||||
| ---------- | ---------- | ||||
| @@ -54,9 +61,12 @@ class LearnwareMarket: | |||||
| def add_learnware( | def add_learnware( | ||||
| self, learnware_name: str, model_path: str, stat_spec_path: str, properties: dict, desc: str | self, learnware_name: str, model_path: str, stat_spec_path: str, properties: dict, desc: str | ||||
| ) -> Tuple[str, bool]: | ) -> Tuple[str, bool]: | ||||
| """ | |||||
| Add a learnware into the market. | |||||
| Market will pack contents into a BaseLearnware object and assign an id automatically. | |||||
| """Add a learnware into the market. | |||||
| .. note:: | |||||
| Given a prediction of a certain time, all signals before this time will be prepared well. | |||||
| Parameters | Parameters | ||||
| ---------- | ---------- | ||||
| @@ -89,12 +99,13 @@ class LearnwareMarket: | |||||
| def search_learnware( | def search_learnware( | ||||
| self, target_properties: dict = None, target_stat_specification: str = None | self, target_properties: dict = None, target_stat_specification: str = None | ||||
| ) -> Tuple[Any, Dict[str : List[Any]]]: | |||||
| ) -> Tuple[Any, Dict[str, List[Any]]]: | |||||
| """ | """ | ||||
| Search Learnware based on properties and statistical specification. | Search Learnware based on properties and statistical specification. | ||||
| Return random learnwares when both target_properties and target_stat_specification is None, | |||||
| Search only based on properties when target_stat_specification is None, | |||||
| Filter through properties and rank according to statistical specification otherwise. | |||||
| - Return random learnwares when both target_properties and target_stat_specification is None | |||||
| - Search only based on properties when target_stat_specification is None | |||||
| - Filter through properties and rank according to statistical specification otherwise | |||||
| Parameters | Parameters | ||||
| ---------- | ---------- | ||||
| @@ -105,10 +116,11 @@ class LearnwareMarket: | |||||
| Returns | Returns | ||||
| ------- | ------- | ||||
| Tuple[Any, Dict[str:List[Any]]] | |||||
| Tuple[Any, Dict[str, List[Any]]] | |||||
| return two items: | return two items: | ||||
| first is recommended combination, None when no recommended combination is calculated or statistical specification is not provided. | |||||
| second is a list of matched learnwares | |||||
| - first is recommended combination, None when no recommended combination is calculated or statistical specification is not provided. | |||||
| - second is a list of matched learnwares | |||||
| Raises | Raises | ||||
| ------ | ------ | ||||
| @@ -122,7 +134,7 @@ class LearnwareMarket: | |||||
| ) | ) | ||||
| return None, [] | return None, [] | ||||
| def get_learnware_by_ids(self, id: Union[str, List[str]]) -> Union[BaseLearnware, List[BaseLearnware]]: | |||||
| def get_learnware_by_ids(self, id: Union[str, List[str]]) -> Union[Learnware, List[Learnware]]: | |||||
| """ | """ | ||||
| Get Learnware from market by id | Get Learnware from market by id | ||||
| @@ -133,10 +145,11 @@ class LearnwareMarket: | |||||
| Returns | Returns | ||||
| ------- | ------- | ||||
| Union[BaseLearnware, List[BaseLearnware]] | |||||
| Return a BaseLearnware object or a list of BaseLearnware objects based on the type of input param. | |||||
| The returned items are search results. | |||||
| 'None' indicating the target id not found. | |||||
| Union[Learnware, List[Learnware]] | |||||
| Return a Learnware object or a list of Learnware objects based on the type of input param. | |||||
| - The returned items are search results. | |||||
| - 'None' indicating the target id not found. | |||||
| """ | """ | ||||
| return None | return None | ||||
| @@ -1,2 +1,2 @@ | |||||
| from .functional_tools import generate_stat_spec | |||||
| from .base_specification import Specification, StatSpecification | |||||
| from .utils import generate_stat_spec | |||||
| from .base import Specification, StatSpecification | |||||
| @@ -1,5 +1,5 @@ | |||||
| import numpy as np | import numpy as np | ||||
| from .base_specification import StatSpecification | |||||
| from .base import StatSpecification | |||||
| def generate_stat_spec(X: np.ndarray) -> StatSpecification: | def generate_stat_spec(X: np.ndarray) -> StatSpecification: | ||||
| @@ -0,0 +1,11 @@ | |||||
| import os | |||||
| from .logger import get_module_logger | |||||
| logger = get_module_logger("utils") | |||||
| def make_dir_by_path(dirpath): | |||||
| if not os.path.exists(dirpath): | |||||
| os.makedirs(dirpath) | |||||
| else: | |||||
| logger.warning(f"Directorty {dirpath} has been exited, ignore mkdir") | |||||
| @@ -32,7 +32,11 @@ if os.path.exists("MANIFEST"): | |||||
| # What packages are required for this module to be executed? | # What packages are required for this module to be executed? | ||||
| # `estimator` may depend on other packages. In order to reduce dependencies, it is not written here. | # `estimator` may depend on other packages. In order to reduce dependencies, it is not written here. | ||||
| REQUIRED = [ | REQUIRED = [ | ||||
| "numpy>=1.16.0,<1.20.0", | |||||
| "numpy>=1.12.0", | |||||
| "pandas>=0.25.1", | |||||
| "scipy>=1.0.0", | |||||
| "matplotlib==3.1.3", | |||||
| "tqdm", | |||||
| ] | ] | ||||
| here = os.path.abspath(os.path.dirname(__file__)) | here = os.path.abspath(os.path.dirname(__file__)) | ||||