Skip to content

Commit 6455640

Browse files
committed
WIP - Not working in pyarrow
1 parent 85212db commit 6455640

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

src/libImaging/Arrow.c

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,33 @@ image_band_json(Imaging im) {
8484
return json;
8585
}
8686

87+
char *
88+
single_band_json(Imaging im) {
89+
char *format = "{\"bands\": [\"%s\"]}";
90+
char *json;
91+
// Bands can be 1 band * (maybe but probably not) 2 characters each
92+
int len = strlen(format) + 2 + 1;
93+
int err;
94+
95+
json = calloc(1, len);
96+
97+
if (!json) {
98+
return NULL;
99+
}
100+
101+
err = PyOS_snprintf(
102+
json,
103+
len,
104+
format,
105+
im->band_names[0]
106+
);
107+
if (err < 0) {
108+
return NULL;
109+
}
110+
return json;
111+
}
112+
113+
87114
char *
88115
assemble_metadata(const char *band_json) {
89116
/* format is
@@ -179,7 +206,17 @@ export_imaging_schema(Imaging im, struct ArrowSchema *schema) {
179206
}
180207

181208
if (im->bands == 1) {
182-
return export_named_type(schema, im->arrow_band_format, im->band_names[0]);
209+
retval = export_named_type(schema, im->arrow_band_format, im->band_names[0]);
210+
if (retval != 0) {
211+
return retval;
212+
}
213+
// band related metadata
214+
band_json = single_band_json(im);
215+
if (band_json) {
216+
schema->metadata = assemble_metadata(band_json);
217+
free(band_json);
218+
}
219+
return retval;
183220
}
184221

185222
retval = export_named_type(schema, "+w:4", "");

0 commit comments

Comments
 (0)