solara 1.6.0__tar.gz → 1.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. {solara-1.6.0 → solara-1.7.0}/.bumpversion.cfg +1 -1
  2. {solara-1.6.0 → solara-1.7.0}/.pre-commit-config.yaml +2 -2
  3. {solara-1.6.0 → solara-1.7.0}/PKG-INFO +2 -2
  4. {solara-1.6.0 → solara-1.7.0}/packages/assets/solara_assets/__init__.py +1 -1
  5. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/pyproject.toml +1 -1
  6. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/__init__.py +1 -1
  7. {solara-1.6.0 → solara-1.7.0}/pyproject.toml +1 -1
  8. {solara-1.6.0 → solara-1.7.0}/release.md +3 -3
  9. {solara-1.6.0 → solara-1.7.0}/solara/__init__.py +2 -1
  10. {solara-1.6.0 → solara-1.7.0}/solara/autorouting.py +2 -1
  11. {solara-1.6.0 → solara-1.7.0}/solara/checks.py +1 -1
  12. {solara-1.6.0 → solara-1.7.0}/solara/components/applayout.py +1 -1
  13. {solara-1.6.0 → solara-1.7.0}/solara/components/cross_filter.py +2 -2
  14. solara-1.7.0/solara/components/datatable.py +220 -0
  15. solara-1.7.0/solara/components/datatable.vue +175 -0
  16. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/style.css +5 -0
  17. {solara-1.6.0 → solara-1.7.0}/solara/server/static/solara_bootstrap.py +1 -1
  18. {solara-1.6.0 → solara-1.7.0}/solara/website/assets/custom.css +0 -1
  19. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/__init__.py +5 -1
  20. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/dataframe.py +13 -21
  21. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/warning.py +7 -0
  22. solara-1.7.0/solara/widgets/widgets.py +57 -0
  23. {solara-1.6.0 → solara-1.7.0}/tests/integration/api_test.py +18 -0
  24. solara-1.6.0/solara/components/datatable.py +0 -88
  25. solara-1.6.0/solara/widgets/vue/datatable.vue +0 -173
  26. solara-1.6.0/solara/widgets/widgets.py +0 -114
  27. {solara-1.6.0 → solara-1.7.0}/.flake8 +0 -0
  28. {solara-1.6.0 → solara-1.7.0}/.github/workflows/codequality.yaml +0 -0
  29. {solara-1.6.0 → solara-1.7.0}/.github/workflows/installation.yml +0 -0
  30. {solara-1.6.0 → solara-1.7.0}/.github/workflows/integration.yml +0 -0
  31. {solara-1.6.0 → solara-1.7.0}/.github/workflows/javascript.yaml +0 -0
  32. {solara-1.6.0 → solara-1.7.0}/.github/workflows/release.yaml +0 -0
  33. {solara-1.6.0 → solara-1.7.0}/.github/workflows/release_solara_vuetify_app.yaml +0 -0
  34. {solara-1.6.0 → solara-1.7.0}/.github/workflows/unittest.yml +0 -0
  35. {solara-1.6.0 → solara-1.7.0}/.gitignore +0 -0
  36. {solara-1.6.0 → solara-1.7.0}/LICENSE +0 -0
  37. {solara-1.6.0 → solara-1.7.0}/Procfile +0 -0
  38. {solara-1.6.0 → solara-1.7.0}/README.md +0 -0
  39. {solara-1.6.0 → solara-1.7.0}/mypy.ini +0 -0
  40. {solara-1.6.0 → solara-1.7.0}/packages/assets/.gitignore +0 -0
  41. {solara-1.6.0 → solara-1.7.0}/packages/assets/LICENSE +0 -0
  42. {solara-1.6.0 → solara-1.7.0}/packages/assets/RELEASE.md +0 -0
  43. {solara-1.6.0 → solara-1.7.0}/packages/assets/download_cdn_test.py +0 -0
  44. {solara-1.6.0 → solara-1.7.0}/packages/assets/hatch_build.py +0 -0
  45. {solara-1.6.0 → solara-1.7.0}/packages/assets/pyproject.toml +0 -0
  46. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/LICENSE +0 -0
  47. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/RELEASE.md +0 -0
  48. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/__init__.py +0 -0
  49. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/base.py +0 -0
  50. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/disk.py +0 -0
  51. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/memory_size.py +0 -0
  52. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/multi_level.py +0 -0
  53. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/cache/redis.py +0 -0
  54. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/license.py +0 -0
  55. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/search/__init__.py +0 -0
  56. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/search/index.py +0 -0
  57. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/search/search.py +0 -0
  58. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/search/search.vue +0 -0
  59. {solara-1.6.0 → solara-1.7.0}/packages/solara-enterprise/solara_enterprise/ssg.py +0 -0
  60. {solara-1.6.0 → solara-1.7.0}/packages/solara-milkdown/package-lock.json +0 -0
  61. {solara-1.6.0 → solara-1.7.0}/packages/solara-milkdown/package.json +0 -0
  62. {solara-1.6.0 → solara-1.7.0}/packages/solara-milkdown/src/index.js +0 -0
  63. {solara-1.6.0 → solara-1.7.0}/packages/solara-milkdown/webpack.config.js +0 -0
  64. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/.bumpversion.cfg +0 -0
  65. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/README.md +0 -0
  66. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/package-lock.json +0 -0
  67. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/package.json +0 -0
  68. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/release.sh +0 -0
  69. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/src/solara-vuetify-app.js +0 -0
  70. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/src/solara.js +0 -0
  71. {solara-1.6.0 → solara-1.7.0}/packages/solara-vuetify-app/webpack.config.js +0 -0
  72. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/LICENSE.voila.txt +0 -0
  73. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/package-lock.json +0 -0
  74. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/package.json +0 -0
  75. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/index.ts +0 -0
  76. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/kernel.ts +0 -0
  77. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/loader.ts +0 -0
  78. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/manager.ts +0 -0
  79. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/mathjax.ts +0 -0
  80. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/rendermime.ts +0 -0
  81. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/src/typings.d.ts +0 -0
  82. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/style/index.css +0 -0
  83. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/tsconfig.json +0 -0
  84. {solara-1.6.0 → solara-1.7.0}/packages/solara-widget-manager/webpack.config.js +0 -0
  85. {solara-1.6.0 → solara-1.7.0}/prefix/etc/jupyter/jupyter_notebook_config.d/solara.json +0 -0
  86. {solara-1.6.0 → solara-1.7.0}/prefix/etc/jupyter/jupyter_server_config.d/solara.json +0 -0
  87. {solara-1.6.0 → solara-1.7.0}/release.sh +0 -0
  88. {solara-1.6.0 → solara-1.7.0}/requirements.txt +0 -0
  89. {solara-1.6.0 → solara-1.7.0}/runtime.txt +0 -0
  90. {solara-1.6.0 → solara-1.7.0}/solara/__main__.py +0 -0
  91. {solara-1.6.0 → solara-1.7.0}/solara/alias.py +0 -0
  92. {solara-1.6.0 → solara-1.7.0}/solara/cache.py +0 -0
  93. {solara-1.6.0 → solara-1.7.0}/solara/checks.html +0 -0
  94. {solara-1.6.0 → solara-1.7.0}/solara/components/__init__.py +0 -0
  95. {solara-1.6.0 → solara-1.7.0}/solara/components/alert.py +0 -0
  96. {solara-1.6.0 → solara-1.7.0}/solara/components/button.py +0 -0
  97. {solara-1.6.0 → solara-1.7.0}/solara/components/checkbox.py +0 -0
  98. {solara-1.6.0 → solara-1.7.0}/solara/components/code_highlight_css.py +0 -0
  99. {solara-1.6.0 → solara-1.7.0}/solara/components/code_highlight_css.vue +0 -0
  100. {solara-1.6.0 → solara-1.7.0}/solara/components/columns.py +0 -0
  101. {solara-1.6.0 → solara-1.7.0}/solara/components/dataframe.py +0 -0
  102. {solara-1.6.0 → solara-1.7.0}/solara/components/details.py +0 -0
  103. {solara-1.6.0 → solara-1.7.0}/solara/components/download.vue +0 -0
  104. {solara-1.6.0 → solara-1.7.0}/solara/components/echarts.py +0 -0
  105. {solara-1.6.0 → solara-1.7.0}/solara/components/echarts.vue +0 -0
  106. {solara-1.6.0 → solara-1.7.0}/solara/components/figure_altair.py +0 -0
  107. {solara-1.6.0 → solara-1.7.0}/solara/components/file_browser.py +0 -0
  108. {solara-1.6.0 → solara-1.7.0}/solara/components/file_download.py +0 -0
  109. {solara-1.6.0 → solara-1.7.0}/solara/components/file_drop.py +0 -0
  110. {solara-1.6.0 → solara-1.7.0}/solara/components/file_drop.vue +0 -0
  111. {solara-1.6.0 → solara-1.7.0}/solara/components/file_list_widget.vue +0 -0
  112. {solara-1.6.0 → solara-1.7.0}/solara/components/head.py +0 -0
  113. {solara-1.6.0 → solara-1.7.0}/solara/components/head_tag.py +0 -0
  114. {solara-1.6.0 → solara-1.7.0}/solara/components/head_tag.vue +0 -0
  115. {solara-1.6.0 → solara-1.7.0}/solara/components/image.py +0 -0
  116. {solara-1.6.0 → solara-1.7.0}/solara/components/input.py +0 -0
  117. {solara-1.6.0 → solara-1.7.0}/solara/components/link.py +0 -0
  118. {solara-1.6.0 → solara-1.7.0}/solara/components/markdown.py +0 -0
  119. {solara-1.6.0 → solara-1.7.0}/solara/components/markdown_editor.py +0 -0
  120. {solara-1.6.0 → solara-1.7.0}/solara/components/markdown_editor.vue +0 -0
  121. {solara-1.6.0 → solara-1.7.0}/solara/components/matplotlib.py +0 -0
  122. {solara-1.6.0 → solara-1.7.0}/solara/components/meta.py +0 -0
  123. {solara-1.6.0 → solara-1.7.0}/solara/components/misc.py +0 -0
  124. {solara-1.6.0 → solara-1.7.0}/solara/components/pivot_table.py +0 -0
  125. {solara-1.6.0 → solara-1.7.0}/solara/components/pivot_table.vue +0 -0
  126. {solara-1.6.0 → solara-1.7.0}/solara/components/select.py +0 -0
  127. {solara-1.6.0 → solara-1.7.0}/solara/components/select.vue +0 -0
  128. {solara-1.6.0 → solara-1.7.0}/solara/components/slider.py +0 -0
  129. {solara-1.6.0 → solara-1.7.0}/solara/components/slider_date.vue +0 -0
  130. {solara-1.6.0 → solara-1.7.0}/solara/components/sql_code.py +0 -0
  131. {solara-1.6.0 → solara-1.7.0}/solara/components/sql_code.vue +0 -0
  132. {solara-1.6.0 → solara-1.7.0}/solara/components/style.py +0 -0
  133. {solara-1.6.0 → solara-1.7.0}/solara/components/tab_navigation.py +0 -0
  134. {solara-1.6.0 → solara-1.7.0}/solara/components/title.py +0 -0
  135. {solara-1.6.0 → solara-1.7.0}/solara/components/title.vue +0 -0
  136. {solara-1.6.0 → solara-1.7.0}/solara/components/togglebuttons.py +0 -0
  137. {solara-1.6.0 → solara-1.7.0}/solara/datatypes.py +0 -0
  138. {solara-1.6.0 → solara-1.7.0}/solara/express.py +0 -0
  139. {solara-1.6.0 → solara-1.7.0}/solara/hooks/__init__.py +0 -0
  140. {solara-1.6.0 → solara-1.7.0}/solara/hooks/dataframe.py +0 -0
  141. {solara-1.6.0 → solara-1.7.0}/solara/hooks/misc.py +0 -0
  142. {solara-1.6.0 → solara-1.7.0}/solara/kitchensink.py +0 -0
  143. {solara-1.6.0 → solara-1.7.0}/solara/lab/__init__.py +0 -0
  144. {solara-1.6.0 → solara-1.7.0}/solara/lab/components/__init__.py +0 -0
  145. {solara-1.6.0 → solara-1.7.0}/solara/lab/components/cross_filter.py +0 -0
  146. {solara-1.6.0 → solara-1.7.0}/solara/lab/hooks/__init__.py +0 -0
  147. {solara-1.6.0 → solara-1.7.0}/solara/lab/hooks/dataframe.py +0 -0
  148. {solara-1.6.0 → solara-1.7.0}/solara/lab/toestand.py +0 -0
  149. {solara-1.6.0 → solara-1.7.0}/solara/lab/utils/__init__.py +0 -0
  150. {solara-1.6.0 → solara-1.7.0}/solara/lab/utils/dataframe.py +0 -0
  151. {solara-1.6.0 → solara-1.7.0}/solara/layout.py +0 -0
  152. {solara-1.6.0 → solara-1.7.0}/solara/py.typed +0 -0
  153. {solara-1.6.0 → solara-1.7.0}/solara/routing.py +0 -0
  154. {solara-1.6.0 → solara-1.7.0}/solara/scope/__init__.py +0 -0
  155. {solara-1.6.0 → solara-1.7.0}/solara/scope/types.py +0 -0
  156. {solara-1.6.0 → solara-1.7.0}/solara/server/__init__.py +0 -0
  157. {solara-1.6.0 → solara-1.7.0}/solara/server/app.py +0 -0
  158. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/custom.css +0 -0
  159. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/custom.js +0 -0
  160. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/favicon.png +0 -0
  161. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/favicon.svg +0 -0
  162. {solara-1.6.0 → solara-1.7.0}/solara/server/assets/theme.js +0 -0
  163. {solara-1.6.0 → solara-1.7.0}/solara/server/cdn_helper.py +0 -0
  164. {solara-1.6.0 → solara-1.7.0}/solara/server/fastapi.py +0 -0
  165. {solara-1.6.0 → solara-1.7.0}/solara/server/flask.py +0 -0
  166. {solara-1.6.0 → solara-1.7.0}/solara/server/jupyter/__init__.py +0 -0
  167. {solara-1.6.0 → solara-1.7.0}/solara/server/jupyter/cdn_handler.py +0 -0
  168. {solara-1.6.0 → solara-1.7.0}/solara/server/jupyter/server_extension.py +0 -0
  169. {solara-1.6.0 → solara-1.7.0}/solara/server/kernel.py +0 -0
  170. {solara-1.6.0 → solara-1.7.0}/solara/server/patch.py +0 -0
  171. {solara-1.6.0 → solara-1.7.0}/solara/server/pyodide.py +0 -0
  172. {solara-1.6.0 → solara-1.7.0}/solara/server/reload.py +0 -0
  173. {solara-1.6.0 → solara-1.7.0}/solara/server/server.py +0 -0
  174. {solara-1.6.0 → solara-1.7.0}/solara/server/settings.py +0 -0
  175. {solara-1.6.0 → solara-1.7.0}/solara/server/starlette.py +0 -0
  176. {solara-1.6.0 → solara-1.7.0}/solara/server/static/ansi.js +0 -0
  177. {solara-1.6.0 → solara-1.7.0}/solara/server/static/highlight-dark.css +0 -0
  178. {solara-1.6.0 → solara-1.7.0}/solara/server/static/highlight.css +0 -0
  179. {solara-1.6.0 → solara-1.7.0}/solara/server/static/main-vuetify.js +0 -0
  180. {solara-1.6.0 → solara-1.7.0}/solara/server/static/main.js +0 -0
  181. {solara-1.6.0 → solara-1.7.0}/solara/server/static/sun.svg +0 -0
  182. {solara-1.6.0 → solara-1.7.0}/solara/server/static/webworker.js +0 -0
  183. {solara-1.6.0 → solara-1.7.0}/solara/server/telemetry.py +0 -0
  184. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/index.html.j2 +0 -0
  185. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/loader-plain.css +0 -0
  186. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/loader-plain.html +0 -0
  187. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/loader-solara.css +0 -0
  188. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/loader-solara.html +0 -0
  189. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/plain.html +0 -0
  190. {solara-1.6.0 → solara-1.7.0}/solara/server/templates/solara.html.j2 +0 -0
  191. {solara-1.6.0 → solara-1.7.0}/solara/server/threaded.py +0 -0
  192. {solara-1.6.0 → solara-1.7.0}/solara/server/utils.py +0 -0
  193. {solara-1.6.0 → solara-1.7.0}/solara/server/websocket.py +0 -0
  194. {solara-1.6.0 → solara-1.7.0}/solara/settings.py +0 -0
  195. {solara-1.6.0 → solara-1.7.0}/solara/template/button.py +0 -0
  196. {solara-1.6.0 → solara-1.7.0}/solara/template/markdown.py +0 -0
  197. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/.flake8 +0 -0
  198. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/.pre-commit-config.yaml +0 -0
  199. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/LICENSE +0 -0
  200. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/Procfile +0 -0
  201. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/mypy.ini +0 -0
  202. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/pyproject.toml +0 -0
  203. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/__init__.py +0 -0
  204. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/components/__init__.py +0 -0
  205. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/components/article.py +0 -0
  206. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/components/data.py +0 -0
  207. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/components/header.py +0 -0
  208. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/components/layout.py +0 -0
  209. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/content/articles/equis-in-vidi.md +0 -0
  210. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/content/articles/substiterat-vati.md +0 -0
  211. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/data.py +0 -0
  212. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/pages/__init__.py +0 -0
  213. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/pages/article/__init__.py +0 -0
  214. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/pages/tabular.py +0 -0
  215. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/pages/viz/__init__.py +0 -0
  216. {solara-1.6.0 → solara-1.7.0}/solara/template/portal/solara_portal/pages/viz/overview.py +0 -0
  217. {solara-1.6.0 → solara-1.7.0}/solara/util.py +0 -0
  218. {solara-1.6.0 → solara-1.7.0}/solara/website/__init__.py +0 -0
  219. {solara-1.6.0 → solara-1.7.0}/solara/website/assets/images/logo-small.png +0 -0
  220. {solara-1.6.0 → solara-1.7.0}/solara/website/assets/images/logo.svg +0 -0
  221. {solara-1.6.0 → solara-1.7.0}/solara/website/assets/theme.js +0 -0
  222. {solara-1.6.0 → solara-1.7.0}/solara/website/components/__init__.py +0 -0
  223. {solara-1.6.0 → solara-1.7.0}/solara/website/components/header.py +0 -0
  224. {solara-1.6.0 → solara-1.7.0}/solara/website/components/hero.py +0 -0
  225. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/README.md +0 -0
  226. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/__init__.py +0 -0
  227. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/altair.py +0 -0
  228. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/app_bar.py +0 -0
  229. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/app_layout.py +0 -0
  230. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/button.py +0 -0
  231. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/checkbox.py +0 -0
  232. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/column.py +0 -0
  233. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/columns.py +0 -0
  234. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/columns_responsive.py +0 -0
  235. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/common.py +0 -0
  236. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/cross_filter_dataframe.py +0 -0
  237. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/cross_filter_report.py +0 -0
  238. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/cross_filter_select.py +0 -0
  239. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/cross_filter_slider.py +0 -0
  240. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/default_layout.py +0 -0
  241. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/display.py +0 -0
  242. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/echarts.py +0 -0
  243. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/error.py +0 -0
  244. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/file_browser.py +0 -0
  245. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/file_download.py +0 -0
  246. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/file_drop.py +0 -0
  247. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/generate_routes.py +0 -0
  248. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/generate_routes_directory.py +0 -0
  249. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/griddraggable.py +0 -0
  250. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/gridfixed.py +0 -0
  251. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/hbox.py +0 -0
  252. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/head.py +0 -0
  253. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/html.py +0 -0
  254. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/image.py +0 -0
  255. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/info.py +0 -0
  256. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/input.py +0 -0
  257. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/link.py +0 -0
  258. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/markdown.py +0 -0
  259. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/markdown_editor.py +0 -0
  260. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/matplotlib.py +0 -0
  261. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/memoize.py +0 -0
  262. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/meta.py +0 -0
  263. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/pivot_table.py +0 -0
  264. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/plotly.py +0 -0
  265. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/plotly_express.py +0 -0
  266. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/resolve_path.py +0 -0
  267. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/route.py +0 -0
  268. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/row.py +0 -0
  269. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/select.py +0 -0
  270. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/sidebar.py +0 -0
  271. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/slider.py +0 -0
  272. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/sql_code.py +0 -0
  273. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/style.py +0 -0
  274. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/success.py +0 -0
  275. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/title.py +0 -0
  276. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/togglebuttons.py +0 -0
  277. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_cross_filter.py +0 -0
  278. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_exception.py +0 -0
  279. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_previous.py +0 -0
  280. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_route.py +0 -0
  281. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_state.py +0 -0
  282. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_state_or_update.py +0 -0
  283. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_thread.md +0 -0
  284. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/use_thread.py +0 -0
  285. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/vbox.py +0 -0
  286. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/api/widget.py +0 -0
  287. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/__init__.py +0 -0
  288. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/layout-demo.py +0 -0
  289. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/multipage/__init__.py +0 -0
  290. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/multipage/page1.py +0 -0
  291. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/multipage/page2.py +0 -0
  292. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/scatter.py +0 -0
  293. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/apps/tutorial-streamlit.py +0 -0
  294. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/doc_use_download.py +0 -0
  295. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/__init__.py +0 -0
  296. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/00-introduction.md +0 -0
  297. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/02-installing.md +0 -0
  298. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/03-quickstart.md +0 -0
  299. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/00-overview.md +0 -0
  300. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/10_data_science.py +0 -0
  301. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/20-web-app.md +0 -0
  302. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/30-ipywidgets.md +0 -0
  303. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/40-streamlit.md +0 -0
  304. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/50-dash.md +0 -0
  305. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/04-tutorial/_data_science.ipynb +0 -0
  306. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/10-howto/00-overview.md +0 -0
  307. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/10-howto/20-multipage.md +0 -0
  308. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/10-howto/30-layout.md +0 -0
  309. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/00-overview.md +0 -0
  310. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/40-static_files.md +0 -0
  311. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/41-asset-files.md +0 -0
  312. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/60-static-site-generation.md +0 -0
  313. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/70-search.md +0 -0
  314. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/80-reloading.md +0 -0
  315. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/90-notebook-support.md +0 -0
  316. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/15-reference/95-caching.md +0 -0
  317. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/00-introduction.md +0 -0
  318. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/05-ipywidgets.md +0 -0
  319. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/06-ipyvuetify.md +0 -0
  320. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/10-reacton.md +0 -0
  321. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/12-reacton-basics.md +0 -0
  322. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/15-anatomy.md +0 -0
  323. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/17-rules-of-hooks.md +0 -0
  324. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/18-containers.md +0 -0
  325. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/20-solara.md +0 -0
  326. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/40-routing.md +0 -0
  327. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/50-solara-server.md +0 -0
  328. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/20-understanding/60-voila.md +0 -0
  329. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/30-deploying/00-overview.md +0 -0
  330. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/30-deploying/10-self-hosted.md +0 -0
  331. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/30-deploying/20-cloud-hosted.md +0 -0
  332. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/90-development/10-setup.md +0 -0
  333. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/90-troubleshoot.md +0 -0
  334. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/99-faq.md +0 -0
  335. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/__init__.py +0 -0
  336. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/lab/00-what-is-lab.md +0 -0
  337. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docs/content/lab/toestand.md +0 -0
  338. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/docutils.py +0 -0
  339. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/__init__.py +0 -0
  340. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/basics/__init__.py +0 -0
  341. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/basics/sine.py +0 -0
  342. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/fullscreen.py +0 -0
  343. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/general/__init__.py +0 -0
  344. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/general/pokemon_search.py +0 -0
  345. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/ipycanvas.py +0 -0
  346. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/utilities/__init__.py +0 -0
  347. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/utilities/calculator.py +0 -0
  348. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/utilities/countdown_timer.py +0 -0
  349. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/visualization/__init__.py +0 -0
  350. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/visualization/bqplot.py +0 -0
  351. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/visualization/linked_views.py +0 -0
  352. {solara-1.6.0 → solara-1.7.0}/solara/website/pages/examples/visualization/plotly.py +0 -0
  353. {solara-1.6.0 → solara-1.7.0}/solara/website/public/beach.jpeg +0 -0
  354. {solara-1.6.0 → solara-1.7.0}/solara/website/public/docs/anatomy.png +0 -0
  355. {solara-1.6.0 → solara-1.7.0}/solara/website/public/docs/reacton-basics.png +0 -0
  356. {solara-1.6.0 → solara-1.7.0}/solara/website/public/docs/solara-stack.png +0 -0
  357. {solara-1.6.0 → solara-1.7.0}/solara/website/public/hero.png +0 -0
  358. {solara-1.6.0 → solara-1.7.0}/solara/website/public/landing/complexity.png +0 -0
  359. {solara-1.6.0 → solara-1.7.0}/solara/website/public/landing/python-love-react.png +0 -0
  360. {solara-1.6.0 → solara-1.7.0}/solara/website/public/landing/what.png +0 -0
  361. {solara-1.6.0 → solara-1.7.0}/solara/website/public/quickstart-notebook.png +0 -0
  362. {solara-1.6.0 → solara-1.7.0}/solara/website/templates/index.html.j2 +0 -0
  363. {solara-1.6.0 → solara-1.7.0}/solara/website/utils.py +0 -0
  364. {solara-1.6.0 → solara-1.7.0}/solara/widgets/__init__.py +0 -0
  365. {solara-1.6.0 → solara-1.7.0}/solara/widgets/vue/gridlayout.vue +0 -0
  366. {solara-1.6.0 → solara-1.7.0}/solara/widgets/vue/html.vue +0 -0
  367. {solara-1.6.0 → solara-1.7.0}/solara/widgets/vue/navigator.vue +0 -0
  368. {solara-1.6.0 → solara-1.7.0}/solara/widgets/vue/vegalite.vue +0 -0
  369. {solara-1.6.0 → solara-1.7.0}/tests/__init__.py +0 -0
  370. {solara-1.6.0 → solara-1.7.0}/tests/conftest.py +0 -0
  371. {solara-1.6.0 → solara-1.7.0}/tests/integration/__init__.py +0 -0
  372. {solara-1.6.0 → solara-1.7.0}/tests/integration/app_widget.py +0 -0
  373. {solara-1.6.0 → solara-1.7.0}/tests/integration/cmdline_test.py +0 -0
  374. {solara-1.6.0 → solara-1.7.0}/tests/integration/conftest.py +0 -0
  375. {solara-1.6.0 → solara-1.7.0}/tests/integration/create_test.py +0 -0
  376. {solara-1.6.0 → solara-1.7.0}/tests/integration/error_test.py +0 -0
  377. {solara-1.6.0 → solara-1.7.0}/tests/integration/file_download_test.py +0 -0
  378. {solara-1.6.0 → solara-1.7.0}/tests/integration/markdown_test.py +0 -0
  379. {solara-1.6.0 → solara-1.7.0}/tests/integration/reload_test.py +0 -0
  380. {solara-1.6.0 → solara-1.7.0}/tests/integration/router_test.py +0 -0
  381. {solara-1.6.0 → solara-1.7.0}/tests/integration/server_test.py +0 -0
  382. {solara-1.6.0 → solara-1.7.0}/tests/integration/ssg_test.py +0 -0
  383. {solara-1.6.0 → solara-1.7.0}/tests/integration/test.vue +0 -0
  384. {solara-1.6.0 → solara-1.7.0}/tests/integration/testapp.py +0 -0
  385. {solara-1.6.0 → solara-1.7.0}/tests/unit/__init__.py +0 -0
  386. {solara-1.6.0 → solara-1.7.0}/tests/unit/app_test.py +0 -0
  387. {solara-1.6.0 → solara-1.7.0}/tests/unit/applayout_test.py +0 -0
  388. {solara-1.6.0 → solara-1.7.0}/tests/unit/autorouting_test.py +0 -0
  389. {solara-1.6.0 → solara-1.7.0}/tests/unit/cache_test.py +0 -0
  390. {solara-1.6.0 → solara-1.7.0}/tests/unit/cdn_helper_test.py +0 -0
  391. {solara-1.6.0 → solara-1.7.0}/tests/unit/common.py +0 -0
  392. {solara-1.6.0 → solara-1.7.0}/tests/unit/conftest.py +0 -0
  393. {solara-1.6.0 → solara-1.7.0}/tests/unit/cross_filter_component_test.py +0 -0
  394. {solara-1.6.0 → solara-1.7.0}/tests/unit/cross_filter_test.py +0 -0
  395. {solara-1.6.0 → solara-1.7.0}/tests/unit/dataframe_test.py +0 -0
  396. {solara-1.6.0 → solara-1.7.0}/tests/unit/datatable_test.py +0 -0
  397. {solara-1.6.0 → solara-1.7.0}/tests/unit/express_test.py +0 -0
  398. {solara-1.6.0 → solara-1.7.0}/tests/unit/file_browser_test.py +0 -0
  399. {solara-1.6.0 → solara-1.7.0}/tests/unit/file_download_test.py +0 -0
  400. {solara-1.6.0 → solara-1.7.0}/tests/unit/hooks_test.py +0 -0
  401. {solara-1.6.0 → solara-1.7.0}/tests/unit/lab/__init__.py +0 -0
  402. {solara-1.6.0 → solara-1.7.0}/tests/unit/lab/toestand_test.py +0 -0
  403. {solara-1.6.0 → solara-1.7.0}/tests/unit/matplotlib_test.py +0 -0
  404. {solara-1.6.0 → solara-1.7.0}/tests/unit/patch_test.py +0 -0
  405. {solara-1.6.0 → solara-1.7.0}/tests/unit/pivottable_test.py +0 -0
  406. {solara-1.6.0 → solara-1.7.0}/tests/unit/router_test.py +0 -0
  407. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/__init__.py +0 -0
  408. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/food/__init__.py +0 -0
  409. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/food/food.py +0 -0
  410. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/food/index.py +0 -0
  411. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/01-home.py +0 -0
  412. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/02-my_fruit.py +0 -0
  413. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/03-some-markdown.md +0 -0
  414. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/04-a_directory/00-another-markdown.md +0 -0
  415. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/04-a_directory/01-not-an-app.py +0 -0
  416. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/04-a_directory/__init__.py +0 -0
  417. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/05-and-notebooks.ipynb +0 -0
  418. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/10-single-file-directory/single-file.md +0 -0
  419. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/99-some_other_python_script.py +0 -0
  420. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage/some_other_file.txt +0 -0
  421. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage-widgets/00-overview.md +0 -0
  422. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage-widgets/01-views.py +0 -0
  423. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage-widgets/02-likes.py +0 -0
  424. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage-widgets/03-volume.py +0 -0
  425. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/multipage-widgets/04-color.ipynb +0 -0
  426. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/notebookapp_component.ipynb +0 -0
  427. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/notebookapp_element.ipynb +0 -0
  428. {solara-1.6.0 → solara-1.7.0}/tests/unit/solara_test_apps/notebookapp_widget.ipynb +0 -0
  429. {solara-1.6.0 → solara-1.7.0}/tests/unit/telemetry_tests.py +0 -0
  430. {solara-1.6.0 → solara-1.7.0}/tsconfigbase.json +0 -0
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 1.6.0
2
+ current_version = 1.7.0
3
3
  commit = True
