A high-level app and dashboarding solution for Python

Overview



A high-level app and dashboarding solution for Python

Build Status Linux/MacOS Build Status
Coverage codecov
Latest dev release Github tag dev-site
Latest release Github release PyPI version panel version conda-forge version defaults version
Docs gh-pages site
Support Discourse

What is it?

Panel provides tools for easily composing widgets, plots, tables, and other viewable objects and controls into custom analysis tools, apps, and dashboards. Panel works with visualizations from Bokeh, Matplotlib, HoloViews, and many other Python plotting libraries, making them instantly viewable either individually or when combined with interactive widgets that control them. Panel works equally well in Jupyter Notebooks, for creating quick data-exploration tools, or as standalone deployed apps and dashboards, and allows you to easily switch between those contexts as needed.

Panel makes it simple to make:

  • Plots with user-defined controls
  • Property sheets for editing parameters of objects in a workflow
  • Control panels for simulations or experiments
  • Custom data-exploration tools
  • Dashboards reporting key performance indicators (KPIs) and trends
  • Data-rich Python-backed web servers
  • and anything in between

Panel objects are reactive, immediately updating to reflect changes to their state, which makes it simple to compose viewable objects and link them into simple, one-off apps to do a specific exploratory task. The same objects can then be reused in more complex combinations to build more ambitious apps, while always sharing the same code that works well on its own.

Attractors
Gapminders
NYC Taxi
Glaciers
Portfolio Optimizer

Using Panel for declarative, reactive programming

Panel can also be used with the separate Param project to create interactively configurable objects with or without associated visualizations, in a fully declarative way. With this approach, you declare your configurable object using the pure-Python, zero-dependency param library, annotating your code with parameter ranges, documentation, and dependencies between parameters and your code. Using this information, you can make all of your domain-specific code be optionally configurable in a GUI, with optional visual displays and debugging information if you like, all with just a few lines of declarations. With this approach, you don't ever have to commit to whether your code will be used in a notebook, in a GUI app, or completely behind the scenes in batch processing or reports -- the same code can support all of these cases equally well, once you declare the associated parameters and constraints. This approach lets you completely separate your domain-specific code from anything to do with web browsers, GUI toolkits, or other volatile technologies that would otherwise make your hard work become obsolete as they change over time.

Usage

Panel can be used in a wide range of development environments:

Editor + Server

You can edit your Panel code as a .py file in any text editor, marking the objects you want to render as .servable(), then launch a server with panel serve my_script.py --show to open a browser tab showing your app or dashboard and backed by a live Python process.

JupyterLab and Classic notebook

In the classic Jupyter notebook environment and JupyterLab, first make sure to load the pn.extension(). Panel objects will then render themselves if they are the last item in a notebook cell. For versions of jupyterlab>=3.0 the necessary extension is automatically bundled in the pyviz_comms package, which must be >=2.0. However note that for version of jupyterlab<3.0 you must also manually install the JupyterLab extension with:

jupyter labextension install @pyviz/jupyterlab_pyviz

Google Colab

In Google Colaboratory, rendering for each notebook cell is isolated, which means that every cell must reload the Panel extension code separately. Panel can do this automatically when you first load the extension if you declare that you are running in Colab: pn.extension(comms='colab'). Otherwise you will need to put pn.extension() in each cell where you want to display Panel output. Either way, you should be able to have access to all of Panel's functionality, though with a larger notebook size than with other notebook technologies that allow display code to be shared across cells.

VSCode

Visual Studio Code (VSCode) versions 2020.4.74986 and later support ipywidgets, and Panel objects can be used as ipywidgets since Panel 0.10 thanks to jupyter_bokeh, which means that you can now use Panel components interactively in VSCode. Ensure you install jupyter_bokeh with pip install jupyter_bokeh or conda install -c bokeh jupyter_bokeh and then enable the extension with pn.extension(comms='vscode').

nteract and other ipywidgets notebooks

In other notebook environments that support rendering ipywidgets interactively, such as nteract, you can use the same underlying ipywidgets support as for vscode: Install jupyter_bokeh and then use pn.extension(comms='ipywidgets').

Other environments

If your development environment offers embedded Python processes but does not support ipywidgets or Jupyter "comms" (communication channels), you will notice that some or all interactive functionality is missing. Some widgets that operate only in JavaScript will work fine, but others require communication channels between JavaScript and Python. In such cases you can either request ipywidgets or Panel support from the editor or environment, or else use the Editor + Server approach above.

Sponsors

The Panel project is grateful for the sponsorship by the organizations and companies below:

Anaconda Logo Blackstone Logo
Comments
  • VTK Synchronized

    VTK Synchronized

    supersede: https://github.com/holoviz/panel/pull/1070

    Remaining tasks:

    • [x] clean code (remove old serializer, refactor render function on js side, ...)
    • [x] Split the old VTK pane in:
      • VTKJS (to load vtkjs files)
      • VTKSynchronized to handle vtkrender window
    • [x] to handle vtkScalarBarActor (colorbar https://github.com/holoviz/panel/pull/1270)
    • [x] Documentation:
      • [x] split old VTK notebook
      • [x] update gallery interactive demo

    Future tasks (in an other PR)

    • [ ] discussion on the API we want to expose
    • [ ] extend the serializer
      • to handle volumes (will need vtk-js modifications)
    • [x] new Notebook to document capabilites of VTKSynchronized pane

    @philippjfr I think the PR is ready for review, everithing should almost work as before. There are some small API breaks (for colorbars and mostly on javascript side)

    I'll make more doc improvement in an other PR

    ezgif com-video-to-gif (1)

    type: enhancement status: ready 
    opened by xavArtley 79
  • Vtk plot

    Vtk plot

    Panel model for vtk representations

    A minimal example is the following image

    Should not work for the moment (need next bokeh version)

    TODO: Add tests clean api to work with vtk renderers

    Examples:

    type: enhancement status: paused 
    opened by xavArtley 52
  • WebComponent pane to dramatically speed up creating new widgets in Panel

    WebComponent pane to dramatically speed up creating new widgets in Panel

    I believe I have created a proof of concept for how to use web components in panel to speed up the time to market for creating new widgets.

    If you run something like

    python -m panel serve 'panel\components\wired\buttons.py' --dev --show
    

    Then you can explore the below

    It's not all fully working yet - but the principles have been identified.

    web_component_poc

    status: WIP type: feature 
    opened by MarcSkovMadsen 49
  • WIP adding React Grid Layout Template

    WIP adding React Grid Layout Template

    This pull request is trying to add an easy way to use a draggable and droppable grid in the panel templates. It is based on

    https://github.com/STRML/react-grid-layout

    The main difference with the other templates is you have to add the position and size of the grid element. Here you have an example

    import panel as pn, numpy as np
    import holoviews as hv
    from panel.template import DarkTheme
    from holoviews import opts
    pn.extension()
    
        
    xs = np.linspace(0, np.pi)
    freq = pn.widgets.FloatSlider(name="Frequency", start=0, end=10, value=2)
    phase = pn.widgets.FloatSlider(name="Phase", start=0, end=np.pi)
    
    @pn.depends(freq=freq, phase=phase)
    def sine(freq, phase):
        return hv.Curve((xs, np.sin(xs*freq+phase))).opts(
            responsive=True)
    cur = hv.DynamicMap(sine)
    cur.opts(responsive = True)
    
    tmpl = pn.template.ReactTemplate(title='React Grid Layout Template', theme=DarkTheme)
    
    tmpl.main.append(pn.Row(hv.element.tiles.CartoDark().opts(shared_axes=False,responsive=True), sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla1', {'x':0,'y':0,'h':6,'w':4})
    
    tmpl.main.append(pn.Card(cur, title='Sine',sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla2', {'x':4,'y':0,'h':6,'w':4})
    
    tmpl.main.append(pn.Row(cur, sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla3', {'x':8,'y':0,'h':6,'w':4})
    
    tmpl.main.append(pn.Row(cur, sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla4', {'x':0,'y':6,'h':6,'w':4})
    
    tmpl.main.append(pn.Row(cur, sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla5', {'x':4,'y':6,'h':6,'w':4})
    
    tmpl.main.append(pn.Row(cur, sizing_mode = 'stretch_both'))
    tmpl.add_data_grid('grilla6', {'x':8,'y':6,'h':6,'w':4})
    
    tmpl.sidebar.append(freq)
    tmpl.sidebar.append(phase)
    
    tmpl.show()
    

    and here you have how it works.

    dark_RGL

    type: enhancement 
    opened by nghenzi 39
  • Error: Model 'panel.models.markup.HTML' does not exist.

    Error: Model 'panel.models.markup.HTML' does not exist.

    System Info

    Latest MASTER after release of Panel 9.5

    My Pain

    I'm working on some contributions to Panel. For example at https://github.com/holoviz/panel/pull/1157 and https://github.com/holoviz/panel/pull/1122.

    • After having run git pull holoviz master to get the laster master from the holoviz github repo,
    • after upgrading bokeh to 2.01 (https://github.com/holoviz/panel/issues/1232)
    • after running panel build panel

    panel serve no longer shows any thing in the browser.

    If get error messages in the browser console like

    console.trace() Error: "Model 'panel.models.markup.HTML' does not exist. This could be due to a widget or a custom model not being registered before first usage."
        Models http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:1303
        _instantiate_object http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:863
        _instantiate_references_json http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:879
        from_json http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:1110
        _repull_session_doc http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:36056
    bokeh.js:36082:78
        _repull_session_doc http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:36082
    [bokeh] Failed to repull session Error: Model 'panel.models.markup.HTML' does not exist. This could be due to a widget or a custom model not being registered before first usage. bokeh.js:36083:34
    [bokeh] Failed to load Bokeh session NMQeF9cdOy3WO0iOFwl1BA0nnY1auiiYFn0gDi1bMtKy: Error: Model 'panel.models.markup.HTML' does not exist. This could be due to a widget or a custom model not being registered before first usage. bokeh.js:35924:30
    Error rendering Bokeh items: Error: "Model 'panel.models.markup.HTML' does not exist. This could be due to a widget or a custom model not being registered before first usage."
        Models http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:1303
        _instantiate_object http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:863
        _instantiate_references_json http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:879
        from_json http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:1110
        _repull_session_doc http://localhost:5006/static/js/bokeh.js?v=a4e6427fa46908492038842d99d5a1aa:36056
    

    image

    Solution

    I don't know how to solve this so instructions on how to solve this would be very appreciated.

    And if I could even understand what the problem is so that I can solve similar problems on my own in the future it would be nice.

    type: bug 
    opened by MarcSkovMadsen 37
  • Introductory example doesn't seem to work

    Introductory example doesn't seem to work

    Setup

    Machine: OSX relevant conda packages:

    • jupyterlab 0.35.5
    • panel 0.5.1
    • python 3.7.2
    • matplotlib 3.0.3

    I naively copied the sine example on the introduction page into a jupyter notebook. The mpl plot appeared however manipulating the widgets produced no outcome:

    import numpy as np, pandas as pd, matplotlib.pyplot as plt
    %matplotlib inline
    
    def mplplot(df, **kwargs):
        fig = df.plot().get_figure()
        plt.close(fig)
        return fig
    
    def sine(frequency=1.0, amplitude=1.0, n=200, view_fn=mplplot):
        xs = np.arange(n)/n*20.0
        ys = amplitude*np.sin(frequency*xs)
        df = pd.DataFrame(dict(y=ys), index=xs)
        return view_fn(df, frequency=frequency, amplitude=amplitude, n=n)
    
    sine(1.5, 2.5)
    
    import panel as pn
    pn.extension()
    
    pn.interact(sine)
    
    opened by quasiben 36
  • Added FileSelector widget

    Added FileSelector widget

    Adds a FileSelector widget that looks like this and allows browsing files on the server. It only allows browsing files in the specified directory so you cannot access restricted files. The UI isn't perfect since actions like a double click on a directory are not allowed so selecting a directory will update the path in the top bar and unlock the "Enter" button. Clicking that button will actually navigate to that directory. Selections are performed just like the CrossSelector widget. Also has additional buttons to go "home" (i.e. the initially specified directory), back and forth through the history and lastly to go up a directory.

    Screen Shot 2019-12-27 at 4 07 19 PM

    • [x] Fixes https://github.com/holoviz/panel/issues/430
    • [x] Add tests
    • [x] Add reference notebook
    • [ ] Add thumbnail

    @jbednar @jlstevens Would be great if you could try this out and report back on UI changes you think would help.

    status: ready 
    opened by philippjfr 35
  • Windows does not display widget

    Windows does not display widget

    Not sure if this is a bug or an env issue. But I am not getting any output in IE:

    Screen Shot 2019-03-21 at 11 15 20 AM
    [IPKernelApp] ERROR | No such comm target registered: hv-extension-comm
    [IPKernelApp] WARNING | No such comm: hv-extension-comm
    [IPKernelApp] WARNING | No such comm: hv-extension-comm
    
    (intake-gui) C:\Users\IEUser>conda list
    # packages in environment at C:\Users\IEUser\Miniconda\envs\intake-gui:
    #
    # Name                    Version                   Build  Channel
    appdirs                   1.4.3                      py_1    conda-forge
    asn1crypto                0.24.0                py37_1003    conda-forge
    attrs                     19.1.0                     py_0    conda-forge
    backcall                  0.1.0                      py_0    conda-forge
    bleach                    3.1.0                      py_0    conda-forge
    bokeh                     1.1.0dev10                 py_0    bokeh/label/dev
    ca-certificates           2019.3.9             hecc5488_0    conda-forge
    certifi                   2019.3.9                 py37_0    conda-forge
    cffi                      1.12.2           py37hb32ad35_1    conda-forge
    chardet                   3.0.4                 py37_1003    conda-forge
    click                     7.0                        py_0    conda-forge
    cloudpickle               0.8.0                      py_0    conda-forge
    colorama                  0.4.1                      py_0    conda-forge
    cryptography              2.5              py37h74b6da3_1    conda-forge
    cycler                    0.10.0                     py_1    conda-forge
    cytoolz                   0.9.0.1         py37hfa6e2cd_1001    conda-forge
    dask                      1.1.4                      py_0    conda-forge
    dask-core                 1.1.4                      py_0    conda-forge
    decorator                 4.4.0                      py_0    conda-forge
    defusedxml                0.5.0                      py_1    conda-forge
    distributed               1.26.0                   py37_1    conda-forge
    entrypoints               0.3                   py37_1000    conda-forge
    freetype                  2.10.0               h5db478b_0    conda-forge
    futures-compat            1.0                       py3_0    conda-forge
    heapdict                  1.0.0                 py37_1000    conda-forge
    holoviews                 1.12.0a1                   py_0    pyviz/label/dev
    hvplot                    0.4.0                      py_0    pyviz/label/dev
    icu                       58.2                     vc14_0    conda-forge
    idna                      2.8                   py37_1000    conda-forge
    intake                    0.4.3+50.g403ad11           dev_0    <develop>
    intel-openmp              2019.1                      144
    ipykernel                 5.1.0           py37h39e3cac_1002    conda-forge
    ipython                   7.1.1           py37h39e3cac_1000    conda-forge
    ipython_genutils          0.2.0                      py_1    conda-forge
    ipywidgets                7.4.2                      py_0    conda-forge
    jedi                      0.13.3                   py37_0    conda-forge
    jinja2                    2.10                       py_1    conda-forge
    jpeg                      9c                hfa6e2cd_1001    conda-forge
    jsonschema                3.0.1                    py37_0    conda-forge
    jupyter                   1.0.0                      py_1    conda-forge
    jupyter_client            5.2.4                      py_3    conda-forge
    jupyter_console           6.0.0                      py_0    conda-forge
    jupyter_core              4.4.0                      py_0    conda-forge
    kiwisolver                1.0.1           py37he980bc4_1002    conda-forge
    libblas                   3.8.0                     4_mkl    conda-forge
    libcblas                  3.8.0                     4_mkl    conda-forge
    liblapack                 3.8.0                     4_mkl    conda-forge
    libpng                    1.6.36            h7602738_1000    conda-forge
    libsodium                 1.0.16            h2fa13f4_1001    conda-forge
    libtiff                   4.0.10            h36446d0_1001    conda-forge
    locket                    0.2.0                      py_2    conda-forge
    m2w64-gcc-libgfortran     5.3.0                         6
    m2w64-gcc-libs            5.3.0                         7
    m2w64-gcc-libs-core       5.3.0                         7
    m2w64-gmp                 6.1.0                         2
    m2w64-libwinpthread-git   5.0.0.4634.697f757               2
    markdown                  2.6.11                     py_0    conda-forge
    markupsafe                1.1.1            py37hfa6e2cd_0    conda-forge
    matplotlib                3.0.3                    py37_0    conda-forge
    matplotlib-base           3.0.3            py37h3e3dc42_0    conda-forge
    mistune                   0.8.4           py37hfa6e2cd_1000    conda-forge
    mkl                       2019.1                      144
    msgpack-numpy             0.4.4.2                    py_1    conda-forge
    msgpack-python            0.6.1            py37he980bc4_0    conda-forge
    msys2-conda-epoch         20160418                      1
    nbconvert                 5.4.1                      py_2    conda-forge
    nbformat                  4.4.0                      py_1    conda-forge
    notebook                  5.7.6                    py37_0    conda-forge
    numpy                     1.16.2           py37h8078771_1    conda-forge
    olefile                   0.46                       py_0    conda-forge
    openssl                   1.0.2r               hfa6e2cd_0    conda-forge
    packaging                 19.0                       py_0    conda-forge
    pandas                    0.24.2           py37h6538335_0    conda-forge
    pandoc                    2.7.1                         0    conda-forge
    pandocfilters             1.4.2                      py_1    conda-forge
    panel                     0.5.0a4                    py_0    pyviz/label/dev
    param                     1.9.0a4                    py_0    pyviz/label/dev
    parso                     0.3.4                      py_0    conda-forge
    partd                     0.3.9                      py_0    conda-forge
    pickleshare               0.7.5                 py37_1000    conda-forge
    pillow                    5.4.1           py37h9a613e6_1000    conda-forge
    pip                       19.0.3                   py37_0    conda-forge
    prometheus_client         0.6.0                      py_0    conda-forge
    prompt_toolkit            2.0.9                      py_0    conda-forge
    psutil                    5.6.1            py37hfa6e2cd_0    conda-forge
    pycparser                 2.19                     py37_1    conda-forge
    pyct                      0.4.6                      py_0    conda-forge
    pyct-core                 0.4.6                      py_0    conda-forge
    pygments                  2.3.1                      py_0    conda-forge
    pyopenssl                 19.0.0                   py37_0    conda-forge
    pyparsing                 2.3.1                      py_0    conda-forge
    pyqt                      5.6.0           py37h764d66f_1008    conda-forge
    pyrsistent                0.14.11          py37hfa6e2cd_0    conda-forge
    pysocks                   1.6.8                 py37_1002    conda-forge
    python                    3.7.1             h9460c21_1003    conda-forge
    python-dateutil           2.8.0                      py_0    conda-forge
    python-snappy             0.5.4            py37hd25c944_0    conda-forge
    pytz                      2018.9                     py_0    conda-forge
    pyviz_comms               0.7.1                      py_0    conda-forge
    pywinpty                  0.5.5                 py37_1000    conda-forge
    pyyaml                    5.1              py37hfa6e2cd_0    conda-forge
    pyzmq                     18.0.1           py37he418aac_0    conda-forge
    qt                        5.6.2                h2639256_8    conda-forge
    qtconsole                 4.4.3                      py_0    conda-forge
    requests                  2.21.0                py37_1000    conda-forge
    ruamel                    1.0                      py37_0    conda-forge
    ruamel.yaml               0.15.89          py37hfa6e2cd_1    conda-forge
    send2trash                1.5.0                      py_0    conda-forge
    setuptools                40.8.0                   py37_0    conda-forge
    sip                       4.18.1          py37h6538335_1000    conda-forge
    six                       1.12.0                py37_1000    conda-forge
    snappy                    1.1.7             h6538335_1002    conda-forge
    sortedcontainers          2.1.0                      py_0    conda-forge
    sqlite                    3.26.0            hfa6e2cd_1001    conda-forge
    tblib                     1.3.2                      py_1    conda-forge
    terminado                 0.8.1                 py37_1001    conda-forge
    testpath                  0.3.1                    py37_1    conda-forge
    tk                        8.6.9             hfa6e2cd_1000    conda-forge
    toolz                     0.9.0                      py_1    conda-forge
    tornado                   5.1.1           py37hfa6e2cd_1000    conda-forge
    traitlets                 4.3.2                 py37_1000    conda-forge
    urllib3                   1.24.1                py37_1000    conda-forge
    vc                        14                            0    conda-forge
    vs2015_runtime            14.0.25420                    0    conda-forge
    wcwidth                   0.1.7                      py_1    conda-forge
    webencodings              0.5.1                      py_1    conda-forge
    wheel                     0.33.1                   py37_0    conda-forge
    widgetsnbextension        3.4.2                 py37_1000    conda-forge
    win_inet_pton             1.1.0                    py37_0    conda-forge
    wincertstore              0.2                   py37_1002    conda-forge
    winpty                    0.4.3                         4    conda-forge
    yaml                      0.1.7             hfa6e2cd_1001    conda-forge
    zeromq                    4.2.5             he025d50_1006    conda-forge
    zict                      0.1.4                      py_0    conda-forge
    zlib                      1.2.11            h2fa13f4_1004    conda-forge
    
    opened by jsignell 33
  • Param classes defined in external file and inheritance

    Param classes defined in external file and inheritance

    I have a use case for panel that's difficult to describe without a demo so I'm attaching two files. The notebook walks through my issue.

    user_guide.zip

    I'd be interested to hear any thoughts on how I can improve this approach.

    opened by kcpevey 29
  • Add String pane to support any representable object

    Add String pane to support any representable object

    @jlstevens suggested we add support for a string-based representation for any Python object as a Pane. About 20 minutes after his suggestion, I already realized that I needed that, so here it is.

    Adding the Repr class is the only change; the other diffs are just to reorganize the other classes to be in a more readable order.

    Questions:

    • [x] What range are the priority values meant to have? I chose 10 for this one to be higher than HTML's current value of 1 and as an indication that this class is really a last resort, but we could instead keep them all in [0.0,1.0] as is typical for Parameter precedences. Up to @philippjfr.
    • [ ] Should we have an (optional?) character limit on the representation, to be useful for objects whose representation might be many pages of text?
    • [x] Should we escape the values in some way, or let HTML be interpreted as HTML if there is any HTML in the representation?
    opened by jbednar 28
  • MaterialTemplate, BootstrapTemplate, GoldenTemplate not working - GET 404 when requesting bundled assets

    MaterialTemplate, BootstrapTemplate, GoldenTemplate not working - GET 404 when requesting bundled assets

    I have installed the latest version of the Panel Master Branch and reinstalled my conda environment following the developer guide. I get an error during the installation https://github.com/holoviz/panel/issues/1652. But I believe Panel, Bokeh etc. is still installed and I can run what I need. I have also successfully run panel build panel.

    If I replace VanillaTemplate with MaterialTemplate in the file panel\tests\template\test_vanilla_manual.py I get

    image

    $ python -m panel serve 'panel\tests\template\test_vanilla_manual.py' --dev
    2020-10-20 08:30:40,156 Starting Bokeh server version 2.2.2 (running on Tornado 6.0.4)
    2020-10-20 08:30:40,158 User authentication hooks NOT provided (default user enabled)
    2020-10-20 08:30:40,161 Bokeh app running at: http://localhost:5006/test_vanilla_manual
    2020-10-20 08:30:40,161 Starting Bokeh server with process id: 26420
    2020-10-20 08:30:55,676 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='1340', ...)
    2020-10-20 08:30:55,676 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='1342', ...)
    2020-10-20 08:30:55,677 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='1344', ...)
    2020-10-20 08:30:55,782 404 GET /static/extensions/panel/bundled/materialtemplate/material.css (::1) 1.96ms
    2020-10-20 08:30:55,784 404 GET /static/extensions/panel/bundled/materialtemplate/[email protected]/dist/material-components-web.min.css (::1) 2.04ms
    2020-10-20 08:30:55,784 404 GET /static/extensions/panel/bundled/materialtemplate/[email protected]/dist/material-components-web.min.js (::1) 2.04ms
    2020-10-20 08:30:56,006 404 GET /static/extensions/panel/bundled/materialtemplate/default.css (::1) 223.31ms
    2020-10-20 08:30:56,106 WebSocket connection opened
    2020-10-20 08:30:56,107 ServerConnection created
    2020-10-20 08:36:30,527 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='2185', ...)
    2020-10-20 08:36:30,528 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='2187', ...)
    2020-10-20 08:36:30,528 W-1005 (FIXED_SIZING_MODE): 'fixed' sizing mode requires width and height to be set: Button(id='2189', ...)
    2020-10-20 08:36:30,559 404 GET /static/extensions/panel/bundled/materialtemplate/material.css (::1) 1.00ms
    2020-10-20 08:36:30,561 404 GET /static/extensions/panel/bundled/materialtemplate/default.css (::1) 1.00ms
    2020-10-20 08:36:30,563 404 GET /static/extensions/panel/bundled/materialtemplate/[email protected]/dist/material-components-web.min.css (::1) 1.00ms
    2020-10-20 08:36:30,566 404 GET /static/extensions/panel/bundled/materialtemplate/[email protected]/dist/material-components-web.min.js (::1) 1.00ms
    2020-10-20 08:36:30,758 WebSocket connection opened
    2020-10-20 08:36:30,758 ServerConnection created
    
    TRIAGE 
    opened by MarcSkovMadsen 27
  • Migrate user guide to how-to guides

    Migrate user guide to how-to guides

    An attempt to start migrating user guide contents to how-to and background materials.

    Existing User Guides

    Existing user guides were grouped

    Core

    • [x] Overview: This is largely reference material, providing a high-level explanation of the component types (widgets, panes, layout), a summary of the most commonly used methods and a description of the pn.config and pn.state classes.
    • [ ] Components: Again this is really reference material, providing a high-level description of the three component types.
    • [x] APIs: Goes through each API and builds the same application with it. Can easily be turned into a number of smaller API how-to guides.

    Reference

    • [ ] Customization: A horrible mix of reference material (e.g. describing common parameters like margin or background) and how to material (when to use which sizing mode)
    • [ ] Interact: A direct copy of the ipywidgets interact docs that doesn't really fit anywhere.
    • [ ] Widgets: A silly overview of widgets and a rough grouping into input, range and select widgets. No idea what to do with this.
    • [x] Parameters: A mish-mash explaining Parameterized -> Widget mappings, ParamMethod/ParamFunction and then various how-to examples on how to leverage these. Can at least partially be migrated to how-to materials.
    • [x] Linking: More mish-mash demonstrating Python and JS based linking. Some of it can become how-to material.
    • [ ] Templates: Reference material plus some how-to examples.
    • [ ] Pipelines: Reference material with one or two how-to examples
    • [ ] Performance, Profiling and Debugging: Total mishmash of some performance tips, admin dashboard explanations etc. Can probably all become how-to material.

    State, Caching & Callbacks

    • [x] Session State and Callbacks: Converted to Session state and Callbacks how-to guides.
    • [ ] Asynchronous and Concurrent Processing: Started converting the async section to a Async Callbacks how-to guide. Rest should become concurrency how-to section.

    Export

    • [ ] Display and Export: Partially moved into export sections, display sections are closer to reference material but maybe could be rewritten to be more how-to like.
    • [x] Running Panel in the Browser with WASM: Migrated entirely to how to guides.

    Server usage

    Migrated cleanly to server configuration, server integrations, deployment and authentication how to guides.

    Sections

    • [ ] APIs: How to use the lower and higher level APIs in Panel
      • [x] Reactive Functions: Linking functions or methods to widgets using pn.bind or the equivalent pn.depends decorator.
      • [x] Interact Functions: Auto-generates a full UI (including widgets) given a function.
      • [ ] Parameterized classes: Declare parameters and their ranges in Parameterized classes, then get GUIs (and value checking!) for free.
      • [ ] Callbacks: Generate a UI by manually declaring callbacks that update panels or panes.
    • [ ] Using Param with Panel: Discover how to use Parameters with Panel.
      • [x] Building UIs using Param: Discover how to generate UIs from Parameterized classes without writing any GUI related code.
      • [x] Declare Custom Widgets: Discover how to extend Param based UIs with custom widgets.
      • [x] Declare Parameter dependencies: Discover how to leverage @param.depends to express dependencies and trigger events based on UI interactions.
      • [x] Param subobjects: Discover how to structure Parameterized classes with subobjects to create nested UIs automatically.
    • [x] Linking Parameters: Discover different ways of linking parameters in Python and Javascript.
      • [x] Watchers: Discover how to use the powerful but low-level .param.watch API provided by param to trigger callbacks on parameters.
      • [x] Links in Python: Discover how to use the convenient, high-level .link API to link parameters in Python.
      • [x] Links in Javascript: Discover how to use the convenient, high-level .jslink API to link parameters in Javascript.
      • [x] Link plots in Javascript: Discover how to use .jslink to link Bokeh and HoloViews plot parameters in Javascript.
      • [x] Javascript callbacks: Discover how to use the .jscallback API to write arbitrary JS callbacks linking one or more components.
    • [x] Session callbacks and events: How to set up callbacks on session related events and periodic tasks.
      • [x] Asynchronous Callbacks: How to leverage asynchronous callbacks to run I/O bound tasks in parallel.
      • [x] Load callbacks: How to set up callbacks to defer a task until the application is loaded.
      • [x] Periodic Callbacks: How to set up per-session callbacks that run periodically.
      • [x] Session Callbacks: How to set up callbacks when a session is created and destroyed.
      • [x] Schedule tasks: How to schedule tasks that run independently of any user visiting the application(s).
      • [x] Bokeh server callbacks: How to safely modify Bokeh models to avoid running into issues with the Bokeh Document lock.
    • [x] Accessing session state: How to access state related to the user session, HTTP request and URL arguments.
      • [x] HTTP Request: How to access information about the HTTP request associated with a session.
      • [x] URL state: How to access and manipulate the URL.
      • [x] Busy: How to access the busy state. (Maybe move to callbacks)
    • [x] Caching: How to cache data across sessions and memoize the output of functions.
      • [x] Manual caching: How to manually cache data and objects on pn.state.cache.
      • [x] Memoization: How to use the panel.cache decorator to memoize (i.e. cache the output of) functions automatically.
    • [ ] Display and Preview output: How to display Panel components and apps in your favorite notebook or editor environment.
    • [ ] Exporting and Saving output: How to export and save Panel applications as static files.
      • [ ] Embedding Output: How to embed the application state to share simple applications as a static file.
      • [ ] Saving output: How to save Panel applications to HTML or PNG.
      • [ ] Bokeh model: Discover how to access the Bokeh model underlying a Panel component or application
    • [x] Running in WebAssembly: How to run Panel applications entirely in the browser using WebAssembly, Pyodide and PyScript.
      • [x] Convert to WASM: Discover how to convert existing Panel applications to WebAssembly.
      • [x] Use from WASM: Discover how to set up and use Panel from Pyodide and PyScript.
      • [x] Sphinx Integration: Discover how to integrate live Panel components in your Sphinx based documentation.
      • [x] JupyterLite: Discover how to set up a JupyterLite deployment capable of rendering interactive Panel output.
    • [x] Server Configuration: How to configure the Panel server.
      • [x] Launch from the commandline: Discover how to launch and configure a Panel application from the commandline.
      • [x] Launch programmatically: Discover how to launch and configure a Panel application programmatically.
      • [ ] Setting up a (reverse) proxy: Discover how-to configure a reverse proxy to scale your deployment.
      • [x] Access via SSH: Discover how to access a Panel deployment running remotely via SSH.
      • [x] Serving Static Files: Discover how to serve static files alongside your Panel application(s).
    • [ ] Server Integrations: How to integrate Panel in other application based on Flask, FastAPI or Django.
      • [ ] Flask: Discover to run Panel applications alongside an existing Flask server.
      • [x] FastAPI: Discover to run Panel applications alongside an existing FastAPI server.
      • [x] Django: Discover to run Panel applications on a Django server (replacing the standard Tornado based server).
    • [ ] Deploying applications: How to deploy Panel applications to various cloud providers (e.g. Azure, GCP, AWS etc.)
      • [ ] Azure
      • [ ] Binder
      • [ ] Google Cloud
      • [ ] Heroku
      • [ ] Hugging Face
    • [x] Authentication: How to configure OAuth to add authentication to a server deployment.
      • [x] Configuring OAuth: Discover how to configure OAuth from the commandline.
      • [x] OAuth Providers: A list of OAuth providers and how to configure them.
      • [x] User Information: Discover how to make use of the user information and access tokens returned by the OAuth provider.
    opened by philippjfr 1
  • develop_install PackagesNotFoundError playwright on M1 Mac

    develop_install PackagesNotFoundError playwright on M1 Mac

    The dev env setup instructions don't work on the M1 Macs. https://panel.holoviz.org/developer_guide/index.html#install-panel-in-editable-mode

    Error:

    PackagesNotFoundError: The following packages are not available from current channels:
    
      - pytest-playwright
      - playwright
    
    Current channels:
    
      - https://conda.anaconda.org/pyviz/label/dev/osx-64
      - https://conda.anaconda.org/pyviz/label/dev/noarch
      - https://conda.anaconda.org/conda-forge/osx-64
      - https://conda.anaconda.org/conda-forge/noarch
      - https://conda.anaconda.org/bokeh/osx-64
      - https://conda.anaconda.org/bokeh/noarch
      - https://repo.anaconda.com/pkgs/main/osx-64
      - https://repo.anaconda.com/pkgs/main/noarch
      - https://repo.anaconda.com/pkgs/r/osx-64
      - https://repo.anaconda.com/pkgs/r/noarch
    

    Maybe the packages are available in some other channel? Or pip could be used to install them?

    Full log:

    (panel_dev) cdeil@Christophs-MacBook-Pro panel % doit develop_install -c pyviz/label/dev -c conda-forge -c bokeh -o build -o tests -o recommended -o ui
    
    .  develop_install
    Install build dependencies with: conda install -y -c pyviz/label/dev -c conda-forge -c bokeh "param >=1.9.2" "pyct >=0.4.4" "setuptools >=42" "bokeh >=2.4.3,<2.5.0" "pyviz_comms >=0.7.4" "requests" "bleach" "packaging" "tqdm >=4.48.0"
    Install build dependencies with: conda install -y -c pyviz/label/dev -c conda-forge -c bokeh "param >=1.9.2" "pyct >=0.4.4" "setuptools >=42" "bokeh >=2.4.3,<2.5.0" "pyviz_comms >=0.7.4" "requests" "bleach" "packaging" "tqdm >=4.48.0"
    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... done
    
    ## Package Plan ##
    
      environment location: /Users/cdeil/opt/anaconda3/envs/panel_dev
    
      added / updated specs:
        - bleach
        - bokeh[version='>=2.4.3,<2.5.0']
        - packaging
        - param[version='>=1.9.2']
        - pyct[version='>=0.4.4']
        - pyviz_comms[version='>=0.7.4']
        - requests
        - setuptools[version='>=42']
        - tqdm[version='>=4.48.0']
    
    
    The following packages will be downloaded:
    
        package                    |            build
        ---------------------------|-----------------
        bleach-5.0.1               |     pyhd8ed1ab_0         124 KB  conda-forge
        bokeh-2.4.3                |     pyhd8ed1ab_3        13.3 MB  conda-forge
        certifi-2022.12.7          |     pyhd8ed1ab_0         147 KB  conda-forge
        colorama-0.4.6             |     pyhd8ed1ab_0          25 KB  conda-forge
        conda-22.11.1              |   py39h6e9494a_1         874 KB  conda-forge
        freetype-2.10.4            |       h4cff582_1         890 KB  conda-forge
        giflib-5.2.1               |       hbcb3906_2          71 KB  conda-forge
        jpeg-9e                    |       hac89ed1_2         260 KB  conda-forge
        lcms2-2.14                 |       h90f4b2a_0         248 KB  conda-forge
        lerc-3.0                   |       he9d5cce_0         168 KB
        libblas-3.9.0              |16_osx64_openblas          13 KB  conda-forge
        libcblas-3.9.0             |16_osx64_openblas          13 KB  conda-forge
        libdeflate-1.8             |       h9ed2024_5          50 KB
        libgfortran-5.0.0          |11_3_0_h97931a8_27         143 KB  conda-forge
        libgfortran5-11.3.0        |      h082f757_27         1.4 MB  conda-forge
        liblapack-3.9.0            |16_osx64_openblas          13 KB  conda-forge
        libopenblas-0.3.21         |openmp_h429af6e_3         9.6 MB  conda-forge
        libpng-1.6.37              |       ha441bb4_0         262 KB
        libtiff-4.4.0              |       h2cd0358_2         504 KB
        libwebp-1.2.4              |       hfa4350a_0          84 KB  conda-forge
        libwebp-base-1.2.4         |       h775f41a_0         385 KB  conda-forge
        llvm-openmp-15.0.6         |       h61d9ccf_0         286 KB  conda-forge
        numpy-1.24.1               |   py39hdfa1d0c_0         5.8 MB  conda-forge
        openssl-1.1.1s             |       hfd90126_1         1.6 MB  conda-forge
        packaging-22.0             |     pyhd8ed1ab_0          40 KB  conda-forge
        param-1.12.3               |             py_0          95 KB  pyviz/label/dev
        pillow-9.3.0               |   py39h81888ad_1         689 KB
        pyct-0.4.8                 |             py_0           3 KB  pyviz/label/dev
        pyct-core-0.4.8            |             py_0          15 KB  pyviz/label/dev
        python_abi-3.9             |           2_cp39           4 KB  conda-forge
        pyviz_comms-2.2.1          |             py_0          28 KB  pyviz/label/dev
        requests-2.28.1            |     pyhd8ed1ab_1          53 KB  conda-forge
        tornado-6.2                |   py39ha30fb19_1         657 KB  conda-forge
        tqdm-4.64.1                |     pyhd8ed1ab_0          82 KB  conda-forge
        typing_extensions-4.4.0    |     pyha770c72_0          29 KB  conda-forge
        webencodings-0.5.1         |             py_1          12 KB  conda-forge
        ------------------------------------------------------------
                                               Total:        37.9 MB
    
    The following NEW packages will be INSTALLED:
    
      bleach             conda-forge/noarch::bleach-5.0.1-pyhd8ed1ab_0 
      bokeh              conda-forge/noarch::bokeh-2.4.3-pyhd8ed1ab_3 
      colorama           conda-forge/noarch::colorama-0.4.6-pyhd8ed1ab_0 
      freetype           conda-forge/osx-64::freetype-2.10.4-h4cff582_1 
      giflib             conda-forge/osx-64::giflib-5.2.1-hbcb3906_2 
      jpeg               conda-forge/osx-64::jpeg-9e-hac89ed1_2 
      lcms2              conda-forge/osx-64::lcms2-2.14-h90f4b2a_0 
      lerc               pkgs/main/osx-64::lerc-3.0-he9d5cce_0 
      libblas            conda-forge/osx-64::libblas-3.9.0-16_osx64_openblas 
      libcblas           conda-forge/osx-64::libcblas-3.9.0-16_osx64_openblas 
      libdeflate         pkgs/main/osx-64::libdeflate-1.8-h9ed2024_5 
      libgfortran        conda-forge/osx-64::libgfortran-5.0.0-11_3_0_h97931a8_27 
      libgfortran5       conda-forge/osx-64::libgfortran5-11.3.0-h082f757_27 
      liblapack          conda-forge/osx-64::liblapack-3.9.0-16_osx64_openblas 
      libopenblas        conda-forge/osx-64::libopenblas-0.3.21-openmp_h429af6e_3 
      libpng             pkgs/main/osx-64::libpng-1.6.37-ha441bb4_0 
      libtiff            pkgs/main/osx-64::libtiff-4.4.0-h2cd0358_2 
      libwebp            conda-forge/osx-64::libwebp-1.2.4-hfa4350a_0 
      libwebp-base       conda-forge/osx-64::libwebp-base-1.2.4-h775f41a_0 
      llvm-openmp        conda-forge/osx-64::llvm-openmp-15.0.6-h61d9ccf_0 
      numpy              conda-forge/osx-64::numpy-1.24.1-py39hdfa1d0c_0 
      packaging          conda-forge/noarch::packaging-22.0-pyhd8ed1ab_0 
      param              pyviz/label/dev/noarch::param-1.12.3-py_0 
      pillow             pkgs/main/osx-64::pillow-9.3.0-py39h81888ad_1 
      pyct               pyviz/label/dev/noarch::pyct-0.4.8-py_0 
      pyct-core          pyviz/label/dev/noarch::pyct-core-0.4.8-py_0 
      python_abi         conda-forge/osx-64::python_abi-3.9-2_cp39 
      pyviz_comms        pyviz/label/dev/noarch::pyviz_comms-2.2.1-py_0 
      tornado            conda-forge/osx-64::tornado-6.2-py39ha30fb19_1 
      typing_extensions  conda-forge/noarch::typing_extensions-4.4.0-pyha770c72_0 
      webencodings       conda-forge/noarch::webencodings-0.5.1-py_1 
    
    The following packages will be UPDATED:
    
      openssl              pkgs/main::openssl-1.1.1s-hca72f7f_0 --> conda-forge::openssl-1.1.1s-hfd90126_1 
      requests           pkgs/main/osx-64::requests-2.28.1-py3~ --> conda-forge/noarch::requests-2.28.1-pyhd8ed1ab_1 
    
    The following packages will be SUPERSEDED by a higher-priority channel:
    
      certifi            pkgs/main/osx-64::certifi-2022.12.7-p~ --> conda-forge/noarch::certifi-2022.12.7-pyhd8ed1ab_0 
      conda              pkgs/main::conda-22.11.1-py39hecd8cb5~ --> conda-forge::conda-22.11.1-py39h6e9494a_1 
      tqdm               pkgs/main/osx-64::tqdm-4.64.1-py39hec~ --> conda-forge/noarch::tqdm-4.64.1-pyhd8ed1ab_0 
    
    
    
    Downloading and Extracting Packages
                                                         
    Preparing transaction: ...working... done            
    Verifying transaction: ...working... done            
    Executing transaction: ...working... done            
    /Users/cdeil/opt/anaconda3/envs/panel_dev/lib/python3.9/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.                       
      warnings.warn(msg, warning_class)                  
    Install runtime dependencies with: conda install -y  -c pyviz/label/dev -c conda-forge -c bokeh "bokeh >=2.4.0,<2.5.0" "param >=1.12.0" "pyviz_comms >=0.7.4" "markdown" "requests" "tqdm >=4.48.0" "pyct >=0.4.4" "bleach" "setuptools >=42" "typing_extensions" "param >=1.9.2" "pyct >=0.4.4" "setuptools >=42" "bokeh >=2.4.3,<2.5.0" "pyviz_comms >=0.7.4" "requests" "packaging" "bleach" "tqdm >=4.48.0" "flake8" "parameterized" "pytest" "nbval" "flaky" "pytest-xdist" "pytest-cov" "pre-commit" "psutil" "folium" "ipympl" "scipy" "twine" "pandas >=1.3" "ipython >=7.0" "holoviews" "diskcache" "markdown-it-py" "ipyvuetify" "reacton" "lxml" "numpy <1.24" "jupyterlab" "holoviews >1.14.1" "matplotlib" "pillow" "plotly" "playwright" "pytest-playwright"
    /Users/cdeil/opt/anaconda3/envs/panel_dev/lib/python3.9/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.                       
      warnings.warn(msg, warning_class)                  
    Install runtime dependencies with: conda install -y  -c pyviz/label/dev -c conda-forge -c bokeh "bokeh >=2.4.0,<2.5.0" "param >=1.12.0" "pyviz_comms >=0.7.4" "markdown" "requests" "tqdm >=4.48.0" "pyct >=0.4.4" "bleach" "setuptools >=42" "typing_extensions" "param >=1.9.2" "pyct >=0.4.4" "setuptools >=42" "bokeh >=2.4.3,<2.5.0" "pyviz_comms >=0.7.4" "requests" "packaging" "bleach" "tqdm >=4.48.0" "flake8" "parameterized" "pytest" "nbval" "flaky" "pytest-xdist" "pytest-cov" "pre-commit" "psutil" "folium" "ipympl" "scipy" "twine" "pandas >=1.3" "ipython >=7.0" "holoviews" "diskcache" "markdown-it-py" "ipyvuetify" "reacton" "lxml" "numpy <1.24" "jupyterlab" "holoviews >1.14.1" "matplotlib" "pillow" "plotly" "playwright" "pytest-playwright"
    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
    Collecting package metadata (repodata.json): ...working... done
    Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
    
    PackagesNotFoundError: The following packages are not available from current channels:
    
      - pytest-playwright
      - playwright
    
    Current channels:
    
      - https://conda.anaconda.org/pyviz/label/dev/osx-64
      - https://conda.anaconda.org/pyviz/label/dev/noarch
      - https://conda.anaconda.org/conda-forge/osx-64
      - https://conda.anaconda.org/conda-forge/noarch
      - https://conda.anaconda.org/bokeh/osx-64
      - https://conda.anaconda.org/bokeh/noarch
      - https://repo.anaconda.com/pkgs/main/osx-64
      - https://repo.anaconda.com/pkgs/main/noarch
      - https://repo.anaconda.com/pkgs/r/osx-64
      - https://repo.anaconda.com/pkgs/r/noarch
    
    To search for alternate channels that may provide the conda package you're
    looking for, navigate to
    
        https://anaconda.org
    
    and use the search bar at the top of the page.
    
    
    TaskFailed - taskid:develop_install
    Command failed: 'conda install -y  -c pyviz/label/dev -c conda-forge -c bokeh "bokeh >=2.4.0,<2.5.0" "param >=1.12.0" "pyviz_comms >=0.7.4" "markdown" "requests" "tqdm >=4.48.0" "pyct >=0.4.4" "bleach" "setuptools >=42" "typing_extensions" "param >=1.9.2" "pyct >=0.4.4" "setuptools >=42" "bokeh >=2.4.3,<2.5.0" "pyviz_comms >=0.7.4" "requests" "packaging" "bleach" "tqdm >=4.48.0" "flake8" "parameterized" "pytest" "nbval" "flaky" "pytest-xdist" "pytest-cov" "pre-commit" "psutil" "folium" "ipympl" "scipy" "twine" "pandas >=1.3" "ipython >=7.0" "holoviews" "diskcache" "markdown-it-py" "ipyvuetify" "reacton" "lxml" "numpy <1.24" "jupyterlab" "holoviews >1.14.1" "matplotlib" "pillow" "plotly" "playwright" "pytest-playwright"' returned 1
    
    (panel_dev) cdeil@Christophs-MacBook-Pro panel % pre-commit install
    
    zsh: command not found: pre-commit
    
    opened by cdeil 0
  • panel examples ValueError could not find examples

    panel examples ValueError could not find examples

    I tried to follow the instructions at https://panel.holoviz.org/getting_started/installation.html

    Error:

    % panel examples --path ./
    
    Traceback (most recent call last):
      File "/Users/cdeil/opt/anaconda3/envs/app/bin/panel", line 11, in <module>
        sys.exit(main())
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/command/__init__.py", line 112, in main
        pyct.cmd.substitute_main('panel', cmds=pyct_commands, args=args)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 455, in substitute_main
        args.func(args) if hasattr(args,'func') else parser.error("must supply command to run")
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 394, in <lambda>
        parser.set_defaults(func=lambda args: fn(name, **{k: getattr(args,k) for k in vars(args) if k!='func'} ))
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 38, in examples
        copy_examples(name, path, verbose, force)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 44, in copy_examples
        source = _find_examples(name)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 28, in _find_examples
        raise ValueError("Could not find examples for %s at any of %s"%(name,candidates))
    ValueError: Could not find examples for panel at any of ['/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/examples', '/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/../examples']
    

    This is with the latest stable version of panel:

    % panel --version
    0.14.1
    

    Looking at the help the description of examples mentions fetch-data which doesn't seem to exist as a subcommand?

    % panel --help
    usage: panel [-h] [-v] {copy_examples,examples,build,info,init,json,sampledata,secret,serve,static,oauth-secret,convert} ...
    
    positional arguments:
      {copy_examples,examples,build,info,init,json,sampledata,secret,serve,static,oauth-secret,convert}
                            Sub-commands
        copy_examples       Copy examples to the supplied path.
        examples            Copy examples and fetch data (if any) to the supplied path. See copy-examples and fetch-data for more flexibility. NOTE: force operates both on
                            example and data over-writing pre-existing files.
        build               Manage and build a bokeh extension
        info                Print information about Bokeh and Bokeh server configuration
        init                Initialize a bokeh extension
        json                Create JSON files for one or more applications
        sampledata          Download the bokeh sample data sets
        secret              Create a Bokeh secret key for use with Bokeh server
        serve               Run a Bokeh server hosting one or more applications
        static              Serve bokehjs' static assets (JavaScript, CSS, images, fonts, etc.)
        oauth-secret        Create a Panel encryption key for use with Panel server
        convert             Convert a Panel App to another format, e.g. a HTML file.
    
    optional arguments:
      -h, --help            show this help message and exit
      -v, --version         show program's version number and exit
    
    See '<command> --help' to read about a specific subcommand.
    

    The copy_examples description says "Copy examples to the supplied path" but then the command doesn't have an argument to supply a path!?

    % panel copy_examples -h
    usage: panel copy_examples [-h]
    
    optional arguments:
      -h, --help  show this help message and exit
    

    Executing copy_examples finishes without giving an error, but it doesn't seem to do anything (no terminal output or files in the current directory):

    % panel copy_examples   
    (app) cdeil@Christophs-MacBook-Pro panel % panel examples --path ./     
    
    Traceback (most recent call last):
      File "/Users/cdeil/opt/anaconda3/envs/app/bin/panel", line 11, in <module>
        sys.exit(main())
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/command/__init__.py", line 112, in main
        pyct.cmd.substitute_main('panel', cmds=pyct_commands, args=args)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 455, in substitute_main
        args.func(args) if hasattr(args,'func') else parser.error("must supply command to run")
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 394, in <lambda>
        parser.set_defaults(func=lambda args: fn(name, **{k: getattr(args,k) for k in vars(args) if k!='func'} ))
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 38, in examples
        copy_examples(name, path, verbose, force)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 44, in copy_examples
        source = _find_examples(name)
      File "/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/pyct/cmd.py", line 28, in _find_examples
        raise ValueError("Could not find examples for %s at any of %s"%(name,candidates))
    ValueError: Could not find examples for panel at any of ['/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/examples', '/Users/cdeil/opt/anaconda3/envs/app/lib/python3.9/site-packages/panel/../examples']
    

    Am I doing it wrong? Or is it broken?

    opened by cdeil 0
  • How to test Panel data apps

    How to test Panel data apps

    Closes #4243

    You can preview the how to guide here https://github.com/holoviz/panel/blob/feature/document-test/doc/how_to/test/test.md

    Issues experienced or identified during testing

    • https://github.com/SvenskaSpel/locust-plugins/issues/101#issuecomment-1367216919
    status: ready 
    opened by MarcSkovMadsen 5
  • Document how to test panel

    Document how to test panel

    I would like it to be easy for my self and other Panel users to test panel apps. This includes

    • unittests with pytest
    • performance tests with pytest-benchmark
    • ui tests with PlayWright
    • Load tests with Locust + PlayWright

    (I believe the mentioned frameworks are the best)

    Please document this.

    type: docs 
    opened by MarcSkovMadsen 0
  • loading spinner of pn.panel(..., defer_load=True) stops spinning when async function starts executing

    loading spinner of pn.panel(..., defer_load=True) stops spinning when async function starts executing

    pn.panel==0.14.1

    I'm digging more into async. I would like to be able to use Async to start my Panel app.

    I believe it would be very natural that the content of your dashboard layout consists of some async functions. And that you show a loading_indicator while those functions are running.

    What I see in practice though is that the loading spinner stops spinning when the function starts executing and not when it finishes.

    2022-12-27-15-57-09

    import asyncio
    import time
    
    import panel as pn
    
    pn.extension()
    
    def view():
        time.sleep(1)
        return "view"
    
    def view2():
        time.sleep(1)
        return "view2"
    
    async def view_async():
        await asyncio.sleep(1)
        return "view_async"
    
    async def view_async2():
        await asyncio.sleep(1)
        return "view_async2"
    
    pn.panel(view, defer_load=True).servable()
    pn.panel(view_async, defer_load=True).servable()
    pn.panel(view2, defer_load=True).servable()
    pn.panel(view_async2, defer_load=True).servable()
    

    Bonus

    If the async functions could be scheduled such that the combined duration is 1 sec and not 1 sec + 1 sec that would also be great.

    type: bug async 
    opened by MarcSkovMadsen 0
Releases(v0.14.2)
  • v0.14.2(Dec 16, 2022)

    This release primarily focuses on bug fixes. In particular it resolves various issues with support for rendering ipywidgets (particularly in ipywidgets>=8.0) and also fixes a number of issues with the Jupyter Server previews. Many thanks for @govinda18, @joelostblom, @banesullivan, @xeldnahcram, @geronimogoemon, @minasouliman, @peterfpeterson, @jlstevens and the core maintainers @maximlt, @Hoxbro, @MarcSkovMadsen and @philippjfr for their contributions to this release.

    Enhancements

    • Add support for Tqdm.process_map (#4093)
    • Support non-vtkPolyData types in vtk synchronizer (#4124)
    • Allow invoking convert functions from pyodide (#4135)
    • Support step format in date sliders (#4152)
    • Add a Reacton component to simplify rendering (#4190)

    Bugs

    • Ensure Jupyter server extension serves resources, extensions and paths correctly (#4083, #4133, #4202)
    • Ensure IPyWidget comm does not break when new widget is rendered (#4091)
    • Improving detection of comms in VSCode and Google Colab (#4115)
    • Ensure .js mimetype is served correctly on Windows (#4118)
    • Ensure unhiding Tabulator columns renders cells correctly (#4119)
    • Ensure embedded Slider widgets initialize with correct default (#4121)
    • Handle missing event loop in thread gracefully (#4123)
    • Ensure Matplotlib pane handles explicit width/height settings correctly (#4128)
    • Allow Viewer to render servable but non-viewable objects (#4131)
    • Fix regression in tracking sessions in admin interface (#4132)
    • Ensure Tabs headers do not scroll unncessarily (#4146)
    • Ensure Location model reports as idle (#4159)
    • Fix auth error template rendering (#4162)
    • Fix issues with value on EditableSlider when it is outside fixed_start / fixed_end range (#4169)
    • Ensure ipywidgets events are handled the same way as regular events (#4171)
    • Don't raise TypeError for class which contains __panel__ (#4174)
    • Do not dispatch events if bokeh Document is set to hold events (#4178)
    • Execute onload callbacks immediately in pyodide app (#4191)
    • Improve IPyWidget kernel handling in server contexts (#4195)
    • Fix rendering of IPyWidget with child views in the notebook (#4197)

    Docs

    • Add JupyterLite build and instructions (#4122)
    • Document deployment to Hugging Face Spaces (#4143)
    Source code(tar.gz)
    Source code(zip)
  • v0.14.1(Nov 1, 2022)

    This release primarily addresses regressions introduced in 0.14.0 and various long standing bugs. Many thanks to external contributors @liu-kan and @KedoKudo and the maintainers @Hoxbro, @maximlt and @philippjfr for contributing a number of fixes.

    ### Minor enhancements

    - Improve support for requests in pyodide (#3973) - Add option to clear value of DatetimePicker (#3990) - Add support for hashing dates in pn.cache (#4004) - Silence EMPTY_LAYOUT warnings (#4056)

    ### Compatibility

    - Fix Jupyterlite and latest PyScript compatibility (#4040)

    ### Bugs

    #### Webassembly conversion

    - Correctly handle resource mode in when converting to WebAssembly (#3967)

    ### Jupyter and Server

    - Correctly handle future exceptions on threads (#3977) - Fix panel serve index template (#3980) - Do not error if curdoc has been destroyed (#3994) - Ensure extensions loaded in jupyter kernel are served by StaticHandler (#4000) - Various fixes for OAuth handling with pn.serve (#4006) - Fix bug in on_load callback exception handling (#4007) - Ensure periodic callbacks are only started on main thread (#4011) - Ensure jupyter server extension handles explicit root_dir (#4029) - Ensure futures are correctly awaited when executed on thread (#4031)

    #### Components

    - Ensure Tabulator handles filtering on edited values correctly if show_index=False (#3988#4016) - Ensure Tabulator declares numeric sorter for numeric dtypes (#3999) - Fix regression initializing DiscreteSlider with non-integer value (#4009) - Ensure that template.config.raw_css is correctly applied (#4018) - Fix handling MenuButton clicks when split=True (#4021) - Ensure styling on Tabulator with empty DataFrame does not error (#4028) - Allow changing level on Debugger widget (#4057

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Oct 5, 2022)

    This release focuses on three main themes:

    • Support for running Panel apps entirely in the browser using WebAssembly (via Pyodide and PyScript)
    • Improvements in the app-user experience by making it easier to build responsive and performant applications
    • Improvements in the developer experience through static typing and docstrings.

    Many, many thanks to everyone who filed issues or contributed to this release. In particular we would like to thank @janimo, @xavArtley, @thuydotm, @jmosbacher, @dmarx, @2WoLpH, @ipopa144, @sdc50 for contributions and @philippjfr, @Hoxbro, @maximlt, and @MarcSkovMadsen for ongoing maintenance and development.

    Features

    • Add support for converting Panel apps to pyscript/pyodide (#3817, #3830, #3851, #3856, #3857, #3858, #3860, #3861, #3863, #3864, #3868, #3878)
    • Manage our own CDN to improve performance and reliability for delivering JS payloads (#3867, #3870)
    • Add ability to defer_load of components (#3882)
    • Add pn.widget helper function (#1826, #3589)
    • Add config.exception_handler to easily capture, log and notify users about errors (#3893)
    • Implement pn.cache function for memoization support (#2411)
    • Rewrite server extension to run Panel applications in kernels so that previews run in the same environment as the deployed app (#3763)
    • Add ability to define authorization callback (#3777)
    • Support memray profiler (#3509)
    • Add liveness endpoint (#3832)
    • Add ability to configure exception handler (#3896)

    Enhancements

    • Ensure OAuth redirects to requested app and retains query arguments (#3555)
    • Add extension entry point (#3738)
    • Update Admin Logs page to use Tabulator (#3694)
    • Ensure location.unsync unsets query params (#3806)
    • Allow None value on numeric sliders and LiteralInput (#3174)
    • Allow serving admin panel with pn.serve (#3798)
    • Improve ReactiveHTML loop support and validation (#3813)
    • Support declaring Perspective.plugin_config pane (#3814)
    • Do not flicker busy indicator during --autoreload check (#3804)
    • Improve robustness of state.curdoc in threaded and async contexts (#3776, #3810, #3834)
    • Support datetime bounds for DatetimePicker and DatetimeRangePicker (#3788)
    • Allow setting the Oauth provider using environment variables (#3698)
    • Implement Player.value_throttled (#3756)
    • Ensure that URL query parameters are preserved during OAuth (#3656)
    • Improve Markdown code syntax highlighting (#3758)
    • Ensure components do not re-render if background or loading parameters change (#3599)
    • Add ability to define admin dashboard plugins (#3668)
    • Do not calculate embed state for disabled widgets (#3757)
    • Add hard bounds to editable sliders (#3739)
    • Add bundling of shared resources (#3894)
    • Add Tabulator as default param.DataFrame widget (#3912)

    Documentation

    Compatibility & Version updates

    • Support ipywidgets>=8.0 (#3782)
    • Bump jsoneditor package (#3838)
    • Upgrade to Tabulator 5.3.2 (#3784)
    • Improve Django compatibility (#3843, #3835)
    • Remove all usage of deprecated Pane

    Bugs

    Server

    • Ensure closed websocket does not cause errors
    • Handle session and websocket close cleanly (#3769)
    • Fix prefix handling for admin page (#3809)
    • Support admin dashboard in multi-process deployments (#3812)
    • Improve document cleanup when not invoked using server_destroy (#3842)
    • Ensure pn.state.execute dispatches immediately if possible (#3859)
    • Ensure autoload.js resources are appropriately prefixed (#3873)

    Notebook

    • Fix support for copying cells and creating new views in JupyterLab (#3652)
    • Ensure output renders in VSCode notebook with latest ipywidgets (#3765)
    • Resolve issues with Jupyter slowdown due to event_loop patching on Windows (#3770)
      • Ensure old comm managers do not raise errors in notebook (#3853)
      • Simplify rendering of ipywidget (#3937)

    Tabulator

    • Do not re-render Tabulator on css_classes or background change (#3598)
    • Ensure expand icon updates on Tabulator.expanded change (#3703)
    • Update page Parameter when pagination is 'local' (#3704)
    • Do not apply sorters on Tabulator cell edits (#3744)
    • Ensure Tabulator.controls renders (#3768)
    • Ensure correctness of event row and selection indices in Tabulator (#3771, #3841)
    • Fix issues with frontend and backend sorters being out of sync in Tabulator (#3825, #3839)
    • Fix default values of a list header filter in Tabulator (#3826)
    • Fix the edit event with a python filter in Tabulator (#3829)
    • Disable client-side date filtering on Tabulator (#3849)
    • Support editing of pandas masked array dtypes in Tabulator (#3850)
    • Fix issues editing a cell when client-side filtering applied (#3852)
    • Do not recompute data when local pagination is enabled (#3854)
    • Don't skip filtering when the column name is undefined (#3862)

    Misc

    • Fix FileInput.save (#3579)
    • Fix issues with Matplotlib.high_dpi option (#3591, #3594)
    • Ensure layout recomputes on HTML/Markdown re-rerender (#3616)
    • Allow overriding all widget parameters on Param pane (#3754)
    • Ensure DatePicker start/end are transformed when jslinked (#3759)
    • Ensure notifications can be enabled without a template (#3820)
    • Ensure ReactiveHTML inline callbacks on loop variables return correct node (#3840)
    • Ensure that Perspective does not take precedence on empty dict (#3936)
    • Improve sizing_mode behavior when width/height are specified (#3955)
    • Do not load notyf resources unless notifications are enabled (#3958)
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(May 24, 2022)

    This release is primarily a bug fix release but also includes a number of enhancements. Many thanks to @Hoxbro, @joelostblom, @raybellwaves, @pdrok, @tlvu, @govinda18, @MridulS and the core maintainers @MarcSkovMadsen, @maximlt and @philippjfr for contributing to this release.

    Enhancements

    • Add repr to cell and edit events (#3434)
    • Improvements for pyodide handling (#3444, #3508, #3511)
    • Add support for Plotly animation frames (#3449)
    • Implement single and multi-selection in Vega pane (#3470, #3499, #3505)
    • Add typehints to help developers and users (#3476)
    • Add pn.state.execute method to run callbacks in the right context (#3550)
    • Add support for asynchronous on_edit/on_click Tabulator callbacks (#3550)
    • Add DatetimeRangeSlider widget (#3548)

    Bug fixes

    • Fix pyodide array buffer conversion (#3409)
    • Allow placeholder to be updated on TextEditor (#3427)
    • Fix issues editing data in sorted columns (#3431)
    • Ensure bokeh correctly detects whether HTML/Markdown contains latex (#3438)
    • Ensure notifications work on server created with pn.serve and .show (#3445)
    • Replace slickgrid background image in custom FastTemplate CSS (#3461)
    • Ensure param.Array is synced correctly in ReactiveHTML (#3456)
    • Ensure selection on filtered Tabulator does not raise out-of-bounds error (#3462)
    • Ensure updating Tabulator does not reset scroll position (#3450)
    • Various fixes for FastTemplate CSS (#3464)
    • Ensure Tabulator on_click and on_edit events return correct row when paginated (#3410)
    • Fix broken JupyterLab preview (#3469)
    • Skip Tabulator row selection when clicking on expand button (#3474)
    • Ensure overflow in MaterialTemplate is not clipped (#3492)
    • Allow providing --index for directory style apps (#3493)
    • Ensure Tabulator expanded rows are sized correctly after re-render (#3507)
    • Make CodeHandler robust to document that has been destroyed (#3510)
    • Do not sync DataFrame widget sorters parameter with bokeh model (#3527)
    • Ensure that HoloViews callback events are not auto-dispatched (#3528)
    • Ensure non-updateable Pane can be updated inside Tabs (#3532)
    • Fix slowdown of JupyterLab on Windows (#3531)
    • Fix issue with inverted data when editing a cell in a sorted Tabulator column (#3531)
    • Ensure Tabulator has correct layout after re-render (#3536)
    • Do not log events generated by admin page on the admin page (#3539)
    • Fix Tabulator events when the original column is not a string (#3541)

    Documentation

    • Adds docstrings to layouts (#3417)
    • Show how to filter categorical and temporal data from Altair/VegaLite (#3401)
    • Document how to make a Tabulator column non-editable (#3489)
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Apr 15, 2022)

    Blog post: https://blog.holoviz.org/panel_0.13.0.html

    Features

    • Add support for scheduling global callbacks (#2661)
    • MathJax now supported in Markdown and HTML (#2847)
    • Improved support for async (e.g. in ParamMethod/ParamFunction, bind, onload etc.) (#2964, #3264, #2737)
    • Support rendering Panel objects in Jupyterlite and Pyodide (#3252, #3361, #3381)
    • Add JSONEditor widget (#1974)
    • Add quill.js based TextEditor widget (#2875)
    • Add GenericLoginHandler for custom OAuth (#2873, #2960)
    • Implement Notifications API for templates (#3093)
    • Implement built-in threading (#2597, #2632, #3081)
    • Implement profiling page for Panel (#2645, #2664, #2667, #2707, #2905)
    • Implement support for Vega events (#2592)
    • Implement ArrayInput widget (#2047)
    • Add Debugger widget (#2548)
    • Add LinearGauge indicator (#3222)
    • Add ComponentResourceHandler to server (#3284, #3289, #3303)

    Enhancements

    Components

    • Editable sliders name can be changed (#2678)
    • Make Plotly pane resize when window resizes (#2704)
    • Viewer objects can now be used with pn.serve (#2769)
    • VTK improvement for NaN handling (#2826)
    • Add support for configuring Vega output (#2846)
    • Add a groups parameter to Select widget (#2876)
    • Add Card.hide_header option (#2947)
    • Support bytes and pathlib.Path objects on Image (#2963, #3294)
    • Add programmatic control over Player widget (#2970, #2994)
    • Add alphabetical and custom sort to Param (#2986)
    • Add autoplay and muted to Audio and Video (#3053)
    • Add a disabled_options parameter to a custom Select widget (#3067)
    • Expose the orientation parameter of the button group widgets (#3083)
    • Add support for rendering pandas styler objects (#3152)
    • Viewer now better at working with depends functions (#3159)
    • Improve support for jinja2 loops in ReactiveHTML (#3236)
    • Add ability to require explicit load of ReactiveHTML extension (#3254)
    • Improve datetime handling of sliders (#3276)
    • Add support for multiple files in FileInput.save (#3300)
    • Add improved Tabs model that resolves sizing and hover issues (#3301, #3321, #3329)

    Tabulator

    • Add support to expand rows in Tabulator (#2762, #2837, #3010, #3163)
    • Implement client-side filtering on Tabulator (#2815, #3298)
    • Add Tabulator.header_align parameter (#2861)
    • Implement Tabulator.on_edit callbacks (#2887, #3209, #2958)
    • Implement DateEditor and DatetimeEditor for Tabulator (#2899, #3008)
    • Implement Tabulator.buttons (#3111)
    • Redesign Tabulator.styles handling (#3175)
    • Set default alignment for Tabulator (#3194)
    • Bidirectionally sync Tabulator.sorters (#3217)
    • Add support for setting percentage widths on Tabulator columns (#3239)
    • Add Tabulator.on_click callback (#3245)
    • Restore Tabulator scroll position after patch (#3273)
    • Enable max row limits for Tabulator (#3306)

    Notebook

    • Add basic JupyterLab theme support (#2848)
    • Support jupyter server root_dir with lab extension (#3172)
    • Avoid multiple extension execution in the notebook (#3266)
    • Added fullpath to jupyter_server_extension (#3270)

    General improvements

    • Warn users if extension is not loaded before server page is rendered (#2766)
    • Sync URL location hash interactively (#2982)
    • Change accent and header background color for Fast Templates (#2984)
    • Add thread safety and TTL to pn.state.as_cached (#3198)
    • Add py.typed file to support mypy (#3055)
    • Handle authentification errors (#3096)
    • Support saving png to file-like objects (#3155)
    • Check if there are any query parameters in baseurl and adds it to location.search if possible (#3214)
    • Improve handling of --index CLI argument (#3221)
    • Fix event dispatch (#3231)
    • Add azure oauth v2.0 endpoint support (#3224)
    • Ensure gc.collect is not excessively called (#3259)
    • Added panel.reactive and panel.viewable to namespace (#3157)
    • Consistent handling of page title (#3290)

    Bugs

    Components

    • Fix warnings in ReactiveHTML regex (#2786)
    • Fixed UTF-8 decoding in Terminal widget (#2880)
    • Allow a param.Selector with no objects to be casted to AutocompleteInput (#2966)
    • Update ButtonGroup value when changing options (#2999)
    • Fix TQDM style color reset (#3040)
    • Fix align-items on Flexbox (#3122)
    • Fix issue serializing Spinner with negative value (#3154)
    • Fixes for jslinking HoloViews components (#3165)
    • BooleanStatus and LoadingSpinner now update when changing color (#3191)
    • Fix Widget.from_param when precedence is negative (#3199)
    • Ensure DiscreteSlider label is updated (#3278)
    • Ensure ReactiveHTML template variables only escapes exact matches (#3279)
    • Fix handling of single and empty options on DiscreteSlider (#3297)
    • Ensure Progress correctly initializes as indeterminate (#3307)
    • Always resolve DOM nodes in ReactiveHTML._scripts (#3311)
    • Fixes CrossSelector.disabled parameter (#3326)
    • Fix EditableSlider updates when no value_throttled is set (#3387)

    Tabulator

    • Fix HTMLTemplateFormatter on Tabulator (#2781)
    • Fix layout of Tabulator with non-default theme (#3147)
    • Ensure Tabulator selection is not reset on patch (#3287)
    • Fix Tabulator.download method (#3292)
    • Restore ability to limit number of selectable rows on Tabulato (#3295)
    • Ensure Tabulator value update reports correct old value (#3308)

    Templates

    • Fix Fast template vertical slider CSS (#3045)
    • Fix template theme.css (#3057)
    • Ensure roots are rendered into GoldenTemplate (#3313)
    • Ensure correct theme is applied to HoloViews pane in template (#3386)

    General

    • Added check for bool in Location.parse_query (#2759)
    • Ensure cleanup happens when enabling --warm or --autoreload with Bokeh 2.4 (#2760)
    • Ensure autoload.js correctly determines state.rel_path (#2776)
    • Fix issue with .app method (#3047)
    • Add document argument to django.py autoload_js_script call (#3100)
    • Avoid sending messages on closed or closing Websocket (#3115)
    • Fix Django resource handling (#3116)
    • Fix handling of loading_max_height (#3205)
    • Fix Django DocConsumer (#3281)
    • Fix jupyter_server_config for preview server extension (#3291)
    • Fix handling of oauth_provider argument to panel.io.server.serve (#3293)
    • Allow exporting absolute paths when saving (#3305)

    Documentation

    • Added ToggleGroup docs (#2679)
    • Adds a code of conduct (#2892)
    • Add docstrings to sliders module (#3176)
    • Gallery Examples for Graphviz and NetworkX (#2732)
    • Add layouts + throttling sections to Peformance docs (#3171)
    • Adds Plotly styling gallery notebook (#3038)
    • Adds a matplotlib style guide notebook to gallery (#3036)
    • Adds vega altair style example for the gallery. (#3032)
    • Wrap new gallery examples into apps (#2546)
    • Add docstring to panel module (#3177)
    • added documentation for gcp (#3119)
    • Add docs about the file size limits of the FileInput widget (#3044)
    • Add docstrings for most widgets and panes (#3352, #3353, #3354, #3359, #3365, #3366, #3367, #3369)

    Compatibility

    • Update to latest version of Perspective (#3318)
    • Update Vega version (#3320)
    • Update ipywidgets support for compatibility with latest bokeh (#3206, #3299)
    • Bump plotly.js version (#3227)
    • Updates to Param 2.0 API (#2845)
    • Updates for Python 3.10 deprecations (#3065)
    • Update and improve DeckGL pane (#3158)

    API Changes

    • Make Param.mapping public (#3173)
    • Switch DatetimePicker start/end to param.Date (#3202)
    • Perspective parameters renamed: row_pivots -> split_by, column_pivots -> group_by and computed_columns -> expressions (#3318)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.7(Mar 27, 2022)

    The 0.12.7 release primarily fixes an incompatibility with the new jinja2 3.1.0 release. Many thanks to @maartenbreddels, @govinda18, @raybellwaves and the maintainers @maximlt and @philippjfr for contributing further fixes to this release.

    Bug fixes:

    • Wrong offset when memoryview format is non-byte (#3206)
    • Support jupyter server root_dir with lab extension (#3172)

    Docs:

    • add note on enabling panel widget on Jupyter Lab (#3029)
    • Remove redundant and confusing JupyterLab install instructions (#3037)

    Compatibility:

    • Fix jinja2 imports (#3258)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.6(Dec 9, 2021)

    The 0.12.6 release fixes a major regression introduced in the last release along with a small number of pre-existing bugs.

    Regressions:

    • Always load imported bokeh extensions (#2957)
    • Fix regression rendering HoloViews plotly backend (#2961)

    Bug fixes:

    • Do not run Ace import on initialization (#2959)
    • Improve handling of ReactiveHTML cleanup (#2974, #2993)
    • Ensure empty Str has same height as non-empty (#2981)
    • Ensure Tabulator supports grouping on numeric columns (#2987)
    • Fix Tabulator with multi-index and pagination (#2989)
    • Allow index as column name in table widgets (#2990)
    • Ensure TemplateActions component does not have height (#2997)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.5(Nov 23, 2021)

    The 0.12.5 release contains a larger number of bug fixes and minor enhancements. Many thanks to @pmav99, @samuelyeewl, @xavArtley, @L8Y, @Prashant0kgp, @t-houssian, @kristw, @jlstevens and the maintainers @maximlt, @MarcSkovMadsen and @philippjfr for their contributions to this release.

    Compatibility:

    • Ensure ipywidget rendering is compatible with ipykernel>6 and bokeh>2.4 (#2798)
    • Build panel.js against bokeh.js 2.4.2 (#2945)

    Enhancements:

    • Add 'light' to list of button types ([#2814, #2816)
    • Make OAuth cookie expiry configurable (#2724)
    • Run onload callbacks with --warm option (#2844)
    • Improve Plotly responsive sizing behavior (#2838)
    • Adds escape parameter to DataFrame pane to enable using html markup (#2893)
    • Allow to update the completions options from a parameter (#2895)
    • Tabs cache dynamic contents (#2909)
    • Allow setting a maximum height for the loading indicator (#2910)
    • Ensure loading of MathJax bundle is optional (#2919)

    Bug fixes:

    • Resolve issues with inline resources on save (#2794)
    • Restore ability to set a maximum number of selectable rows on Tabulator (#2791)
    • Fixed bug where Tabulator with remote pagination would modify the wrong rows (#2801)
    • Ensure non-exported requirejs modules do not error (#2808)
    • Ensure Tabulator checkbox selection only happens in checkbox column (#2812)
    • Vtkvolume correction of dimensions order (#2818)
    • Allow data item to miss optional field in Vega pane (#2853)
    • Allow to set AutoCompleteInput in a Param pane (#2874)
    • Fix Terminal keystroke and size handling (#2878)
    • Fix Tabulator styles on scroll (#2881)
    • Do not sync Indicator properties from frontend to avoid errors (#2886)
    • Fix roundtrip of datetimes on ReactiveData components (#2888)
    • Fix handling of Plotly pane in Tabs (#2890)
    • Fix bokeh colorbar background for dark theme (#2897)
    • Fix issues when streaming or patching ReactiveData (#2900)
    • Ensure stream and patch events do not boomerang (#2902)
    • Fixes for Card rendering in MaterialTemplate (#2911, #2912)
    • Ensure HoloViews matplotlib output uses tight layout (#2920)
    • Fix decoding of single quoted strings in url parameters (#2925)
    • Fix Tabulator checkbox selection (#2931)
    • Fix Vega pane sizing issues (#2933)
    • Ensure toggled Accordion only triggers one event on change of active Card (#2934)
    • Ensure LiteralInput JS deserializer does not insert extra spaces (#2935)
    • Fix issue in detecting script data assignment in ReactiveHTML (#2939)
    • Ensure Card collapsible icon offset is computed robustly (#2940)
    • Ensure --autoreload does not reload panel modules (#2941)
    • Ensure pn.state.curdoc is available to async callbacks (#2942)

    Documentation:

    • Fix default values of panels.io.server.serve()(#2799)
    • Update docs about pn.serve per user state (#2849)
    • Added FastApi in the user guide for embedding apps (#2870)
    • Simplify homepage (#2850)

    CVEs:

    • Update jQuery to remediate CVEs (#2885)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.4(Sep 27, 2021)

    The 0.12.4 release fixes a number of bugs and a regression of the autoreload feature in 0.12.2 and 0.12.3.

    Compatibility:

    • Fix issues with --autoreload caused by changes in Bokeh 2.4 (#2755)

    Enhancements:

    • Ensure user is warned if an extension was not loaded in time on server (#2765)
    • Allow Viewer classes to be served (#2768)
    • Add support for rendering .ico files and pathlib objects (#2757)

    Bug fixes:

    • Fixed export of vtk.js module (#2562)
    • Fix broken HTMLTemplateFormatter on Tabulator (#2730)
    • Fix serialization issues of Panel components on ReactiveHTML (#2743)
    • Ensure FlexBox behaves like a layout and makes its children discoverable (#2779)
    • Ensure Plotly plots can be updated in tabs (#2747)
    • Fix embedding of Panel apps in Flask (#2727)
    • Ensure Spinner widget honors bounds when created from Param object (#2740)
    • Ensure Tabulator style does not disappear after resize event (#2770)
    • Fix PeriodicCallback errors (#2764)
    • Fix syncing of boolean types with URL parameters (#2758)
    • Ensure Tabulator.download_menu applies kwargs to the filename TextInput (#2763)
    • Ensure Tabulator does not error when no Styler is defined (#2785)

    Documentation:

    • Fix MaterialUI custom component example (#2680)
    • Fix image url in Markdown reference gallery example (#2734)
    • Add Folium thumbnail in reference gallery (#2744)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.3(Sep 17, 2021)

    The 0.12.2 release unfortunately has a compatibility issue with Bokeh 2.4 which broke the show() method. This release fixes this regression.

    • Patch Bokeh to fix show() (#2748)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.2(Sep 16, 2021)

    This is a patch release with a small number of bug fixes and compatibility for bokeh 2.4. Many thanks to the contributors @Stubatiger, @maximlt, @nghenzi and the maintainers @MarcSkovMadsen and @philippjfr for the fixes in this release.

    Enhancements:

    • Add option to hide constant parameters on Param pane (#2637)
    • Added on_session_destroyed callback (#2659)
    • Stricter validation for linking syntax in ReactiveHTML._template (#2689)

    Bug fixes:

    • Improved thread safety (#2631)
    • Ensure sessions get distinct files in config (#2646)
    • Fix bug when updating Trend data (#2647)
    • Ensure sorters are applied correctly after updating Tabulator value (#2639)
    • Correctly reflect filtered data on Tabulator.selection (#2676
    • Unescape child literal HTML in ReactiveHTML (#2690)
    • Ensure Trend indicator can be rendered in layout (#2694)

    Documentation:

    • Enhance templates docs (#2658)
    • Add Folium reference notebook (#2672)

    Compatibility:

    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Aug 10, 2021)

    This is a patch release with a small number of fixes following the 0.12.0 release. Many thanks to the maintainers @MarcSkovMadsen and @philippjfr for the fixes in this release.

    Enhancements:

    • Bundle .map files during build to allow source mapping (#2591)
    • Various style improvements for Fast templates (#2604, #2609, #2611, #2615)
    • Implement hierarchical aggregation for Tabulator (#2624)

    Bug fixes:

    • Fix logo on Fast templates (#2184)
    • Fix height responsiveness of Folium pane (#2231)
    • Fix bug updating Tqdm indicator (#2554)
    • Ensure --autoreload doesn't error on cleaned up session (#2570)
    • Don't use persisted layout if save_layout=False (#2579)
    • Pin version of tqdm with asyncio support (#2595)
    • Reset layout when resetting grid template layout (#2576)
    • Fix line-height issues in Fast templates (#2600)
    • Clean up sessions after warmup and ensure periodic callbacks are cleaned up (#2601)

    Documentation:

    • Enable JupyterLab preview button on binder (#2545)
    • Update theme toggle documentation for Fast templates (#2560)
    • Update Fast template documentation and enable full screen (#2577)
    • Fix binder links on website (#2590)
    • Add docs about loading the ipywidgets extension (#2594)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Jul 20, 2021)

    The 0.12.0 release is a minor release with a lot of exciting and a huge amount of bug fixes. We are very excited about the growing community and the many contributions we received. In particular we would like to thank @douglas-raillard-arm, @mathrick, @jlstevens, @hyamanieu, @Liam-Deacon, @Stubatiger, @ablythed, @syamajala, @Hoxbro, @jbednar, @brl0, @OBITORASU, @fleming79, dhruvbalwada and @rmorshea for contributing various fixes and improvements and the core developers @xavArtley, @MarcSkovMadsen and @philippjfr for continuing to push the development of Panel.

    Features:

    Enhancements:

    • Add empty Progress bar (#2088)
    • Optimize initialization of templates (#2096)
    • Serialize Perspective schema (#2130)
    • Updated JSON pane to accept single quote and wrap properly (#2143, #2443)
    • Improvements for Perspective (#2153)
    • Improve handling of server prefix and proxied deployment scenarios (#2159, #2162)
    • Add support for setting bokeh theme (#2164, #2166, #2170)
    • Completely overhauled the default index template (#2198, #2340)
    • Enhancements for Template modals (#2269, #2523)
    • Make the Template sidebar width configurable (#2301)
    • Improve look and feel and styling of Fast templates (#2303, #2469, #2484, #2488)
    • Allow setting kwargs in Reactive.controls (#2304)
    • Add global configuration variable to always throttle sliders (#2306)
    • Add support for controlling text alignment in DataFrame and Tabulator (#2331)
    • Add Tabulator theme for Fast Templates (#2425)
    • Add ability to make only certain Tabulator rows selectable (#2433)
    • Add visible parameter to all components (#2440)
    • Send Plotly restyle and relayout events rather than full updates (#2445)
    • Add push_notebook helper function for syncing bokeh property changes in notebooks (#2447)
    • Improve visual styling of Card (#2343, #2348, #2376, #2437, #2527)
    • Ensure config variables are configured per user session (#2358, #2455, #2481)
    • Add save_layout and prevent_collision to ReactTemplate and FastGridTemplate (#2296, #2357)
    • Add ability to declare root application from panel serve (#2392)
    • Support jslinking Parameterized class (#2441)
    • Improve config.sizing_mode behavior (#2442)
    • Add separate RangeSlider value_start and value_end parameters (#2457, #2468)
    • Allow saving Templates (#2461)
    • Bundle Tabulator resources to allow usage in airgapped environment (#2471)
    • Ensure Trend indicator title wraps (#2483)
    • Scroll on Tabulator selection (#2503)
    • Increase notebook resource load timeout (#2515)
    • Auto-detect VSCode and Colab comms (#2536)
    • Add tooltip to Tabulator cells to see unformatted value (#2543)

    Bug fixes:

    • Fix missing video in Video (#2109)
    • use idom.config to set dist dir (#2117)
    • Remove bootstrap CSS from FastGridTemplate (#2123)
    • Fix issues with Ace z-index (#2126)
    • Fix updating of Tabulator selection property (#2128)
    • Ensure changes on ReactiveData source are scheduled correctly (#2134)
    • Fixed Player looping when start is 0 (#2141)
    • Fix divide by zero issues on Trend indicator (#2148)
    • Ensure GridSpec override handles duplicate matches (#2150)
    • Fix for loading parameter widget linking (#2160)
    • Fix Tabulator ajax call on empty data (#2161)
    • Fix Tabulator sorting and data initialization (#2163)
    • Fix editing Tabulator with filters applied (#2165)
    • Fix theming on HoloViews plot updates (#2209)
    • Fixed data handling on Perspective pane (#2212)
    • Improve template and resource management for png export (#2221)
    • Improve and standardize selection behavior of Tabulator (#2230)
    • Ensure JS changes to Plotly pane are applied if not explicitly triggered (#2251)
    • Fix server-side Tabulator selection changes (#2252)
    • Fix update of Param subobjects (#2255)
    • Add support for vtkCornerAnnotations (#2257)
    • Improve request handling for remote pagination on Tabulator (#2265)
    • Allow setting Param precedence to None (#2266)
    • Disable nested field separators on Tabulator (#2289)
    • Fix errors when applying Perspective filters (#2300, #2521)
    • Ensure Param pane handles changes to unknown parameter (#2346)
    • Fix issues with local Audio and Video (#2380)
    • Ensure ReactiveData emits correct old data in event (#2398)
    • Ensure Plotly interactivity works when Plotly panes are displayed in tabs (#2418, #2463)
    • Fix Ace widget disabled parameter (#2449)
    • Ensure external resources are configured correctly on save (#2452)
    • Ensure table formatters and editors are copied on render to avoid bokeh errors (#2453)
    • Allow unicode auth response body (#2462)
    • Workaround TypeError for non-string json keys on Plotly pane (#2465)
    • Fix issue with throttled updates on Param (#2470)
    • Ensure Tabulator style is applied while streaming (#2478)
    • Fix issues setting resources on save (#2492)
    • Fix VideoStream unpause (#2508)
    • Ensure DataFrame and Tabulator widget data can be updated in callback (#2510)
    • Fix chaining of bind functions (#2513)
    • Fix broken serialisation when syncing url parameters (#2520)
    • Fix Perspective for string types (#2525)
    • Fix race condition in --autoreload (#2539)

    Documentation:

    • Update Server_Deployment.ipynb (#2118)
    • Expand description of watch=True in Param.ipynb (#2120)
    • Switch to PyData Sphinx Theme (#2139)
    • Replace altair iris example with penguins (#2213)
    • Enable Binder (#2198)
    • Updates and fixes for Developer Guide (#2381)
    • Fixed Tabs documentation (#2448)
    • Added basic description and example of the Tabulator.configuration parameter (#2412)
    • Add parameters to Plotly reference guide (#2385)
    • Add useful links to developer docs (#2319)
    • Add documentation about parameterized components (#2454)
    • Demonstrate how to lazily load tabs (#2479)

    Compatibility:

    • Compatibility with HoloViews 2.0 (#2344)
    • Fix Tabulator styling with pandas 1.3 (#2512)

    Deprecations:

    • Remove add_periodic_callback method (#2439)
    • Remove deprecated panel.callbacks modules
    • Remove deprecated Ace pane and Audio Widget (#2427)
    • Remove Progress widget docs (#2451)
    • Tabulator no longer loaded by default, must be initialized with pn.extension('tabulator') (#2364)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.3(Apr 15, 2021)

    The 0.11.3 release is another micro-release in the 0.11 series primarily focused on updating the documentation theme and a regression in loading Tabulator data.

    Bug fixes:

    • Fix Tabulator sorting and data initialization (#2163)
    • Improved handling of IDOM build directory (#2168)
    • Fix apply of bokeh_theme in templates (#2170)

    Documentation:

    • Switch to PyData Sphinx Theme (#2139)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.2(Apr 9, 2021)

    The 0.11.2 release is a micro-release fixing a number of smaller bugs. Many thanks to @Hoxbro, @dhruvbalwada, @rmorshea, @MarcSkovMadsen, @fleming79, @OBITURASU and @philippjfr for their contributions to this release.

    Enhancements:

    • Optimize adding of roots to templates to avoid multiple preprocessing cycles (#2096)
    • Use schema to support date(time) dtypes on Perspective (#2130)

    Bug fixes:

    • Fix regression on Video pane causing video not to be rendered at all (#2109)
    • Fix missing closing tag in Fast templates (#2121)
    • Remove bootstrap CSS from FastGridTemplate (#2123)
    • Ensure Tabulator selection can be set from Python (#2128)
    • Ensure changes on ReactiveData objects are scheduled correctly on server (#2134)
    • Fix for Player widget when start value is 0 (#2141)
    • Support single quotes on JSON pane (#2143)
    • Fix divide by zero issues when value_change is computed from zero baseline (#2148)
    • Ensure GridSpec handles overrides across multiple cells (#2150)
    • Fix for loading parameter widget linking (#2160)
    • Use relative URLs for resource loading to ensure proxied apps work (#2159)
    • Fix Tabulator ajax call on empty data (#2161)

    Documentation:

    • Fix typo in Binder section of server deployment documentation (#2118)
    • Improve documentation surrounding watch=True in Param user guide (#2120)

    Compatibility:

    • Ensure IDOM pane configures paths correctly for latest version (#2117, #2132)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.1(Mar 15, 2021)

    The 0.11.1 release is a micro-release addressing a number of smaller bugs in the last release. Many thanks to the contributors to this release including @Hoxbro, @xavArtley, @Jacob-Barhak and @philippjfr.

    Enhancements:

    • Allow setting horizontal and vertical alignment separately (#2072)
    • Expose widgets visible property (#2065)
    • Allow bind to extract dependencies and evaluate other dynamic functions (#2056)
    • Allow setting root_directory on FileSelector widget (#2086)

    Bug fixes:

    • Fixed loading of jQuery in BootstrapTemplate (#2057)
    • Fix VTK imports to ensure VTKVolume pane renders grids (#2071)
    • Fix loading of template resources from relative paths (#2067)
    • Fix Spinner component overflow (#2070)
    • Handle integer column names on Perspective widget (#2069)
    • Fix bundling of template resources (#2076)
    • Fix value_throttled in pn.depends decorator (#2085)

    Compatibility:

    • Switch GitHub OAuth to use header authorization token (#2073)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Mar 2, 2021)

    The 0.11.0 release brings a number of exciting new features to Panel as well as some enhancements and bug fixes. This release is also required for Bokeh 2.3 compatibility since a lot of changes to the Bokeh property system required updates. Many thanks to the many contributors to this release including @MarcSkovMadsen, @xavArtley, @hyamanieu, @cloud-rocket, @kcpevey, @kaseyrussell, @miliante, @AjayThorve and @philippjfr.

    Major features:

    • A Perspective pane based on the FINOS Perspective library (#2034)
    • Implement --autoreload functionality for the Panel server (#1983)
    • Add --warm option to panel serve, useful for pre-loading items into the state cache (#1971)
    • Add ability to define JS modules and Template specific resources (#1967)
    • panel.serve now supports serving static files and Bokeh apps, not just Panel apps (#1939)
    • Add a TrendIndicator for conveniently showing history and value of a numeric quantity (#1895)
    • Add TextToSpeech widget (#1878)
    • Add SpeechToText widget (#1880)
    • Add loading parameter and spinners to all components (#1730, #2026)
    • Add IDOM pane to develop interactive HTML components in Python (#2004)
    • Add powerful new Tabulator widget for flexible and configurable display of tabular data (#1531, #1887)

    Enhancements:

    • Add watch argument to bind function so that covers all the features of pn.depends (#2000)
    • Add format parameter to DatetimeRangeInput widget (#2043)
    • Allow ParamMethod and ParamFunction to evaluate lazily (#1966)
    • Add value_input parameter to TextInput widgets (#2007)
    • Implement Glyph3dMapper support for VTK panes (#2002, #2003)
    • Add Jupyter server extension to serve resources (#1982)
    • Enhancements for DarkTheme (#1964)
    • Add refresh functionality to FileSelector (#1962)
    • Add support for Auth0 authentication (#1934)
    • Avoid recursive preprocessing slowing down rendering (#1852)
    • Add support for per-layer tooltips on DeckGL pane (#1846)
    • Add Viewer baseclass for custom user components (#2045)

    Bug fixes:

    • Fixed FileSelector file icon on selected files (#2046)
    • Drop query args when checking URLs (#2037)
    • Fix Card.header_background propagation (#2035)
    • Disable GoldenTemplate sidebar when empty (#2017)
    • Ensure Card.collapsed and Accordion.active parameters are synced (#2009)
    • Fix inline resources when saving (#1956)
    • Switch Param pane widget type when bounds (un)defined (#1953)

    Compatibility:

    • Compatibility with Bokeh>=2.3 (#1948, #1988, #1991)
    • Updated ECharts pane to 5.0.2 of JS library (#2016)

    Documentation:

    • Document pn.bind in API user guide (#1973)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.3(Jan 18, 2021)

    Another micro-release in the 0.10.x series focusing primarily on bug and regression fixes. Many thanks to @miliante, @MarcSkovMadsen, @Hoxbro, @jlstevens, @jbednar and @philippjfr.

    Bug fixes:

    • Fix inverted axes on HoloViews plots (#1732)
    • Fix enabling/disabling of FileDownload widget (#1510, #1820)
    • Fix issues serving template resources on server with route prefix (#1821)
    • Fixes for rendering ECharts from pyecharts (#1874, #1876)
    • Fix issues with scroll behavior when expanding/collapsing Card/Accordion (#1833, #1884)
    • Ensure DiscreSlider label is correctly linked to value (#1906)
    • Fix support for setting header_color and header_background on all templates (#1872)
    • Ensure that Template preprocessors are applied during initialization (#1922)

    Enhancements:

    • Support throttled in Param widget (#1800)
    • Support rendering of hvPlot Interactive objects (#1824)
    • Allow recording session launch time in server session_info (#1909)
    • Add Button.value parameter (#1910)
    • Support upload of multiple parameters on FileInput (#1911)
    • Improve support for DarkTheme in templates (#1855, #1856)

    Documentation:

    • Fixed IntSlider and FloatSlider example (#1825)
    • Updated instructions for using Panel in JupyterLab (#1908)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.2(Nov 18, 2020)

    This is another micro-release primarily fixing various minor bugs in functionality introduced as part of the 0.10.0 release. Many thanks to @MarcSkovMadsen, @ahuang11, @xavArtley, @Hoxbro, @jbednar and @philippjfr.

    Bug fixes:

    • Fix various issues with Template CSS (#1663, #1742)
    • Fix BytesIO/StringIO buffers as input to image panes (#1711)
    • Fix out-of-bounds errors when assigning to GridSpec with fixed ncols (#1721)
    • Fix deserialization issues for Plotly.hover_data (#1722)
    • Fixed updating of Alert parameters after initialization (#1725)
    • Fix ordering of items added to Template areas (#1736)
    • Fix interactivity for items in Card (#1750)
    • Ensure onload callbacks are only run once (#1746)
    • Allow overriding items in grid based templates (#1741)
    • Ensure ECharts and ipywidget rerender when in Card (#1765)
    • Ensure template dark theme persists on HoloViews plots (#1764)
    • Fix responsive height in Plotly pane (#1770)
    • Ensure image panes resize in width and height (#1777)
    • Fix issues with Location.sync serialization (#1784)
    • ECharts pane now loads echarts-gl for 3D support (#1785)
    • Ensure CheckBoxGroup and CheckButtonGroup support arbitrary objects as options (#1793)

    Enhancements:

    • Improved OAuth encryption key validation (#1762)
    • Add progress option to .save method (#1776)
    • Add throttled argument to interact (#1259)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.1(Oct 28, 2020)

    This is a micro release of Panel primarily containing bug fixes following the 0.10.0 release. Many thanks to @MarcSkovMadsen, @jbednar and @philippjfr for contributing fixes to this release.

    Enhancements:

    • Add pn.bind function to bind parameters to a function (#1629)

    Bug fixes:

    • Fix WidgetBox CSS (#855)
    • Fix CSS load order in Templates (#1698)
    • Allow setting DiscreteSlider orientation (#1683)
    • Ensure JS callbacks and links are only set up once on templates (#1700)
    • Initialize pipeline only once (#1705)
    • Allow using NumberInput as Param pane widget (#1708)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Oct 26, 2020)

    This is a major release of Panel, with a slew of new features and enhancements, plus a wide array of minor fixes and improvements to the documentation, and website.

    Many thanks to the people who contributed to this release, including @philippjfr (principal maintainer), @MarcSkovMadsen (alert pane, templates, docs), @xavArtley (VTK improvements, templates, input/spinner widgets), @maximlt (panel serve), @jbednar (docs, reviewing), @kebowen (templates), @ahuang11 (datepicker), @nghenzi (react template, bugfixes), @nritsche (panel serve), @ltalirz (autocomplete input), @BoBednar (docs), @tmikolajczyk, @halilbay, @Hoxbro, and @ceball (testing and automation).

    Features:

    • Add Card and Accordion layout (#1262, #1266, #1267, #1616, #1619)
    • Location component (#1150, #1297, #1357, #1407, #1498, #1519, #1532, #1638, #1658)
    • VTK improvements: colorbars (#1270), synchronization (#1248, #1637), orientation widget (#1635), volume controller (#1631), serialization (#1596), follower (#1451)
    • Add default templates (#1277, #1374, #1419, #1421, #1459, #1472, #1473, #1479, #1530, #1535, #1608, #1617, #1645, #1647, #1650, #1660, #1661, #1662, #1677, #1682, #1685, #1687)
    • Improvements for ipywidgets support (#1285, #1389, #1476, #1675)
    • Add pn.state.busy and pn.state.onload callback (#1392, #1518)
    • Add support for serving static files (#1319, #1492)
    • Add an Alert pane (#1181, #1422)
    • Add ability to declare OAuth provider (#820, #1468, #1470, #1474, #1475, #1480, #1508, #1594, #1625)
    • Add ECharts pane (#1484, #1691)
    • Add busy/loading indicators and enable on Template (#1493)
    • Allow serving REST APIs as part of panel serve (#1164)
    • Add pn.state.as_cached function (#1526)
    • Add MenuButton widget (#1533)
    • Add a number of ValueIndicators (#1528, #1590, #1627, #1628, #1633)
    • Add support for param.Event (#1600)
    • Add IntInput and FloatInput widgets (#1513)
    • Record session statistics on pn.state.session_info (#1615, #1620, #1634)
    • Bundle external JS dependencies for custom models and templates (#1651, #1655)
    • Add support for ipympl (interactive mode) on Matplotlib (#1469)

    Enhancements:

    • Allow defining explicit embed states (#1274)
    • Implement __add__ and __iadd__ on layouts (#1282)
    • Add support for hierarchical multi-indexed DataFrame (#1383)
    • Add show_index option to DataFrame widget (#1488)
    • Link widgets with same name during embed (#1543)
    • Wait until JS dependency is loaded before rendering (#1577)
    • For AutocompleteInput, allow user-defined values (#1588) and case-insensitivity (#1548)
    • Allow dates to be disabled in DatePicker (#1524)
    • Enable new features for a Bokeh DataTable (#1512)
    • Panel serve improvements: MethodType parameter (#1450), title per app (#1354)
    • Server deployment guide for Azure (#1350)
    • Add Widget.from_param classmethod (#1344)
    • More options for ACE widget (#1391)

    Bugfixes and minor improvements:

    • VTK model compilation (#1669), findPokedRenderer (#1456), misc (#1406, #1409)
    • Fix parameterized parameter handling (#1584)
    • Theming improvements (#1670)
    • JS dependency handling (#1626)
    • Parameterized: explicit triggering (#1623), strings with None default (#1622)
    • Docs and examples (#1242, #1435, #1448, #1467, #1540, #1541, #1558, #1570, #1576, #1609)
    • Many other minor fixes and improvements (#1284, #1384, #1423, #1489, #1495, #1502, #1503, #1507, #1520, #1521, #1536, #1539, #1546, #1547, #1553, #1562, #1595, #1621, #1639)

    Backwards compatibility:

    • Switch away from inline resources in notebook (#1538, #1678)
    • Viewable.add_periodic_callback is deprecated; use pn.state.add_periodic_callback (#1542)
    • Use widget_type instead of type to override Param widget type in Param pane (#1614)
    • Spinner widget is now called NumberInput (#1513)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.7(Jul 27, 2020)

    The 0.9.6 release unfortunately caused a major regression in layout performance due to the way optimizations in Bokeh and Panel interacted. This release fixes this regression.

    • Fix regression in layout performance (#1453)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.6(Jun 21, 2020)

    This is a minor bug fix release primarily for compatibility with Bokeh versions >=2.1.0 along with a variety of important bug fixes. Many thanks for the many people who contributed to this release including @mattpap, @kebowen730, @xavArtley, @maximlt, @mycarta, @basnijholt, @jbednar and @philippjfr.

    • Compatibility with Bokeh 2.1 (#1424, #1428)
    • Fixes for FileDownload widget handling of callbacks (#1246, #1306)
    • Improvements and fixes for Param pane widget mapping (#1301, #1342, #1378)
    • Fixed bugs handling of closed Tabs (#1337)
    • Fix bug in layout clone method (#1349)
    • Improvements for Player widget (#1353, #1360)
    • Fix for jslink on Bokeh models (#1358)
    • Fix for rendering geometries in Vega pane (#1359)
    • Fix issue with HoloViews pane overriding selected renderer (#1429)
    • Fix issues with JSON pane depth parameter and rerendering (#1431)
    • Fixed param.Date and param.CalenderDate parameter mappings (#1433, #1434)
    • Fixed issue with enabling num_procs on pn.serve (#1436)
    • Warn if a particular extension could not be loaded (#1437)
    • Fix issues with garbage collection and potential memory leaks (#1407)
    • Support recent versions of pydeck in DeckGL pane (#1443)
    • Ensure JS callbacks on widget created from Parameters are initialized (#1439)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.5(Apr 4, 2020)

    This release primarily focused on improvements and additions to the documentation. Many thanks to @MarcSkovMadsen, @philippjfr and @michaelaye for contributing to this release.

    Enhancements:

    • Add Template.save with ability to save to HTML and PNG but not embed (#1224)

    Bug fixes:

    • Fixed formatting of datetimes in DataFrame widget (#1221)
    • Add panel/models/vtk/ subpackage to MANIFEST to ensure it is shipped with packages

    Documentation:

    • Add guidance about developing custom models (#1220)
    • Add Folium example to gallery (#1189)
    • Add FileDownload and FileInput example to gallery (#1193)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.4(Apr 2, 2020)

    This is a minor release fixing a number of regressions and compatibility issues which continue to crop up due to the upgrade to Bokeh 2.0 Additionally this release completely overhauls how communication in notebook environments are handled, eliminating the need to register custom callbacks with inlined JS callbacks to sync properties. Many thanks to the contributors to this release including @hyamanieu, @maximlt, @mattpap and the maintainer @philippjfr.

    Enhancements:

    • Switch to using CommManager in notebook hugely simplifying comms in notebooks and reducing the amount of inlined Javascript (#1171)
    • Add ability to serve Flask apps directly using pn.serve (#1215)

    Bug fixes:

    • Fix bug in Template which caused all roots to instantiate two models for each component (#1216)
    • Fixed bug with Bokeh 2.0 DataPicker datetime format (#1187)
    • Publish Panel.js to CDN to allow static HTML exports with CDN resources to work (#1190)
    • Handle bug in rendering Vega models with singular dataset (#1201)
    • Removed escaping workaround for HTML models resulting in broken static exports (#1206)
    • Fixed bug closing Tabs (#1208)
    • Embed Panel logo in server index.html (#1209)

    Compatibility:

    • This release adds compatibility with Bokeh 2.0.1 which caused a regression in loading custom models
    Source code(tar.gz)
    Source code(zip)
  • v0.9.3(Mar 21, 2020)

    This is a minor release fixing an issue with recent versions of Tornado. It also fixes issue with the packages built on the PyViz conda channel.

    • Respect write-locks on synchronous Websocket events (#1170)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.2(Mar 21, 2020)

    This is a minor release with a number of bug fixes. Many thanks to @ceball, @Guillemdb and @philippjfr for contributing these fixes.

    Bug fixes:

    • Fix regression in DiscreteSlider layout (#1163)
    • Fix for saving as PNG which regressed due to changes in bokeh 2.0 (#1165)
    • Allow pn.serve to resolve Template instances returned by a function (#1167)
    • Ensure Template can render empty HoloViews pane (#1168)
    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Mar 19, 2020)

    This is very minor releases fixing small regressions in the 0.9.0 release:

    Bug fixes:

    • Fix issue with Button label not being applied (#1152)

    • Pin pyviz_comms 0.7.4 to avoid issues with undefined vars (#1153)

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Mar 19, 2020)

    This is a major release primarily for compatibility with the recent Bokeh 2.0 release. Additionally this release has a small number of features and bug fixes:

    Features:

    • Added a MultiChoice widget (#1140)

    • Add FileDownload widget (#915, #1146)

    • Add ability to define Slider format option (#1142)

    • Expose pn.state.cookies and pn.state.headers to allow accessing HTTP headers and requests from inside an app (#1143)

    Bug fixes:

    • Ensure DiscreteSlider respects layout options (#1144)

    Removals:

    • Slider no longer support callback_policy and callback_throttle as they have been replaced by the value_throttled property in bokeh
    Source code(tar.gz)
    Source code(zip)
  • v0.8.1(Mar 11, 2020)

    This release is a minor release with a number of bug fixes and minor enhancements. Many thanks to the community of contributors including @bstadlbauer, @ltalirz @ceball and @gmoutsofor submitting the fixes and the maintainers, including @xavArtley, @jbednar and @philippjfr, for continued development.

    Minor enhancements:

    • Added verbose option to display server address (#1098) [@philippjfr]

    Bug fixes:

    • Fix PNG export due to issue with PhantomJS (#1081, #1092) [@bstadlbauer, @philippjfr]
    • Fix for threaded server (#1090) [@xavArtley]
    • Ensure Plotly Pane does not perform rerender on each property change (#1109) [@philippjfr]
    • Fix issues with jslink and other callbacks in Template (#1135) [@philippjfr]
    • Various fixes for VTK pane (#1123) [@xavArtley]
    • Fixes for .show keyword arguments (#1073, #1106) [@gmoutso]
    Source code(tar.gz)
    Source code(zip)
Owner
HoloViz
High-level tools to simplify visualization in Python
HoloViz
A Django app that creates automatic web UIs for Python scripts.

Wooey is a simple web interface to run command line Python scripts. Think of it as an easy way to get your scripts up on the web for routine data anal

Wooey 1.9k Jan 1, 2023
Django app that enables staff to log in as other users using their own credentials.

Impostor Impostor is a Django application which allows staff members to login as a different user by using their own username and password. Login Logg

Andreu Vallbona Plazas 144 Dec 13, 2022
A Django app for easily adding object tools in the Django admin

Django Object Actions If you've ever tried making admin object tools you may have thought, "why can't this be as easy as making Django Admin Actions?"

Chris Chang 524 Dec 26, 2022
Freqtrade is a free and open source crypto trading bot written in Python

Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.

null 20.2k Jan 2, 2023
PyMMO is a Python-based MMO game framework using sockets and PyGame.

PyMMO is a Python framework/template of a MMO game built using PyGame on top of Python's built-in socket module.

Luis Souto Maior 61 Dec 18, 2022
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Jan 7, 2023
Collection of admin fields and decorators to help to create computed or custom fields more friendly and easy way

django-admin-easy Collection of admin fields, decorators and mixin to help to create computed or custom fields more friendly and easy way Installation

Ezequiel Bertti 364 Jan 8, 2023
BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC is a platform for merchants, users and developers which offers easy setup and use.

BitcartCC 270 Jan 7, 2023
Python books free to read online or download

Python books free to read online or download

Paolo Amoroso 3.7k Jan 8, 2023
Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Python code for "Machine learning: a probabilistic perspective" (2nd edition)

Probabilistic machine learning 5.3k Dec 31, 2022
A python application for manipulating pandas data frames from the comfort of your web browser

A python application for manipulating pandas data frames from the comfort of your web browser. Data flows are represented as a Directed Acyclic Graph, and nodes can be ran individually as the user sees fit.

Schlerp 161 Jan 4, 2023
A modern Python package manager with PEP 582 support.

A modern Python package manager with PEP 582 support.

Python Development Master(PDM) 3.6k Jan 5, 2023
Python Crypto Bot

Python Crypto Bot

Michael Whittle 1.6k Jan 6, 2023
Ajenti Core and stock plugins

Ajenti is a Linux & BSD modular server admin panel. Ajenti 2 provides a new interface and a better architecture, developed with Python3 and AngularJS.

Ajenti Project 7k Jan 7, 2023
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 5.2k Dec 29, 2022
Real-time monitor and web admin for Celery distributed task queue

Flower Flower is a web based tool for monitoring and administrating Celery clusters. Features Real-time monitoring using Celery Events Task progress a

Mher Movsisyan 5.5k Dec 28, 2022
Simple and extensible administrative interface framework for Flask

Flask-Admin The project was recently moved into its own organization. Please update your references to [email protected]:flask-admin/flask-admin.git. Int

Flask-Admin 4.6k Feb 7, 2021
FastAPI Admin Dashboard based on FastAPI and Tortoise ORM.

FastAPI ADMIN 中文文档 Introduction FastAPI-Admin is a admin dashboard based on fastapi and tortoise-orm. FastAPI-Admin provide crud feature out-of-the-bo

long2ice 1.6k Jan 2, 2023
Nginx UI allows you to access and modify the nginx configurations files without cli.

nginx ui Table of Contents nginx ui Introduction Setup Example Docker UI Authentication Configure the auth file Configure nginx Introduction We use ng

David Schenk 4.3k Dec 31, 2022