figpack 0.2.5__py3-none-any.whl → 0.2.6__py3-none-any.whl

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.

Potentially problematic release.


This version of figpack might be problematic. Click here for more details.

@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/png" href="./assets/neurosift-logo-CLsuwLMO.png" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>figpack figure</title>
8
- <script type="module" crossorigin src="./assets/index-CrYQmIda.js"></script>
8
+ <script type="module" crossorigin src="./assets/index-HXdk2TtM.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="./assets/index-Cmae55E4.css">
10
10
  </head>
11
11
  <body>
@@ -77,32 +77,42 @@ class Autocorrelograms(FigpackView):
77
77
  group.attrs["view_type"] = "Autocorrelograms"
78
78
 
79
79
  # Store the number of autocorrelograms
80
- group.attrs["num_autocorrelograms"] = len(self.autocorrelograms)
80
+ num_autocorrelograms = len(self.autocorrelograms)
81
+ group.attrs["num_autocorrelograms"] = num_autocorrelograms
81
82
 
82
- # Store metadata for each autocorrelogram
83
+ if num_autocorrelograms == 0:
84
+ return
85
+
86
+ # Get dimensions from first autocorrelogram
87
+ num_bins = len(self.autocorrelograms[0].bin_counts)
88
+
89
+ # Store bin edges (same for all autocorrelograms)
90
+ group.create_dataset(
91
+ "bin_edges_sec",
92
+ data=self.autocorrelograms[0].bin_edges_sec,
93
+ dtype=np.float32,
94
+ )
95
+
96
+ # Create 2D array for all bin counts
97
+ bin_counts = np.zeros((num_autocorrelograms, num_bins), dtype=np.int32)
98
+
99
+ # Store metadata for each autocorrelogram and populate bin counts array
83
100
  autocorrelogram_metadata = []
84
101
  for i, autocorr in enumerate(self.autocorrelograms):
85
- autocorr_name = f"autocorrelogram_{i}"
86
-
87
- # Store metadata
88
102
  metadata = {
89
- "name": autocorr_name,
90
103
  "unit_id": str(autocorr.unit_id),
91
- "num_bins": len(autocorr.bin_counts),
104
+ "index": i, # Store index to map to bin_counts array
105
+ "num_bins": num_bins,
92
106
  }
93
107
  autocorrelogram_metadata.append(metadata)
94
-
95
- # Create arrays for this autocorrelogram
96
- group.create_dataset(
97
- f"{autocorr_name}/bin_edges_sec",
98
- data=autocorr.bin_edges_sec,
99
- dtype=np.float32,
100
- )
101
- group.create_dataset(
102
- f"{autocorr_name}/bin_counts",
103
- data=autocorr.bin_counts,
104
- dtype=np.int32,
105
- )
108
+ bin_counts[i] = autocorr.bin_counts
109
+
110
+ # Store the bin counts as a single 2D dataset
111
+ group.create_dataset(
112
+ "bin_counts",
113
+ data=bin_counts,
114
+ dtype=np.int32,
115
+ )
106
116
 
107
117
  # Store the autocorrelogram metadata
108
118
  group.attrs["autocorrelograms"] = autocorrelogram_metadata
@@ -90,33 +90,43 @@ class CrossCorrelograms(FigpackView):
90
90
  group.attrs["hide_unit_selector"] = self.hide_unit_selector
91
91
 
92
92
  # Store the number of cross-correlograms
93
- group.attrs["num_cross_correlograms"] = len(self.cross_correlograms)
93
+ num_cross_correlograms = len(self.cross_correlograms)
94
+ group.attrs["num_cross_correlograms"] = num_cross_correlograms
94
95
 
95
- # Store metadata for each cross-correlogram
96
+ if num_cross_correlograms == 0:
97
+ return
98
+
99
+ # Get dimensions from first cross-correlogram
100
+ num_bins = len(self.cross_correlograms[0].bin_counts)
101
+
102
+ # Store bin edges (same for all cross-correlograms)
103
+ group.create_dataset(
104
+ "bin_edges_sec",
105
+ data=self.cross_correlograms[0].bin_edges_sec,
106
+ dtype=np.float32,
107
+ )
108
+
109
+ # Create 2D array for all bin counts
110
+ bin_counts = np.zeros((num_cross_correlograms, num_bins), dtype=np.int32)
111
+
112
+ # Store metadata for each cross-correlogram and populate bin counts array
96
113
  cross_correlogram_metadata = []