4
4
  tag = True
5
5
  parse = (?P<major>\d+)(\.(?P<minor>\d+))(\.(?P<patch>\d+))((?P<release>.)(?P<build>\d+))?
@@ -10,13 +10,13 @@ repos:
10
10
  rev: 22.12.0
11
11
  hooks:
12
12
  - id: black
13
- - repo: https://gitlab.com/pycqa/flake8
13
+ - repo: https://github.com/PyCQA/flake8
14
14
  rev: 4.0.1
15
15
  hooks:
16
16
  - id: flake8
17
17
  additional_dependencies: [flake8-print]
18
18
  - repo: https://github.com/PyCQA/isort
19
- rev: 5.10.1
19
+ rev: 5.11.5
20
20
  hooks:
21
21
  - id: isort
22
22
  files: \.py$
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: solara
3
- Version: 1.6.0
3
+ Version: 1.7.0
4
4
  Summary: Build webapps using IPywidgets
5
5
  Author-email: "Maarten A. Breddels" <maartenbreddels@gmail.com>
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -33,7 +33,7 @@ Requires-Dist: jupyter_client>=7.0.0
33
33
  Requires-Dist: watchdog
34
34
  Requires-Dist: requests
35
35
  Requires-Dist: pygments==2.10; python_version < '3.7'
