mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 01:47:47 +03:00 
			
		
		
		
	[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
This commit is contained in:
		
							parent
							
								
									e7bd152aac
								
							
						
					
					
						commit
						9f94d4f9f8
					
				| 
						 | 
				
			
			@ -159,22 +159,24 @@ def test_readonly():
 | 
			
		|||
    reloaded._readonly = 0
 | 
			
		||||
    assert reloaded.readonly == 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_multiblock_l_image():
 | 
			
		||||
    block_size = Image.core.get_block_size()
 | 
			
		||||
 | 
			
		||||
    # check a 2 block image in single channel mode
 | 
			
		||||
    size = (4096, 2*block_size//4096)
 | 
			
		||||
    img = Image.new('L', size, 128)
 | 
			
		||||
    size = (4096, 2 * block_size // 4096)
 | 
			
		||||
    img = Image.new("L", size, 128)
 | 
			
		||||
 | 
			
		||||
    with pytest.raises(ValueError):
 | 
			
		||||
        (schema, arr) = img.__arrow_c_array__()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_multiblock__rgba_image():
 | 
			
		||||
    block_size = Image.core.get_block_size()
 | 
			
		||||
 | 
			
		||||
    # check a 2 block image in 4 channel mode
 | 
			
		||||
    size = (4096, (block_size//4096) //2)
 | 
			
		||||
    img = Image.new('RGBA', size, (128,127,126,125))
 | 
			
		||||
    size = (4096, (block_size // 4096) // 2)
 | 
			
		||||
    img = Image.new("RGBA", size, (128, 127, 126, 125))
 | 
			
		||||
 | 
			
		||||
    with pytest.raises(ValueError):
 | 
			
		||||
        (schema, arr) = img.__arrow_c_array__()
 | 
			
		||||
| 
						 | 
				
			
			@ -184,18 +186,19 @@ def test_multiblock_l_schema():
 | 
			
		|||
    block_size = Image.core.get_block_size()
 | 
			
		||||
 | 
			
		||||
    # check a 2 block image in single channel mode
 | 
			
		||||
    size = (4096, 2*block_size//4096)
 | 
			
		||||
    img = Image.new('L', size, 128)
 | 
			
		||||
    size = (4096, 2 * block_size // 4096)
 | 
			
		||||
    img = Image.new("L", size, 128)
 | 
			
		||||
 | 
			
		||||
    with pytest.raises(ValueError):
 | 
			
		||||
        schema = img.__arrow_c_schema__()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_multiblock__rgba_schema():
 | 
			
		||||
    block_size = Image.core.get_block_size()
 | 
			
		||||
 | 
			
		||||
    # check a 2 block image in 4 channel mode
 | 
			
		||||
    size = (4096, (block_size//4096) //2)
 | 
			
		||||
    img = Image.new('RGBA', size, (128,127,126,125))
 | 
			
		||||
    size = (4096, (block_size // 4096) // 2)
 | 
			
		||||
    img = Image.new("RGBA", size, (128, 127, 126, 125))
 | 
			
		||||
 | 
			
		||||
    with pytest.raises(ValueError):
 | 
			
		||||
        schema= img.__arrow_c_schema__()
 | 
			
		||||
        schema = img.__arrow_c_schema__()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -230,13 +230,15 @@ PyImaging_GetBuffer(PyObject *buffer, Py_buffer *view) {
 | 
			
		|||
PyObject *
 | 
			
		||||
ArrowError(int err) {
 | 
			
		||||
    if (err == IMAGING_CODEC_MEMORY) {
 | 
			
		||||
      return ImagingError_MemoryError();
 | 
			
		||||
        return ImagingError_MemoryError();
 | 
			
		||||
    }
 | 
			
		||||
    if (err == IMAGING_ARROW_INCOMPATIBLE_MODE) {
 | 
			
		||||
      return ImagingError_ValueError("Incompatible Pillow mode for Arrow Array");
 | 
			
		||||
        return ImagingError_ValueError("Incompatible Pillow mode for Arrow Array");
 | 
			
		||||
    }
 | 
			
		||||
    if (err == IMAGING_ARROW_MEMORY_LAYOUT) {
 | 
			
		||||
      return ImagingError_ValueError("Image is in multiple array blocks, use imaging_new_block for zero copy");
 | 
			
		||||
        return ImagingError_ValueError(
 | 
			
		||||
            "Image is in multiple array blocks, use imaging_new_block for zero copy"
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    return ImagingError_ValueError("Unknown Error");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -257,7 +259,7 @@ ExportArrowSchemaPyCapsule(ImagingObject *self) {
 | 
			
		|||
        (struct ArrowSchema *)calloc(1, sizeof(struct ArrowSchema));
 | 
			
		||||
    int err = export_imaging_schema(self->image, schema);
 | 
			
		||||
    if (err == 0) {
 | 
			
		||||
      return PyCapsule_New(schema, "arrow_schema", ReleaseArrowSchemaPyCapsule);
 | 
			
		||||
        return PyCapsule_New(schema, "arrow_schema", ReleaseArrowSchemaPyCapsule);
 | 
			
		||||
    }
 | 
			
		||||
    free(schema);
 | 
			
		||||
    return ArrowError(err);
 | 
			
		||||
| 
						 | 
				
			
			@ -279,14 +281,13 @@ ExportArrowArrayPyCapsule(ImagingObject *self) {
 | 
			
		|||
        (struct ArrowArray *)calloc(1, sizeof(struct ArrowArray));
 | 
			
		||||
    int err = export_imaging_array(self->image, array);
 | 
			
		||||
    if (err == 0) {
 | 
			
		||||
      return PyCapsule_New(array, "arrow_array", ReleaseArrowArrayPyCapsule);
 | 
			
		||||
        return PyCapsule_New(array, "arrow_array", ReleaseArrowArrayPyCapsule);
 | 
			
		||||
    }
 | 
			
		||||
    free(array);
 | 
			
		||||
    // raise error here
 | 
			
		||||
    return ArrowError(err);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static PyObject *
 | 
			
		||||
_new_arrow(PyObject *self, PyObject *args) {
 | 
			
		||||
    char *mode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,15 +76,15 @@ export_named_type(struct ArrowSchema *schema, char *format, char *name) {
 | 
			
		|||
    strncpy(namep, name, name_len);
 | 
			
		||||
 | 
			
		||||
    *schema = (struct ArrowSchema){// Type description
 | 
			
		||||
        .format = formatp,
 | 
			
		||||
        .name = namep,
 | 
			
		||||
        .metadata = NULL,
 | 
			
		||||
        .flags = 0,
 | 
			
		||||
        .n_children = 0,
 | 
			
		||||
        .children = NULL,
 | 
			
		||||
        .dictionary = NULL,
 | 
			
		||||
        // Bookkeeping
 | 
			
		||||
        .release = &ReleaseExportedSchema
 | 
			
		||||
                                   .format = formatp,
 | 
			
		||||
                                   .name = namep,
 | 
			
		||||
                                   .metadata = NULL,
 | 
			
		||||
                                   .flags = 0,
 | 
			
		||||
                                   .n_children = 0,
 | 
			
		||||
                                   .children = NULL,
 | 
			
		||||
                                   .dictionary = NULL,
 | 
			
		||||
                                   // Bookkeeping
 | 
			
		||||
                                   .release = &ReleaseExportedSchema
 | 
			
		||||
    };
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -98,7 +98,7 @@ export_imaging_schema(Imaging im, struct ArrowSchema *schema) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    /* for now, single block images */
 | 
			
		||||
    if (!(im->blocks_count == 0 || im->blocks_count == 1)){
 | 
			
		||||
    if (!(im->blocks_count == 0 || im->blocks_count == 1)) {
 | 
			
		||||
        return IMAGING_ARROW_MEMORY_LAYOUT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -123,8 +123,6 @@ export_imaging_schema(Imaging im, struct ArrowSchema *schema) {
 | 
			
		|||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
release_const_array(struct ArrowArray *array) {
 | 
			
		||||
    Imaging im = (Imaging)array->private_data;
 | 
			
		||||
| 
						 | 
				
			
			@ -140,8 +138,8 @@ release_const_array(struct ArrowArray *array) {
 | 
			
		|||
    }
 | 
			
		||||
    if (array->children) {
 | 
			
		||||
        // undone -- does arrow release all the children recursively.
 | 
			
		||||
        for (int i=0; i < array->n_children; i++) {
 | 
			
		||||
            if (array->children[i]->release){
 | 
			
		||||
        for (int i = 0; i < array->n_children; i++) {
 | 
			
		||||
            if (array->children[i]->release) {
 | 
			
		||||
                array->children[i]->release(array->children[i]);
 | 
			
		||||
                array->children[i]->release = NULL;
 | 
			
		||||
                free(array->children[i]);
 | 
			
		||||
| 
						 | 
				
			
			@ -159,7 +157,7 @@ export_single_channel_array(Imaging im, struct ArrowArray *array) {
 | 
			
		|||
    int length = im->xsize * im->ysize;
 | 
			
		||||
 | 
			
		||||
    /* for now, single block images */
 | 
			
		||||
    if (!(im->blocks_count == 0 || im->blocks_count == 1)){
 | 
			
		||||
    if (!(im->blocks_count == 0 || im->blocks_count == 1)) {
 | 
			
		||||
        return IMAGING_ARROW_MEMORY_LAYOUT;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -274,7 +272,7 @@ export_fixed_pixel_array(Imaging im, struct ArrowArray *array) {
 | 
			
		|||
    }
 | 
			
		||||
    return 0;
 | 
			
		||||
 | 
			
		||||
 err:
 | 
			
		||||
err:
 | 
			
		||||
    if (array->children[0]) {
 | 
			
		||||
        free(array->children[0]);
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -121,8 +121,6 @@ struct ImagingMemoryInstance {
 | 
			
		|||
#ifdef Py_GIL_DISABLED
 | 
			
		||||
    PyMutex mutex;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define IMAGING_PIXEL_1(im, x, y) ((im)->image8[(y)][(x)])
 | 
			
		||||
| 
						 | 
				
			
			@ -747,7 +745,6 @@ export_imaging_schema(Imaging im, struct ArrowSchema *schema);
 | 
			
		|||
#define IMAGING_ARROW_INCOMPATIBLE_MODE -10
 | 
			
		||||
#define IMAGING_ARROW_MEMORY_LAYOUT -11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "ImagingUtils.h"
 | 
			
		||||
extern UINT8 *clip8_lookups;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -303,8 +303,8 @@ ImagingDelete(Imaging im) {
 | 
			
		|||
    im->refcount--;
 | 
			
		||||
 | 
			
		||||
    if (im->refcount > 0) {
 | 
			
		||||
      MUTEX_UNLOCK(im->mutex);
 | 
			
		||||
      return;
 | 
			
		||||
        MUTEX_UNLOCK(im->mutex);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    MUTEX_UNLOCK(im->mutex);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -702,10 +702,10 @@ ImagingNewArrow(
 | 
			
		|||
    // fmt:off   // don't reformat this
 | 
			
		||||
    if (((strcmp(schema->format, "I") == 0  // int32
 | 
			
		||||
          && im->pixelsize == 4             // 4xchar* storage
 | 
			
		||||
          && im->bands >= 2) // INT32 into any INT32 Storage mode
 | 
			
		||||
         ||  // (()||()) &&
 | 
			
		||||
         (strcmp(schema->format, im->arrow_band_format) == 0 // same mode
 | 
			
		||||
          && im->bands == 1)) // Single band match
 | 
			
		||||
          && im->bands >= 2)                // INT32 into any INT32 Storage mode
 | 
			
		||||
         ||                                 // (()||()) &&
 | 
			
		||||
         (strcmp(schema->format, im->arrow_band_format) == 0  // same mode
 | 
			
		||||
          && im->bands == 1))                                 // Single band match
 | 
			
		||||
        && pixels == external_array->length) {
 | 
			
		||||
        // one arrow element per, and it matches a pixelsize*char
 | 
			
		||||
        if (ImagingBorrowArrow(im, external_array, im->pixelsize)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user