97
114
  for i, cross_corr in enumerate(self.cross_correlograms):
98
- cross_corr_name = f"cross_correlogram_{i}"
99
-
100
- # Store metadata
101
115
  metadata = {
102
- "name": cross_corr_name,
103
116
  "unit_id1": str(cross_corr.unit_id1),
104
117
  "unit_id2": str(cross_corr.unit_id2),
105
- "num_bins": len(cross_corr.bin_counts),
118
+ "index": i, # Store index to map to bin_counts array
119
+ "num_bins": num_bins,
106
120
  }
107
121
  cross_correlogram_metadata.append(metadata)
108
-
109
- # Create arrays for this cross-correlogram
110
- group.create_dataset(
111
- f"{cross_corr_name}/bin_edges_sec",
112
- data=cross_corr.bin_edges_sec,
113
- dtype=np.float32,
114
- )
115
- group.create_dataset(
116
- f"{cross_corr_name}/bin_counts",
117
- data=cross_corr.bin_counts,
118
- dtype=np.int32,
119
- )
122
+ bin_counts[i] = cross_corr.bin_counts
123
+
124
+ # Store the bin counts as a single 2D dataset
125
+ group.create_dataset(
126
+ "bin_counts",
127
+ data=bin_counts,
128
+ dtype=np.int32,
129
+ )
120
130
 
121
131
  # Store the cross-correlogram metadata
122
132
  group.attrs["cross_correlograms"] = cross_correlogram_metadata
@@ -3,6 +3,7 @@ UnitsTable view for figpack - displays a table of units with their properties
3
3
  """
4
4
 
5
5
  from typing import List, Optional
6
+ import json
6
7
 
7
8
  import numpy as np
8
9
  import zarr
@@ -58,13 +59,31 @@ class UnitsTable(FigpackView):
58
59
  columns_metadata = [col.to_dict() for col in self.columns]
59
60
  group.attrs["columns"] = columns_metadata
60
61
 
61
- # Store rows metadata
62
- rows_metadata = [row.to_dict() for row in self.rows]
63
- group.attrs["rows"] = rows_metadata
62
+ # Store rows data in a zarr array
63
+ rows_data = [row.to_dict() for row in self.rows]
64
+ rows_json = json.dumps(rows_data).encode("utf-8")
65
+ rows_array = np.frombuffer(rows_json, dtype=np.uint8)
66
+ group.create_dataset(
67
+ "rows_data",
68
+ data=rows_array,
69
+ dtype=np.uint8,
70
+ chunks=True,
71
+ compressor=zarr.Blosc(cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE),
72
+ )
73
+ group.attrs["rows_data_size"] = len(rows_json)
64
74
 
65
- # Store similarity scores if provided
75
+ # Store similarity scores in a zarr array
66
76
  if self.similarity_scores:
67
- similarity_scores_metadata = [
68
- score.to_dict() for score in self.similarity_scores
69
- ]
70
- group.attrs["similarityScores"] = similarity_scores_metadata
77
+ scores_data = [score.to_dict() for score in self.similarity_scores]
78
+ scores_json = json.dumps(scores_data).encode("utf-8")
79
+ scores_array = np.frombuffer(scores_json, dtype=np.uint8)
80
+ group.create_dataset(
81
+ "similarity_scores_data",
82
+ data=scores_array,
83
+ dtype=np.uint8,
84
+ chunks=True,
85
+ compressor=zarr.Blosc(
86
+ cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE
87
+ ),
88
+ )
89
+ group.attrs["similarity_scores_data_size"] = len(scores_json)
figpack/views/Markdown.py CHANGED
@@ -2,6 +2,7 @@
2
2
  Markdown view for figpack - displays markdown content
3
3
  """
4
4
 
5
+ import numpy as np
5
6
  import zarr
6
7
 
7
8
  from ..core.figpack_view import FigpackView