36
- Requires-Dist: solara-assets==1.6.0 ; extra == "assets"
36
+ Requires-Dist: solara-assets==1.7.0 ; extra == "assets"
37
37
  Requires-Dist: flake8 ; extra == "dev"
38
38
  Requires-Dist: bqplot ; extra == "dev"
39
39
  Requires-Dist: bqplot-image-gl ; extra == "dev"
@@ -1,2 +1,2 @@
1
1
  "CDN assets for Solara"
2
- __version__ = "1.6.0"
2
+ __version__ = "1.7.0"
@@ -11,7 +11,7 @@ license = {file = "LICENSE"}
11
11
  classifiers = ["License :: Free for non-commercial use"]
12
12
  dynamic = ["version", "description"]
13
13
  dependencies = [
14
- "solara==1.6.0",
14
+ "solara==1.7.0",
15
15
  ]
16
16
 
17
17
  ssg = [
@@ -1,2 +1,2 @@
1
1
  "Enterprise features for Solara"
2
- __version__ = "1.6.0"
2
+ __version__ = "1.7.0"
@@ -78,7 +78,7 @@ dev = [
78
78
  "pytest-playwright; python_version > '3.6'",
79
79
  ]
80
80
  assets = [
81
- "solara-assets==1.6.0"
81
+ "solara-assets==1.7.0"
82
82
  ]
83
83
  flask = [
84
84
  "flask",
@@ -7,14 +7,14 @@
7
7
  ## Making an alpha release
8
8
 
9
9
 
10
- $ ./release.sh patch --new-version 1.6.0a1
10
+ $ ./release.sh patch --new-version 1.7.0a1
11
11
 
12
12
 
13
13
  # semi automated
14
14
  To make a new release
15
15
  ```
16
16
  # update solara/__init__.py
17
- $ git add -u && git commit -m 'Release v1.6.0' && git tag v1.6.0 && git push upstream master v1.6.0
17
+ $ git add -u && git commit -m 'Release v1.7.0' && git tag v1.7.0 && git push upstream master v1.7.0
18
18
  ```
19
19
 
20
20
 
@@ -22,5 +22,5 @@ If a problem happens, and you want to keep the history clean
22
22
  ```
23
23
  # do fix
24
24
  $ git rebase -i HEAD~3
25
- $ git tag v1.6.0 -f && git push upstream master v1.6.0 -f
25
+ $ git tag v1.7.0 -f && git push upstream master v1.7.0 -f
26
26
  ```
@@ -1,5 +1,5 @@
1
1
  """Build webapps using IPywidgets"""
2
- __version__ = "1.6.0"
2
+ __version__ = "1.7.0"
3
3
  github_url = "https://github.com/widgetti/solara"
4
4
  git_branch = "master"
5
5
 
@@ -35,6 +35,7 @@ from reacton import (
35
35
  use_state,
36
36
  use_state_widget,
37
37
  ) # noqa: F403, F401
38
+ from reacton.core import Element # noqa: F403, F401
38
39
  from . import util
39
40
 
40
41
  # flake8: noqa: F402
@@ -3,6 +3,7 @@ import importlib
3
3
  import inspect
4
4
  import pkgutil
5
5
  import re
6
+ import warnings
6
7
  from pathlib import Path
7
8
  from types import ModuleType
8
9
  from typing import Any, Callable, List, Optional, cast
@@ -356,7 +357,7 @@ def generate_routes(module: ModuleType) -> List[solara.Route]:
356
357
  raise KeyError(f"Route {k!r} listen in route_order not found in {module}")
357
358
  routes = [lookup[k] for k in route_order]
358
359
  if set(lookup) - set(route_order):
359
- raise KeyError(f"Some routes are not in route_order: {set(lookup) - set(route_order)}")
360
+ warnings.warn(f"Some routes are not in route_order: {set(lookup) - set(route_order)}")
360
361
 
361
362
  else:
362
363
  children = getattr(module, "routes", [])
@@ -62,7 +62,7 @@ def get_server_python_executable(silent: bool = False):
62
62
 
63
63
 
64
64
  libraries_minimal = [
65
- {"python": "ipyvuetify", "classic": "jupyter-vuetify/extension", "lab": "jupyter-vuetify2"},
65
+ {"python": "ipyvuetify", "classic": "jupyter-vuetify/extension", "lab": "jupyter-vuetify"},
66
66
  {"python": "ipyvue", "classic": "jupyter-vue/extension", "lab": "jupyter-vue"},
67
67
  ]
68
68
 
@@ -218,7 +218,7 @@ def AppLayout(
218
218
 
219
219
  title = t.use_title_get() or title
220
220
 
221
- show_app_bar = title or routes or children_appbar or use_drawer
221
+ show_app_bar = title or (routes and navigation) or children_appbar or use_drawer
222
222
  if not show_app_bar and not children_sidebar and len(children) == 1:
223
223
  return children[0]
224
224
  if embedded_mode and not fullscreen:
@@ -315,7 +315,7 @@ def CrossFilterSlider(
315
315
 
316
316
 
317
317
  @solara.component
318
- def CrossFilterDataFrame(df, column_actions: List[ColumnAction] = [], cell_actions: List[CellAction] = []):
318
+ def CrossFilterDataFrame(df, items_per_page=20, column_actions: List[ColumnAction] = [], cell_actions: List[CellAction] = [], scrollable=False):
319
319
  """Display a DataFrame with filters applied from the cross filter.
320
320
 
321
321
  This component wraps [DataFrame](/api/dataframe).
@@ -333,4 +333,4 @@ def CrossFilterDataFrame(df, column_actions: List[ColumnAction] = [], cell_actio
333
333
  filter, set_filter = solara.use_cross_filter(id(df), "dataframe")
334
334
  if filter is not None:
335
335
  dff = df[filter]
336
- return solara.DataFrame(dff)
336
+ return solara.DataFrame(dff, items_per_page=items_per_page, scrollable=scrollable, column_actions=column_actions, cell_actions=cell_actions)
@@ -0,0 +1,220 @@
1
+ import dataclasses
2
+ import math
3
+ import os
4
+ from dataclasses import replace
5
+ from typing import Callable, List, Optional
6
+
7
+ import ipyvuetify as v
8
+ import ipywidgets
9
+ import traitlets
10
+
11
+ import solara
12
+ import solara.hooks.dataframe
13
+ import solara.lab
14
+ from solara.lab.hooks.dataframe import use_df_column_names
15
+ from solara.lab.utils.dataframe import df_type
16
+
17
+ from .. import CellAction, ColumnAction
18
+
19
+
20
+ def _ensure_dict(d):
21
+ if dataclasses.is_dataclass(d):
22
+ return dataclasses.asdict(d)
23
+ return d
24
+
25
+
26
+ def _drop_keys_from_list_of_mappings(drop):
27
+ def closure(list_of_dicts, widget):
28
+ return [{k: v for k, v in _ensure_dict(d).items() if k not in drop} for d in list_of_dicts]
29
+
30
+ return closure
31
+
32
+
33
+ class DataTableWidget(v.VuetifyTemplate):
34
+ template_file = os.path.realpath(os.path.join(os.path.dirname(__file__), "datatable.vue"))
35
+
36
+ total_length = traitlets.CInt().tag(sync=True)
37
+ checked = traitlets.List([]).tag(sync=True) # indices of which rows are selected
38
+ column_actions = traitlets.List(trait=traitlets.Instance(ColumnAction), default_value=[]).tag(
39
+ sync=True, to_json=_drop_keys_from_list_of_mappings(["on_click"])
40
+ )
41
+ _column_actions_callbacks = traitlets.List(trait=traitlets.Callable(), default_value=[])
42
+ cell_actions = traitlets.List(trait=traitlets.Instance(CellAction), default_value=[]).tag(sync=True, to_json=_drop_keys_from_list_of_mappings(["on_click"]))
43
+ _cell_actions_callbacks = traitlets.List(trait=traitlets.Callable(), default_value=[])
44
+ items = traitlets.Any().tag(sync=True) # the data, a list of dict
45
+ headers = traitlets.Any().tag(sync=True)
46
+ headers_selections = traitlets.Any().tag(sync=True)
47
+ options = traitlets.Any().tag(sync=True)
48
+ items_per_page = traitlets.CInt(11).tag(sync=True)
49
+ selections = traitlets.Any([]).tag(sync=True)
50
+ selection_colors = traitlets.Any([]).tag(sync=True)
51
+ selection_enabled = traitlets.Bool(True).tag(sync=True)
52
+ highlighted = traitlets.Int(None, allow_none=True).tag(sync=True)
53
+ scrollable = traitlets.Bool(False).tag(sync=True)
54
+
55
+ # for use with scrollable, when used in the default UI
56
+ height = traitlets.Unicode(None, allow_none=True).tag(sync=True)
57
+
58
+ hidden_components = traitlets.List([]).tag(sync=False)
59
+ column_header_hover = traitlets.Unicode(allow_none=True).tag(sync=True)
60
+ column_header_widget = traitlets.Any(allow_none=True).tag(sync=True, **ipywidgets.widget_serialization)
61
+
62
+ def vue_on_column_action(self, data):
63
+ header_value, action_index = data
64
+ on_click = self._column_actions_callbacks[action_index]
65
+ if on_click:
66
+ on_click(header_value)
67
+
68
+ def vue_on_cell_action(self, data):
69
+ row, header_value, action_index = data
70
+ on_click = self._cell_actions_callbacks[action_index]
71
+ if on_click:
72
+ on_click(header_value, row)
73
+
74
+
75
+ def format_default(df, column, row_index, value):
76
+ if isinstance(value, float) and math.isnan(value):
77
+ return "NaN"
78
+ return str(value)
79
+
80
+
81
+ @solara.component
82
+ def DataTable(
83
+ df,
84
+ page=0,
85
+ items_per_page=20,
86
+ format=None,
87
+ column_actions: List[ColumnAction] = [],
88
+ cell_actions: List[CellAction] = [],
89
+ scrollable=False,
90
+ on_column_header_hover: Optional[Callable[[Optional[str]], None]] = None,
91
+ column_header_info: Optional[solara.Element] = None,
92
+ ):
93
+ total_length = len(df)
94
+ options = {"descending": False, "page": page + 1, "itemsPerPage": items_per_page, "sortBy": [], "totalItems": total_length}
95
+ options, set_options = solara.use_state(options, key="options")
96
+ format = format or format_default
97
+ # frontend does 1 base, we use 0 based
98
+ page = options["page"] - 1
99
+ items_per_page = options["itemsPerPage"]
100
+ i1 = page * items_per_page
101
+ i2 = min(total_length, (page + 1) * items_per_page)
102
+
103
+ columns = use_df_column_names(df)
104
+
105
+ items = []
106
+ column_data = {}
107
+ dfs = df[i1:i2]
108
+
109
+ if df_type(df) == "pandas":
110
+ column_data = dfs[columns].to_dict("records")
111
+ else:
112
+ column_data = dfs[columns].to_records()
113
+ for i in range(i2 - i1):
114
+ item = {"__row__": i + i1} # special key for the row number
115
+ for column in columns:
116
+ item[column] = format(dfs, column, i + i1, column_data[i][column])
117
+ items.append(item)
118
+
119
+ headers = [{"text": name, "value": name, "sortable": False} for name in columns]
120
+ column_actions_callbacks = [k.on_click for k in column_actions]
121
+ cell_actions_callbacks = [k.on_click for k in cell_actions]
122
+ column_actions = [replace(k, on_click=None) for k in column_actions]
123
+ cell_actions = [replace(k, on_click=None) for k in cell_actions]
124
+
125
+ return DataTableWidget.element(
126
+ total_length=total_length,
127
+ items=items,
128
+ headers=headers,
129
+ headers_selections=[],
130
+ options=options,
131
+ items_per_page=items_per_page,
132
+ selections=[],
133
+ selection_colors=[],
134
+ selection_enabled=False,
135
+ highlighted=None,
136
+ scrollable=scrollable,
137
+ on_options=set_options,
138
+ column_actions=column_actions,
139
+ cell_actions=cell_actions,
140
+ _column_actions_callbacks=column_actions_callbacks,
141
+ _cell_actions_callbacks=cell_actions_callbacks,
142
+ on_column_header_hover=on_column_header_hover,
143
+ column_header_widget=column_header_info,
144
+ )
145
+
146
+
147
+ @solara.component
148
+ def DataFrame(
149
+ df,
150
+ items_per_page=20,
151
+ column_actions: List[ColumnAction] = [],
152
+ cell_actions: List[CellAction] = [],
153
+ scrollable=False,
154
+ on_column_header_hover: Optional[Callable[[Optional[str]], None]] = None,
155
+ column_header_info: Optional[solara.Element] = None,
156
+ ):
157
+ """Displays a Pandas dataframe in a table.
158
+
159
+ Pass in a dataframe as first argument, and optionally how many items per page to display.
160
+
161
+ ```solara
162
+ import solara
163
+ import pandas as pd
164
+ import plotly
165
+
166
+ df = plotly.data.iris()
167
+
168
+ @solara.component
169
+ def Page():
170
+ solara.DataFrame(df, items_per_page=5)
171
+
172
+ ```
173
+
174
+ # Custom column header info
175
+
176
+ Use the `column_header_info` argument to display a custom component on the column header when
177
+ the user hover above it. In this case we display the value counts for the column.
178
+
179
+ ```solara
180
+ import solara
181
+ import pandas as pd
182
+ import plotly
183
+
184
+ df = plotly.data.iris()
185
+
186
+ @solara.component
187
+ def Page():
188
+ column_hover, set_column_hover = solara.use_state(None)
189
+
190
+ with solara.Column(margin=4) as column_header_info:
191
+ if column_hover:
192
+ solara.Text("Value counts for " + column_hover)
193
+ display(df[column_hover].value_counts())
194
+ # if no column is hovered above, we provide an empty container
195
+ # so we always see the triple dot icon on the column header
196
+
197
+ solara.DataFrame(df, column_header_info=column_header_info, on_column_header_hover=set_column_hover)
198
+ ```
199
+
200
+
201
+ ## Arguments
202
+
203
+ * `df` - `DataFrame` - a Pandas dataframe.
204
+ * `items_per_page` - `int` - number of items per page.
205
+ * `column_actions` - Triggered via clicking on the triple dot icon on the headers (visible when hovering).
206
+ * `cell_actions` - Triggered via clicking on the triple dot icon in the cell (visible when hovering).
207
+ * `on_column_header_hover` - Optional callback when the user hovers over the triple dot icon on a header.
208
+ * `column_header_info` - Element to display in the column menu popup (visible when hovering), provide an
209
+ empty container element (like [Column](/api/column)) to force showing the trigle dot icon (see example).
210
+
211
+ """
212
+ return DataTable(
213
+ df,
214
+ items_per_page=items_per_page,
215
+ column_actions=column_actions,
216
+ cell_actions=cell_actions,
217
+ scrollable=scrollable,
218
+ on_column_header_hover=on_column_header_hover,
219
+ column_header_info=column_header_info,
220
+ )
@@ -0,0 +1,175 @@
1
+ <template>
2
+ <v-slide-x-transition appear>
3
+ <div class="solara-data-table__viewport">
4
+ <v-data-table dense hide-default-header :headers="[...headers]" :items="items"
5
+ :footer-props="{ 'items-per-page-options': [10, 20, 50, 100] }" :options.sync="options"
6
+ :items_per_page.sync="items_per_page" :server-items-length="total_length" :class="[
7
+ 'elevation-1',
8
+ 'solara-data-table',
9
+ scrollable && 'solara-data-table--scrollable',
10
+ ]" :style="scrollable && height != null && `height: ${height}`">
11
+ <template v-slot:header="props">
12
+ <thead>
13
+ <tr>
14
+ <th style="padding: 0 10px; width: 40px">#</th>
15
+ <th style="padding: 0 1px; width: 30px" v-if="selection_enabled">
16
+ <v-btn icon color="primary" text small @click="apply_filter">
17
+ <v-icon>filter_list</v-icon>
18
+ </v-btn>
19
+ </th>
20
+ <th style="padding: 0 1px" v-for="(header, index) in headers_selections" :key="header.text">
21
+ <v-icon style="padding: 0 1px" :key="index" :color="selection_colors[index]">brightness_1</v-icon>
22
+ </th>
23
+ <v-slide-x-transition :key="header.text" v-for="header in headers">
24
+ <th class="text-no-wrap">
25
+ {{ header.text }}
26
+ <v-menu open-on-hover bottom offset-y @input="isOpen => onHeaderHover({ isOpen, header })"
27
+ v-if="(column_actions && column_actions.length) || column_header_widget">
28
+ <template v-slot:activator="{ on, attrs }">
29
+ <v-icon v-bind="attrs" v-on="on" small class="solara-data-table-menu">mdi-dots-vertical</v-icon>
30
+ </template>
31
+ <v-sheet v-if="header.value === column_header_hover" class="solara-data-table-column-header-sheet">
32
+ <jupyter-widget v-if="column_header_widget" :widget="column_header_widget"></jupyter-widget>
33
+ </v-sheet>
34
+ <v-list v-if="column_actions && column_actions.length">
35
+ <v-subheader>Actions:</v-subheader>
36
+ <v-list-item link @click="on_column_action([header.value, index])"
37
+ v-for="(action, index) in column_actions" :key="index">
38
+ <v-list-item-icon><v-icon>{{ action.icon }}</v-icon></v-list-item-icon>
39
+ <v-list-item-title>{{ action.name }}</v-list-item-title>
40
+ </v-list-item>
41
+ </v-list>
42
+ </v-menu>
43
+ </th>
44
+ </v-slide-x-transition>
45
+ </tr>
46
+ </thead>
47
+ </template>
48
+ <template v-slot:item="props">
49
+ <!-- @click="on_row_clicked(props.item.__row__)" -->
50
+ <tr :class="{ highlightedRow: props.item.__row__ === highlighted }">
51
+ <td style="padding: 0 10px" class="text-xs-left">
52
+ <i>{{ props.item.__row__ }}</i>
53
+ </td>
54
+ <td style="padding: 0 1px" class="text-xs-left" v-if="selection_enabled">
55
+ <v-checkbox hide-details style="margin-top: 0; padding-top: 0"
56
+ :input-value="checked.indexOf(props.item.__row__) != -1" :key="props.item.__row__"
57
+ @change="(value) => select({ checked: value, row: props.item.__row__ })" />
58
+ </td>
59
+ <td style="padding: 0 1px" :key="header.text" v-for="(header, index) in headers_selections">
60
+ <v-fade-transition leave-absolute>
61
+ <v-icon v-if="props.item[header.value]" v-model="props.item[header.value]"
62
+ :color="selection_colors[index]">brightness_1</v-icon>
63
+ </v-fade-transition>
64
+ </td>
65
+ <td v-for="header in headers" class="text-truncate text-no-wrap" :key="header.text"
66
+ :title="props.item[header.value]">
67
+ <v-slide-x-transition appear>
68
+ <!-- <span @click="on_item_click([props.item.__row__, header.value])">{{ props.item[header.value] }}</span> -->
69
+ <span>
70
+ {{ props.item[header.value] }}
71
+ <v-menu open-on-hover bottom offset-y v-if="cell_actions.length">
72
+ <template v-slot:activator="{ on, attrs }">
73
+ <v-icon v-bind="attrs" v-on="on" small class="solara-data-table-menu">mdi-dots-vertical</v-icon>
74
+ </template>
75
+ <v-list v-for="(action, index) in cell_actions" :key="index">
76
+ <v-list-item link @click="on_cell_action([props.item.__row__, header.value, index])">
77
+ <v-list-item-icon><v-icon>{{ action.icon }}</v-icon></v-list-item-icon>
78
+ <v-list-item-title>{{ action.name }}</v-list-item-title>
79
+ </v-list-item>
80
+ </v-list>
81
+ </v-menu>
82
+ </span>
83
+
84
+ </v-slide-x-transition>
85
+ </td>
86
+ </tr>
87
+ </template>
88
+ </v-data-table>
89
+ </div>
90
+ </v-slide-x-transition>
91
+ </template>
92
+
93
+ <script>
94
+ module.exports = {
95
+ methods: {
96
+ onHeaderHover({ header, isOpen }) {
97
+ if (isOpen) {
98
+ // if isOpen is true, we clicked, and we set it header.value
99
+ this.column_header_hover = header.value
100
+ } else {
101
+ // if false, we only 'unset' if the current header equals the current open menu
102
+ // because sometimes the menu from another column is closed after opening the new one
103
+ if (this.column_header_hover == header.value) {
104
+ this.column_header_hover = null
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ </script>
111
+ <style id="solara_table">
112
+ .highlightedRow {
113
+ background-color: #e3f2fd;
114
+ }
115
+
116
+ .solara-data-table table {
117
+ table-layout: fixed;
118
+ }
119
+
120
+ .solara-data-table--scrollable .v-data-table__wrapper {
121
+ overflow-y: auto;
122
+ height: calc(100% - 59px);
123
+ }
124
+
125
+ .solara-data-table--scrollable thead>tr {
126
+ position: sticky;
127
+ top: 0;
128
+ }
129
+
130
+ .solara-data-table--scrollable .v-data-table__wrapper,
131
+ .solara-data-table--scrollable .v-data-table__wrapper>table,
132
+ .solara-data-table--scrollable .v-data-table__wrapper>table thead,
133
+ .solara-data-table--scrollable .v-data-table__wrapper>table thead * {
134
+ background-color: inherit;
135
+ }
136
+
137
+ /* prevent checkboxes overlaying the table header */
138
+ .solara-data-table--scrollable .v-data-table__wrapper>table thead {
139
+ position: relative;
140
+ z-index: 1;
141
+ }
142
+
143
+ /* avoid margins to collapse, to avoid a white background */
144
+ .solara-data-table-column-header-sheet {
145
+ overflow: auto;
146
+ }
147
+
148
+ .solara-data-table.v-data-table th,
149
+ .solara-data-table.v-data-table td {
150
+ padding-left: 4px;
151
+ padding-right: 0;
152
+ }
153
+
154
+ .v-data-table .solara-data-table-menu {
155
+ opacity: 0;
156
+ transition: opacity 0.5s;
157
+ }
158
+
159
+ .v-data-table th:hover .solara-data-table-menu,
160
+ .v-data-table td:hover .solara-data-table-menu {
161
+ opacity: 1;
162
+ }
163
+
164
+ .solara-data-table__viewport {
165
+ overflow-x: auto;
166
+ width: 100%;
167
+ max-height: 100%;
168
+ }
169
+
170
+ .solara-data-table.v-data-table,
171
+ .solara-data-table.v-data-table table {
172
+ max-width: unset;
173
+ width: unset;
174
+ }
175
+ </style>
@@ -88,3 +88,8 @@ div.highlight {
88
88
  .solara-image {
89
89
  cursor: unset !important;
90
90
  }
91
+
92
+
93
+ .jp-OutputArea-prompt {
94
+ display: none;
95
+ }
@@ -119,7 +119,7 @@ async def main():
119
119
  ]
120
120
  for dep in requirements:
121
121
  await micropip.install(dep, keep_going=True)
122
- await micropip.install("/wheels/solara-1.6.0-py2.py3-none-any.whl", keep_going=True)
122
+ await micropip.install("/wheels/solara-1.7.0-py2.py3-none-any.whl", keep_going=True)
123
123
  import solara
124
124
 
125
125
  el = solara.Warning("lala")
@@ -38,7 +38,6 @@ a:link {
38
38
  color: var(--color-primary);
39
39
  }
40
40
 
41
- pre,
42
41
  .jp-RenderedHTMLCommon pre {
43
42
  background-color: var(--color-grey-light);
44
43
  display: block;
@@ -81,7 +81,9 @@ def Layout(children=[]):
81
81
  return children[0]
82
82
  with solara.VBox(grow=False) as main:
83
83
  Title(title="Solara documentation")
84
- solara.Meta(property="twitter:site", content="@solara_dev" + router.path)
84
+ solara.Meta(name="twitter:card", content="summary_large_image")
85
+ solara.Meta(name="twitter:site", content="@solara_dev")
86
+ solara.Meta(name="twitter:image", content="https://solara.dev/static/assets/images/logo-small.png")
85
87
  solara.Meta(property="og:url", content="https://solara.dev" + router.path)
86
88
  solara.Meta(property="og:image", content="https://solara.dev/static/assets/images/logo-small.png")
87
89
  solara.Meta(property="og:type", content="website")
@@ -101,7 +103,9 @@ def Layout(children=[]):
101
103
  description = "Use ipywidgets with Solara to build powerful and scalable web apps for Jupyter and production in Python."
102
104
  # both tags in one
103
105
  solara.Meta(name="description", property="og:description", content=description)
106
+ solara.Meta(name="twitter:description", content=description)
104
107
  solara.Meta(property="og:title", content="Solara documentation")
108
+ solara.Meta(name="twitter:title", content="Solara documentation")
105
109
 
106
110
  with rv.Row(class_="ma-2"):
107
111
  with rv.Col(md=4, offset_md=2, sm=5, offset_sm=1):
@@ -5,18 +5,12 @@
5
5
 
6
6
  from typing import Any, Dict, Optional, cast
7
7
 
8
- from solara.website.utils import apidoc
8
+ import plotly
9
9
 
10
- try:
11
- import vaex
12
- except ImportError:
13
- vaex = None
14
10
  import solara
11
+ from solara.website.utils import apidoc
15
12
 
16
- if vaex is not None:
17
- df = vaex.datasets.titanic()
18
- else:
19
- df = None
13
+ df = plotly.data.iris()
20
14
 
21
15
 
22
16
  @solara.component
@@ -32,21 +26,19 @@ def Page():
32
26
 
33
27
  column_actions = [solara.ColumnAction(icon="mdi-sunglasses", name="User column action", on_click=on_action_column)]
34
28
  cell_actions = [solara.CellAction(icon="mdi-white-balance-sunny", name="User cell action", on_click=on_action_cell)]
35
- with solara.Div() as main:
36
- solara.MarkdownIt(
37
- f"""
38
- ## Demo
29
+ solara.MarkdownIt(
30
+ f"""
31
+ ## Demo
39
32
 
40
- Below we show display the titanic dataset, and demonstrate a user colum and cell action. Try clicking on the triple icon when hovering
41
- above a column or cell. And see the following values changes:
33
+ Below we show display the titanic dataset, and demonstrate a user colum and cell action. Try clicking on the triple icon when hovering
34
+ above a column or cell. And see the following values changes:
42
35
 
43
- * Column action on: `{column}`
44
- * Cell action on: `{cell}`
36
+ * Column action on: `{column}`
37
+ * Cell action on: `{cell}`
45
38
 
46
- """
47
- )
48
- solara.DataFrame(df, column_actions=column_actions, cell_actions=cell_actions)
49
- return main
39
+ """
40
+ )
41
+ solara.DataFrame(df, column_actions=column_actions, cell_actions=cell_actions)
50
42
 
51
43
 
52
44
  __doc__ += apidoc(solara.DataFrame.f) # type: ignore