Greetings: As the development of Python3 is on fire right now, and everybody seems to be upgrading their software to match, do you have any plans on upgrading pyexiv2???
Sincerely yours, Rob G. Healey On Mon, May 14, 2012 at 3:19 AM, Vincent Vande Vyvre < [email protected]> wrote: > Hi Olivier, > Hi all, > > Ubuntu 12.04 provide all necessary for the compilation of boost with > Python3 > (maybe Oneiric too, I've skipped this version) > > Following the same procedure as describe into the bug > https://bugs.launchpad.net/pyexiv2/+bug/824440, > pyexiv2 works fine with Python3 but read only. Same as with Archlinux. > > It seems the problem is in the data format. Unicode, ASCII, bytes ... > > Some examples: > > tag = "Exif.Photo.UserComment" > val = "Soirée d'été" # <class str> > > ---------------------------------------------- > data[tag].value = val > Error: Python argument types in > _ExifTag._setRawValue(_ExifTag, bytes) > did not match C++ signature: > _setRawValue(exiv2wrapper::ExifTag {lvalue}, std::string) > ---------------------------------------------- > > val = unicodedata.normalize('NFKD', val).encode('ascii', 'ignore') # > <class 'bytes'> > data[tag].value = val > Error: Python argument types in > _ExifTag._setRawValue(_ExifTag, bytes) > did not match C++ signature: > _setRawValue(exiv2wrapper::ExifTag {lvalue}, std::string) > ----------------------------------------------- > > data[tag].value = '{0}'.format(val) > Error: Python argument types in > _ExifTag._setRawValue(_ExifTag, bytes) > did not match C++ signature: > _setRawValue(exiv2wrapper::ExifTag {lvalue}, std::string) > ----------------------------------------------- > > tag = 'Exif.GPSInfo.GPSLatitudeRef' > latref = 'N' # <class str> > > Traceback (most recent call last): > ... > File "/home/vincent/oqapy3/metadatas.py", line 406, in modify_geotags > self.datas[tag].value = latref > File "/usr/lib/python3.2/dist-packages/pyexiv2/exif.py", line 198, in > _set_value > self.raw_value = self._convert_to_string(value) > File "/usr/lib/python3.2/dist-packages/pyexiv2/exif.py", line 164, in > _set_raw_value > self._tag._setRawValue(value) > Boost.Python.ArgumentError: Python argument types in > _ExifTag._setRawValue(_ExifTag, bytes) > did not match C++ signature: > _setRawValue(exiv2wrapper::ExifTag {lvalue}, std::string) > --------------------------------------------- > > tag = 'Exif.GPSInfo.GPSLatitude' > val = [Rational(50, 1), Rational(49, 1), Rational(54, 1)] # <class 'list'> > data[tag].value = val > > ... No error, great! > > So, may I perform other tests? feel free to ask me, I've a machine only > for testing. > > Best regards. > Vincent > > > > -- > Vincent V.V. > Oqapy <https://launchpad.net/oqapy> . Qarte+7 > <https://launchpad.net/qarte+7> . PaQager <https://launchpad.net/paqager> > > > _______________________________________________ > Mailing list: https://launchpad.net/~pyexiv2-developers > Post to : [email protected] > Unsubscribe : https://launchpad.net/~pyexiv2-developers > More help : https://help.launchpad.net/ListHelp > -- Sincerely yours, Rob G. Healey
_______________________________________________ Mailing list: https://launchpad.net/~pyexiv2-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~pyexiv2-developers More help : https://help.launchpad.net/ListHelp