@@ -31,5 +32,14 @@ class Markdown(FigpackView):
31
32
  # Set the view type
32
33
  group.attrs["view_type"] = "Markdown"
33
34
 
34
- # Store the markdown content
35
- group.attrs["content"] = self.content
35
+ # Convert string content to numpy array of bytes
36
+ content_bytes = self.content.encode("utf-8")
37
+ content_array = np.frombuffer(content_bytes, dtype=np.uint8)
38
+
39
+ # Store the markdown content as a zarr array
40
+ group.create_dataset(
41
+ "content_data", data=content_array, dtype=np.uint8, chunks=True
42
+ )
43
+
44
+ # Store content size in attrs
45
+ group.attrs["data_size"] = len(content_bytes)
@@ -3,6 +3,7 @@ MatplotlibFigure view for figpack - displays matplotlib figures
3
3
  """
4
4
 
5
5
  import io
6
+ import numpy as np
6
7
  from typing import Any, Union
7
8
 
8
9
  import zarr
@@ -47,8 +48,18 @@ class MatplotlibFigure(FigpackView):
47
48
  svg_string = svg_buffer.getvalue()
48
49
  svg_buffer.close()
49
50
 
50
- # Store the SVG data
51
- group.attrs["svg_data"] = svg_string
51
+ # Convert SVG string to numpy array and store in zarr array
52
+ svg_bytes = svg_string.encode("utf-8")
53
+ svg_array = np.frombuffer(svg_bytes, dtype=np.uint8)
54
+ group.create_dataset(
55
+ "svg_data",
56
+ data=svg_array,
57
+ dtype=np.uint8,
58
+ chunks=True,
59
+ compressor=zarr.Blosc(
60
+ cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE
61
+ ),
62
+ )
52
63
 
53
64
  # Store figure dimensions for reference
54
65
  fig_width, fig_height = self.fig.get_size_inches()
@@ -58,10 +69,22 @@ class MatplotlibFigure(FigpackView):
58
69
  # Store DPI for reference
59
70
  group.attrs["figure_dpi"] = float(self.fig.dpi)
60
71
 
72
+ # Store data size for reference
73
+ group.attrs["data_size"] = len(svg_bytes)
74
+
61
75
  except Exception as e:
62
76
  # If SVG export fails, store error information
63
- group.attrs["svg_data"] = ""
77
+ group.create_dataset(
78
+ "svg_data",
79
+ data=np.array([], dtype=np.uint8),
80
+ dtype=np.uint8,
81
+ chunks=True,
82
+ compressor=zarr.Blosc(
83
+ cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE
84
+ ),
85
+ )
64
86
  group.attrs["error"] = f"Failed to export matplotlib figure: {str(e)}"
65
87
  group.attrs["figure_width_inches"] = 6.0
66
88
  group.attrs["figure_height_inches"] = 4.0
67
89
  group.attrs["figure_dpi"] = 100.0
90
+ group.attrs["data_size"] = 0
@@ -56,5 +56,21 @@ class PlotlyFigure(FigpackView):
56
56
  # Convert the plotly figure to a dictionary
57
57
  fig_dict = self.fig.to_dict()
58
58
 
59
- # Store the figure data as JSON string using custom encoder
60
- group.attrs["figure_data"] = json.dumps(fig_dict, cls=CustomJSONEncoder)
59
+ # Convert figure data to JSON string using custom encoder
60
+ json_string = json.dumps(fig_dict, cls=CustomJSONEncoder)
61
+
62
+ # Convert JSON string to bytes and store in numpy array
63
+ json_bytes = json_string.encode("utf-8")
64
+ json_array = np.frombuffer(json_bytes, dtype=np.uint8)
65
+
66
+ # Store the figure data as compressed array
67
+ group.create_dataset(
68
+ "figure_data",
69
+ data=json_array,
70
+ dtype=np.uint8,
71
+ chunks=True,
72
+ compressor=zarr.Blosc(cname="zstd", clevel=3, shuffle=zarr.Blosc.SHUFFLE),
73
+ )
74
+
75
+ # Store data size for reference
76
+ group.attrs["data_size"] = len(json_bytes)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: figpack
3
- Version: 0.2.5
3
+ Version: 0.2.6
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
@@ -1,33 +1,33 @@
1
- figpack/__init__.py,sha256=MgpfFlGDmvR6fsmnN1k1RyoeOxl6pBtfaXgvZj1RStY,181
1
+ figpack/__init__.py,sha256=0qLJ7E5m_1HlQz2yVbgdZj__rO56AZjWGC3NDzswq7U,181
2
2
  figpack/cli.py,sha256=xWF7J2BxUqOLvPu-Kje7Q6oGukTroXsLq8WN8vJgyw0,8321
3
3
  figpack/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- figpack/core/_bundle_utils.py,sha256=PIBVce4SXZyNTKpXsoEKlHbY7QUFRMBLwSECmJn0INE,1878
5
- figpack/core/_save_figure.py,sha256=9fn37xxZgSBQVOHaKuzsPRMgD2pcibuJ1jkjhTVv4ks,1002
4
+ figpack/core/_bundle_utils.py,sha256=JBZh2LJyu0oYHQBBVw5fF3uUNQJY_2bxVf6V7CN10FM,1884
5
+ figpack/core/_save_figure.py,sha256=52ny-m1ThGgxY4ZgMn7m33n8A2OCyezj8H8TMvw0Y8Q,1043
6
6
  figpack/core/_server_manager.py,sha256=BTLeZtSbaJtAmtslAfgvp9C-SV0aJnn4WCpUJzd1Mlg,10997
7
- figpack/core/_show_view.py,sha256=fwd6o6K0IHnlLDRMvo-dwQ_zrHs9bkAFqZJpID22Tso,5044
8
- figpack/core/_upload_bundle.py,sha256=hseJDKe2s7fO8siWpAGuwGDniOlOvPJ5Jksql6SVMug,14192
7
+ figpack/core/_show_view.py,sha256=-5HT1MYSeVuEoaL3RNNyoCjYsZy4Jy9XLjljUqLuvV4,5146
8
+ figpack/core/_upload_bundle.py,sha256=54hdWayJJdRZdx7N9V2aH_X33KkR6hImMjN6tkBTLi8,14894
9
9
  figpack/core/_view_figure.py,sha256=o1x1I2VKFrp2W_TStUS3fQblRW8AvGbu7Uy7MgVjofA,4186
10
10
  figpack/core/config.py,sha256=oOR7SlP192vuFhYlS-h14HnG-kd_3gaz0vshXch2RNc,173
11
- figpack/core/figpack_view.py,sha256=NMinVYTByDG_JrplxyGNvPalN-XLnQNNhnwIsT4km1Q,6099
12
- figpack/figpack-gui-dist/index.html,sha256=Iir-EDyhLfsZDZ3m0oGeB-N1AjXtIAC68lu3rOx2WKo,486
13
- figpack/figpack-gui-dist/assets/index-Cmae55E4.css,sha256=Yg0apcYehJwQvSQIUH13S7tsfqWQDevpJsAho0dDf0g,5499
14
- figpack/figpack-gui-dist/assets/index-CrYQmIda.js,sha256=3wyvEZye-j_IBlv5lBP4qCBY9-a6-sJ6inh0ZeTHDjA,1594728
15
- figpack/figpack-gui-dist/assets/neurosift-logo-CLsuwLMO.png,sha256=g5m-TwrGh5f6-9rXtWV-znH4B0nHgc__0GWclRDLUHs,9307
11
+ figpack/core/figpack_view.py,sha256=peJFkoP6HIqyNATzyucxAIq9HuCnK7SRO_-gE_rbEvg,6130
12
+ figpack/figpack-figure-dist/index.html,sha256=yRCsTBF07s2OLoSIlkMFUSA5Vp94yR7oh_SX6uXT8d8,486
13
+ figpack/figpack-figure-dist/assets/index-Cmae55E4.css,sha256=Yg0apcYehJwQvSQIUH13S7tsfqWQDevpJsAho0dDf0g,5499
14
+ figpack/figpack-figure-dist/assets/index-HXdk2TtM.js,sha256=GhqJkoATKYiprLAbc3V5CYUt-MtKteWLx7KUh1fjA_0,1598198
15
+ figpack/figpack-figure-dist/assets/neurosift-logo-CLsuwLMO.png,sha256=g5m-TwrGh5f6-9rXtWV-znH4B0nHgc__0GWclRDLUHs,9307
16
16
  figpack/franklab/__init__.py,sha256=HkehqGImJE_sE2vbPDo-HbgtEYaMICb9-230xTYvRTU,56
17
17
  figpack/franklab/views/TrackAnimation.py,sha256=3Jv1Ri4FIwTyqNahinqhHsBH1Bv_iZrEGx12w6diJ2M,5636
18
18
  figpack/franklab/views/__init__.py,sha256=XXZ9QJLh9KAeeLgKbi6ogYOyfTgHP-N6o3u981NFwx8,116
19
19
  figpack/spike_sorting/__init__.py,sha256=09njqh-oFaCTdZUsc4HAOFTliUYV9DClddfZ0Q_dm0I,61
20
20
  figpack/spike_sorting/views/AutocorrelogramItem.py,sha256=qHmvIdHpbfVA_utPb5N2oP3hSP2cGnlT8VLaxOXV4UM,738
21
- figpack/spike_sorting/views/Autocorrelograms.py,sha256=43EgKHvUmXUA9QSOJQZiTeLHq_kKW43Ku3FIH7ZjfM8,3323
21
+ figpack/spike_sorting/views/Autocorrelograms.py,sha256=6MXOYJKUNEhJokiyOs8SGJVF9U9N6sHuQNYz7IEssqc,3677
22
22
  figpack/spike_sorting/views/AverageWaveforms.py,sha256=mvMkS3wf6MpI95tlGqKxBjxZlHqJr4aqG7SZvHigIsI,5193
23
23
  figpack/spike_sorting/views/CrossCorrelogramItem.py,sha256=uSd0i2hupteuILi_aKp7bYPYpL_PdC3CUDRMOEKUEM0,880
24
- figpack/spike_sorting/views/CrossCorrelograms.py,sha256=gqPXbEgg-GE3NCJQT2bahp1ITSW33F3q9ZuJRGrR68M,4061
24
+ figpack/spike_sorting/views/CrossCorrelograms.py,sha256=OGQq_5t_T1zq4eFCpuTAvUIhZQu7ef7LVexKNdByMvo,4415
25
25
  figpack/spike_sorting/views/RasterPlot.py,sha256=gFdfH9SEm-tf8Ptqw4M1Q7IHRytUOULpBZfM2TdMfZQ,2215
26
26
  figpack/spike_sorting/views/RasterPlotItem.py,sha256=iW7fuDEjSfvf5YMIwrF_6cmKvD76oCigOUMHtGgBsPI,638
27
27
  figpack/spike_sorting/views/SpikeAmplitudes.py,sha256=vQYWdJM-3qu568bcfGDC9k9LW_PgvU8j4tN9QYc08Mo,2665
28
28
  figpack/spike_sorting/views/SpikeAmplitudesItem.py,sha256=j5Na-diY-vRUAPu0t0VkyFCSKFnQ_f5HT077mB3Cy8c,1134
29
29
  figpack/spike_sorting/views/UnitSimilarityScore.py,sha256=cJA9MkETos9qHhV1tqgA7SfNEaPo-duXYCE76hSFGnA,948
30
- figpack/spike_sorting/views/UnitsTable.py,sha256=kQZvMlnPk8MAMPr3GlL4T3cAvGfSHBbB52jvMJ2-YAU,2173
30
+ figpack/spike_sorting/views/UnitsTable.py,sha256=M3y1IDJzSnvOaM1-QOyJOVcUcdTkVvxYhEMGd1kmUzs,2969
31
31
  figpack/spike_sorting/views/UnitsTableColumn.py,sha256=zBnuoeILTuiVLDvtcOxqa37E5WlbR12rlwNJUeWXxY4,847
32
32
  figpack/spike_sorting/views/UnitsTableRow.py,sha256=rEb2hMTA_pl2fTW1nOvnGir0ysfNx4uww3aekZzfWjk,720
33
33
  figpack/spike_sorting/views/__init__.py,sha256=iRq7xPmyhnQ3GffnPC0GxKGEWnlqXY_8IOxsMqYZ1IM,967
@@ -36,18 +36,18 @@ figpack/views/Gallery.py,sha256=sHlZbaqxcktasmNsJnuxe8WmgUQ6iurG50JiChKSMbQ,3314
36
36
  figpack/views/GalleryItem.py,sha256=b_upJno5P3ANSulbG-h3t6Xj56tPGJ7iVxqyiZu3zaQ,1244
37
37
  figpack/views/Image.py,sha256=hmyAHlRwj0l6fC7aNmHYJFaj-qCqyH67soERm78V5dk,3953
38
38
  figpack/views/LayoutItem.py,sha256=wy8DggkIzZpU0F1zFIBceS7HpBb6lu-A3hpYINQzedk,1595
39
- figpack/views/Markdown.py,sha256=KEqEAz5VXErLXr8dYJrWY1I8_VdRazDIcjCNcHfUGPA,769
40
- figpack/views/MatplotlibFigure.py,sha256=LQSvPY3_iSHO-ZfWjRO6iOVUp5W-mmlt3mj8GBoK18w,1939
39
+ figpack/views/Markdown.py,sha256=Dl1UX5s0aC-mEx5m6jIJ839YKMNeeVzIDG-EANVrbys,1147
40
+ figpack/views/MatplotlibFigure.py,sha256=YoNtZTItEjatbtNJqATm2H-Oircp5Ca6FZLjHk_B0zg,2778
41
41
  figpack/views/MultiChannelTimeseries.py,sha256=sWr2nW1eoYR7V44wF7fac7IoQ6BOnus1nc4STkgIkYw,8501
42
- figpack/views/PlotlyFigure.py,sha256=B02nfWFM89GnDUZiS2v89ZtGBdSZtAwcXUD_7rV7kN4,1633
42
+ figpack/views/PlotlyFigure.py,sha256=E33PEkWSj907Ue73bYfZQlF-JFDdWA8jNrG-buFQLgs,2174
43
43
  figpack/views/Splitter.py,sha256=x9jLCTlIvDy5p9ymVd0X48KDccyD6bJANhXyFgKEmtE,2007
44
44
  figpack/views/TabLayout.py,sha256=5g3nmL95PfqgI0naqZXHMwLVo2ebDlGX01Hy9044bUw,1898
45
45
  figpack/views/TabLayoutItem.py,sha256=xmHA0JsW_6naJze4_mQuP_Fy0Nm17p2N7w_AsmVRp8k,880
46
46
  figpack/views/TimeseriesGraph.py,sha256=OAaCjO8fo86u_gO_frNfRGxng3tczxGDGKcJEvZo3rE,7469
47
47
  figpack/views/__init__.py,sha256=npSsSmbxN7_tZcjCK76L2l9dRVqubVXIgBnxj1uhjf4,473
48
- figpack-0.2.5.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
49
- figpack-0.2.5.dist-info/METADATA,sha256=R5iFyGtb_oUZo9Txa1670Ax4pPZyIS5OULXaKbtcfEo,3577
50
- figpack-0.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
51
- figpack-0.2.5.dist-info/entry_points.txt,sha256=l6d3siH2LxXa8qJGbjAqpIZtI5AkMSyDeoRDCzdrUto,45
52
- figpack-0.2.5.dist-info/top_level.txt,sha256=lMKGaC5xWmAYBx9Ac1iMokm42KFnJFjmkP2ldyvOo-c,8
53
- figpack-0.2.5.dist-info/RECORD,,
48
+ figpack-0.2.6.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
49
+ figpack-0.2.6.dist-info/METADATA,sha256=VoUFPcVVhIVIxWp7sExL2kXVONvLYmRHMmXNVIRPqCo,3577
50
+ figpack-0.2.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
51
+ figpack-0.2.6.dist-info/entry_points.txt,sha256=l6d3siH2LxXa8qJGbjAqpIZtI5AkMSyDeoRDCzdrUto,45
52
+ figpack-0.2.6.dist-info/top_level.txt,sha256=lMKGaC5xWmAYBx9Ac1iMokm42KFnJFjmkP2ldyvOo-c,8
53
+ figpack-0.2.6.dist-info/RECORD,,