├── _scripts ├── __init__.py ├── not-a-package │ └── package.json ├── templates │ ├── webpack.config.j2.js │ ├── py_version.j2.py │ └── py_README.j2.md ├── _hacked_labextension.py └── _favicon.py ├── .projectignore ├── packages ├── wxyz-meta │ ├── src │ │ ├── index.ts │ │ ├── tsconfig.json │ │ └── widgets.ts │ ├── README.md │ ├── tsconfig.json │ ├── LICENSE.txt │ ├── package.json │ └── style │ │ └── index.css ├── wxyz-dvcs │ ├── style │ │ └── index.css │ ├── src │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── dvcs.ts │ │ ├── index.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt ├── wxyz-json-e │ ├── style │ │ └── index.css │ ├── src │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── jsone.ts │ │ ├── codemirror-yaml.d.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── tsconfig.json │ │ ├── plugin.ts │ │ └── modes.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt ├── wxyz-jsonld │ ├── style │ │ └── index.css │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── _jsonld.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt ├── wxyz-yaml │ ├── style │ │ └── index.css │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── yaml.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt ├── wxyz-tpl-nunjucks │ ├── style │ │ └── index.css │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ └── index.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt ├── wxyz-datagrid │ ├── src │ │ ├── widgets │ │ │ ├── pwidgets │ │ │ │ └── cells.ts │ │ │ ├── index.ts │ │ │ ├── pmodels │ │ │ │ └── jsonmodel.ts │ │ │ ├── _datagrid_styles.ts │ │ │ └── stylegrid.ts │ │ ├── constants.ts │ │ ├── index.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ ├── style │ │ └── index.css │ └── LICENSE.txt ├── wxyz-svg │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ └── index.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ ├── style │ │ └── index.css │ └── LICENSE.txt ├── wxyz-core │ ├── src │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── lazy.ts │ │ ├── index.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ ├── style │ │ └── index.css │ ├── LICENSE.txt │ └── package.json ├── wxyz-json-schema-form │ ├── src │ │ ├── widgets │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ ├── style │ │ └── index.css │ └── LICENSE.txt ├── wxyz-html │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ ├── index.ts │ │ │ └── fullscreen.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ ├── style │ │ └── index.css │ └── LICENSE.txt ├── wxyz-lab │ ├── src │ │ ├── index.ts │ │ ├── widgets │ │ │ ├── index.ts │ │ │ ├── _terminal.ts │ │ │ └── _cm_options.ts │ │ ├── constants.ts │ │ ├── tsconfig.json │ │ └── plugin.ts │ ├── tsconfig.json │ ├── webpack.config.js │ └── LICENSE.txt └── tsconfigbase.json ├── src ├── wxyz_dvcs │ ├── src │ │ └── wxyz │ │ │ └── dvcs │ │ │ ├── repos │ │ │ └── __init__.py │ │ │ ├── tools │ │ │ ├── __init__.py │ │ │ └── utils.py │ │ │ ├── trackers │ │ │ ├── __init__.py │ │ │ ├── tracker_yaml.py │ │ │ └── tracker_json.py │ │ │ ├── install.json │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ └── __init__.py │ ├── LICENSE.txt │ └── pyproject.toml ├── wxyz_notebooks │ ├── src │ │ └── wxyz │ │ │ └── notebooks │ │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ └── test_nbconvert.py │ │ │ ├── API │ │ │ └── __init__.py │ │ │ ├── Design │ │ │ ├── __init__.py │ │ │ └── DVCS │ │ │ │ └── __init__.py │ │ │ ├── Examples │ │ │ └── __init__.py │ │ │ ├── _version.py │ │ │ └── __init__.py │ ├── LICENSE.txt │ └── pyproject.toml ├── wxyz_lab │ ├── src │ │ └── wxyz │ │ │ └── lab │ │ │ ├── install.json │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ ├── widget_markdown.py │ │ │ ├── __init__.py │ │ │ └── widget_dock.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_svg │ ├── src │ │ └── wxyz │ │ │ └── svg │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ └── widget_svg.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_core │ ├── src │ │ └── wxyz │ │ │ └── core │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ └── _version.py │ ├── LICENSE.txt │ └── pyproject.toml ├── wxyz_html │ ├── src │ │ └── wxyz │ │ │ └── html │ │ │ ├── install.json │ │ │ ├── widget_fullscreen.py │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ ├── __init__.py │ │ │ └── widget_color.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_yaml │ ├── src │ │ └── wxyz │ │ │ └── yaml │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ └── widget_yaml.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_json_e │ ├── src │ │ └── wxyz │ │ │ └── json_e │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ └── widget_jsone.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_jsonld │ ├── src │ │ └── wxyz │ │ │ └── jsonld │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ └── base.py │ ├── pyproject.toml │ └── LICENSE.txt ├── wxyz_datagrid │ ├── src │ │ └── wxyz │ │ │ └── datagrid │ │ │ ├── install.json │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ ├── __init__.py │ │ │ ├── widget_selectgrid.py │ │ │ └── widget_datagrid.py │ ├── LICENSE.txt │ └── pyproject.toml ├── wxyz_tpl_jinja │ ├── src │ │ └── wxyz │ │ │ └── tpl_jinja │ │ │ ├── install.json │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ ├── base.py │ │ │ └── widget_template.py │ ├── pyproject.toml │ └── LICENSE.txt └── wxyz_json_schema_form │ ├── src │ └── wxyz │ │ └── json_schema_form │ │ ├── install.json │ │ ├── __init__.py │ │ ├── _version.py │ │ ├── base.py │ │ └── widget_json_schema_form.py │ ├── pyproject.toml │ └── LICENSE.txt ├── pyproject.toml ├── .github ├── reqs │ ├── py_3.8.yml │ ├── lab_3.1.yml │ ├── lab_3.5.yml │ ├── py_3.11.yml │ ├── unix.yml │ ├── win.yml │ ├── wxyz_svg.yml │ ├── wxyz_yaml.yml │ ├── wxyz_core.yml │ ├── wxyz_jsonld.yml │ ├── wxyz_json_e.yml │ ├── wxyz_datagrid.yml │ ├── utest.yml │ ├── wxyz_dvcs.yml │ ├── lint.yml │ ├── lock.yml │ ├── atest.yml │ ├── binder.yml │ ├── pip-build.txt │ ├── base.yml │ └── docs.yml ├── .condarc ├── ISSUE_TEMPLATE │ ├── feature_request.md │ ├── docs.md │ └── release.md └── pull_request_template.md ├── .pylintrc ├── atest ├── _resources │ ├── variables │ │ ├── Meta.robot │ │ ├── WXYZ.robot │ │ ├── Browser.robot │ │ └── Server.robot │ ├── keywords │ │ ├── CLI.robot │ │ ├── Meta.robot │ │ ├── WXYZ.robot │ │ └── Browser.robot │ └── fixtures │ │ └── jupyter_notebook_config.json ├── Notebooks │ ├── __init__.robot │ └── Index.robot ├── Smoke.robot ├── __init__.robot └── _libraries │ └── Ports.py ├── docs ├── _static │ └── favicon.ico ├── widgets │ ├── dot │ │ └── classes_notebooks.dot │ ├── lab.rst │ ├── svg.rst │ ├── core.rst │ ├── dvcs.rst │ ├── html.rst │ ├── yaml.rst │ ├── json_e.rst │ └── jsonld.rst ├── developing.ipynb ├── index.ipynb └── widgets.ipynb ├── lerna.json ├── .binder └── postBuild ├── CODE_OF_CONDUCT.md ├── setup.cfg ├── lite ├── jupyter-lite.json └── jupyter_lite_config.json ├── notebooks └── README.md ├── .yarnrc ├── .prettierignore ├── .readthedocs.yml ├── .gitignore ├── ROADMAP.md ├── typedoc.json ├── CHANGELOG.md ├── tsconfig.typedoc.json └── LICENSE.txt /_scripts/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.projectignore: -------------------------------------------------------------------------------- 1 | *.ipynb 2 | -------------------------------------------------------------------------------- /packages/wxyz-meta/src/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/style/index.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/repos/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/tools/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/trackers/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/widgets/pwidgets/cells.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.isort] 2 | profile = "black" 3 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/wxyz-svg/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | -------------------------------------------------------------------------------- /.github/reqs/py_3.8.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - python >=3.8,<3.9 3 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './json'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dvcs'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-svg/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './svg'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './yaml'; 2 | -------------------------------------------------------------------------------- /.github/reqs/lab_3.1.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - jupyterlab >=3.1,<3.2 3 | -------------------------------------------------------------------------------- /.github/reqs/lab_3.5.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - jupyterlab >=3.5,<3.6 3 | -------------------------------------------------------------------------------- /.github/reqs/py_3.11.yml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - python >=3.11,<3.12 3 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './jsone'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './jsonld'; 2 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | -------------------------------------------------------------------------------- /.pylintrc: -------------------------------------------------------------------------------- 1 | [MESSAGES CONTROL] 2 | disable = invalid-name,too-many-ancestors 3 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './template'; 2 | -------------------------------------------------------------------------------- /atest/_resources/variables/Meta.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${PABOT ID} 0_0_0 3 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/API/__init__.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './json-schema-form'; 2 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/Design/__init__.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/Examples/__init__.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | -------------------------------------------------------------------------------- /docs/_static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/deathbeds/wxyz/HEAD/docs/_static/favicon.ico -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/codemirror-yaml.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'codemirror/mode/yaml/yaml' {} 2 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | -------------------------------------------------------------------------------- /packages/wxyz-meta/README.md: -------------------------------------------------------------------------------- 1 | # @deathbeds/jupyterlab-wxyz 2 | 3 | > Some Experimental Widgets 4 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/Design/DVCS/__init__.py: -------------------------------------------------------------------------------- 1 | # pylint: disable=invalid-name 2 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './fullscreen'; 2 | export * from './file'; 3 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | -------------------------------------------------------------------------------- /atest/_resources/variables/WXYZ.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | ${WXYZ EXAMPLES} ${WXYZ_NOTEBOOKS}${/}Examples 3 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "npmClient": "jlpm", 3 | "useWorkspaces": true, 4 | "version": "independent" 5 | } 6 | -------------------------------------------------------------------------------- /.github/reqs/unix.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-unix 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: [] 8 | -------------------------------------------------------------------------------- /.binder/postBuild: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -eux 3 | 4 | export RUNNING_IN_BINDER="1" 5 | 6 | time doit binder || doit binder 7 | -------------------------------------------------------------------------------- /.github/reqs/win.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-win 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - nomkl 9 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_svg.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-svg 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - lxml 9 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_yaml.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-yaml 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - pyyaml 9 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_core.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-core 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - jsonpointer 9 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_jsonld.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-jsonld 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - pyld 9 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_json_e.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-json-e 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - json-e >=4.3,<5 9 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | > We adhere to the 4 | > [Jupyter Code Of Conduct](https://jupyter.org/governance/conduct/code_of_conduct.html) 5 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './dock'; 2 | export * from './editor'; 3 | export * from './markdown'; 4 | export * from './terminal'; 5 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/tools/utils.py: -------------------------------------------------------------------------------- 1 | """ default styles for tools 2 | """ 3 | BTN_ICON_DEFAULTS = dict(layout=dict(max_width="3em", min_width="3em")) 4 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | export * from './widgets/_base'; 4 | export * from './widgets/lazy'; 5 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/widgets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './datagrid'; 2 | export * from './selectgrid'; 3 | export * from './stylegrid'; 4 | export * from './models/cells'; 5 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-svg/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_datagrid.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-datagrid 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - pandas 9 | - traittypes 10 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_lab", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_lab`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_svg/src/wxyz/svg/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_svg", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_svg`" 5 | } 6 | -------------------------------------------------------------------------------- /atest/_resources/keywords/CLI.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Which 3 | [Arguments] ${cmd} 4 | ${path} = Evaluate __import__("shutil").which("${cmd}") 5 | RETURN ${path} 6 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | export * from './widgets/models/cells'; 4 | export * from './widgets/pmodels/jsonmodel'; 5 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants'; 2 | export * from './widgets'; 3 | 4 | export async function loadYamlEMode() { 5 | return await import('./modes'); 6 | } 7 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/src/constants.ts: -------------------------------------------------------------------------------- 1 | import __package__ from '../package.json'; 2 | 3 | export const NAME = __package__.name; 4 | export const VERSION = __package__.version; 5 | -------------------------------------------------------------------------------- /src/wxyz_core/src/wxyz/core/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_core", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_core`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_dvcs", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_dvcs`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_html", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_html`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_yaml/src/wxyz/yaml/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_yaml", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_yaml`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_json_e/src/wxyz/json_e/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_json_e", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_json_e`" 5 | } 6 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/src/wxyz/jsonld/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_jsonld", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_jsonld`" 5 | } 6 | -------------------------------------------------------------------------------- /_scripts/not-a-package/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "not-a-package", 3 | "private": true, 4 | "description": "not really a package, used to avoid un-needed deps", 5 | "version": "0.0.0" 6 | } 7 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [flake8] 2 | per-file-ignores = 3 | # generated files 4 | src/wxyz_lab/src/wxyz/lab/widget_editor.py: E501, 5 | src/wxyz_datagrid/src/wxyz/datagrid/widget_stylegrid.py: E501, 6 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_datagrid", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_datagrid`" 5 | } 6 | -------------------------------------------------------------------------------- /lite/jupyter-lite.json: -------------------------------------------------------------------------------- 1 | { 2 | "jupyter-config-data": { 3 | "appName": "wxyz", 4 | "collaborative": true, 5 | "faviconUrl": "./favicon.ico" 6 | }, 7 | "jupyter-lite-schema-version": 0 8 | } 9 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/src/wxyz/tpl_jinja/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_tpl_jinja", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_tpl_jinja`" 5 | } 6 | -------------------------------------------------------------------------------- /notebooks/README.md: -------------------------------------------------------------------------------- 1 | # Where are the notebooks? 2 | 3 | The test/docs notebooks are packaged in [wxyz_notebooks](../src/wxyz_notebooks/src/wxyz/notebooks/index.ipynb). 4 | 5 | > Sorry, no symlink! Thanks Windows! `<3` -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-notebooks version info""" 2 | from importlib.metadata import version 3 | 4 | NAME = "wxyz-notebooks" 5 | __version__ = version(NAME) 6 | -------------------------------------------------------------------------------- /.github/reqs/utest.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-utest 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - codecov 9 | - nbval 10 | - pytest 11 | - pytest-cov 12 | - pytest-xdist 13 | -------------------------------------------------------------------------------- /.github/reqs/wxyz_dvcs.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-dvcs 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - fossil 9 | - fossil-pikchr 10 | - git 11 | - gitpython 12 | - watchgod 13 | -------------------------------------------------------------------------------- /atest/_resources/variables/Browser.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | # override with `python scripts/atest.py --variable HEADLESS:0` 3 | ${HEADLESS} 1 4 | ${SCREENS ROOT} ${OUTPUT DIR}${/}screens 5 | ${NEXT BROWSER} ${0} 6 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/src/wxyz/json_schema_form/install.json: -------------------------------------------------------------------------------- 1 | { 2 | "packageManager": "python", 3 | "packageName": "wxyz_json_schema_form", 4 | "uninstallInstructions": "Use `pip/conda uninstall wxyz_json_schema_form`" 5 | } 6 | -------------------------------------------------------------------------------- /.yarnrc: -------------------------------------------------------------------------------- 1 | disable-self-update-check true 2 | ignore-optional true 3 | ignore-scripts true 4 | network-timeout "300000" 5 | registry "https://registry.npmjs.org" 6 | yarn-offline-mirror "./.yarn-packages" 7 | yarn-offline-mirror-pruning true 8 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/__init__.py: -------------------------------------------------------------------------------- 1 | """ Notebooks for demonstrating wxyz widgets 2 | 3 | Examples 4 | -------- 5 | 6 | TBD 7 | """ 8 | 9 | from ._version import __version__ 10 | 11 | __all__ = ["__version__"] 12 | -------------------------------------------------------------------------------- /.github/reqs/lint.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-lint 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - black 9 | - docformatter 10 | - flake8 11 | - isort 12 | - pydocstyle 13 | - pylint 14 | - ssort 15 | -------------------------------------------------------------------------------- /atest/_resources/fixtures/jupyter_notebook_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "LabApp": { 3 | "tornado_settings": { 4 | "page_config_data": { 5 | "buildCheck": false, 6 | "buildAvailable": false 7 | } 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/wxyz-core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-html/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-lab/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-meta/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-svg/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /atest/_resources/variables/Server.robot: -------------------------------------------------------------------------------- 1 | *** Variables *** 2 | # to help catch hard-coded paths 3 | ${URL PREFIX} /@est/ 4 | ${FIXTURES} ${CURDIR}${/}..${/}fixtures 5 | ${JPSERVER CONF} jupyter_notebook_config.json 6 | ${NEXT LAB} ${0} 7 | -------------------------------------------------------------------------------- /lite/jupyter_lite_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "LiteBuildConfig": { 3 | "output_dir": "../build/lite", 4 | "contents": ["../src/wxyz_notebooks/src/wxyz/notebooks"], 5 | "piplite_urls": ["../dist"], 6 | "extra_ignore_contents": ["/tests/"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": ".", 6 | "tsBuildInfoFile": ".root.tsbuildinfo" 7 | }, 8 | "files": ["package.json"] 9 | } 10 | -------------------------------------------------------------------------------- /atest/_resources/keywords/Meta.robot: -------------------------------------------------------------------------------- 1 | *** Keywords *** 2 | Tag For Pabot 3 | Set Suite Variable ${PABOT ID} 4 | ... ${CALLER_ID[:3]}_${PABOTEXECUTIONPOOLID}_${PABOTQUEUEINDEX} 5 | ... children=${True} 6 | Set Tags 7 | ... pabot:${PABOT ID} 8 | -------------------------------------------------------------------------------- /docs/widgets/dot/classes_notebooks.dot: -------------------------------------------------------------------------------- 1 | digraph "classes_notebooks" { 2 | 3 | graph [fontname = "sans-serif"]; 4 | node [fontname = "sans-serif"]; 5 | edge [fontname = "sans-serif"]; 6 | 7 | charset="utf-8" 8 | rankdir=BT 9 | } -------------------------------------------------------------------------------- /atest/Notebooks/__init__.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation Tests with WXYZ notebooks 3 | 4 | Resource ../_resources/keywords/Browser.robot 5 | 6 | Suite Setup Setup Suite For Screenshots notebooks 7 | 8 | Force Tags ui:notebook wxyz:notebooks 9 | -------------------------------------------------------------------------------- /packages/wxyz-core/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-dvcs/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-html/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-json-e/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-jsonld/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-lab/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-svg/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-yaml/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-datagrid/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /_scripts/templates/webpack.config.j2.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | output: { 3 | clean: true, 4 | }, 5 | devtool: 'source-map', 6 | module: { 7 | rules: [ 8 | { 9 | test: /\.js$/, 10 | use: ['source-map-loader'], 11 | }, 12 | ], 13 | }, 14 | }; -------------------------------------------------------------------------------- /.github/reqs/lock.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-lock 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | # known-incompatible version with conda-lock 9 | - conda !=22.11.1 10 | - conda-lock >=1.3,<1.4 11 | - mamba >=1.1.0,<1.2 12 | - python >=3.11,<3.12 13 | - doit 14 | -------------------------------------------------------------------------------- /atest/Smoke.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource _resources/keywords/Browser.robot 3 | Resource _resources/keywords/Lab.robot 4 | 5 | Suite Setup Setup Suite For Screenshots smoke 6 | 7 | 8 | *** Test Cases *** 9 | Lab Loads 10 | Capture Page Screenshot 00-smoke.png 11 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [{ "path": "../" }] 10 | } 11 | -------------------------------------------------------------------------------- /.github/reqs/atest.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-atest 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - firefox =102 9 | - geckodriver 10 | - robotframework >=6 11 | - robotframework-tidy 12 | - robotframework-robocop 13 | - robotframework-pabot 14 | - robotframework-seleniumlibrary 15 | -------------------------------------------------------------------------------- /.github/.condarc: -------------------------------------------------------------------------------- 1 | local_repodata_ttl: 3600 2 | repodata_fns: [repodata.json] 3 | remote_connect_timeout_secs: 60 4 | remote_read_timeout_secs: 120 5 | remote_max_retries: 5 6 | remote_backoff_factor: 2 7 | show_channel_urls: true 8 | use_index_cache: true 9 | unsatisfiable_hints_check_depth: 0 10 | unsatisfiable_hints: false 11 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .conda-packages/ 2 | .yarn-packages/ 3 | *.db 4 | *.xml 5 | **/__pycache__/ 6 | **/_d/ 7 | **/.ipynb_checkpoints/ 8 | **/.pytest_cache/ 9 | **/*.egg-info/ 10 | **/build/ 11 | **/dist/ 12 | **/labextension/ 13 | **/lib/ 14 | **/node_modules/ 15 | **/notebooks/Design/ 16 | atest/output/ 17 | envs/ 18 | lite/.cache/ 19 | -------------------------------------------------------------------------------- /.github/reqs/binder.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-binder 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - ipydrawio 9 | - jupyter-starters 10 | - jupyterhub-singleuser 11 | - jupyterlab-deck 12 | - jupyterlab-myst 13 | - jupyterlab-tour 14 | - nbgitpuller 15 | - nbresuse 16 | - nodejs >=18,<19 17 | -------------------------------------------------------------------------------- /atest/__init__.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource _resources/keywords/Server.robot 3 | Resource _resources/keywords/Lab.robot 4 | 5 | Suite Setup Setup Server and Browser 6 | Suite Teardown Tear Down Everything 7 | Test Setup Reset Application State 8 | 9 | Force Tags os:${os.lower()} py:${py} 10 | -------------------------------------------------------------------------------- /packages/wxyz-svg/style/index.css: -------------------------------------------------------------------------------- 1 | .jp-WXYZ-SVG-zoom-lock .jupyter-widgets, 2 | .jp-WXYZ-SVG-zoom-lock svg g { 3 | pointer-events: none; 4 | opacity: 0.75 !important; 5 | outline: dotted 1px var(--jp-brand-color2); 6 | } 7 | .jp-WXYZ-SVG-Zoom { 8 | cursor: all-scroll; 9 | } 10 | .jp-WXYZ-SVG svg { 11 | width: 100%; 12 | height: 100%; 13 | } 14 | -------------------------------------------------------------------------------- /.github/reqs/pip-build.txt: -------------------------------------------------------------------------------- 1 | # In CI, this is handled by `setup-python` (as nodejs is delegated to `setup/node`) 2 | # TOOD: reduce minimum pip-only build requirements for all wxyz packages 3 | # probably not going anywhere 4 | pip 5 | setuptools 6 | wheel 7 | twine 8 | flit >=3.8 9 | jupyterlab >=3.5,<3.6 10 | 11 | # likely can be avoided 12 | doit 13 | pyyaml 14 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-svg/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /.github/reqs/base.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-base 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - bs4 9 | - doit-with-toml 10 | - flit >=3.8 11 | - importnb 12 | - ipykernel !=6.19.0,!=6.19.1,!=6.19.2,!=6.19.3 13 | - ipywidgets >=8.0.4,<9 14 | - jupyterlab >=3,<4 15 | - jupyterlab_widgets >=3.0.5 16 | - pip 17 | - python 18 | - twine 19 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-html/style/index.css: -------------------------------------------------------------------------------- 1 | /* file box */ 2 | .jp-WXYZ-FileBox-DragTarget { 3 | position: absolute; 4 | top: 0; 5 | right: 0; 6 | left: 0; 7 | bottom: 0; 8 | pointer-events: none; 9 | } 10 | .jp-WXYZ-FileBox-dragover .jp-WXYZ-FileBox-DragTarget { 11 | background: rgba(33, 150, 243, 0.1); 12 | border: var(--jp-border-width) dashed var(--jp-brand-color1); 13 | } 14 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { 12 | "path": "../../wxyz-core/src" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /src/wxyz_json_e/src/wxyz/json_e/__init__.py: -------------------------------------------------------------------------------- 1 | """ experimental Jupyter widgets for JSON-E 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_jsone import JSONE 6 | 7 | __all__ = ["_jupyter_labextension_paths", "__version__", "JSONE"] 8 | 9 | 10 | def _jupyter_labextension_paths(): 11 | return [dict(src=str(__prefix__), dest=module_name)] 12 | -------------------------------------------------------------------------------- /src/wxyz_svg/src/wxyz/svg/__init__.py: -------------------------------------------------------------------------------- 1 | """ Widget for working with SVG groups as a widget layout 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_svg import SVGBox 6 | 7 | __all__ = ["_jupyter_labextension_paths", "__version__", "SVGBox"] 8 | 9 | 10 | def _jupyter_labextension_paths(): 11 | return [dict(src=str(__prefix__), dest=module_name)] 12 | -------------------------------------------------------------------------------- /.readthedocs.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | build: 4 | os: ubuntu-20.04 5 | tools: 6 | python: mambaforge-4.10 7 | jobs: 8 | pre_build: 9 | - doit list --all --status 10 | - doit setup_ts 11 | - doit dist 12 | - doit setup_py 13 | - doit lite 14 | 15 | sphinx: 16 | builder: html 17 | configuration: docs/conf.py 18 | 19 | conda: 20 | environment: docs/rtd.yml 21 | -------------------------------------------------------------------------------- /src/wxyz_yaml/src/wxyz/yaml/__init__.py: -------------------------------------------------------------------------------- 1 | """ Isomorphic widgets for parsing and dumping YAML 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_yaml import YAML, UnYAML 6 | 7 | __all__ = ["_jupyter_labextension_paths", "__version__", "YAML", "UnYAML"] 8 | 9 | 10 | def _jupyter_labextension_paths(): 11 | return [dict(src=str(__prefix__), dest=module_name)] 12 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/widget_fullscreen.py: -------------------------------------------------------------------------------- 1 | """ Full Screen widget 2 | """ 3 | from .base import HTMLBase, T, W 4 | 5 | 6 | @W.register 7 | class Fullscreen(HTMLBase, W.Box): 8 | """A full-screen Box, activated with Ctrl+Shift+Click, or the flower key on MacOS""" 9 | 10 | _model_name = T.Unicode("FullscreenModel").tag(sync=True) 11 | _view_name = T.Unicode("FullscreenView").tag(sync=True) 12 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/src/wxyz/tpl_jinja/__init__.py: -------------------------------------------------------------------------------- 1 | """ Isomorphic widget for rendering jinja2 templates 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_template import Template 6 | 7 | __all__ = ["_jupyter_labextension_paths", "__version__", "Template"] 8 | 9 | 10 | def _jupyter_labextension_paths(): 11 | return [dict(src=str(__prefix__), dest=module_name)] 12 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/src/wxyz/json_schema_form/__init__.py: -------------------------------------------------------------------------------- 1 | """ Isomorphic widget for working with JSON Schema 2 | """ 3 | from ._version import __prefix__, __version__, module_name 4 | from .widget_json_schema_form import JSONSchemaForm 5 | 6 | __all__ = ["_jupyter_labextension_paths", "__version__", "JSONSchemaForm"] 7 | 8 | 9 | def _jupyter_labextension_paths(): 10 | return [dict(src=str(__prefix__), dest=module_name)] 11 | -------------------------------------------------------------------------------- /atest/_libraries/Ports.py: -------------------------------------------------------------------------------- 1 | """ get a random port 2 | """ 3 | import socket 4 | 5 | 6 | def get_unused_port(): 7 | """Get an unused port by trying to listen to any random port. 8 | 9 | Probably could introduce race conditions if inside a tight loop. 10 | """ 11 | sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 12 | sock.bind(("localhost", 0)) 13 | sock.listen(1) 14 | port = sock.getsockname()[1] 15 | sock.close() 16 | return port 17 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/widgets/pmodels/jsonmodel.ts: -------------------------------------------------------------------------------- 1 | import { DataModel, JSONModel } from '@lumino/datagrid'; 2 | 3 | import { WidgetModel } from '@jupyter-widgets/base'; 4 | 5 | export class WXYZJSONModel extends JSONModel { 6 | jmodel: WidgetModel; 7 | 8 | metadata(region: DataModel.CellRegion, row: number, column: number) { 9 | return { 10 | jmodel: this.jmodel?.attributes, 11 | ...super.metadata(region, row, column), 12 | }; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | _*_repo_/ 3 | .cache/ 4 | .conda-packages/ 5 | .coverage 6 | .ipynb_checkpoints/ 7 | .pabotsuitenames 8 | .pytest_cache/ 9 | .vscode/ 10 | .yarn-packages/ 11 | *.doit.* 12 | *.egg-info 13 | *.isorted 14 | *.log 15 | *.tgz 16 | **/labextension/ 17 | **/static/ 18 | **/test-output.xml 19 | *.tsbuildinfo 20 | atest/output/ 21 | build/ 22 | dask-worker-space/ 23 | dist/ 24 | docs/js/ 25 | envs/ 26 | lib/ 27 | node_modules/ 28 | pypi/ 29 | src/**/_d/ 30 | untitled* 31 | Untitled* 32 | -------------------------------------------------------------------------------- /src/wxyz_core/src/wxyz/core/__init__.py: -------------------------------------------------------------------------------- 1 | """ Isomorphic JSON widgets 2 | """ 3 | from ._version import __prefix__, __version__, module_name 4 | from .base import Fn 5 | from .widget_json import JSON, JSONPointer, JSONSchema, UnJSON 6 | 7 | __all__ = [ 8 | "_jupyter_labextension_paths", 9 | "__version__", 10 | "Fn", 11 | "UnJSON", 12 | "JSON", 13 | "JSONPointer", 14 | "JSONSchema", 15 | ] 16 | 17 | 18 | def _jupyter_labextension_paths(): 19 | return [dict(src=str(__prefix__), dest=module_name)] 20 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/src/wxyz/jsonld/__init__.py: -------------------------------------------------------------------------------- 1 | """ Isomorphic widgets for working with JSON-LD algorithms 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_jsonld import Compact, Expand, Flatten, Frame, Normalize 6 | 7 | __all__ = [ 8 | "_jupyter_labextension_paths", 9 | "__version__", 10 | "Expand", 11 | "Compact", 12 | "Flatten", 13 | "Frame", 14 | "Normalize", 15 | ] 16 | 17 | 18 | def _jupyter_labextension_paths(): 19 | return [dict(src=str(__prefix__), dest=module_name)] 20 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-lab version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-lab" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-lab" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_svg/src/wxyz/svg/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-svg version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-svg" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-svg" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_core/src/wxyz/core/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-core version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-core" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-core" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-dvcs version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-dvcs" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-dvcs" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-html version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-html" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-html" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_yaml/src/wxyz/yaml/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-yaml version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-yaml" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-yaml" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_json_e/src/wxyz/json_e/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-json-e version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-json-e" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-json-e" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/src/wxyz/jsonld/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-jsonld version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-jsonld" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-jsonld" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /atest/_resources/keywords/WXYZ.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource ../variables/WXYZ.robot 3 | 4 | 5 | *** Keywords *** 6 | Open WXYZ Notebook 7 | [Arguments] ${notebook} ${path}=${WXYZ_NOTEBOOKS} 8 | Set Tags ipynb:notebook 9 | ${full path} = Normalize Path ${path}${/}${notebook}.ipynb 10 | File Should Exist ${full path} 11 | Open File ${full path} ${MENU NOTEBOOK} 12 | Wait Until Page Contains Element ${JLAB XP KERNEL IDLE} timeout=30s 13 | Ensure Sidebar Is Closed 14 | Capture Page Screenshot 01-loaded.png 15 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-datagrid version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-datagrid" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-datagrid" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/src/wxyz/tpl_jinja/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-tpl-jinja version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-tpl-nunjucks" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-tpl-jinja" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/trackers/tracker_yaml.py: -------------------------------------------------------------------------------- 1 | """ widgets for syncing state with YAML 2 | """ 3 | import yaml 4 | 5 | from .tracker_json import JSONDictTracker 6 | 7 | 8 | class YAMLDictTracker(JSONDictTracker): 9 | """sync a widget's traits to single YAML file on disk""" 10 | 11 | __extension__ = ".yaml" 12 | 13 | def _read(self, text): 14 | """read a file with YAML""" 15 | return yaml.safe_load(text) 16 | 17 | def _write(self, widget_dict): 18 | """write a file with YAML""" 19 | return yaml.safe_dump(widget_dict, default_flow_style=False) 20 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/base.py: -------------------------------------------------------------------------------- 1 | """ Lab base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class LabBase(Base): 13 | """Module metadata for Lab""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/base.py: -------------------------------------------------------------------------------- 1 | """ DVCS base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class DVCSBase(Base): 13 | """DVCS module metadata""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_svg/src/wxyz/svg/base.py: -------------------------------------------------------------------------------- 1 | """ Base classes for SVG 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class SVGBase(Base): 13 | """Module metadata for SVG""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/widget_markdown.py: -------------------------------------------------------------------------------- 1 | """ Widgets for working with markdown 2 | 3 | This module does not yet work in ``jupyterlite`` 4 | """ 5 | import mistune 6 | 7 | # pylint: disable=import-outside-toplevel 8 | from wxyz.core.base import Fn 9 | 10 | from .base import LabBase, T, W 11 | 12 | 13 | @W.register 14 | class Markdown(Fn, LabBase): 15 | """A widget that turns markdown source into HTML source""" 16 | 17 | _model_name = T.Unicode("MarkdownModel").tag(sync=True) 18 | 19 | def the_function(self, source): 20 | """Render some markdown""" 21 | return mistune.html(source) 22 | -------------------------------------------------------------------------------- /ROADMAP.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2 | 3 | 1. [ ] Migrate to GitHub actions 4 | 1. [ ] JupyterLab 3 Compatibility 5 | 1. [ ] Voila Compatibility 6 | 7 | ## Works-in-Progress 8 | 9 | Current major works in progress. 10 | 11 | ### Github Actions 12 | 13 | - [ ] build/lint 14 | - [ ] test 15 | 16 | ### JupyterLab 3 Distribution 17 | 18 | #### Set up build environment 19 | 20 | #### Build the typescript package 21 | 22 | #### Build the python package 23 | 24 | #### Build the docs 25 | 26 | #### Apply quality control 27 | 28 | ### voila compatibility 29 | 30 | #### Set up build environment 31 | 32 | #### Measure Performance 33 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/base.py: -------------------------------------------------------------------------------- 1 | """ Base classes for HTML 5 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class HTMLBase(Base): 13 | """Module metadata for HTML5""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_json_e/src/wxyz/json_e/base.py: -------------------------------------------------------------------------------- 1 | """ JSON-E base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class JSONEBase(Base): 13 | """JSON-LD module metadata""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/src/wxyz/json_schema_form/_version.py: -------------------------------------------------------------------------------- 1 | """source of truth for wxyz-json-schema-form version info""" 2 | import sys 3 | from importlib.metadata import version 4 | from pathlib import Path 5 | 6 | module_name = "@deathbeds/wxyz-json-schema-form" 7 | module_version = "0.6.0" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | NAME = "wxyz-json-schema-form" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/src/wxyz/jsonld/base.py: -------------------------------------------------------------------------------- 1 | """ JSON-LD base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class JSONLDBase(Base): 13 | """JSON-LD module metadata""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_yaml/src/wxyz/yaml/base.py: -------------------------------------------------------------------------------- 1 | """ Base classes for YAML 2 | """ 3 | # pylint: disable=unused-import 4 | 5 | import ipywidgets as W # noqa 6 | import traitlets as T 7 | 8 | from wxyz.core.base import Base 9 | 10 | from ._version import module_name, module_version 11 | 12 | 13 | class YAMLBase(Base): 14 | """Module metadata for YAML""" 15 | 16 | _model_module = T.Unicode(module_name).tag(sync=True) 17 | _model_module_version = T.Unicode(module_version).tag(sync=True) 18 | _view_module = T.Unicode(module_name).tag(sync=True) 19 | _view_module_version = T.Unicode(module_version).tag(sync=True) 20 | -------------------------------------------------------------------------------- /packages/tsconfigbase.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "composite": true, 5 | "declaration": true, 6 | "esModuleInterop": true, 7 | "incremental": true, 8 | "jsx": "react", 9 | "lib": ["dom", "es2015"], 10 | "module": "esnext", 11 | "moduleResolution": "node", 12 | "noEmitOnError": true, 13 | "noImplicitAny": true, 14 | "noUnusedLocals": true, 15 | "preserveWatchOutput": true, 16 | "resolveJsonModule": true, 17 | "skipLibCheck": true, 18 | "sourceMap": true, 19 | "target": "es2015", 20 | "types": [] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/widgets/_datagrid_styles.ts: -------------------------------------------------------------------------------- 1 | import { DataGrid } from '@lumino/datagrid'; 2 | 3 | export type TJSONUnsafeStyle = 'rowBackgroundColor' | 'columnBackgroundColor'; 4 | 5 | export type TJSONSafeStyles = Omit; 6 | 7 | export interface IDataGridStyles extends TJSONSafeStyles { 8 | /** 9 | * Realized as a functor, a single value will affect all rows, while any 10 | * other value will be return modulo the position. 11 | */ 12 | rowBackgroundColor: string[]; 13 | 14 | /** 15 | * @see rowBackgroundColor 16 | */ 17 | columnBackgroundColor: string[]; 18 | } 19 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/widgets/lazy.ts: -------------------------------------------------------------------------------- 1 | import { PromiseDelegate } from '@lumino/coreutils'; 2 | 3 | export function lazyLoader(loader: () => Promise) { 4 | let _lib: T; 5 | let _promiseDelegate: PromiseDelegate; 6 | 7 | function get() { 8 | return _lib; 9 | } 10 | 11 | async function load() { 12 | if (_lib) { 13 | return _lib; 14 | } 15 | if (_promiseDelegate) { 16 | return await _promiseDelegate.promise; 17 | } 18 | _promiseDelegate = new PromiseDelegate(); 19 | _lib = await loader(); 20 | _promiseDelegate.resolve(_lib); 21 | } 22 | 23 | return { get, load }; 24 | } 25 | -------------------------------------------------------------------------------- /_scripts/templates/py_version.j2.py: -------------------------------------------------------------------------------- 1 | """source of truth for {{ project["name"] }} version info""" 2 | {% if js_pkg %}import sys 3 | {% endif %}from importlib.metadata import version 4 | {% if js_pkg %}from pathlib import Path 5 | 6 | module_name = "{{ js_pkg["name"] }}" 7 | module_version = "{{ js_pkg["version"] }}" 8 | HERE = Path(__file__).parent 9 | SHARE = "share/jupyter/labextensions" 10 | IN_TREE = (HERE / "../../../_d" / SHARE / module_name).resolve() 11 | IN_PREFIX = Path(sys.prefix) / SHARE / module_name 12 | __prefix__ = IN_TREE if IN_TREE.exists() else IN_PREFIX 13 | {% endif %}NAME = "{{ project["name"] }}" 14 | __version__ = version(NAME) 15 | -------------------------------------------------------------------------------- /atest/_resources/keywords/Browser.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Resource CLI.robot 3 | Library SeleniumLibrary 4 | Resource ../variables/Browser.robot 5 | 6 | 7 | *** Keywords *** 8 | Setup Suite For Screenshots 9 | [Arguments] ${folder} 10 | Set Screenshot Directory ${SCREENS ROOT}${/}${folder} 11 | Set Tags lab:${LAB VERSION} 12 | 13 | Get Firefox Binary 14 | [Documentation] Get Firefox path from the environment... or hope for the best 15 | ${from which} = Which firefox 16 | ${firefox} = Set Variable If "%{FIREFOX_BINARY}" %{FIREFOX_BINARY} ${from which} 17 | RETURN ${firefox} 18 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/src/wxyz/json_schema_form/base.py: -------------------------------------------------------------------------------- 1 | """ JSON-LD base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class JSONSchemaFormBase(Base): 13 | """JSON-LD module metadata""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/src/wxyz/tpl_jinja/base.py: -------------------------------------------------------------------------------- 1 | """ Base classes for Jinja/Nunjucks templates 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import traitlets as T 6 | 7 | from wxyz.core.base import Base 8 | 9 | from ._version import module_name, module_version 10 | 11 | 12 | class JinjaBase(Base): 13 | """Jinja/Nunjucks module metadata""" 14 | 15 | _model_module = T.Unicode(module_name).tag(sync=True) 16 | _model_module_version = T.Unicode(module_version).tag(sync=True) 17 | _view_module = T.Unicode(module_name).tag(sync=True) 18 | _view_module_version = T.Unicode(module_version).tag(sync=True) 19 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://typedoc.org/schema.json", 3 | "entryPointStrategy": "packages", 4 | "entryPoints": [ 5 | "packages/wxyz-core", 6 | "packages/wxyz-datagrid", 7 | "packages/wxyz-dvcs", 8 | "packages/wxyz-html", 9 | "packages/wxyz-json-e", 10 | "packages/wxyz-json-schema-form", 11 | "packages/wxyz-jsonld", 12 | "packages/wxyz-lab", 13 | "packages/wxyz-svg", 14 | "packages/wxyz-tpl-nunjucks", 15 | "packages/wxyz-yaml" 16 | ], 17 | "githubPages": false, 18 | "logLevel": "Verbose", 19 | "name": "wxyz", 20 | "out": "build/typedoc", 21 | "readme": "none", 22 | "tsconfig": "tsconfig.typedoc.json" 23 | } 24 | -------------------------------------------------------------------------------- /packages/wxyz-core/style/index.css: -------------------------------------------------------------------------------- 1 | .jupyter-widgets.lm-DockPanel { 2 | overflow: hidden; 3 | } 4 | 5 | /* dockpanel */ 6 | .jp-LinkedOutputView 7 | > .jp-OutputArea 8 | > .jp-OutputArea-output 9 | > .jupyter-widgets.lm-DockPanel { 10 | height: 100% !important; 11 | width: 100% !important; 12 | min-width: 100% !important; 13 | max-width: 100% !important; 14 | min-height: 100% !important; 15 | max-height: 100% !important; 16 | } 17 | 18 | /* slider */ 19 | .jupyter-widgets.lm-DockPanel .widget-inline-vbox .widget-readout { 20 | width: auto; 21 | height: auto; 22 | } 23 | 24 | .lm-DockPanel > .jupyter-widgets { 25 | margin: 0; 26 | overflow-y: auto; 27 | } 28 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/base.py: -------------------------------------------------------------------------------- 1 | """ Data Grid base classes 2 | """ 3 | # pylint: disable=unused-import 4 | import ipywidgets as W # noqa 5 | import ipywidgets.widgets.trait_types as TT # noqa 6 | import traitlets as T 7 | 8 | from wxyz.core.base import Base 9 | 10 | from ._version import module_name, module_version 11 | 12 | 13 | class DataGridBase(Base): 14 | """Data Grid module metadata""" 15 | 16 | _model_module = T.Unicode(module_name).tag(sync=True) 17 | _model_module_version = T.Unicode(module_version).tag(sync=True) 18 | _view_module = T.Unicode(module_name).tag(sync=True) 19 | _view_module_version = T.Unicode(module_version).tag(sync=True) 20 | -------------------------------------------------------------------------------- /.github/reqs/docs.yml: -------------------------------------------------------------------------------- 1 | name: wxyz-docs 2 | 3 | channels: 4 | - conda-forge 5 | - nodefaults 6 | 7 | dependencies: 8 | - cairosvg 9 | - docutils >=0.19 10 | - doit 11 | - hunspell 12 | - hunspell-en 13 | - jupyter-server-mathjax 14 | - jupyterlab-deck 15 | - jupyterlab-myst 16 | - jupyterlab-webrtc-docprovider 17 | - myst-nb 18 | - nodejs >=16,!=17.*,<19 19 | - pkginfo 20 | - pydata-sphinx-theme 21 | - pytest-check-links >=0.4.4,!=4.3.3 22 | - python-build 23 | - python-graphviz 24 | - python-libarchive-c 25 | - recommonmark 26 | - sphinx-autobuild 27 | - sphinx-autodoc-typehints 28 | - sphinx-copybutton 29 | - sphinx-sitemap 30 | - tabulate 31 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/__init__.py: -------------------------------------------------------------------------------- 1 | """ Widgets for core HTML 5 controls 2 | """ 3 | from ._version import __prefix__, __version__, module_name 4 | from .widget_color import AlphaColor, AlphaColorPicker, EmptyAlphaColor 5 | from .widget_file import File, FileBox, JSONFile, TextFile 6 | from .widget_fullscreen import Fullscreen 7 | 8 | __all__ = [ 9 | "_jupyter_labextension_paths", 10 | "__version__", 11 | "AlphaColor", 12 | "AlphaColorPicker", 13 | "EmptyAlphaColor", 14 | "File", 15 | "FileBox", 16 | "Fullscreen", 17 | "JSONFile", 18 | "TextFile", 19 | ] 20 | 21 | 22 | def _jupyter_labextension_paths(): 23 | return [dict(src=str(__prefix__), dest=module_name)] 24 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Request a Future Roadmap item 3 | about: Help us build future features 4 | labels: enhancement 5 | --- 6 | 7 | 13 | 14 | ## Elevator Pitch 15 | 16 | 17 | 18 | ## Motivation 19 | 20 | 21 | 22 | ## Design Ideas 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/__init__.py: -------------------------------------------------------------------------------- 1 | """ Widgets for reusing parts of the JupyterLab interface 2 | """ 3 | 4 | from ._version import __prefix__, __version__, module_name 5 | from .widget_dock import DockBox, DockPop 6 | from .widget_editor import Editor, EditorConfig, EditorModeInfo 7 | from .widget_markdown import Markdown 8 | from .widget_term import Terminal 9 | 10 | __all__ = [ 11 | "_jupyter_labextension_paths", 12 | "__version__", 13 | "DockBox", 14 | "DockPop", 15 | "Editor", 16 | "Markdown", 17 | "Terminal", 18 | "EditorConfig", 19 | "EditorModeInfo", 20 | ] 21 | 22 | 23 | def _jupyter_labextension_paths(): 24 | return [dict(src=str(__prefix__), dest=module_name)] 25 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/src/wxyz/json_schema_form/widget_json_schema_form.py: -------------------------------------------------------------------------------- 1 | """ Widgets for working with JSON Schema interactively 2 | """ 3 | # pylint: disable=redefined-builtin 4 | 5 | from .base import JSONSchemaFormBase, T, W 6 | 7 | 8 | @W.register 9 | class JSONSchemaForm(JSONSchemaFormBase, W.Box): 10 | """Show a form based on an JSON Schema (and/or UI schema)""" 11 | 12 | _model_name = T.Unicode("JSONSchemaFormModel").tag(sync=True) 13 | _view_name = T.Unicode("JSONSchemaFormView").tag(sync=True) 14 | 15 | value = T.Any(allow_none=True).tag(sync=True) 16 | schema = T.Dict(allow_none=True).tag(sync=True) 17 | ui_schema = T.Dict(allow_none=True).tag(sync=True) 18 | errors = T.List().tag(sync=True) 19 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-svg/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-core/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: async () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: async () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (app: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: () => import('./widgets'), 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | 10 | const EXTENSION_ID = `${NAME}:plugin`; 11 | 12 | const plugin: IPlugin, void> = { 13 | id: EXTENSION_ID, 14 | requires: [IJupyterWidgetRegistry], 15 | autoStart: true, 16 | activate: (_app: Application, registry: IJupyterWidgetRegistry) => { 17 | registry.registerWidget({ 18 | name: NAME, 19 | version: VERSION, 20 | exports: async () => import('./widgets') as any, 21 | }); 22 | }, 23 | }; 24 | 25 | export default plugin; 26 | -------------------------------------------------------------------------------- /_scripts/templates/py_README.j2.md: -------------------------------------------------------------------------------- 1 | # `{{ project.name }}` 2 | 3 | [![pypi-badge][]][pypi]{% if js_pkg %} [![npm-badge][]][npm]{% endif 4 | %} [![docs-badge][docs]] 5 | 6 | [docs-badge]: https://img.shields.io/badge/docs-pages-black 7 | [docs]: https://wxyz.rtfd.io 8 | [pypi-badge]: https://img.shields.io/pypi/v/{{ project.name }} 9 | [pypi]: https://pypi.org/project/{{ project.name.replace("_", "-") }} 10 | {% if js_pkg %} 11 | [npm-badge]: https://img.shields.io/npm/v/{{ js_pkg.name }} 12 | [npm]: https://www.npmjs.com/package/{{ js_pkg.name }} 13 | {% endif %} 14 | 15 | > {{ project.description }} 16 | 17 | ## Installation 18 | 19 | > Prerequisites: 20 | > - `python {{ project["requires-python"] }}` 21 | > - `jupyterlab >=3.1,<4` 22 | 23 | ```bash 24 | pip install {{ project.name }} 25 | ``` 26 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 5 | 6 | import '../style/index.css'; 7 | 8 | import { NAME, VERSION } from './constants'; 9 | import './modes'; 10 | 11 | const EXTENSION_ID = `${NAME}:plugin`; 12 | 13 | const plugin: IPlugin, void> = { 14 | id: EXTENSION_ID, 15 | requires: [IJupyterWidgetRegistry], 16 | autoStart: true, 17 | activate: (_: Application, registry: IJupyterWidgetRegistry) => { 18 | registry.registerWidget({ 19 | name: NAME, 20 | version: VERSION, 21 | exports: async () => import('./widgets'), 22 | }); 23 | }, 24 | }; 25 | 26 | export default plugin; 27 | -------------------------------------------------------------------------------- /packages/wxyz-meta/src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfigbase.json", 3 | "compilerOptions": { 4 | "rootDir": ".", 5 | "outDir": "../lib", 6 | "tsBuildInfoFile": "../.src.tsbuildinfo" 7 | }, 8 | "include": ["./**/*"], 9 | "references": [ 10 | { "path": "../" }, 11 | { "path": "../../wxyz-core/src" }, 12 | { "path": "../../wxyz-datagrid/src" }, 13 | { "path": "../../wxyz-dvcs/src" }, 14 | { "path": "../../wxyz-html/src" }, 15 | { "path": "../../wxyz-json-schema-form/src" }, 16 | { "path": "../../wxyz-json-e/src" }, 17 | { "path": "../../wxyz-jsonld/src" }, 18 | { "path": "../../wxyz-lab/src" }, 19 | { "path": "../../wxyz-svg/src" }, 20 | { "path": "../../wxyz-tpl-nunjucks/src" }, 21 | { "path": "../../wxyz-yaml/src" } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/__init__.py: -------------------------------------------------------------------------------- 1 | """ Lumino DataGrid widgets powered by pandas and JSON Table Schema 2 | """ 3 | from ._version import __prefix__, __version__, module_name 4 | from .widget_datagrid import DataGrid 5 | from .widget_selectgrid import SelectGrid 6 | from .widget_stylegrid import ( 7 | CellRenderer, 8 | FixedFunc, 9 | FormatFunc, 10 | GridStyle, 11 | StyleGrid, 12 | TextRenderer, 13 | ) 14 | 15 | __all__ = [ 16 | "_jupyter_labextension_paths", 17 | "__version__", 18 | "CellRenderer", 19 | "DataGrid", 20 | "FixedFunc", 21 | "FormatFunc", 22 | "GridStyle", 23 | "SelectGrid", 24 | "StyleGrid", 25 | "TextRenderer", 26 | ] 27 | 28 | 29 | def _jupyter_labextension_paths(): 30 | return [dict(src=str(__prefix__), dest=module_name)] 31 | -------------------------------------------------------------------------------- /src/wxyz_json_e/src/wxyz/json_e/widget_jsone.py: -------------------------------------------------------------------------------- 1 | """ Widgets for working with JSON 2 | """ 3 | # pylint: disable=redefined-builtin,too-many-ancestors 4 | from copy import deepcopy 5 | 6 | import jsone 7 | 8 | from wxyz.core.base import Fn, T, W 9 | 10 | from .base import JSONEBase 11 | 12 | 13 | @W.register 14 | class JSONE(Fn, JSONEBase): 15 | """Transform a JSON document""" 16 | 17 | _model_name = T.Unicode("JSONEModel").tag(sync=True) 18 | 19 | source = T.Any(allow_none=True).tag(sync=True) 20 | context = T.Any(allow_none=True).tag(sync=True) 21 | value = T.Any(allow_none=True).tag(sync=True) 22 | 23 | _observed_traits = ["source", "context"] 24 | 25 | def the_function(self, source, context): 26 | """actually render""" 27 | return jsone.render(deepcopy(source), deepcopy(context)) 28 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/style/index.css: -------------------------------------------------------------------------------- 1 | /* data grid */ 2 | .jp-WXYZ-DataGrid { 3 | flex-direction: column; 4 | } 5 | 6 | .jp-WXYZ-DataGrid .lm-DataGrid { 7 | flex: 1; 8 | border: 0; 9 | } 10 | 11 | /* style grid */ 12 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-track { 13 | background-color: var(--jp-layout-color3); 14 | border: var(--jp-border-width) solid var(--jp-border-color0); 15 | } 16 | 17 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-button { 18 | background-color: var(--jp-layout-color2); 19 | border: var(--jp-border-width) solid var(--jp-border-color0); 20 | } 21 | 22 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-thumb { 23 | background-color: var(--jp-layout-color2); 24 | border: var(--jp-border-width) solid var(--jp-border-color0); 25 | } 26 | 27 | /* select grid */ 28 | .jp-WXYZ-SelectGrid { 29 | } 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation request 3 | about: Ask for clarification in documentation 4 | labels: documentation 5 | --- 6 | 7 | 13 | 14 | ## What I am trying to do... 15 | 16 | 17 | 18 | ## How I would like to learn how to do it... 19 | 20 | 21 | 22 | ## How the project might keep the docs accurate... 23 | 24 | 25 | -------------------------------------------------------------------------------- /_scripts/_hacked_labextension.py: -------------------------------------------------------------------------------- 1 | """ handle PEP 420 implicit namespace packages for labextensions 2 | """ 3 | # pylint: disable=protected-access 4 | import importlib 5 | import sys 6 | from pathlib import Path 7 | 8 | from jupyterlab import federated_labextensions 9 | from jupyterlab.labextensions import LabExtensionApp 10 | 11 | HERE = Path(__file__).parent 12 | ROOT = HERE.parent 13 | NODE_MODULES = ROOT / "node_modules" 14 | BUILDER = NODE_MODULES / "@jupyterlab" / "builder" / "lib" / "build-labextension.js" 15 | 16 | 17 | def _get_labextension_metadata(module): 18 | m = importlib.import_module(module) 19 | return m, m._jupyter_labextension_paths() 20 | 21 | 22 | federated_labextensions._get_labextension_metadata = _get_labextension_metadata 23 | 24 | main = LabExtensionApp.launch_instance 25 | 26 | if __name__ == "__main__": 27 | sys.exit(main()) 28 | -------------------------------------------------------------------------------- /atest/Notebooks/Index.robot: -------------------------------------------------------------------------------- 1 | *** Settings *** 2 | Documentation Basic all-or-nothing run of index notebook 3 | 4 | Resource ../_resources/keywords/Browser.robot 5 | Resource ../_resources/keywords/Lab.robot 6 | Resource ../_resources/keywords/WXYZ.robot 7 | 8 | Suite Setup Setup Suite For Screenshots notebook-index 9 | 10 | 11 | *** Variables *** 12 | ${SCREENS} ${SCREENS ROOT}${/}notebook-index 13 | 14 | 15 | *** Test Cases *** 16 | Index 17 | Open WXYZ Notebook index 18 | Restart and Run All 19 | Wait For All Cells To Run 120s 20 | Capture All Code Cells 21 | Page Should Not Contain Element ${JLAB XP STDERR} 22 | Capture Page Screenshot 99-fin.png 23 | # Browser Log Should Not Contain ${some file content} 24 | [Teardown] Clean up after Working with file index.ipynb 25 | -------------------------------------------------------------------------------- /packages/wxyz-meta/src/widgets.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@deathbeds/wxyz-core'; 2 | import * as datagrid from '@deathbeds/wxyz-datagrid'; 3 | import * as dvcs from '@deathbeds/wxyz-dvcs'; 4 | import * as html from '@deathbeds/wxyz-html'; 5 | import * as jsone from '@deathbeds/wxyz-json-e'; 6 | import * as jsonSchemaForm from '@deathbeds/wxyz-json-schema-form'; 7 | import * as jsonld from '@deathbeds/wxyz-jsonld'; 8 | import * as lab from '@deathbeds/wxyz-lab'; 9 | import * as svg from '@deathbeds/wxyz-svg'; 10 | import * as tplNunjucks from '@deathbeds/wxyz-tpl-nunjucks'; 11 | import * as yaml from '@deathbeds/wxyz-yaml'; 12 | 13 | const DEBUG = false; 14 | 15 | if (DEBUG) { 16 | console.warn( 17 | core, 18 | datagrid, 19 | dvcs, 20 | html, 21 | jsonld, 22 | jsone, 23 | jsonSchemaForm, 24 | lab, 25 | svg, 26 | tplNunjucks, 27 | yaml 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/style/index.css: -------------------------------------------------------------------------------- 1 | .jp-WXYZ-JSONSchemaForm { 2 | display: flex; 3 | flex-direction: column; 4 | } 5 | 6 | .jp-WXYZ-JSONSchemaForm-Inner { 7 | flex: 1; 8 | display: flex; 9 | flex-direction: column; 10 | } 11 | 12 | .jp-WXYZ-JSONSchemaForm .jp-SchemaForm { 13 | overflow-y: auto; 14 | flex: 1; 15 | max-height: 100%; 16 | padding: var(--jp-notebook-padding); 17 | display: flex; 18 | flex-direction: column-reverse; 19 | } 20 | 21 | .jp-WXYZ-JSONSchemaForm .jp-SchemaForm > .form-group { 22 | flex: 1; 23 | order: 10; 24 | } 25 | 26 | .jp-WXYZ-JSONSchemaForm .jp-SchemaForm > .panel.panel-danger.errors { 27 | padding: var(--jp-notebook-padding); 28 | background-color: var(--jp-layout-color1); 29 | border-top: solid 1px var(--jp-warn-color0); 30 | overflow-y: auto; 31 | max-height: 20rem; 32 | min-height: 4em; 33 | flex: 1; 34 | order: 1; 35 | } 36 | -------------------------------------------------------------------------------- /_scripts/_favicon.py: -------------------------------------------------------------------------------- 1 | """generate favicon from svg""" 2 | import sys 3 | from pathlib import Path 4 | from tempfile import TemporaryDirectory 5 | 6 | from . import _paths as P 7 | 8 | # pixel sizes of favicons to create 9 | SIZES = [(16, 16), (32, 32), (48, 48), (64, 64)] 10 | 11 | 12 | def favicon(): 13 | """generate a favicon, discarding the intermediate png (for now)""" 14 | # ignore errors, as this a) is short, b) uses relatively exotic imports 15 | # pylint: disable=import-error,import-outside-toplevel 16 | from cairosvg import svg2png 17 | from PIL import Image 18 | 19 | with TemporaryDirectory() as td: 20 | tdp = Path(td) 21 | png = tdp / "wxyz.png" 22 | svg2png(bytestring=P.DOCS_LOGO.read_bytes(), write_to=str(png)) 23 | Image.open(str(png)).save(str(P.DOCS_FAVICON), sizes=SIZES) 24 | return 0 25 | 26 | 27 | if __name__ == "__main__": 28 | sys.exit(favicon()) 29 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/src/widgets/dvcs.ts: -------------------------------------------------------------------------------- 1 | import * as widgets from '@jupyter-widgets/base'; 2 | 3 | import { WXYZ } from '@deathbeds/wxyz-core'; 4 | 5 | import { NAME, VERSION } from '../constants'; 6 | 7 | export class FooModel extends widgets.DOMWidgetModel { 8 | static model_name = 'FooModel'; 9 | static view_name = 'FooView'; 10 | static model_module = NAME; 11 | static model_module_version = NAME; 12 | static view_module = VERSION; 13 | static view_module_version = VERSION; 14 | 15 | static serializers = { 16 | ...WXYZ.serializers, 17 | }; 18 | 19 | defaults() { 20 | return { 21 | ...super.defaults(), 22 | _model_name: FooModel.model_name, 23 | _view_name: FooModel.view_name, 24 | _model_module: NAME, 25 | _model_module_version: VERSION, 26 | _view_module: NAME, 27 | _view_module_version: VERSION, 28 | }; 29 | } 30 | } 31 | 32 | export class FooView extends widgets.DOMWidgetView {} 33 | -------------------------------------------------------------------------------- /docs/developing.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "```{toctree}\n", 8 | ":maxdepth: 2\n", 9 | "\n", 10 | "js/index\n", 11 | "```" 12 | ] 13 | }, 14 | { 15 | "cell_type": "markdown", 16 | "metadata": {}, 17 | "source": [ 18 | "```{include} ../CONTRIBUTING.md\n", 19 | "\n", 20 | "```" 21 | ] 22 | } 23 | ], 24 | "metadata": { 25 | "kernelspec": { 26 | "display_name": "Python 3 (ipykernel)", 27 | "language": "python", 28 | "name": "python3" 29 | }, 30 | "language_info": { 31 | "codemirror_mode": { 32 | "name": "ipython", 33 | "version": 3 34 | }, 35 | "file_extension": ".py", 36 | "mimetype": "text/x-python", 37 | "name": "python", 38 | "nbconvert_exporter": "python", 39 | "pygments_lexer": "ipython3", 40 | "version": "3.11.0" 41 | } 42 | }, 43 | "nbformat": 4, 44 | "nbformat_minor": 4 45 | } 46 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/widgets/_terminal.ts: -------------------------------------------------------------------------------- 1 | import { Message } from '@lumino/messaging'; 2 | import { Signal } from '@lumino/signaling'; 3 | import { Widget } from '@lumino/widgets'; 4 | 5 | import { JupyterLuminoWidget } from '@jupyter-widgets/base'; 6 | 7 | export class TerminalLuminoWidget extends JupyterLuminoWidget { 8 | private _resized = new Signal(this); 9 | 10 | private _shown = new Signal(this); 11 | get resized() { 12 | return this._resized; 13 | } 14 | 15 | get shown() { 16 | return this._shown; 17 | } 18 | 19 | dispose() { 20 | super.dispose(); 21 | } 22 | 23 | protected onResize(msg: Widget.ResizeMessage): void { 24 | super.onResize(msg); 25 | this.resized.emit(msg); 26 | } 27 | 28 | protected onUpdateRequest(msg: Message) { 29 | super.onUpdateRequest(msg); 30 | if (this.isVisible) { 31 | this.shown.emit(msg); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/wxyz_yaml/src/wxyz/yaml/widget_yaml.py: -------------------------------------------------------------------------------- 1 | """ Widgets for working with YAML 2 | """ 3 | # pylint: disable=too-few-public-methods 4 | # pylint: disable=no-name-in-module,cyclic-import 5 | from yaml import safe_dump, safe_load 6 | 7 | from wxyz.core import JSON, UnJSON 8 | 9 | from .base import T, W, YAMLBase 10 | 11 | 12 | @W.register 13 | class YAML(JSON, YAMLBase): 14 | """A Widget that parses YAML source into... something""" 15 | 16 | _model_name = T.Unicode("YAMLModel").tag(sync=True) 17 | 18 | def the_function(self, source): 19 | """ "safely" load some YAML""" 20 | return safe_load(source) 21 | 22 | 23 | @W.register 24 | class UnYAML(UnJSON, YAMLBase): 25 | """A Widget that dumps... something into YAML""" 26 | 27 | _model_name = T.Unicode("UnYAMLModel").tag(sync=True) 28 | 29 | def the_function(self, source, indent): 30 | """ "safely" dump some YAML""" 31 | return safe_dump(source, indent=indent, default_flow_style=False) 32 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/src/wxyz/tpl_jinja/widget_template.py: -------------------------------------------------------------------------------- 1 | """ Widgets for templating 2 | """ 3 | import jinja2 4 | 5 | from wxyz.core.base import Fn, T, W 6 | 7 | from .base import JinjaBase 8 | 9 | 10 | @W.register 11 | class Template(Fn, JinjaBase): 12 | """Transforms text source into text output with a given context""" 13 | 14 | _model_name = T.Unicode("TemplateModel").tag(sync=True) 15 | 16 | context = T.Union([T.Dict(), T.Instance(W.Widget)], allow_none=True).tag( 17 | sync=True, **W.widget_serialization 18 | ) 19 | 20 | _observed_traits = ["source", "context"] 21 | 22 | @T.observe("context") 23 | def _context_changed(self, *_): 24 | """handle connecting to widgets""" 25 | if self.context and self.context.observe: 26 | self.context.observe(self.the_observer) 27 | 28 | def the_function(self, source, context): 29 | """render a source given a context""" 30 | return jinja2.Template(source).render(context) 31 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/widgets/_cm_options.ts: -------------------------------------------------------------------------------- 1 | import * as CodeMirror from 'codemirror'; 2 | 3 | type TJSONUnsafeOption = 4 | | 'extraKeys' 5 | | 'lineNumberFormatter' 6 | | 'onDragEvent' 7 | | 'onKeyEvent' 8 | | 'lint' 9 | | 'value'; 10 | 11 | type TJSONSafeConfig = Omit; 12 | 13 | interface IHasName { 14 | name: string; 15 | } 16 | 17 | export interface IEditorConfiguration extends TJSONSafeConfig { 18 | /** 19 | * string|object. The mode to use. When not given, this will default to 20 | * the first mode that was loaded. It may be a string, which either simply names 21 | * the mode or is a MIME type associated with the mode. Alternatively, it may be 22 | * an object containing configuration options for the mode, with a name property 23 | * that names the mode (for example {name: "javascript", json: true}). 24 | */ 25 | mode: string | (IHasName & Record); 26 | readOnly: boolean | 'nocursor'; 27 | } 28 | -------------------------------------------------------------------------------- /docs/index.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "## WXYZ Documentation\n", 8 | "```{toctree}\n", 9 | ":maxdepth: 2\n", 10 | "gallery\n", 11 | "widgets\n", 12 | "developing\n", 13 | "```" 14 | ] 15 | }, 16 | { 17 | "cell_type": "markdown", 18 | "metadata": {}, 19 | "source": [ 20 | "```{include} ../README.md\n", 21 | "\n", 22 | "```" 23 | ] 24 | } 25 | ], 26 | "metadata": { 27 | "kernelspec": { 28 | "display_name": "Python 3 (ipykernel)", 29 | "language": "python", 30 | "name": "python3" 31 | }, 32 | "language_info": { 33 | "codemirror_mode": { 34 | "name": "ipython", 35 | "version": 3 36 | }, 37 | "file_extension": ".py", 38 | "mimetype": "text/x-python", 39 | "name": "python", 40 | "nbconvert_exporter": "python", 41 | "pygments_lexer": "ipython3", 42 | "version": "3.11.0" 43 | } 44 | }, 45 | "nbformat": 4, 46 | "nbformat_minor": 4 47 | } 48 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## 0.6.0 4 | 5 | - require ipywidgets 8 6 | - many widgets supported in [JupyterLite] 7 | - sourcemaps are included for downstream debuggings 8 | 9 | [jupyterlite]: jupyterlite.readthedocs.io 10 | 11 | ## 0.5.1 12 | 13 | - maintenance release, bumps versions 14 | 15 | ## 0.5.0 16 | 17 | > Supports JupyterLab 3.x ([#42]) 18 | 19 | - primary distribution of all `@deathbeds/wxyz-` labextensions via `pip`/`conda` 20 | - `npm` releases will be pinned to python releases, public API TBD 21 | 22 | [#42]: https://github.com/deathbeds/wxyz/issues/42 23 | 24 | ## 0.4.1 25 | 26 | > Minor release with packaging fixes, last anticipated release for JupyterLab 2. 27 | 28 | - fixes `wxyz_json_schema_form` packaging error ([#47]) 29 | 30 | [#47]: https://github.com/deathbeds/wxyz/issues/47 31 | 32 | ## 0.4.1 33 | 34 | > Minor release with small documentation and packaging fixes 35 | 36 | ### `wxyz_core` 37 | 38 | - fixes `jsonpointer` dependency 39 | 40 | ## 0.4.0 41 | 42 | > Initial release 43 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/src/widgets/_jsonld.ts: -------------------------------------------------------------------------------- 1 | import { Context } from 'jsonld/jsonld-spec'; 2 | 3 | import { FnModel, TObject } from '@deathbeds/wxyz-core'; 4 | 5 | export class JSONLDBase> extends FnModel< 6 | T, 7 | U, 8 | V 9 | > { 10 | static model_name = 'ExpandModel'; 11 | 12 | defaults() { 13 | return { 14 | ...super.defaults(), 15 | expand_context: null as Context, 16 | }; 17 | } 18 | 19 | get theExpandContext() { 20 | return this.get('expand_context'); 21 | } 22 | set theExpandContext(context: Context) { 23 | this.set('expand_context', context); 24 | this.save(); 25 | } 26 | 27 | initialize(attributes: any, options: any) { 28 | super.initialize(attributes, options); 29 | this.on('change:expand_context', this.theSourceChanged, this); 30 | return this; 31 | } 32 | } 33 | 34 | export namespace JSONLDBase { 35 | export interface ITraits extends FnModel.ITraits { 36 | expandContext: Context; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/tests/conftest.py: -------------------------------------------------------------------------------- 1 | """ test configuration for wxyz_notebook 2 | """ 3 | # pylint: disable=fixme 4 | import os 5 | import platform 6 | from pathlib import Path 7 | 8 | HERE = Path(__file__).parent 9 | ROOT = HERE.parent.parent 10 | NOTEBOOKS = ROOT / "notebooks" 11 | EXAMPLES = NOTEBOOKS / "examples" 12 | DESIGN = NOTEBOOKS / "Design" 13 | OS = platform.system() 14 | 15 | WIDGET_LOG_OUT = os.environ.get("WXYZ_WIDGET_LOG_OUT") 16 | 17 | OS_SKIP = { 18 | # TODO: remove 19 | # previously couldn't run these example on windows 20 | # "Windows": [EXAMPLES / "TPOTWXYZ.ipynb"] 21 | } 22 | 23 | # Names of just-don't-run these tests 24 | ALL_SKIP = os.environ.get("WXYZ_SKIP_NOTEBOOK", "").split(" ") 25 | 26 | TEST_NOTEBOOKS = [ 27 | ipynb 28 | for ipynb in sorted(NOTEBOOKS.rglob("*.ipynb")) 29 | if ( 30 | "ipynb_checkpoint" not in str(ipynb) 31 | and str(DESIGN) not in str(ipynb) 32 | and ipynb not in OS_SKIP.get(OS, []) 33 | and ipynb.name not in ALL_SKIP 34 | ) 35 | ] 36 | -------------------------------------------------------------------------------- /tsconfig.typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/tsconfig", 3 | "compilerOptions": { 4 | "lib": ["ES2019", "WebWorker", "ScriptHost", "DOM", "DOM.Iterable"], 5 | "paths": { 6 | "@deathbeds/*": ["./packages/*/src"] 7 | } 8 | }, 9 | "extends": "./packages/tsconfigbase", 10 | "references": [ 11 | { 12 | "path": "./packages/wxyz-core" 13 | }, 14 | { 15 | "path": "./packages/wxyz-datagrid" 16 | }, 17 | { 18 | "path": "./packages/wxyz-dvcs" 19 | }, 20 | { 21 | "path": "./packages/wxyz-html" 22 | }, 23 | { 24 | "path": "./packages/wxyz-json-e" 25 | }, 26 | { 27 | "path": "./packages/wxyz-json-schema-form" 28 | }, 29 | { 30 | "path": "./packages/wxyz-jsonld" 31 | }, 32 | { 33 | "path": "./packages/wxyz-lab" 34 | }, 35 | { 36 | "path": "./packages/wxyz-svg" 37 | }, 38 | { 39 | "path": "./packages/wxyz-tpl-nunjucks" 40 | }, 41 | { 42 | "path": "./packages/wxyz-yaml" 43 | } 44 | ] 45 | } 46 | -------------------------------------------------------------------------------- /src/wxyz_html/src/wxyz/html/widget_color.py: -------------------------------------------------------------------------------- 1 | """ Some more color traits and widgets 2 | """ 3 | # pylint: disable=R0903,R0901 4 | import re 5 | 6 | from wxyz.core.base import W 7 | 8 | RE_RGB_EH = re.compile(r"rgba?\(\d+,\s*\d+,\s*\d+,\s*[10](\.\d+)?\)") 9 | 10 | 11 | class AlphaColor(W.widgets.trait_types.Color): 12 | """A color with alpha""" 13 | 14 | def validate(self, obj, value): 15 | """expand the validation to work for rgba""" 16 | if RE_RGB_EH.match(value): 17 | return value 18 | return super().validate(obj, value) 19 | 20 | 21 | class EmptyAlphaColor(W.widgets.trait_types.Color): 22 | """A color with alpha that might be the empty string""" 23 | 24 | def validate(self, obj, value): 25 | """expand the validation to work for rgba""" 26 | if value == "": 27 | return value 28 | return super().validate(obj, value) 29 | 30 | 31 | class AlphaColorPicker(W.ColorPicker): 32 | """A color picker that should allow setting opacity""" 33 | 34 | value = AlphaColor("rgba(128, 128, 128, 0.5)").tag(sync=True) 35 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/trackers/tracker_json.py: -------------------------------------------------------------------------------- 1 | """ widgets for syncing state with JSON 2 | """ 3 | 4 | import json 5 | 6 | from tornado.concurrent import run_on_executor 7 | 8 | from .tracker_base import DictTracker, ExecutorTracker 9 | 10 | 11 | class JSONDictTracker(DictTracker, ExecutorTracker): 12 | """sync a widget's traits to single JSON file on disk""" 13 | 14 | __extension__ = ".json" 15 | 16 | def _read(self, text): 17 | return json.loads(text) 18 | 19 | def _write(self, widget_dict): 20 | return json.dumps(widget_dict, sort_keys=True, indent=True) 21 | 22 | @run_on_executor 23 | def on_user_change_sync(self): 24 | """perform JSON writing on thread""" 25 | self.path.write_text( 26 | self._write(self.dict_from_widget()), 27 | encoding=self.encoding, 28 | ) 29 | 30 | @run_on_executor 31 | def on_file_change_sync(self): 32 | """perform JSON reading in thread""" 33 | if self.path.exists(): 34 | self.widget_from_dict(self._read(self.path.read_text(encoding="utf-8"))) 35 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; 5 | 6 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 7 | 8 | import '../style/index.css'; 9 | 10 | import { NAME, VERSION } from './constants'; 11 | 12 | const EXTENSION_ID = `${NAME}:plugin`; 13 | 14 | const plugin: IPlugin, void> = { 15 | id: EXTENSION_ID, 16 | requires: [IJupyterWidgetRegistry], 17 | optional: [IRenderMimeRegistry], 18 | autoStart: true, 19 | activate: ( 20 | _: Application, 21 | registry: IJupyterWidgetRegistry, 22 | rendermime: IRenderMimeRegistry 23 | ) => { 24 | registry.registerWidget({ 25 | name: NAME, 26 | version: VERSION, 27 | exports: async () => { 28 | const widgetExports = import('./widgets'); 29 | // TODO: restore 30 | // (await widgetExports).JSONSchemaFormView._rendermime = rendermime; 31 | return widgetExports; 32 | }, 33 | }); 34 | }, 35 | }; 36 | 37 | export default plugin; 38 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/release.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Release 3 | about: Prepare for a release 4 | labels: maintenance 5 | --- 6 | 7 | - [ ] merge all outstanding PRs 8 | - [ ] ensure the versions have been bumped (check with `doit test:integrity`) 9 | - [ ] ensure the `CHANGELOG.md` is up-to-date 10 | - [ ] move the new release to the top of the stack 11 | - [ ] validate on binder 12 | - [ ] validate on ReadTheDocs 13 | - [ ] wait for a successful build of `main` 14 | - [ ] download the `dist` archive and unpack somewhere (maybe a fresh `dist`) 15 | - [ ] create a new release through the GitHub UI 16 | - [ ] paste in the relevant `CHANGELOG.md` entries 17 | - [ ] upload the artifacts 18 | - [ ] actually upload to npm.com, pypi.org 19 | ```bash 20 | cd dist 21 | twine upload *.tar.gz *.whl 22 | npm login 23 | npm publish deathbeds-*-$VERSION.tgz 24 | npm logout 25 | ``` 26 | - [ ] postmortem 27 | - [ ] handle `conda-forge` feedstock tasks 28 | - [ ] validate on binder via simplest-possible gists 29 | - [ ] bump to next development version 30 | - [ ] bump the `CACHE_EPOCH` 31 | - [ ] rebuild `yarn.lock` 32 | - [ ] update release procedures with lessons learned 33 | -------------------------------------------------------------------------------- /packages/wxyz-lab/src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { Application, IPlugin } from '@lumino/application'; 2 | import { Widget } from '@lumino/widgets'; 3 | 4 | import { IRenderMimeRegistry } from '@jupyterlab/rendermime'; 5 | 6 | import { IJupyterWidgetRegistry } from '@jupyter-widgets/base'; 7 | 8 | import '../style/index.css'; 9 | 10 | import { NAME, VERSION } from './constants'; 11 | 12 | const EXTENSION_ID = `${NAME}:plugin`; 13 | 14 | const plugin: IPlugin, void> = { 15 | id: EXTENSION_ID, 16 | requires: [IJupyterWidgetRegistry], 17 | optional: [IRenderMimeRegistry], 18 | autoStart: true, 19 | activate: ( 20 | app: Application, 21 | registry: IJupyterWidgetRegistry, 22 | mimeRegistry?: IRenderMimeRegistry 23 | ) => { 24 | registry.registerWidget({ 25 | name: NAME, 26 | version: VERSION, 27 | exports: async () => { 28 | const widgetExports = await import('./widgets'); 29 | (widgetExports.DockPopView as any)['app'] = app; 30 | widgetExports.MarkdownModel.mimeRegistry = mimeRegistry; 31 | return widgetExports; 32 | }, 33 | }); 34 | }, 35 | }; 36 | 37 | export default plugin; 38 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/widgets/jsone.ts: -------------------------------------------------------------------------------- 1 | import jsone from 'json-e'; 2 | 3 | import { JSONExt } from '@lumino/coreutils'; 4 | 5 | import { FnModel, TObject } from '@deathbeds/wxyz-core'; 6 | 7 | export class JSONEModel extends FnModel { 8 | static model_name = 'JSONEModel'; 9 | 10 | defaults() { 11 | return { 12 | ...super.defaults(), 13 | _model_name: JSONEModel.model_name, 14 | value: {} as any, 15 | context: {} as any, 16 | }; 17 | } 18 | 19 | async theFunction(source: TObject) { 20 | const context = this.theContext; 21 | const result = jsone(source, context); 22 | return result; 23 | } 24 | 25 | get theContext() { 26 | return this.get('context'); 27 | } 28 | 29 | set theContext(context: any) { 30 | if (context == null || JSONExt.deepEqual(context, this.get('context'))) { 31 | return; 32 | } 33 | this.set('context', context); 34 | this.save(); 35 | } 36 | 37 | initialize(attributes: any, options: any) { 38 | super.initialize(attributes, options); 39 | this.on('change:context', this.theSourceChanged, this); 40 | return this; 41 | } 42 | } 43 | 44 | export namespace JSONEModel { 45 | export interface ITraits extends FnModel.ITraits {} 46 | } 47 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/src/wxyz/dvcs/__init__.py: -------------------------------------------------------------------------------- 1 | """ DVCS widgets 2 | 3 | At present, none of these widgets work in ``jupyterlite``. 4 | """ 5 | from ._version import __prefix__, __version__, module_name 6 | from .repos.repo_base import Repo 7 | from .tools.tool_commits import Committer 8 | from .tools.tool_heads import Brancher, HeadPicker, HeadStatus 9 | from .tools.tool_remotes import Remoter 10 | from .tools.tool_timetravel import TimeTraveler 11 | from .trackers.tracker_base import Tracker 12 | from .trackers.tracker_json import JSONDictTracker 13 | from .widget_watch import Watcher 14 | 15 | __all__ = [ 16 | "_jupyter_labextension_paths", 17 | "__version__", 18 | "Brancher", 19 | "Committer", 20 | "HeadPicker", 21 | "HeadStatus", 22 | "JSONDictTracker", 23 | "Remoter", 24 | "Repo", 25 | "TimeTraveler", 26 | "Tracker", 27 | "Watcher", 28 | ] 29 | 30 | # conditional imports 31 | try: 32 | from .trackers.tracker_yaml import YAMLDictTracker 33 | 34 | __all__ += ["YAMLDictTracker"] 35 | except ImportError: 36 | pass 37 | 38 | 39 | try: 40 | from .repos.repo_git import Git 41 | 42 | __all__ += ["Git"] 43 | except ImportError: 44 | pass 45 | 46 | 47 | def _jupyter_labextension_paths(): 48 | return [dict(src=str(__prefix__), dest=module_name)] 49 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/src/modes.ts: -------------------------------------------------------------------------------- 1 | import CodeMirror from 'codemirror'; 2 | import 'codemirror/mode/yaml/yaml'; 3 | 4 | const RE_OP0 = /(then|else|from|each\([^)]+\))(?=:)/; 5 | const RE_OP1 = /\$(flattenDeep|mergeDeep)/; 6 | const RE_OP2 = 7 | /\$(eval|json|if|then|else|flatten|fromNow|let|map|match|merge|sort|switch|reverse)(?=:)/; 8 | const RE_EX = /\$\{[^\}]*\}/; 9 | const RE_END = /\$|(then|else|from|each\(.*\)):/; 10 | 11 | const T = { 12 | BUILT_IN: 'variable-2', 13 | MOD: 'variable-3', 14 | EXPR: 'tag', 15 | }; 16 | 17 | function yamlEMode(config: any, parserConfig: any) { 18 | const yamlEOverlay = { 19 | token: function (stream: any, _state: any) { 20 | if (stream.match(RE_OP0)) { 21 | return T.MOD; 22 | } 23 | if (stream.match(RE_OP1) || stream.match(RE_OP2)) { 24 | return T.BUILT_IN; 25 | } 26 | if (stream.match(RE_EX)) { 27 | return T.EXPR; 28 | } 29 | while (true) { 30 | if (stream.next() == null || stream.match(RE_END, false)) { 31 | break; 32 | } 33 | } 34 | return null; 35 | }, 36 | }; 37 | 38 | return CodeMirror.overlayMode( 39 | CodeMirror.getMode(config, parserConfig.backdrop || 'text/yaml'), 40 | yamlEOverlay 41 | ); 42 | } 43 | 44 | CodeMirror.defineMode('yaml-e', yamlEMode); 45 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 12 | 13 | ## Checklist 14 | 15 | Before asking for review, I... 16 | 17 | - [ ] ... read this whole template for useful comments 18 | - [ ] ... ran `doit lint test` and fixed any findings 19 | - [ ] ... tried it on [binder] 20 | 21 | [binder]: https://mybinder.org 22 | 23 | ## References 24 | 25 | 26 | 27 | 28 | 29 | ## Code changes 30 | 31 | 32 | 33 | ## User-facing changes 34 | 35 | 36 | 37 | 38 | 39 | ## Backwards-incompatible changes 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/widget_selectgrid.py: -------------------------------------------------------------------------------- 1 | """ A selectable Data Frame 2 | """ 3 | # pylint: disable=R0903,C0103,W0703,R0901 4 | 5 | from .base import TT, T, W 6 | from .widget_stylegrid import StyleGrid 7 | 8 | 9 | @W.register 10 | class SelectGrid(StyleGrid): 11 | """A styled grid with selections""" 12 | 13 | _model_name = T.Unicode("SelectGridModel").tag(sync=True) 14 | _view_name = T.Unicode("SelectGridView").tag(sync=True) 15 | 16 | scroll_x = T.Int(0).tag(sync=True) 17 | scroll_y = T.Int(0).tag(sync=True) 18 | 19 | max_x = T.Int(100).tag(sync=True) 20 | max_y = T.Int(100).tag(sync=True) 21 | 22 | hover_row = T.Int(0).tag(sync=True) 23 | hover_column = T.Int(0).tag(sync=True) 24 | 25 | viewport = T.Tuple( 26 | T.Int(), 27 | T.Int(), 28 | T.Int(), 29 | T.Int(), 30 | default_value=[0, 0, 0, 0], 31 | help="the current viewport as [c0, c1, r0, r1]", 32 | ).tag(sync=True) 33 | 34 | selections = TT.TypedTuple( 35 | T.Tuple(T.Int(), T.Int(), T.Int(), T.Int(), default_value=[0, 0, 0, 0]), 36 | help="all current selections as [c0, c1, r0, r1]", 37 | ).tag(sync=True) 38 | 39 | selection = T.Tuple( 40 | T.Int(), 41 | T.Int(), 42 | T.Int(), 43 | T.Int(), 44 | default_value=[0, 0, 0, 0], 45 | help="the first selection as [c0, c1, r0, r1]", 46 | ).tag(sync=True) 47 | -------------------------------------------------------------------------------- /docs/widgets.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Python API" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "\n", 15 | "```{toctree}\n", 16 | ":maxdepth: 3\n", 17 | "widgets/core\n", 18 | "widgets/datagrid\n", 19 | "widgets/dvcs\n", 20 | "widgets/html\n", 21 | "widgets/json_e\n", 22 | "widgets/json_schema_form\n", 23 | "widgets/jsonld\n", 24 | "widgets/lab\n", 25 | "widgets/notebooks\n", 26 | "widgets/svg\n", 27 | "widgets/tpl_jinja\n", 28 | "widgets/yaml\n", 29 | "```\n", 30 | "\n" 31 | ] 32 | } 33 | ], 34 | "metadata": { 35 | "kernelspec": { 36 | "display_name": "Python 3 (ipykernel)", 37 | "language": "python", 38 | "name": "python3" 39 | }, 40 | "language_info": { 41 | "codemirror_mode": { 42 | "name": "ipython", 43 | "version": 3 44 | }, 45 | "file_extension": ".py", 46 | "mimetype": "text/x-python", 47 | "name": "python", 48 | "nbconvert_exporter": "python", 49 | "pygments_lexer": "ipython3", 50 | "version": "3.11.0" 51 | } 52 | }, 53 | "nbformat": 4, 54 | "nbformat_minor": 4 55 | } -------------------------------------------------------------------------------- /packages/wxyz-yaml/src/widgets/yaml.ts: -------------------------------------------------------------------------------- 1 | import { JSONModel, UnJSONModel } from '@deathbeds/wxyz-core'; 2 | import { lazyLoader } from '@deathbeds/wxyz-core'; 3 | 4 | const _yaml = lazyLoader( 5 | async () => await import(/* webpackChunkName: "js-yaml" */ 'js-yaml') 6 | ); 7 | 8 | export class YAMLModel extends JSONModel { 9 | static model_name = 'YAMLModel'; 10 | 11 | defaults(): any { 12 | return { 13 | ...super.defaults(), 14 | _model_name: YAMLModel.model_name, 15 | value: {} as any, 16 | }; 17 | } 18 | 19 | async theFunction(source: string): Promise { 20 | const { load, FAILSAFE_SCHEMA } = _yaml.get() || (await _yaml.load()); 21 | return load(source, { schema: FAILSAFE_SCHEMA }); 22 | } 23 | } 24 | 25 | export class UnYAMLModel extends UnJSONModel { 26 | static model_name = 'UnYAMLModel'; 27 | 28 | defaults(): any { 29 | return { 30 | ...super.defaults(), 31 | _model_name: UnYAMLModel.model_name, 32 | }; 33 | } 34 | 35 | initialize(attributes: any, options: any) { 36 | super.initialize(attributes, options); 37 | this.on('change:indent', this.theSourceChanged, this); 38 | return this; 39 | } 40 | 41 | async theFunction(source: string) { 42 | const { dump, FAILSAFE_SCHEMA } = _yaml.get() || (await _yaml.load()); 43 | return dump(source, { 44 | indent: this.get('indent'), 45 | schema: FAILSAFE_SCHEMA, 46 | }); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/wxyz-html/src/widgets/fullscreen.ts: -------------------------------------------------------------------------------- 1 | import screenfull from 'screenfull'; 2 | 3 | import { Platform } from '@lumino/domutils'; 4 | 5 | import { BoxModel, BoxView } from '@jupyter-widgets/controls'; 6 | 7 | import { NAME, VERSION } from '../constants'; 8 | 9 | const FULL_CLASS = 'jp-WXYZ-Fullscreen'; 10 | 11 | export class FullscreenModel extends BoxModel { 12 | static model_name = 'FullscreenModel'; 13 | static model_module = NAME; 14 | static model_module_version = VERSION; 15 | static view_name = 'FullscreenView'; 16 | static view_module = NAME; 17 | static view_module_version = VERSION; 18 | 19 | defaults() { 20 | return { 21 | ...super.defaults(), 22 | _model_name: FullscreenModel.model_name, 23 | _model_module: NAME, 24 | _model_module_version: VERSION, 25 | _view_name: FullscreenModel.view_name, 26 | _view_module: NAME, 27 | _view_module_version: VERSION, 28 | }; 29 | } 30 | } 31 | 32 | export class FullscreenView extends BoxView { 33 | initialize(options: any) { 34 | super.initialize(options); 35 | this.luminoWidget.addClass(FULL_CLASS); 36 | } 37 | events() { 38 | return { 39 | click: async (evt: any) => { 40 | const mouseEvent = evt as MouseEvent; 41 | if (Platform.accelKey(mouseEvent) && mouseEvent.shiftKey) { 42 | if (screenfull && screenfull.isEnabled) { 43 | await screenfull.request(this.el); 44 | } 45 | } 46 | }, 47 | }; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/src/wxyz/notebooks/tests/test_nbconvert.py: -------------------------------------------------------------------------------- 1 | """ test nbconvert CLI with wxyz example notebooks 2 | """ 3 | import os 4 | import subprocess 5 | import sys 6 | import time 7 | from pathlib import Path 8 | 9 | import pytest 10 | 11 | from .conftest import TEST_NOTEBOOKS, WIDGET_LOG_OUT 12 | 13 | 14 | @pytest.mark.parametrize("name,ipynb", [[i.stem, i] for i in TEST_NOTEBOOKS]) 15 | def test_notebook(name, ipynb, tmp_path): 16 | """will it nbconvert?""" 17 | retries = 3 18 | attempt = 0 19 | rc = 1 20 | while attempt < retries: 21 | rc = _attempt_one(name, ipynb, tmp_path) 22 | if rc == 0: 23 | break 24 | attempt += 1 25 | time.sleep(attempt * 3) 26 | 27 | assert rc == 0, f"kept failing after {attempt} attempts" 28 | 29 | 30 | def _attempt_one(name, ipynb, tmp_path): 31 | args = [ 32 | sys.executable, 33 | "-m", 34 | "nbconvert", 35 | "--to", 36 | "html", 37 | "--ExecutePreprocessor.timeout=600", 38 | "--output-dir", 39 | tmp_path, 40 | "--execute", 41 | ipynb, 42 | ] 43 | 44 | env = dict(os.environ) 45 | 46 | work_path = tmp_path / "_wxyz_work" 47 | env["WXYZ_TEST_WORK_DIR"] = str(work_path) 48 | 49 | if WIDGET_LOG_OUT: 50 | env["WXYZ_WIDGET_LOG"] = str(Path(WIDGET_LOG_OUT) / f"{name}.json") 51 | 52 | rc = subprocess.call([*map(str, args)], env=env) 53 | 54 | os.environ.pop("WXYZ_WIDGET_LOG", None) 55 | 56 | return rc 57 | -------------------------------------------------------------------------------- /src/wxyz_svg/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-svg" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for SVG" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "wxyz_core >=0.6,<0.7", 33 | ] 34 | requires-python = ">=3.8" 35 | 36 | [project.license] 37 | file = "LICENSE.txt" 38 | 39 | [project.urls] 40 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 41 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 42 | Documentation = "https://wxyz.rtfd.io" 43 | Source = "https://github.com/deathbeds/wxyz" 44 | 45 | [tool.flit.module] 46 | name = "wxyz.svg" 47 | 48 | [tool.flit.sdist] 49 | include = ["src/_d"] 50 | 51 | [tool.flit.external-data] 52 | directory = "src/_d" 53 | -------------------------------------------------------------------------------- /src/wxyz_html/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-html" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for HTML5" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "wxyz_core >=0.6,<0.7", 33 | ] 34 | requires-python = ">=3.8" 35 | 36 | [project.license] 37 | file = "LICENSE.txt" 38 | 39 | [project.urls] 40 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 41 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 42 | Documentation = "https://wxyz.rtfd.io" 43 | Source = "https://github.com/deathbeds/wxyz" 44 | 45 | [tool.flit.module] 46 | name = "wxyz.html" 47 | 48 | [tool.flit.sdist] 49 | include = ["src/_d"] 50 | 51 | [tool.flit.external-data] 52 | directory = "src/_d" 53 | -------------------------------------------------------------------------------- /src/wxyz_yaml/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-yaml" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for YAML" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "pyyaml", 33 | "wxyz_core", 34 | ] 35 | requires-python = ">=3.8" 36 | 37 | [project.license] 38 | file = "LICENSE.txt" 39 | 40 | [project.urls] 41 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 42 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 43 | Documentation = "https://wxyz.rtfd.io" 44 | Source = "https://github.com/deathbeds/wxyz" 45 | 46 | [tool.flit.module] 47 | name = "wxyz.yaml" 48 | 49 | [tool.flit.sdist] 50 | include = ["src/_d"] 51 | 52 | [tool.flit.external-data] 53 | directory = "src/_d" 54 | -------------------------------------------------------------------------------- /src/wxyz_lab/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-lab" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for JupyterLab" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "mistune", 33 | "wxyz_core >=0.6,<0.7", 34 | ] 35 | requires-python = ">=3.8" 36 | 37 | [project.license] 38 | file = "LICENSE.txt" 39 | 40 | [project.urls] 41 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 42 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 43 | Documentation = "https://wxyz.rtfd.io" 44 | Source = "https://github.com/deathbeds/wxyz" 45 | 46 | [tool.flit.module] 47 | name = "wxyz.lab" 48 | 49 | [tool.flit.sdist] 50 | include = ["src/_d"] 51 | 52 | [tool.flit.external-data] 53 | directory = "src/_d" 54 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-jsonld" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for JSON-LD" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "pyld", 33 | "wxyz_core >=0.6,<0.7", 34 | ] 35 | requires-python = ">=3.8" 36 | 37 | [project.license] 38 | file = "LICENSE.txt" 39 | 40 | [project.urls] 41 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 42 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 43 | Documentation = "https://wxyz.rtfd.io" 44 | Source = "https://github.com/deathbeds/wxyz" 45 | 46 | [tool.flit.module] 47 | name = "wxyz.jsonld" 48 | 49 | [tool.flit.sdist] 50 | include = ["src/_d"] 51 | 52 | [tool.flit.external-data] 53 | directory = "src/_d" 54 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_json_e/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-json-e" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for JSON-E" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "json-e >=4.4,<5", 33 | "wxyz_core >=0.6,<0.7", 34 | ] 35 | requires-python = ">=3.8" 36 | 37 | [project.license] 38 | file = "LICENSE.txt" 39 | 40 | [project.urls] 41 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 42 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 43 | Documentation = "https://wxyz.rtfd.io" 44 | Source = "https://github.com/deathbeds/wxyz" 45 | 46 | [tool.flit.module] 47 | name = "wxyz.json_e" 48 | 49 | [tool.flit.sdist] 50 | include = ["src/_d"] 51 | 52 | [tool.flit.external-data] 53 | directory = "src/_d" 54 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-tpl-jinja" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for Jinja2 templates" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "wxyz_core", 33 | "jinja2", 34 | ] 35 | requires-python = ">=3.8" 36 | 37 | [project.license] 38 | file = "LICENSE.txt" 39 | 40 | [project.urls] 41 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 42 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 43 | Documentation = "https://wxyz.rtfd.io" 44 | Source = "https://github.com/deathbeds/wxyz" 45 | 46 | [tool.flit.module] 47 | name = "wxyz.tpl_jinja" 48 | 49 | [tool.flit.sdist] 50 | include = ["src/_d"] 51 | 52 | [tool.flit.external-data] 53 | directory = "src/_d" 54 | -------------------------------------------------------------------------------- /src/wxyz_core/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_html/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_lab/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_svg/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_yaml/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-core/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-dvcs/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-html/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-lab/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-meta/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-svg/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-yaml/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_json_e/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-json-schema-form" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for JSON Schema Form" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "wxyz_core >=0.6,<0.7", 33 | ] 34 | requires-python = ">=3.8" 35 | 36 | [project.license] 37 | file = "LICENSE.txt" 38 | 39 | [project.urls] 40 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 41 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 42 | Documentation = "https://wxyz.rtfd.io" 43 | Source = "https://github.com/deathbeds/wxyz" 44 | 45 | [tool.flit.module] 46 | name = "wxyz.json_schema_form" 47 | 48 | [tool.flit.sdist] 49 | include = ["src/_d"] 50 | 51 | [tool.flit.external-data] 52 | directory = "src/_d" 53 | -------------------------------------------------------------------------------- /src/wxyz_jsonld/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_tpl_jinja/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-json-e/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-jsonld/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-tpl-nunjucks/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_json_schema_form/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /packages/wxyz-json-schema-form/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2022 wxyz contributors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | 2. Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | 3. Neither the name of the copyright holder nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /src/wxyz_dvcs/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-dvcs" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for working with data in revision control" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "jinja2", 33 | "watchgod", 34 | "wxyz_core >=0.6,<0.7", 35 | ] 36 | requires-python = ">=3.8" 37 | 38 | [project.license] 39 | file = "LICENSE.txt" 40 | 41 | [project.urls] 42 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 43 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 44 | Documentation = "https://wxyz.rtfd.io" 45 | Source = "https://github.com/deathbeds/wxyz" 46 | 47 | [tool.flit.module] 48 | name = "wxyz.dvcs" 49 | 50 | [tool.flit.sdist] 51 | include = ["src/_d"] 52 | 53 | [tool.flit.external-data] 54 | directory = "src/_d" 55 | -------------------------------------------------------------------------------- /src/wxyz_core/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-core" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for JSON and evented transformations" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "ipywidgets >=8.0.4,<9", 33 | "jsonpointer", 34 | "jsonschema", 35 | ] 36 | requires-python = ">=3.8" 37 | 38 | [project.license] 39 | file = "LICENSE.txt" 40 | 41 | [project.urls] 42 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 43 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 44 | Documentation = "https://wxyz.rtfd.io" 45 | Source = "https://github.com/deathbeds/wxyz" 46 | 47 | [tool.flit.module] 48 | name = "wxyz.core" 49 | 50 | [tool.flit.sdist] 51 | include = ["src/_d"] 52 | 53 | [tool.flit.external-data] 54 | directory = "src/_d" 55 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-datagrid" 9 | version = "0.6.0" 10 | description = "experimental Jupyter widgets for the Lumino DataGrid" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "pandas", 33 | "traittypes", 34 | "wxyz_core >=0.6,<0.7", 35 | "wxyz_html >=0.6,<0.7", 36 | ] 37 | requires-python = ">=3.8" 38 | 39 | [project.license] 40 | file = "LICENSE.txt" 41 | 42 | [project.urls] 43 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 44 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 45 | Documentation = "https://wxyz.rtfd.io" 46 | Source = "https://github.com/deathbeds/wxyz" 47 | 48 | [tool.flit.module] 49 | name = "wxyz.datagrid" 50 | 51 | [tool.flit.sdist] 52 | include = ["src/_d"] 53 | 54 | [tool.flit.external-data] 55 | directory = "src/_d" 56 | -------------------------------------------------------------------------------- /packages/wxyz-meta/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@deathbeds/wxyz-meta", 3 | "version": "0.6.0", 4 | "description": "metapackage for building @deathbeds/wxyz (probably won't install)", 5 | "keywords": [ 6 | "jupyter", 7 | "jupyterlab", 8 | "jupyterlab-extension", 9 | "jupyter-widgets", 10 | "widgets" 11 | ], 12 | "homepage": "https://deathbeds.github.io/wxyz", 13 | "bugs": { 14 | "url": "https://github.com/deathbeds/wxyz/issues" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/deathbeds/wxyz" 19 | }, 20 | "license": "BSD-3-Clause", 21 | "author": { 22 | "name": "wxyz contributors", 23 | "email": "ripxl@googlegroups.com" 24 | }, 25 | "main": "lib/index.js", 26 | "types": "lib/index.d.ts", 27 | "files": [ 28 | "{src,lib,style}/**/*.{js,ts,svg,json,css,map,ts,tsx}", 29 | "LICENSE.txt" 30 | ], 31 | "scripts": { 32 | "build": "tsc -b src", 33 | "watch": "jlpm build --watch --preserveWatchOutput" 34 | }, 35 | "dependencies": { 36 | "@deathbeds/wxyz-core": "file:../wxyz-core", 37 | "@deathbeds/wxyz-datagrid": "file:../wxyz-datagrid", 38 | "@deathbeds/wxyz-dvcs": "file:../wxyz-dvcs", 39 | "@deathbeds/wxyz-html": "file:../wxyz-html", 40 | "@deathbeds/wxyz-json-e": "file:../wxyz-json-e", 41 | "@deathbeds/wxyz-json-schema-form": "file:../wxyz-json-schema-form", 42 | "@deathbeds/wxyz-jsonld": "file:../wxyz-jsonld", 43 | "@deathbeds/wxyz-lab": "file:../wxyz-lab", 44 | "@deathbeds/wxyz-svg": "file:../wxyz-svg", 45 | "@deathbeds/wxyz-tpl-nunjucks": "file:../wxyz-tpl-nunjucks", 46 | "@deathbeds/wxyz-yaml": "file:../wxyz-yaml" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/wxyz_datagrid/src/wxyz/datagrid/widget_datagrid.py: -------------------------------------------------------------------------------- 1 | """ Jupyter Widgets for `@lumino/datagrid` 2 | [0.6.0]: https://github.com/jupyterlab/lumino/tree/master/packages/datagrid 3 | 4 | Notes: 5 | - a future implementation would split the grid from the data source 6 | """ 7 | # pylint: disable=R0903,C0103,W0703,R0901 8 | import json 9 | 10 | import pandas as pd 11 | import traittypes as TT 12 | 13 | from .base import DataGridBase, T, W 14 | 15 | TABLE = {"orient": "table"} 16 | 17 | dataframe_serialization = dict( 18 | to_json=lambda df, obj: None if df is None else df.to_dict(orient="table"), 19 | from_json=lambda value, obj: None if value is None else pd.DataFrame(value), 20 | ) 21 | 22 | 23 | @W.register 24 | class DataGrid(DataGridBase, W.Box): 25 | """An (overly) opinionated `DataFrame`-backed datagrid 26 | ``[0.1.6]/datagrid.ts#L64`` 27 | 28 | Used JSONModel, which expect JSON Table Schema 29 | ``[0.1.6]/jsonmodel.ts#L21`` 30 | """ 31 | 32 | _model_name = T.Unicode("DataGridModel").tag(sync=True) 33 | _view_name = T.Unicode("DataGridView").tag(sync=True) 34 | 35 | value = TT.DataFrame(None, allow_none=True).tag( 36 | sync=True, 37 | to_json=lambda df, obj: None if df is None else json.loads(df.to_json(**TABLE)), 38 | from_json=lambda value, obj: None 39 | if value is None 40 | else pd.read_json(json.dumps(value), **TABLE), 41 | ) 42 | 43 | def _repr_keys(self): 44 | """this shouldn't be needed, but we're doing _something wrong_""" 45 | try: 46 | super_keys = super()._repr_keys() 47 | for key in super_keys: 48 | if key != "value": 49 | yield key 50 | except Exception: 51 | return 52 | -------------------------------------------------------------------------------- /packages/wxyz-datagrid/src/widgets/stylegrid.ts: -------------------------------------------------------------------------------- 1 | import { unpack_models as deserialize } from '@jupyter-widgets/base'; 2 | 3 | import { WXYZ } from '@deathbeds/wxyz-core'; 4 | 5 | import { NAME, VERSION } from '../constants'; 6 | 7 | import { DataGridModel, DataGridView } from './datagrid'; 8 | import { StyleGrid } from './pwidgets/stylegrid'; 9 | 10 | const CSS = { 11 | STYLE_GRID: 'jp-WXYZ-StyleGrid', 12 | }; 13 | 14 | /** A DataGrid Style for simple styles (e.g. JSON-compatible) 15 | */ 16 | export class GridStyleModel extends WXYZ { 17 | static model_module = NAME; 18 | static model_module_version = VERSION; 19 | static model_name = 'GridStyleModel'; 20 | 21 | defaults() { 22 | return { 23 | ...super.defaults(), 24 | _model_name: GridStyleModel.model_name, 25 | _model_module: NAME, 26 | _model_module_version: VERSION, 27 | }; 28 | } 29 | } 30 | 31 | export class StyleGridModel extends DataGridModel { 32 | static model_name = 'StyleGridModel'; 33 | static view_name = 'StyleGridView'; 34 | 35 | static serializers = { 36 | ...DataGridModel.serializers, 37 | grid_style: { deserialize }, 38 | }; 39 | 40 | defaults() { 41 | return { 42 | ...super.defaults(), 43 | _model_name: StyleGridModel.model_name, 44 | _view_name: StyleGridModel.view_name, 45 | grid_style: null as GridStyleModel, 46 | header_visibility: 'all', 47 | }; 48 | } 49 | } 50 | 51 | export class StyleGridView extends DataGridView { 52 | model: StyleGridModel; 53 | 54 | protected static createGrid() { 55 | return new StyleGrid(); 56 | } 57 | 58 | initialize(parameters: DataGridView.IOptions) { 59 | super.initialize({ createGrid: StyleGridView.createGrid, ...parameters }); 60 | this.luminoWidget.addClass(CSS.STYLE_GRID); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/wxyz_notebooks/pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "flit_core >=3.8,<4", 4 | ] 5 | build-backend = "flit_core.buildapi" 6 | 7 | [project] 8 | name = "wxyz-notebooks" 9 | version = "0.6.0" 10 | description = "notebook demos for experimental Jupyter widgets" 11 | readme = "README.md" 12 | keywords = [ 13 | "Interactive", 14 | ] 15 | authors = [ 16 | { email = "ripxl@googlegroups.com", name = "wxyz contributors" }, 17 | ] 18 | classifiers = [ 19 | "Framework :: Jupyter", 20 | "Framework :: Jupyter :: JupyterLab", 21 | "Framework :: Jupyter :: JupyterLab :: 3", 22 | "Framework :: Jupyter :: JupyterLab :: Extensions", 23 | "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", 24 | "Intended Audience :: Developers", 25 | "Intended Audience :: Information Technology", 26 | "License :: OSI Approved :: BSD License", 27 | "Programming Language :: Python", 28 | "Programming Language :: Python :: 3", 29 | "Programming Language :: Python :: 3 :: Only", 30 | ] 31 | dependencies = [ 32 | "importnb", 33 | "wxyz_core >=0.6,<0.7", 34 | "wxyz_datagrid >=0.6,<0.7", 35 | "wxyz_dvcs >=0.6,<0.7", 36 | "wxyz_html >=0.6,<0.7", 37 | "wxyz_json_e >=0.6,<0.7", 38 | "wxyz_json_schema_form >=0.6,<0.7", 39 | "wxyz_jsonld >=0.6,<0.7", 40 | "wxyz_lab >=0.6,<0.7", 41 | "wxyz_svg >=0.6,<0.7", 42 | "wxyz_tpl_jinja >=0.6,<0.7", 43 | "wxyz_yaml >=0.6,<0.7", 44 | ] 45 | requires-python = ">=3.8" 46 | 47 | [project.license] 48 | file = "LICENSE.txt" 49 | 50 | [project.urls] 51 | "Bug Tracker" = "https://github.com/deathbeds/wxyz/issues" 52 | Changelog = "https://github.com/deathbeds/wxyz/blob/main/CHANGELOG.md" 53 | Documentation = "https://wxyz.rtfd.io" 54 | Source = "https://github.com/deathbeds/wxyz" 55 | 56 | [tool.flit.module] 57 | name = "wxyz.notebooks" 58 | -------------------------------------------------------------------------------- /src/wxyz_svg/src/wxyz/svg/widget_svg.py: -------------------------------------------------------------------------------- 1 | """ SVG Box widget 2 | """ 3 | # pylint: disable=unused-argument 4 | from pathlib import Path 5 | 6 | from .base import SVGBase, T, W 7 | 8 | # default XML attribute, with an Inkscape default 9 | DEFAULT_ATTR = "inkscape:label" 10 | 11 | 12 | @W.register 13 | class SVGBox(SVGBase, W.Box): 14 | """An SVG Box that shows its children inside the bounding box of 15 | named areas in an SVG file. 16 | 17 | """ 18 | 19 | _model_name = T.Unicode("SVGBoxModel").tag(sync=True) 20 | _view_name = T.Unicode("SVGBoxView").tag(sync=True) 21 | 22 | # unsynced trait 23 | svg_file = T.Unicode(help="a path to local ``.svg`` file") 24 | 25 | svg = T.Unicode(help="an SVG string").tag(sync=True) 26 | show_svg = T.Bool(True, help="only use SVG for sizing, do not show").tag(sync=True) 27 | area_attr = T.Unicode( 28 | DEFAULT_ATTR, help="namespaced XML attribute on SVG ``g`` with unique values" 29 | ).tag(sync=True) 30 | 31 | area_widgets = T.Dict( 32 | help=( 33 | "a dictionary of child indices keyed by unique values of " 34 | "``area_attr`` in SVG" 35 | ) 36 | ).tag(sync=True) 37 | 38 | visible_areas = T.Tuple( 39 | [None], 40 | help=( 41 | "a list of ``area_attr`` of SVG ``g`` to show. " 42 | "Accepts ``[None]`` for all" 43 | ), 44 | ).tag(sync=True) 45 | 46 | zoom_x = T.Float().tag(sync=True) 47 | zoom_y = T.Float().tag(sync=True) 48 | zoom_k = T.Float().tag(sync=True) 49 | 50 | zoom_lock = T.Bool( 51 | False, help="Make children non-interactive for better pan/zoom" 52 | ).tag(sync=True) 53 | 54 | @T.observe("svg_file") 55 | def _on_svg_file_changed(self, *args, **kwargs): 56 | self.svg = Path(self.svg_file).read_text(encoding="utf-8") 57 | -------------------------------------------------------------------------------- /src/wxyz_lab/src/wxyz/lab/widget_dock.py: -------------------------------------------------------------------------------- 1 | """ Widgets that render in the dock 2 | """ 3 | from .base import LabBase, T, W 4 | 5 | DOCK_LAYOUT_HELP = """ 6 | An `AreaConfig` from `DockPanel.saveLayout` from `@lumino/widgets`, 7 | e.g. 8 | { 9 | "type": "split-area", 10 | "orientation": "orientation", 11 | "sizes": [1, 1, 1, 1] 12 | "children": [ 13 | {"type": "tab-area", "widgets": [0], "currentIndex": 0}, 14 | {"type": "tab-area", "widgets": [1], "currentIndex": 0}, 15 | {"type": "tab-area", "widgets": [2], "currentIndex": 0}, 16 | {"type": "tab-area", "widgets": [3], "currentIndex": 0} 17 | ] 18 | } 19 | 20 | The `widgets` list of a `tab-area` should be indices of `children` 21 | """ 22 | 23 | 24 | @W.register 25 | class DockBox(LabBase, W.Box): 26 | """A `Box` that renders as a `DockPanel`""" 27 | 28 | _model_name = T.Unicode("DockBoxModel").tag(sync=True) 29 | _view_name = T.Unicode("DockBoxView").tag(sync=True) 30 | 31 | dock_layout = T.Dict(help=DOCK_LAYOUT_HELP).tag(sync=True) 32 | hide_tabs = T.Bool(False).tag(sync=True) 33 | tab_size = T.Unicode(help="CSS size value for tab bars", allow_none=True).tag( 34 | sync=True 35 | ) 36 | border_size = T.Unicode( 37 | help="CSS size value for border width", allow_none=True 38 | ).tag(sync=True) 39 | spacing = T.Float(help="Spacing between children", allow_none=True).tag(sync=True) 40 | 41 | 42 | MODES = """ 43 | tab-after 44 | tab-before 45 | split-top 46 | split-left 47 | split-right 48 | split-bottom 49 | """.strip().split( 50 | "\n" 51 | ) 52 | 53 | 54 | @W.register 55 | class DockPop(LabBase, W.Box): 56 | """A "box" that just adds stuff to the main JupyterLab area""" 57 | 58 | mode = T.Enum(MODES, default_value=None, allow_none=True).tag(sync=True) 59 | 60 | _model_name = T.Unicode("DockPopModel").tag(sync=True) 61 | _view_name = T.Unicode("DockPopView").tag(sync=True) 62 | -------------------------------------------------------------------------------- /packages/wxyz-core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@deathbeds/wxyz-core", 3 | "version": "0.6.0", 4 | "description": "Experimental Jupyter widgets for JSON and evented transformations", 5 | "keywords": [ 6 | "jupyter", 7 | "jupyterlab", 8 | "jupyterlab-extension", 9 | "jupyter-widgets", 10 | "widgets" 11 | ], 12 | "homepage": "https://deathbeds.github.io/wxyz", 13 | "bugs": { 14 | "url": "https://github.com/deathbeds/wxyz/issues" 15 | }, 16 | "repository": { 17 | "type": "git", 18 | "url": "https://github.com/deathbeds/wxyz" 19 | }, 20 | "license": "BSD-3-Clause", 21 | "author": { 22 | "name": "wxyz contributors", 23 | "email": "ripxl@googlegroups.com" 24 | }, 25 | "main": "lib/index.js", 26 | "types": "lib/index.d.ts", 27 | "files": [ 28 | "{src,lib,style}/**/*.{js,ts,svg,json,css,map,ts,tsx}", 29 | "LICENSE.txt" 30 | ], 31 | "scripts": { 32 | "watch": "jupyter labextension watch ." 33 | }, 34 | "dependencies": { 35 | "jsonpointer": "^5.0.1" 36 | }, 37 | "devDependencies": { 38 | "@jupyter-widgets/base": "^6.0.0", 39 | "@jupyter-widgets/controls": "^5.0.0", 40 | "@jupyter-widgets/jupyterlab-manager": "^5.0.0", 41 | "@jupyterlab/builder": "^3.5.0", 42 | "@types/node": "^10.11.6", 43 | "ajv": "*" 44 | }, 45 | "jupyterlab": { 46 | "extension": "lib/plugin", 47 | "webpackConfig": "./webpack.config.js", 48 | "discovery": { 49 | "server": { 50 | "base": { 51 | "name": "wxyz_core" 52 | }, 53 | "managers": [ 54 | "pip" 55 | ] 56 | } 57 | }, 58 | "outputDir": "../../src/wxyz_core/src/_d/share/jupyter/labextensions/@deathbeds/wxyz-core", 59 | "sharedPackages": { 60 | "@jupyter-widgets/base": { 61 | "bundled": false, 62 | "singleton": true 63 | }, 64 | "@jupyter-widgets/controls": { 65 | "bundled": false, 66 | "singleton": true 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /docs/widgets/lab.rst: -------------------------------------------------------------------------------- 1 | ******** 2 | wxyz.lab 3 | ******** 4 | 5 | .. currentmodule:: wxyz.lab 6 | 7 | .. automodule:: wxyz.lab 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/svg.rst: -------------------------------------------------------------------------------- 1 | ******** 2 | wxyz.svg 3 | ******** 4 | 5 | .. currentmodule:: wxyz.svg 6 | 7 | .. automodule:: wxyz.svg 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /packages/wxyz-meta/style/index.css: -------------------------------------------------------------------------------- 1 | .jupyter-widgets.lm-DockPanel { 2 | overflow: hidden; 3 | } 4 | 5 | /* dockpanel */ 6 | .jp-LinkedOutputView 7 | > .jp-OutputArea 8 | > .jp-OutputArea-output 9 | > .jupyter-widgets.lm-DockPanel { 10 | height: 100% !important; 11 | width: 100% !important; 12 | min-width: 100% !important; 13 | max-width: 100% !important; 14 | min-height: 100% !important; 15 | max-height: 100% !important; 16 | } 17 | 18 | /* slider */ 19 | .jupyter-widgets.lm-DockPanel .widget-inline-vbox .widget-readout { 20 | width: auto; 21 | height: auto; 22 | } 23 | 24 | .lm-DockPanel > .jupyter-widgets { 25 | margin: 0; 26 | overflow-y: auto; 27 | } 28 | 29 | .jp-WXYZ-Editor { 30 | display: flex; 31 | flex-direction: column; 32 | } 33 | 34 | .jp-WXYZ-Editor .CodeMirror { 35 | flex: 1; 36 | } 37 | 38 | /* data grid */ 39 | .jp-WXYZ-DataGrid { 40 | flex-direction: column; 41 | } 42 | 43 | .jp-WXYZ-DataGrid .lm-DataGrid { 44 | flex: 1; 45 | border: 0; 46 | } 47 | 48 | /* style grid */ 49 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-track { 50 | background-color: var(--jp-layout-color3); 51 | border: var(--jp-border-width) solid var(--jp-border-color0); 52 | } 53 | 54 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-button { 55 | background-color: var(--jp-layout-color2); 56 | border: var(--jp-border-width) solid var(--jp-border-color0); 57 | } 58 | 59 | .jp-WXYZ-StyleGrid .lm-DataGrid .lm-ScrollBar-thumb { 60 | background-color: var(--jp-layout-color2); 61 | border: var(--jp-border-width) solid var(--jp-border-color0); 62 | } 63 | 64 | /* select grid */ 65 | .jp-WXYZ-SelectGrid { 66 | } 67 | 68 | /* file box */ 69 | .jp-WXYZ-FileBox-DragTarget { 70 | position: absolute; 71 | top: 0; 72 | right: 0; 73 | left: 0; 74 | bottom: 0; 75 | pointer-events: none; 76 | } 77 | .jp-WXYZ-FileBox-dragover .jp-WXYZ-FileBox-DragTarget { 78 | background: rgba(33, 150, 243, 0.1); 79 | border: var(--jp-border-width) dashed var(--jp-brand-color1); 80 | } 81 | -------------------------------------------------------------------------------- /docs/widgets/core.rst: -------------------------------------------------------------------------------- 1 | ********* 2 | wxyz.core 3 | ********* 4 | 5 | .. currentmodule:: wxyz.core 6 | 7 | .. automodule:: wxyz.core 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/dvcs.rst: -------------------------------------------------------------------------------- 1 | ********* 2 | wxyz.dvcs 3 | ********* 4 | 5 | .. currentmodule:: wxyz.dvcs 6 | 7 | .. automodule:: wxyz.dvcs 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/html.rst: -------------------------------------------------------------------------------- 1 | ********* 2 | wxyz.html 3 | ********* 4 | 5 | .. currentmodule:: wxyz.html 6 | 7 | .. automodule:: wxyz.html 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/yaml.rst: -------------------------------------------------------------------------------- 1 | ********* 2 | wxyz.yaml 3 | ********* 4 | 5 | .. currentmodule:: wxyz.yaml 6 | 7 | .. automodule:: wxyz.yaml 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/json_e.rst: -------------------------------------------------------------------------------- 1 | *********** 2 | wxyz.json_e 3 | *********** 4 | 5 | .. currentmodule:: wxyz.json_e 6 | 7 | .. automodule:: wxyz.json_e 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets -------------------------------------------------------------------------------- /docs/widgets/jsonld.rst: -------------------------------------------------------------------------------- 1 | *********** 2 | wxyz.jsonld 3 | *********** 4 | 5 | .. currentmodule:: wxyz.jsonld 6 | 7 | .. automodule:: wxyz.jsonld 8 | :members: 9 | :special-members: 10 | :inherited-members: 11 | :show-inheritance: 12 | :exclude-members: __annotations__, __class__, __del__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getstate__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setstate__, __sizeof__, __str__, __subclasshook__, __weakref__, _active_widgets, _add_notifiers, _all_trait_default_generators, _call_widget_constructed, _comm_changed, _compare, _control_comm, _default_keys, _descriptors, _dom_classes, _gen_repr_from_keys, _get_embed_state, _get_trait_default_generator, _handle_control_comm_msg, _handle_custom_msg, _handle_msg, _holding_sync, _instance_inits, _is_numpy, _lock_property, _log_default, _model_module, _model_module_version, _model_name, _msg_callbacks, _notify_observers, _notify_trait, _property_lock, _register_validator, _remove_notifiers, _repr_keys, _repr_mimebundle_, _send, _should_send_property, _states_to_send, _static_immutable_initial_values, _trait_default_generators, _trait_from_json, _trait_to_json, _traits, _view_count, _view_module, _view_module_version, _view_name, _widget_construction_callback, _widget_types, add_class, add_traits, blur, class_own_trait_events, class_own_traits, class_trait_names, class_traits, close, close_all, comm, cross_validation_lock, focus, get_manager_state, get_state, get_view_spec, handle_comm_opened, handle_control_comm_opened, has_trait, hold_sync, hold_trait_notifications, keys, layout, log, model_id, notify_change, observe, on_msg, on_trait_change, on_widget_constructed, open, remove_class, send, send_state, set_state, set_trait, setup_instance, tabbable, tooltip, trait_defaults, trait_events, trait_has_value, trait_metadata, trait_names, trait_values, traits, unobserve, unobserve_all, widget_types, widgets --------------------------------------------------------------------------------