File merged_pr_58.patch of Package python-ExifRead

From fba43abc5d0eea1c73ca23f85f6c93cb167cb754 Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Wed, 7 Oct 2015 12:14:32 +0200
Subject: [PATCH 1/7] Fix unicode issues

---
 exifread/classes.py | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index 91d6b93..9df3cbe 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -224,16 +224,21 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                             offset = offset + type_length
 
                 # now 'values' is either a string or an array
+                encoded_values = None
                 if count == 1 and field_type != 2:
-                    printable = str(values[0])
+                    encoded_values = values[0]
                 elif count > 50 and len(values) > 20:
-                    printable = str(values[0:20])[0:-1] + ", ... ]"
+                    encoded_values = []
+                    encoded_values[:0] = values[0:20]
+                    encoded_values[:20] = ',...'
                 else:
-                    try:
-                        printable = str(values)
-                    # fix for python2's handling of unicode values
-                    except UnicodeEncodeError:
-                        printable = unicode(values)
+                    encoded_values = values
+
+                try:
+                    printable = str(encoded_values)
+                # fix for python2's handling of unicode values
+                except UnicodeEncodeError:
+                    printable = unicode(values)
 
                 # compute printable version of values
                 if tag_entry:

From 9d3a19ef230589d8af3d3b28763cb78126d4995e Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Wed, 7 Oct 2015 12:23:11 +0200
Subject: [PATCH 2/7] Fixed string format.

---
 exifread/classes.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index 9df3cbe..713f7b7 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -230,7 +230,7 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                 elif count > 50 and len(values) > 20:
                     encoded_values = []
                     encoded_values[:0] = values[0:20]
-                    encoded_values[:20] = ',...'
+                    encoded_values[:20] = ', ... ]'
                 else:
                     encoded_values = values
 

From 065bf2689407d840b49fff0ba41809a36a3096d2 Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Thu, 8 Oct 2015 08:46:17 +0200
Subject: [PATCH 3/7] Fixed an error in string appending

---
 exifread/classes.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index 713f7b7..cc98ca7 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -230,7 +230,8 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                 elif count > 50 and len(values) > 20:
                     encoded_values = []
                     encoded_values[:0] = values[0:20]
-                    encoded_values[:20] = ', ... ]'
+                    encoded_values[20:] = ', ... ]'
+                    encoded_values = ''.join(encoded_values)
                 else:
                     encoded_values = values
 

From c9ff961dc99d53ba1b6b53e2214fb255e003519b Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Mon, 19 Oct 2015 17:54:45 +0200
Subject: [PATCH 4/7] Fixed issue in data format

---
 exifread/classes.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index cc98ca7..b1d2ddf 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -231,7 +231,7 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                     encoded_values = []
                     encoded_values[:0] = values[0:20]
                     encoded_values[20:] = ', ... ]'
-                    encoded_values = ''.join(encoded_values)
+                    encoded_values = ''.join(chr(encoded_values))
                 else:
                     encoded_values = values
 

From 897ee14e94bba19a9f1acbd1cba1c244856be9c6 Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Mon, 19 Oct 2015 19:35:34 +0200
Subject: [PATCH 5/7] Added a check to handle string in correct branch

---
 exifread/classes.py | 21 +++++++--------------
 1 file changed, 7 insertions(+), 14 deletions(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index b1d2ddf..ad538d4 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -224,22 +224,15 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                             offset = offset + type_length
 
                 # now 'values' is either a string or an array
-                encoded_values = None
                 if count == 1 and field_type != 2:
-                    encoded_values = values[0]
-                elif count > 50 and len(values) > 20:
-                    encoded_values = []
-                    encoded_values[:0] = values[0:20]
-                    encoded_values[20:] = ', ... ]'
-                    encoded_values = ''.join(chr(encoded_values))
+                    printable = str(values[0])
+                elif count > 50 and len(values) > 20 and not isinstance(values, basestring) :
+                    printable = str(values[0:20])[0:-1] + ", ... ]"
                 else:
-                    encoded_values = values
-
-                try:
-                    printable = str(encoded_values)
-                # fix for python2's handling of unicode values
-                except UnicodeEncodeError:
-                    printable = unicode(values)
+		    try:
+                    	printable = str(values)
+		    except:
+			printable = unicode(values)
 
                 # compute printable version of values
                 if tag_entry:

From 1dda7c2caf4d78f34bf1333ecd5f3daf0e215a0e Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Mon, 19 Oct 2015 19:41:58 +0200
Subject: [PATCH 6/7] Indent Error

---
 exifread/classes.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/exifread/classes.py b/exifread/classes.py
index ad538d4..10f405c 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -229,11 +229,10 @@ def dump_ifd(self, ifd, ifd_name, tag_dict=EXIF_TAGS, relative=0, stop_tag=DEFAU
                 elif count > 50 and len(values) > 20 and not isinstance(values, basestring) :
                     printable = str(values[0:20])[0:-1] + ", ... ]"
                 else:
-		    try:
-                    	printable = str(values)
-		    except:
-			printable = unicode(values)
-
+                    try:
+                        printable = str(values)
+                    except UnicodeEncodeError:
+                        printable = unicode(values)
                 # compute printable version of values
                 if tag_entry:
                     # optional 2nd tag element is present

From 89441161356f48aa35731ef291bd1136fa8cc4e3 Mon Sep 17 00:00:00 2001
From: Simone Camporeale <simone.camporeale@netgrid.it>
Date: Mon, 19 Oct 2015 19:45:29 +0200
Subject: [PATCH 7/7] Python V3 compatibility

---
 exifread/classes.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/exifread/classes.py b/exifread/classes.py
index 10f405c..7880dc9 100644
--- a/exifread/classes.py
+++ b/exifread/classes.py
@@ -7,6 +7,10 @@
 
 logger = get_logger()
 
+try:
+    basestring
+except NameError:
+    basestring = str
 
 class IfdTag:
     """
openSUSE Build Service is sponsored by