Commit Graph

303 Commits

Author SHA1 Message Date
Shuge Lee
8db7169a32 Merge remote-tracking branch 'upstream/master'
Conflicts:
	.gitignore
2013-01-16 13:53:10 +08:00
d-schmidt
78a0ab56a8 Added possibility to save exif information in jpeg-files 2013-01-16 13:47:29 +08:00
d-schmidt
8fd4868a3d added option to load truncated image-files 2013-01-16 13:47:29 +08:00
d-schmidt
e87ad2a59a Added possibility to save gifs with a custom palette when using color mode P 2013-01-16 13:47:29 +08:00
d-schmidt
14162dc500 fixed an error with utf-8 chars in color profile names 2013-01-16 13:47:29 +08:00
Bryant Mairs
97bf36d84a Modified map.c to fix some MSVC10 compilation errors. 2013-01-16 13:47:29 +08:00
Brian J. Crowell
1a1e19d23c Handle Sane option strings as Unicode strings
The Sane documentation seems to imply that these option strings contain
Latin-1 text, not byte data, so we decode it and present it to the user
that way.
2013-01-16 13:47:29 +08:00
Brian J. Crowell
0a8d35fcc4 Set up Sane error object as exception instead of string
String exceptions don't work anymore.
2013-01-16 13:47:29 +08:00
Sandro Mani
a15e762ba2 Make pysane Python3-compatible 2013-01-16 13:47:29 +08:00
Brian J. Crowell
330b26a7aa Update the manifest to include a lot of missing files 2013-01-16 13:47:29 +08:00
Mikhail Korobov
72c43eff7a Fix tox test running: port selftest.py to Python 3; make it clear Python 2.5 is no longer supported (its support is broken in many ways in this branch); remove bundled doctest.py module (it is in stdlib since forever); remove extra stuff from tox.ini 2013-01-16 13:47:29 +08:00
Brian J. Crowell
34ad0b77ec py3k: Issue warnings when using the old fromstring/tostring
...although, you have to turn on deprecation warnings specifically in order
to get them.
2013-01-16 13:47:29 +08:00
Brian J. Crowell
9ab3ed3cc7 py3k: inquiry is now lenfunc
This fixes a build warning on 64-bit machines.
2013-01-16 13:47:29 +08:00
Brian Crowell
2891d5a15e py3k: Remove use_2to3 from setup.py
This is unnecessary now.
2013-01-16 13:47:29 +08:00
Brian Crowell
965928c63f py3k: Add Windows icon sanity test 2013-01-16 13:47:28 +08:00
Brian Crowell
730c6dd79d py3k: Add XPM read test
This test includes an XPM file with transparency.
2013-01-16 13:47:28 +08:00
Brian Crowell
bd957a9f62 py3k: Add TarIO test
Not too convinced of the size fix. While it works against my file, I'm not
sure someone would have accidentally been an index off and not noticed.
2013-01-16 13:47:28 +08:00
Brian Crowell
152da842ba py3k: Rewrite PdfImagePlugin into something more legible
After adding all the encode() calls, the PDF plugin (and a few others)
became much harder to read. This should be much easier on the eyes.
2013-01-16 13:47:28 +08:00
Brian Crowell
348e97027d py3k: Add .FLI sanity check, and fix palette bytes bug 2013-01-16 13:47:28 +08:00
Brian Crowell
5bc836b79b py3k: Add Photoshop sanity check 2013-01-16 13:47:28 +08:00
Brian Crowell
0bc8cfc90c py3k: Add PCX to roundtrip test
For some reason, the PCX codec round-trips now.
2013-01-16 13:47:28 +08:00
Brian Crowell
727c068231 py3k: Actually fix the EPS encoder
The EPS encoder wasn't part of Gohlke's test suite, so the previous "fixes"
there were only expected syntactic ones. This gives a cleaner fix to the
encoder.

The decoder doesn't work in round-trip due to a missing eps_decoder method
on the core module, but it's clear it worked at some point.
2013-01-16 13:47:28 +08:00
Brian Crowell
5addfab281 py3k: Get rid of _ParserFile; io.BytesIO does its job 2013-01-16 13:47:28 +08:00
Brian Crowell
825718a76a py3k: FIX: TGA missing o8 declaration
Plus, TGA was eligible for a round-trip test in test_imagefile. It has one
now.
2013-01-16 13:47:28 +08:00
Brian Crowell
d6c6dd4a88 py3k: FIX: Bad upside-down check in BmpImagePlugin 2013-01-16 13:47:28 +08:00
Brian Crowell
ebc23bf531 py3k: Remove ancient Python hacks 2013-01-16 13:47:28 +08:00
Christoph Gohlke
cb979c43c3 py3k: Allow slicing for paths
This is Gohlke's fix for two issues: negative indexes on paths were not
resolved to the correct index, and path slicing didn't work.

His fix for slicing is related to the one found at:

  http://renesd.blogspot.com/2009/07/python3-c-api-simple-slicing-sqslice.html

With this commit, all 79 tests (82 minus the three skipped ones) run
successfully on Python 2.6.8, Python 2.7.3rc2, and Python 3.2.3.
2013-01-16 13:47:28 +08:00
Brian Crowell
6f797c5851 py3k: The big push
There are two main issues fixed with this commit:

* bytes vs. str: All file, image, and palette data are now handled as
  bytes. A new _binary module consolidates the hacks needed to do this
  across Python versions. tostring/fromstring methods have been renamed to
  tobytes/frombytes, but the Python 2.6/2.7 versions alias them to the old
  names for compatibility. Users should move to tobytes/frombytes.

  One other potentially-breaking change is that text data in image files
  (such as tags, comments) are now explicitly handled with a specific
  character encoding in mind. This works well with the Unicode str in
  Python 3, but may trip up old code expecting a straight byte-for-byte
  translation to a Python string. This also required a change to Gohlke's
  tags tests (in Tests/test_file_png.py) to expect Unicode strings from
  the code.

* True div vs. floor div: Many division operations used the "/" operator
  to do floor division, which is now the "//" operator in Python 3. These
  were fixed.

As of this commit, on the first pass, I have one failing test (improper
handling of a slice object in a C module, test_imagepath.py) in Python 3,
and three that that I haven't tried running yet (test_imagegl,
test_imagegrab, and test_imageqt). I also haven't tested anything on
Windows. All but the three skipped tests run flawlessly against Pythons
2.6 and 2.7.
2013-01-16 13:47:28 +08:00
Brian Crowell
3c448d81ca py3k: Publish both frombytes and fromstring in C modules for old Python
To ease the transition, frombytes and tobytes need to be declared in both
versions.
2013-01-16 13:47:28 +08:00
Brian Crowell
952685faa1 py3k: Type coercion is gone
Types aren't automatically converted for operations for you.
2013-01-16 13:47:28 +08:00
Brian Crowell
12d8977542 py3k: Sort by key, not cmp
Py3k only supports key because it's more efficient. Not even sure 2to3
checks for this.
2013-01-16 13:47:28 +08:00
Brian Crowell
67316d78f9 py3k: Map long type to int
int() is really now long() in py3k, but to avoid breaking 2.6/2.7, we leave
the integer types where they are and just map long to int in py3k.

Also, pretty proud of myself for finding an easy way of detecting py3k.
2013-01-16 13:47:28 +08:00
Brian Crowell
73f7c7a187 py3k: 2to3's "idiom" filter
This is, I guess, a few things the Python devs were just fed up with.

* "while 1" is now "while True"
* Types are compared with isinstance instead of ==
* Sort a list in one go with sorted()

My own twist is to also replace type('') with str, type(()) with tuple,
type([]) with list, type(1) with int, and type(5000.0) with float.
2013-01-16 13:47:28 +08:00
Brian Crowell
da5ca4caea py3k: Change apply() to unpacking syntax
apply() is no longer available in py3k.
2013-01-16 13:47:28 +08:00
Brian Crowell
1a82abcad1 py3k: Integer long literals are no longer valid syntax 2013-01-16 13:47:28 +08:00
Brian Crowell
d37a2e192c py3k: Convert StringIO.StringIO to io.BytesIO
io.BytesIO is already in 2.6. Some of the more obvious bytes literals are
marked in this commit.
2013-01-16 13:47:28 +08:00
Brian Crowell
b0f6f95bdb py3k: Tkinter module is now tkinter 2013-01-16 13:47:28 +08:00
Brian Crowell
59d1372940 py3k: __builtin__ module is now builtins 2013-01-16 13:47:28 +08:00
Brian Crowell
2868e0cb0b py3k: Remove Image types import
For awhile now, str == type("") and so on. So we use the appropriate int,
str, basestring, or tuple type where applicable.
2013-01-16 13:47:28 +08:00
Brian Crowell
9cdb285398 py3k: Convert backticks to repr()
Backticks are no longer valid syntax for repr().
2013-01-16 13:47:27 +08:00
Brian Crowell
2a81f6266f py3k: sys.maxint renamed to sys.maxsize 2013-01-16 13:47:27 +08:00
Brian Crowell
6a68d03bab py3k: Use relative imports
In py3k, imports are absolute unless using the "from . import" syntax.

This commit also solves a recursive import between Image, ImageColor, and
ImagePalette by delay-importing ImagePalette in Image.

I'm not too keen on this commit because the syntax is ugly. I might go back
and prefer the prettier "from PIL import".
2013-01-16 13:47:27 +08:00
Brian Crowell
7a3feb2ae4 py3k: Remove tuples in parameter lists
Py3k no longer supports unpacking tuples in the parameters.
2013-01-16 13:47:27 +08:00
Brian Crowell
2b31043fbb py3k: print is a function
Seriously, if you didn't know that, you've been in a freaking cave, man.
2013-01-16 13:47:27 +08:00
Brian Crowell
61038ad796 py3k: Import reduce function
reduce() is no longer a built-in function in py3k.
2013-01-16 13:47:27 +08:00
Brian Crowell
659f1ba68f py3k: Use isinstance for numbers and sequences
operator.isNumberType() and .isSequenceType() go away in py3k.
2013-01-16 13:47:27 +08:00
Brian Crowell
3189876053 py3k: __nonzero__ is now __bool__ 2013-01-16 13:47:27 +08:00
Brian Crowell
a5e800bfc3 py3k: Add true Unicode support to OleFileIO
The day has arrived when Python provides an official way to handle Unicode
strings.
2013-01-16 13:47:27 +08:00
Brian Crowell
f1666cbb21 py3k: map and filter to list comprehensions
What's really going on is that map() and filter() return iterators in py3k.
I've just gone ahead and turned them all into list comprehensions, because
I find them much easier to read.
2013-01-16 13:47:27 +08:00
Brian Crowell
48b0e0c6e0 py3k: Rewrite dictionary support for Tiff ImageFileDictionary
This commit brings in the collections.MutableMapping mixin to provide full
dictionary support for ImageFileDictionary.
2013-01-16 13:47:27 +08:00