← Back to team overview

pyexiv2-developers team mailing list archive

Re: Test with python3

 

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 <
vincent.vandevyvre@xxxxxxxx> 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     : pyexiv2-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~pyexiv2-developers
> More help   : https://help.launchpad.net/ListHelp
>



-- 
Sincerely yours,
Rob G. Healey

Follow ups

References