It’s been a really long time since we had a major (or rather minor release if you believe in SemVer). However it is now almost time again and I have just tagged Panel 0.13.0 RC1. This is a release candidate so there should be no major changes between this dev release and the final release. However now is the time for you to help us out and test your application to ensure it will still work after the update.
To get the RC install it with pip install "panel==0.13.0rc1" or conda install -c pyviz/label/dev "panel=0.13.0rc1"
We aim to release later this week, so now is your chance.
I don’t think what I’ve done template wise should run but if you could take a look and point me in a direction to get it working again that would be great.
In pyhdx/web/template.py is my ExtendedGoldenTemplate which overrides _template_resources where, if i remember correctly, I point to the css/js files bundled with pyhdx.
And on top of that I overload _template with something like this:
class ReadString(str):
"""
Extends the `string` class such that it can be used to monkey-patch the _template class attribute of GoldenTemplate
"""
def read_text(self):
return str(self)
template_code = ReadString(< html template >)
ExtendedGoldenTemplate._template = template_code
Which is in pyhdx.web.template.GoldenElvis.compose
Thanks!!
I still have some problems with plots overlaying other plots (from other tabs)
for example tab 1 has a plot with a height of 400 and tab 2 has another plot with a height of 800
so when i am on tab 1 i see the bottom of plot from tab 2 below the plot on tab 1
maybe you can also take a look and try to fix that.
Thanks @alon-sht. It seems somehow it’s overriding the visibility=hidden setting on the parent div. I can push a fix that also sets opacity: 0 for the element, which seems to work.
Hi,
I just checked 0.13.0rc3 with my (unfortunately quite complex and somehow messy) panel application and in some cases (file upload, expensive background calculation) the bootstrap template busy indicator is not working anymore. (the one in the upper right, <div class="pn-busy-container">)
In some cases (for example making a selection from a plotly plot) it still works.
It used to work perfectly with panel version 0.12.4.
I will dig more into it and try to find out, what´s the “specialty” about the cases where it is/isn´t working or if I can reproduce the error in a minimal example. Until then I must admit I am not able to post something useful/runnable, sorry.
But I post this just in case you might immediately know what the problem/solution could be or if other users have the same problem.
Thanks!
Thanks for adding support for Altair/Vega events in this release, that’s very exciting! I noticed that the example in the docs does not work if I change the Altair selection from interval to a point selection (single or multi). These return an empty dictionary, whereas interval returns something like
It would be great if point selections were also supported. Maybe they are and there is just a different syntax needed (then an example in the docs would be great).
Full example:
import pandas as pd
import panel as pn
import altair as alt
from vega_datasets import data
pn.extension('vega')
penguins_url = "https://raw.githubusercontent.com/vega/vega/master/docs/data/penguins.json"
brush = alt.selection_interval(name='brush') # selection of type "interval"
chart = alt.Chart(penguins_url).mark_point().encode(
x=alt.X('Beak Length (mm):Q', scale=alt.Scale(zero=False)),
y=alt.Y('Beak Depth (mm):Q', scale=alt.Scale(zero=False)),
color=alt.condition(brush, 'Species:N', alt.value('lightgray'))
).properties(
width=250,
height=250
).add_selection(
brush
)
df = pd.read_json("https://raw.githubusercontent.com/vega/vega/master/docs/data/penguins.json")
vega_pane = pn.pane.Vega(chart)
def filtered_table(selection):
if selection is None:
return '## No selection'
# query = ' & '.join(
# f'{crange[0]:.3f} <= `{col}` <= {crange[1]:.3f}'
# for col, crange in selection.items()
# )
print(selection)
query = selection.items()
return pn.Column(
f'Query: {query}',
# pn.pane.DataFrame(df.query(query), width=600, height=300)
)
vega_pane = pn.pane.Vega(chart, debounce=1)
pn.Row(vega_pane, pn.bind(filtered_table, vega_pane.selection.param.brush)).show()