From f166f18e9ddf266a2ad87ae0f7b2fd20b4fc580d Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Tue, 30 Jun 2015 23:21:31 -0500 Subject: [PATCH 1/2] Remove exif parser handler code This will need to be re-added when we support LibRaw 0.17 --- libraw/bindings.py | 7 +------ libraw/callbacks.py | 31 ------------------------------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/libraw/bindings.py b/libraw/bindings.py index d2a7965..1793ed3 100644 --- a/libraw/bindings.py +++ b/libraw/bindings.py @@ -8,7 +8,7 @@ from ctypes import util from libraw import errors -from libraw.callbacks import data_callback, exif_parser_callback, memory_callback, progress_callback +from libraw.callbacks import data_callback, memory_callback, progress_callback from libraw.errors import c_error from libraw.structs import libraw_data_t, libraw_decoder_info_t, libraw_processed_image_t @@ -54,11 +54,6 @@ def __init__(self): # pragma: no cover self.libraw_recycle_datastream.argtypes = [POINTER(libraw_data_t)] self.libraw_recycle.argtypes = [POINTER(libraw_data_t)] self.libraw_close.argtypes = [POINTER(libraw_data_t)] - self.libraw_set_exifparser_handler.argtypes = [ - POINTER(libraw_data_t), - exif_parser_callback, - c_void_p, - ] self.libraw_set_memerror_handler.argtypes = [ POINTER(libraw_data_t), memory_callback, diff --git a/libraw/callbacks.py b/libraw/callbacks.py index 79060d3..7ab4215 100644 --- a/libraw/callbacks.py +++ b/libraw/callbacks.py @@ -10,37 +10,6 @@ from ctypes import * # noqa -exif_parser_callback = CFUNCTYPE( - c_void_p, c_int, c_int, c_int, c_int, c_void_p -) -""" -Creates a callback for use by the EXIF parser. - -.. sourcecode:: python - - def exif_cb(context, tag, type, len, ord, ifp): - pass - - cb = exif_parser_callback(exif_cb) - - libraw.libraw_set_exifparser_handler(libraw_data, cb, data) - -Your callback function should map to the LibRaw C callback definition below: - -.. sourcecode:: c - - typedef void (*exif_parser_callback) ( - void *context, int tag, int type, int len, unsigned int ord, void *ifp - ); - - -Args: - callback (function): The Python function to convert to a C callback. - -Returns: - _ctypes.PyCFuncPtrType: A C callback. -""" - memory_callback = CFUNCTYPE(c_void_p, c_char_p, c_char_p) """ Creates a callback for use when there are memory errors in LibRaw. From 23c96fd154c42d8e474a26d07359ed78137e7d03 Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Tue, 30 Jun 2015 23:21:54 -0500 Subject: [PATCH 2/2] Fix discover utility function --- rawkit/util.py | 11 ++++++++--- tests/unit/util_test.py | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rawkit/util.py b/rawkit/util.py index b836514..20e6469 100644 --- a/rawkit/util.py +++ b/rawkit/util.py @@ -10,6 +10,7 @@ import os from libraw.bindings import LibRaw +from libraw.errors import FileUnsupported def discover(path): @@ -26,9 +27,13 @@ def discover(path): for root, _, files in os.walk(path): for file_name in files: file_path = os.path.join(root, file_name).encode('ascii') - if libraw.libraw_open_file(raw, file_path) == 0: - file_list.append(file_path) - libraw.libraw_recycle(raw) + try: + libraw.libraw_open_file(raw, file_path) + except FileUnsupported: + continue + finally: + libraw.libraw_recycle(raw) + file_list.append(file_path) libraw.libraw_close(raw) return file_list diff --git a/tests/unit/util_test.py b/tests/unit/util_test.py index 9d3ae4b..33e4197 100644 --- a/tests/unit/util_test.py +++ b/tests/unit/util_test.py @@ -2,6 +2,7 @@ import pytest from rawkit import util +from libraw.errors import FileUnsupported @pytest.yield_fixture @@ -17,7 +18,7 @@ def test_discover(libraw): 'rawkit.util.os.walk', return_value=(('', None, ('foo.CR2', 'foo.jpg')),) ): - libraw.libraw_open_file.side_effect = [0, 1] + libraw.libraw_open_file.side_effect = [0, FileUnsupported()] files = util.discover('') assert files == ['foo.CR2'.encode('ascii')]