figpack 0.4.3__tar.gz → 0.4.4__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 (90) hide show
  1. {figpack-0.4.3/figpack.egg-info → figpack-0.4.4}/PKG-INFO +3 -1
  2. {figpack-0.4.3 → figpack-0.4.4}/figpack/__init__.py +1 -1
  3. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_bundle_utils.py +3 -1
  4. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_figure_spec.py +2 -2
  5. figpack-0.4.4/figpack/figpack-figure-dist/assets/index-BdXsZMUB.css +1 -0
  6. figpack-0.4.4/figpack/figpack-figure-dist/assets/index-I4MhhmZQ.js +398 -0
  7. {figpack-0.4.3 → figpack-0.4.4}/figpack/figpack-figure-dist/index.html +2 -2
  8. {figpack-0.4.3 → figpack-0.4.4/figpack.egg-info}/PKG-INFO +3 -1
  9. {figpack-0.4.3 → figpack-0.4.4}/figpack.egg-info/SOURCES.txt +2 -2
  10. {figpack-0.4.3 → figpack-0.4.4}/figpack.egg-info/requires.txt +2 -0
  11. {figpack-0.4.3 → figpack-0.4.4}/pyproject.toml +3 -1
  12. {figpack-0.4.3 → figpack-0.4.4}/tests/test_figure_spec.py +11 -3
  13. figpack-0.4.3/figpack/figpack-figure-dist/assets/index-DI9hPTUe.js +0 -398
  14. figpack-0.4.3/figpack/figpack-figure-dist/assets/index-oS-16pKZ.css +0 -1
  15. {figpack-0.4.3 → figpack-0.4.4}/LICENSE +0 -0
  16. {figpack-0.4.3 → figpack-0.4.4}/MANIFEST.in +0 -0
  17. {figpack-0.4.3 → figpack-0.4.4}/README.md +0 -0
  18. {figpack-0.4.3 → figpack-0.4.4}/figpack/cli.py +0 -0
  19. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/__init__.py +0 -0
  20. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_figure_utils.py +0 -0
  21. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_file_handler.py +0 -0
  22. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_patch_figure.py +0 -0
  23. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_remix_figure.py +0 -0
  24. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_remix_patch.py +0 -0
  25. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_revert_patch_figure.py +0 -0
  26. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_save_figure.py +0 -0
  27. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_server_manager.py +0 -0
  28. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_show_view.py +0 -0
  29. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_upload_bundle.py +0 -0
  30. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_view_figure.py +0 -0
  31. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/_zarr_consolidate.py +0 -0
  32. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/config.py +0 -0
  33. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/extension_view.py +0 -0
  34. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/figpack_extension.py +0 -0
  35. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/figpack_view.py +0 -0
  36. {figpack-0.4.3 → figpack-0.4.4}/figpack/core/zarr.py +0 -0
  37. {figpack-0.4.3 → figpack-0.4.4}/figpack/extensions.py +0 -0
  38. {figpack-0.4.3 → figpack-0.4.4}/figpack/figpack-figure-dist/assets/neurosift-logo-CLsuwLMO.png +0 -0
  39. {figpack-0.4.3 → figpack-0.4.4}/figpack/utils/__init__.py +0 -0
  40. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Box.py +0 -0
  41. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/CaptionedView.py +0 -0
  42. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/DataFrame.py +0 -0
  43. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Gallery.py +0 -0
  44. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/GalleryItem.py +0 -0
  45. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Iframe.py +0 -0
  46. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Image.py +0 -0
  47. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/LayoutItem.py +0 -0
  48. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Markdown.py +0 -0
  49. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/MatplotlibFigure.py +0 -0
  50. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/MountainLayout.py +0 -0
  51. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/MountainLayoutItem.py +0 -0
  52. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/MultiChannelTimeseries.py +0 -0
  53. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/PlotlyExtension/PlotlyExtension.py +0 -0
  54. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/PlotlyExtension/__init__.py +0 -0
  55. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/PlotlyExtension/_plotly_extension.py +0 -0
  56. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/PlotlyExtension/plotly_view.js +0 -0
  57. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Spectrogram.py +0 -0
  58. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/Splitter.py +0 -0
  59. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/TabLayout.py +0 -0
  60. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/TabLayoutItem.py +0 -0
  61. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/TimeseriesGraph.py +0 -0
  62. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/VerticalLayout.py +0 -0
  63. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/VerticalLayoutItem.py +0 -0
  64. {figpack-0.4.3 → figpack-0.4.4}/figpack/views/__init__.py +0 -0
  65. {figpack-0.4.3 → figpack-0.4.4}/figpack.egg-info/dependency_links.txt +0 -0
  66. {figpack-0.4.3 → figpack-0.4.4}/figpack.egg-info/entry_points.txt +0 -0
  67. {figpack-0.4.3 → figpack-0.4.4}/figpack.egg-info/top_level.txt +0 -0
  68. {figpack-0.4.3 → figpack-0.4.4}/setup.cfg +0 -0
  69. {figpack-0.4.3 → figpack-0.4.4}/tests/test_box.py +0 -0
  70. {figpack-0.4.3 → figpack-0.4.4}/tests/test_cli.py +0 -0
  71. {figpack-0.4.3 → figpack-0.4.4}/tests/test_core.py +0 -0
  72. {figpack-0.4.3 → figpack-0.4.4}/tests/test_dataframe.py +0 -0
  73. {figpack-0.4.3 → figpack-0.4.4}/tests/test_extension_system.py +0 -0
  74. {figpack-0.4.3 → figpack-0.4.4}/tests/test_figpack_view.py +0 -0
  75. {figpack-0.4.3 → figpack-0.4.4}/tests/test_file_handler.py +0 -0
  76. {figpack-0.4.3 → figpack-0.4.4}/tests/test_gallery.py +0 -0
  77. {figpack-0.4.3 → figpack-0.4.4}/tests/test_image.py +0 -0
  78. {figpack-0.4.3 → figpack-0.4.4}/tests/test_markdown.py +0 -0
  79. {figpack-0.4.3 → figpack-0.4.4}/tests/test_matplotlib_figure.py +0 -0
  80. {figpack-0.4.3 → figpack-0.4.4}/tests/test_multichannel_timeseries.py +0 -0
  81. {figpack-0.4.3 → figpack-0.4.4}/tests/test_patch_pages.py +0 -0
  82. {figpack-0.4.3 → figpack-0.4.4}/tests/test_plotly_figure.py +0 -0
  83. {figpack-0.4.3 → figpack-0.4.4}/tests/test_remix_patch.py +0 -0
  84. {figpack-0.4.3 → figpack-0.4.4}/tests/test_server_manager.py +0 -0
  85. {figpack-0.4.3 → figpack-0.4.4}/tests/test_spectrogram.py +0 -0
  86. {figpack-0.4.3 → figpack-0.4.4}/tests/test_splitter.py +0 -0
  87. {figpack-0.4.3 → figpack-0.4.4}/tests/test_tablayout.py +0 -0
  88. {figpack-0.4.3 → figpack-0.4.4}/tests/test_timeseries_graph.py +0 -0
  89. {figpack-0.4.3 → figpack-0.4.4}/tests/test_upload_bundle.py +0 -0
  90. {figpack-0.4.3 → figpack-0.4.4}/tests/test_view_figure.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: figpack
