Package: deephaven-ipywidgets
deephaven-ipywidgetsDeephaven Community IPython Widget LibraryInstallationYou can install usingpip:pipinstalldeephaven-ipywidgetsIf you are using Jupyter Notebook 5.2 or earlier, you may also need to enable
the nbextension:jupyternbextensionenable--py[--sys-prefix|--user|--system]deephaven-ipywidgetsUsageStarting the serverFirst you'll need to start theDeephaven server.# Start up the Deephaven Server on port 8080 with token `iris`fromdeephaven_serverimportServers=Server(port=8080,jvm_args=["-Dauthentication.psk=iris"])s.start()Display TablesPass the table into aDeephavenWidgetto display a table:# Create a table and display itfromdeephavenimportempty_tablefromdeephaven_ipywidgetsimportDeephavenWidgett=empty_table(1000).update("x=i")display(DeephavenWidget(t))You can also pass in the size you would like the widget to be:# Specify a size for the tabledisplay(DeephavenWidget(t,width=100,height=250))Alternate Deephaven Server URLBy default, the Deephaven server is located athttp://localhost:{port}, where{port}is the port set in the Deephaven server creation call. If the server is not there, such as when running a Jupyter notebook in a Docker container, modify theDEEPHAVEN_IPY_URLenvironmental variable to the correct URL before creating aDeephavenWidget.importosos.environ["DEEPHAVEN_IPY_URL"]="http://localhost:1234"Development InstallationBefore starting, you will needpython3,node, andyarninstalled.Create and source a dev python venv environment:exportJAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
python3-mvenv.venvsource.venv/bin/activate
pipinstall--upgradepipsetuptools
pipinstalldeephaven-serverjupyterjupyterlabjupyter-packagingAfter initial installation/creation, you can just dosource.venv/bin/activateInstall the python. This will also build the TS package.pipinstall-e".[test, examples]"When developing your extensions, you need to manually enable your extensions with the
notebook / lab frontend. For lab, this is done by the command:jupyter labextension develop --overwrite .
yarn run buildFor classic notebook, you need to run:jupyter nbextension install --sys-prefix --symlink --overwrite --py deephaven_ipywidgets
jupyter nbextension enable --sys-prefix --py deephaven_ipywidgetsNote that the--symlinkflag doesn't work on Windows, so you will here have to run
theinstallcommand every time that you rebuild your extension. For certain installations
you might also need another flag instead of--sys-prefix, but we won't cover the meaning
of those flags here.For running in VS Code, you need to run the classic notebook steps, as well as set up the VS Code environment:Create a.envfile with yourJAVA_HOMEvariable set, e.g.JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/HomeCreate a new notebook (.ipynb) or open an existing notebook file (such asexample.ipynb)In the notebook, make sure your.venvPython environment is selected - either use the dropdown menu in the top right, or hitCtrl + Pthen type> Select Kerneland select theNotebook: Select Notebook Kerneloption and choose.venv.How to see your changesTypescript:If you use JupyterLab to develop then you can watch the source directory and run JupyterLab at the same time in different
terminals to watch for changes in the extension's source and automatically rebuild the widget.# Watch the source directory in one terminal, automatically rebuilding when neededyarnrunwatch# Run JupyterLab in another terminaljupyterlabAfter a change wait for the build to finish and then refresh your browser and the changes should take effect.Python:If you make a change to the python code then you will need to restart the notebook kernel to have it take effect.Testing your changesThere are separate test suites for the python and TypeScript code.Python:To run the python tests, runpytestin the root directory of the repository.TypeScript:To run the TypeScript tests, runyarn run lint:checkin the root directory of the repository to run theeslinttests. Then runyarn run testto run the rest of the unit tests.Releasing your initial packages:Add testsEnsure tests pass locally and on CI. Check that the coverage is reasonable.Make a release commit, where you remove the, 'dev'entry in_version.py.Update the version inpackage.jsonRelase the npm packages:npmlogin
npmpublishInstall publish dependencies:pipinstallbuildtwineBuild the assets and publishpython-mbuild.
twinecheckdist/*
twineuploaddist/*Tag the release commit (git tag <python package version identifier>)Update the version in_version.py, and put it back to dev (e.g. 0.1.0 -> 0.2.0.dev).
Update the versions of the npm packages (without publishing).Commit the changes.git pushandgit push --tags.