3
- Version: 0.4.3
3
+ Version: 0.4.4
4
4
  Summary: A Python package for creating shareable, interactive visualizations in the browser
5
5
  Author-email: Jeremy Magland <jmagland@flatironinstitute.org>
6
6
  License: Apache-2.0
@@ -72,6 +72,8 @@ Requires-Dist: sphinx-copybutton>=0.5; extra == "docs"
72
72
  Requires-Dist: lindi; extra == "docs"
73
73
  Requires-Dist: nibabel; extra == "docs"
74
74
  Requires-Dist: Pillow; extra == "docs"
75
+ Requires-Dist: scikit-learn; extra == "docs"
76
+ Requires-Dist: scipy; extra == "docs"
75
77
  Dynamic: license-file
76
78
 
77
79
  # figpack
@@ -2,7 +2,7 @@
2
2
  figpack - A Python package for creating shareable, interactive visualizations in the browser
3
3
  """
4
4
 
5
- __version__ = "0.4.3"
5
+ __version__ = "0.4.4"
6
6
 
7
7
  from .cli import view_figure
8
8
  from .core import FigpackView, FigpackExtension, ExtensionView
@@ -80,7 +80,9 @@ def prepare_figure_bundle(
80
80
  view.write_to_zarr_group(zarr_group)
81
81
 
82
82
  # Add title and description and script as attributes on the top-level zarr group
83
- zarr_group.attrs["title"] = title
83
+ # The figure title is stored separately from the root view's own "title"
84
+ # attribute (e.g. the title of a Box), so that it does not replace it
85
+ zarr_group.attrs["figure_title"] = title
84
86
  if description:
85
87
  zarr_group.attrs["description"] = description
86
88
  if script:
@@ -28,7 +28,7 @@ SPEC_SIZE_WARNING_CHARS = 20000
28
28
  _SPEC_LINE_WIDTH = 120
29
29
 
30
30
  # Props of the root node that belong to the figure rather than its root view
31
- _FIGURE_PROPS = {"title"}
31
+ _FIGURE_PROPS = {"figure_title"}
32
32
 
33
33
 
34
34
  @dataclass
@@ -240,7 +240,7 @@ def build_figure_spec_docs(
240
240
  '- data: path of a group in data.zarr for this node (e.g. "/item_0"), or null for a node defined only by the spec (then view_type is required). If omitted, the node uses its counterpart in the original figure: the root group, or the parent\'s subgroup with the same name.',
241
241
  "- view_type: the view type of the node.",
242
242
  "Only the props documented here are listed in the spec. Other attributes in data.zarr describe the stored data and should not be changed.",
243
- "Root node: props.title (string) is the figure title.",
243
+ "Root node: props.figure_title (string) is the figure title.",
244
244
  ]
245
245
  view_types = _collect_view_types(zarr_group)
246
246
  documented = [vt for vt in view_types if vt in schemas]
@@ -0,0 +1 @@
1
+ .unitEntryBase{padding-right:13px;padding-top:10px}.unselectedUnitEntry{border:1px transparent solid;font-weight:400;color:#000;background-color:#fff}.selectedUnitEntry{border:1px solid blue;font-weight:700;color:#000;background-color:#b5d1ff}.unitIdsColumnLabelStyle{min-width:200px;font-weight:700;padding:7px 5px}.unitLabelsStyle{padding-right:3px;color:#333}.plotUnitLabel{text-align:left;margin-left:20px;margin-top:5px;font-weight:700}.plotWrapperButtonParent{display:inline-block}.plotWrapperStyleButton{padding-top:50px}.plotUnselectedStyle{border:3px solid rgb(202,224,231)}.plotSelectedStyle{border:3px solid #9999ff;background-color:#fff}.plotUnselectableStyle{border:3px solid transparent}.plotCurrentStyle{border:3px solid blue;background-color:#fff}.plotLabelStyle{font-weight:700;text-align:center;overflow:hidden;white-space:nowrap}.figpack-markdown table{border-collapse:collapse;margin:.8em 0}.figpack-markdown th,.figpack-markdown td{border:1px solid #d0d7de;padding:4px 12px}.figpack-markdown th{background-color:#7f7f7f14}.figpack-markdown blockquote{margin:.8em 0;padding:0 1em;border-left:4px solid #d0d7de;opacity:.85}.figpack-markdown math[display=block]{margin:.8em 0;font-size:1.15em}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#747bff}body{margin:0;overflow:hidden}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#f9f9f9;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}.status-bar{position:fixed;left:0;right:0;height:30px;background-color:#f5f5f5;color:#333;display:flex;align-items:center;padding:0 12px;font-size:12px;border-top:1px solid #ddd;z-index:1000}.status-bar.warning{background-color:#fff3cd;color:#856404;border-top:1px solid #ffeaa7}.status-bar.error,.status-bar.expired{background-color:#f8d7da;color:#721c24;border-top:1px solid #f5c6cb}.manage-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.manage-button:hover{background-color:#d0d0d0}.about-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s}.about-button:hover{background-color:#d0d0d0}.share-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;margin-left:12px;transition:background-color .2s;display:flex;align-items:center;gap:4px}.share-button:hover{background-color:#d0d0d0}.about-dialog-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.about-dialog{background-color:#fff;color:#333;border-radius:8px;max-width:600px;max-height:80vh;width:90%;box-shadow:0 4px 20px #00000026;overflow:hidden}.about-dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ddd}.about-dialog-header h2{margin:0;font-size:18px;font-weight:600}.about-dialog-close{background:none;border:none;color:#333;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.about-dialog-close:hover{background-color:#f0f0f0}.about-dialog-content{padding:20px;overflow-y:auto;max-height:calc(80vh - 80px)}.about-dialog-description{line-height:1.6}.about-dialog-provenance{margin-top:0;margin-bottom:12px;font-size:.9em;color:#555;overflow-wrap:anywhere}.about-dialog-description h1,.about-dialog-description h2,.about-dialog-description h3{margin-top:0;margin-bottom:12px}.about-dialog-description p{margin-bottom:12px}.about-dialog-description code{background-color:#f5f5f5;color:#333;padding:2px 4px;border-radius:3px;font-family:Courier New,monospace;font-size:.9em}.about-dialog-description pre{background-color:#f5f5f5;color:#333;padding:12px;border-radius:4px;overflow-x:auto;margin-bottom:12px}.about-dialog-description ul,.about-dialog-description ol{margin-bottom:12px;padding-left:20px}.about-dialog-description blockquote{border-left:4px solid #ccc;padding-left:16px;margin:12px 0;font-style:italic}.manage-edits-view{display:flex;align-items:center;margin-left:12px}.edits-notification{color:#e65100;font-weight:500;margin-right:8px}.save-changes-button{background-color:#ff9800;color:#fff;border:1px solid #f57c00;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:11px;height:22px;transition:background-color .2s}.save-changes-button:hover{background-color:#f57c00}.dialog-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:2000}.dialog-content{background-color:#fff;color:#333;border-radius:8px;max-width:500px;width:90%;box-shadow:0 4px 20px #00000026;overflow:hidden}.dialog-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #ddd}.dialog-header h3{margin:0;font-size:18px;font-weight:600}.dialog-close{background:none;border:none;color:#333;font-size:24px;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background-color .2s}.dialog-close:hover{background-color:#f0f0f0}.dialog-body{padding:20px}.dialog-body p{margin:0 0 12px;line-height:1.5}.dialog-footer{padding:16px 20px;border-top:1px solid #ddd;display:flex;justify-content:flex-end}.dialog-button{background-color:#e0e0e0;color:#333;border:1px solid #ccc;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s}.dialog-button:hover{background-color:#d0d0d0}.dialog-fullscreen{position:fixed;inset:0;background-color:#fff;color:#333;z-index:2000;display:flex;flex-direction:column}.dialog-content-fullscreen{display:flex;flex-direction:column;height:100%;overflow:hidden}.dialog-content-fullscreen .dialog-header{flex-shrink:0}.dialog-content-fullscreen .dialog-body{flex:1;overflow-y:auto;padding:20px}.dialog-content-fullscreen .dialog-footer{flex-shrink:0}