Merge remote-tracking branch 'upstream/master' into check-manifest-on-travis

This commit is contained in:
hugovk 2015-06-28 22:49:51 +03:00
commit ea1a370f6b
11 changed files with 79 additions and 30 deletions

View File

@ -3,6 +3,16 @@ Changelog (Pillow)
2.9.0 (Unreleased) 2.9.0 (Unreleased)
------------------ ------------------
- Fixed tox test script path #1308
[radarhere]
- Added width and height properties #1304
[radarhere]
- Update tiff and tk tcl 8.5 versions #1303
[radarhere, wiredfool]
- Add functions to convert: Image <-> QImage; Image <-> QPixmap #1217 - Add functions to convert: Image <-> QImage; Image <-> QPixmap #1217
[radarhere, rominf] [radarhere, rominf]

View File

@ -1,14 +1,16 @@
include *.c include *.c
include *.h include *.h
include *.in
include *.md include *.md
include *.py include *.py
include *.sh
include *.rst include *.rst
include *.sh
include *.txt include *.txt
include *.yaml include *.yaml
include *.yml
include .coveragerc include .coveragerc
include .gitattributes include .gitattributes
include .travis.yml
include LICENSE include LICENSE
include Makefile include Makefile
include tox.ini include tox.ini
@ -16,7 +18,6 @@ recursive-include PIL *.md
recursive-include Scripts *.py recursive-include Scripts *.py
recursive-include Scripts *.rst recursive-include Scripts *.rst
recursive-include Scripts *.sh recursive-include Scripts *.sh
recursive-include Scripts README.rst
recursive-include Tests *.bdf recursive-include Tests *.bdf
recursive-include Tests *.bin recursive-include Tests *.bin
recursive-include Tests *.bmp recursive-include Tests *.bmp
@ -33,11 +34,13 @@ recursive-include Tests *.html
recursive-include Tests *.icc recursive-include Tests *.icc
recursive-include Tests *.icns recursive-include Tests *.icns
recursive-include Tests *.ico recursive-include Tests *.ico
recursive-include Tests *.im
recursive-include Tests *.j2k recursive-include Tests *.j2k
recursive-include Tests *.jp2 recursive-include Tests *.jp2
recursive-include Tests *.jpg recursive-include Tests *.jpg
recursive-include Tests *.lut recursive-include Tests *.lut
recursive-include Tests *.mpo recursive-include Tests *.mpo
recursive-include Tests *.msp
recursive-include Tests *.pbm recursive-include Tests *.pbm
recursive-include Tests *.pcf recursive-include Tests *.pcf
recursive-include Tests *.pcx recursive-include Tests *.pcx
@ -59,8 +62,8 @@ recursive-include Tests *.tiff
recursive-include Tests *.ttf recursive-include Tests *.ttf
recursive-include Tests *.txt recursive-include Tests *.txt
recursive-include Tests *.webp recursive-include Tests *.webp
recursive-include Tests *.xbm
recursive-include Tests *.xpm recursive-include Tests *.xpm
recursive-include Tests *.msp
recursive-include Tk *.c recursive-include Tk *.c
recursive-include Tk *.rst recursive-include Tk *.rst
recursive-include depends *.rst recursive-include depends *.rst
@ -71,9 +74,13 @@ recursive-include docs *.html
recursive-include docs *.py recursive-include docs *.py
recursive-include docs *.rst recursive-include docs *.rst
recursive-include docs *.txt recursive-include docs *.txt
recursive-include docs BUILDME
recursive-include docs COPYING
recursive-include docs Guardfile
recursive-include docs Makefile recursive-include docs Makefile
recursive-include docs Guardfile
recursive-include docs COPYING
recursive-include docs BUILDME
recursive-include libImaging *.c recursive-include libImaging *.c
recursive-include libImaging *.h recursive-include libImaging *.h
recursive-include winbuild *.gitignore
recursive-include winbuild *.md
recursive-include winbuild *.opt
recursive-include winbuild *.py

View File

@ -1,5 +1,6 @@
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html # https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html
.PHONY: clean coverage doc docserve help inplace install install-req release-test sdist test upload upload-test .PHONY: clean coverage doc docserve help inplace install install-req release-test sdist test upload upload-test
.DEFAULT_GOAL := release-test
clean: clean:
python setup.py clean python setup.py clean

View File

@ -504,6 +504,14 @@ class Image(object):
self.readonly = 0 self.readonly = 0
self.pyaccess = None self.pyaccess = None
@property
def width(self):
return self.size[0]
@property
def height(self):
return self.size[1]
def _new(self, im): def _new(self, im):
new = Image() new = Image()
new.im = im new.im = im

View File

@ -548,7 +548,7 @@ class ImageFileDirectory(collections.MutableMapping):
# and doesn't match the tiff spec: 8-bit byte that # and doesn't match the tiff spec: 8-bit byte that
# contains a 7-bit ASCII code; the last byte must be # contains a 7-bit ASCII code; the last byte must be
# NUL (binary zero). Also, I don't think this was well # NUL (binary zero). Also, I don't think this was well
# excersized before. # exercised before.
data = value = b"" + value.encode('ascii', 'replace') + b"\0" data = value = b"" + value.encode('ascii', 'replace') + b"\0"
else: else:
# integer data # integer data

View File

@ -30,6 +30,15 @@ class TestImage(PillowTestCase):
# self.assertRaises( # self.assertRaises(
# MemoryError, lambda: Image.new("L", (1000000, 1000000))) # MemoryError, lambda: Image.new("L", (1000000, 1000000)))
def test_width_height(self):
im = Image.new("RGB", (1, 2))
self.assertEqual(im.width, 1)
self.assertEqual(im.height, 2)
im.size = (3, 4)
self.assertEqual(im.width, 3)
self.assertEqual(im.height, 4)
def test_invalid_image(self): def test_invalid_image(self):
if str is bytes: if str is bytes:
import StringIO import StringIO

View File

@ -1,5 +1,4 @@
version: 2.9.pre.{build} version: 2.9.pre.{build}
shallow_clone: true
clone_folder: c:\pillow clone_folder: c:\pillow
init: init:
- ECHO %PYTHON% - ECHO %PYTHON%

View File

@ -181,6 +181,18 @@ Instances of the :py:class:`Image` class have the following attributes:
:type: ``(width, height)`` :type: ``(width, height)``
.. py:attribute:: width
Image width, in pixels.
:type: :py:class:`int`
.. py:attribute:: height
Image height, in pixels.
:type: :py:class:`int`
.. py:attribute:: palette .. py:attribute:: palette
Colour palette table, if any. If mode is “P”, this should be an instance of Colour palette table, if any. If mode is “P”, this should be an instance of

View File

@ -11,4 +11,4 @@ commands =
{envpython} setup.py clean {envpython} setup.py clean
{envpython} setup.py build_ext --inplace {envpython} setup.py build_ext --inplace
{envpython} selftest.py {envpython} selftest.py
{envpython} Tests/run.py --installed {envpython} test-installed.py --installed

View File

@ -91,18 +91,19 @@ endlocal
""" % compiler """ % compiler
def cp_tk(): def cp_tk(ver_85, ver_86):
versions = {'ver_85':ver_85, 'ver_86':ver_86}
return r""" return r"""
mkdir %INCLIB%\tcl85\include\X11 mkdir %%INCLIB%%\tcl85\include\X11
copy /Y /B %BUILD%\tcl8.5.13\generic\*.h %INCLIB%\tcl85\include\ copy /Y /B %%BUILD%%\tcl%(ver_85)s\generic\*.h %%INCLIB%%\tcl85\include\
copy /Y /B %BUILD%\tk8.5.13\generic\*.h %INCLIB%\tcl85\include\ copy /Y /B %%BUILD%%\tk%(ver_85)s\generic\*.h %%INCLIB%%\tcl85\include\
copy /Y /B %BUILD%\tk8.5.13\xlib\X11\* %INCLIB%\tcl85\include\X11\ copy /Y /B %%BUILD%%\tk%(ver_85)s\xlib\X11\* %%INCLIB%%\tcl85\include\X11\
mkdir %INCLIB%\tcl86\include\X11 mkdir %%INCLIB%%\tcl86\include\X11
copy /Y /B %BUILD%\tcl8.6.4\generic\*.h %INCLIB%\tcl86\include\ copy /Y /B %%BUILD%%\tcl%(ver_86)s\generic\*.h %%INCLIB%%\tcl86\include\
copy /Y /B %BUILD%\tk8.6.4\generic\*.h %INCLIB%\tcl86\include\ copy /Y /B %%BUILD%%\tk%(ver_86)s\generic\*.h %%INCLIB%%\tcl86\include\
copy /Y /B %BUILD%\tk8.6.4\xlib\X11\* %INCLIB%\tcl86\include\X11\ copy /Y /B %%BUILD%%\tk%(ver_86)s\xlib\X11\* %%INCLIB%%\tcl86\include\X11\
""" """ % versions
def header(): def header():
@ -305,7 +306,7 @@ def add_compiler(compiler):
mkdirs() mkdirs()
fetch_libs() fetch_libs()
# extract_binlib() # extract_binlib()
script = [header(), cp_tk()] script = [header(), cp_tk(libs['tk-8.5']['version'],libs['tk-8.6']['version'] )]
if 'PYTHON' in os.environ: if 'PYTHON' in os.environ:

View File

@ -22,9 +22,9 @@ libs = {'zlib': {
'dir': 'jpeg-9a', 'dir': 'jpeg-9a',
}, },
'tiff': { 'tiff': {
'url': 'ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.3.zip', 'url': 'ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.4.zip',
'hash': 'md5:dd70349cedb3981371686e1c9b89a7f9', # not found - generated by wiredfool 'hash': 'md5:8f538a34156188f9a8dcddb679c65d1e',
'dir': 'tiff-4.0.3', 'dir': 'tiff-4.0.4',
}, },
'freetype': { 'freetype': {
'url': 'http://download.savannah.gnu.org/releases/freetype/freetype-2.6.tar.gz', 'url': 'http://download.savannah.gnu.org/releases/freetype/freetype-2.6.tar.gz',
@ -37,14 +37,15 @@ libs = {'zlib': {
'dir': 'lcms2-2.7', 'dir': 'lcms2-2.7',
}, },
'tcl-8.5': { 'tcl-8.5': {
'url': SF_MIRROR+'/project/tcl/Tcl/8.5.13/tcl8513-src.zip', 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.18/tcl8518-src.zip',
'hash': 'sha1:3e01585c91293c532a3cd594ec59deca92153a5e', 'hash': 'sha1:4c2aed9043088c630a4c795265e2738ef1b4db3b',
'dir': '', 'dir': '',
}, },
'tk-8.5': { 'tk-8.5': {
'url': SF_MIRROR+'/project/tcl/Tcl/8.5.13/tk8513-src.zip', 'url': SF_MIRROR+'/project/tcl/Tcl/8.5.18/tk8518-src.zip',
'hash': 'sha1:23a1d7ddd416e11e06dfdb9f86111d4bab9420b4', 'hash': 'sha1:273f55148777413774aa722ecad25cabda1e31ae',
'dir': '', 'dir': '',
'version':'8.5.18',
}, },
'tcl-8.6': { 'tcl-8.6': {
'url': SF_MIRROR+'/project/tcl/Tcl/8.6.4/tcl864-src.zip', 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.4/tcl864-src.zip',
@ -55,12 +56,13 @@ libs = {'zlib': {
'url': SF_MIRROR+'/project/tcl/Tcl/8.6.4/tk864-src.zip', 'url': SF_MIRROR+'/project/tcl/Tcl/8.6.4/tk864-src.zip',
'hash': 'md5:111d45061a69e7f5250b6ec8ca7c4f35', 'hash': 'md5:111d45061a69e7f5250b6ec8ca7c4f35',
'dir': '', 'dir': '',
'version':'8.6.4',
}, },
'webp': { 'webp': {
'url': 'http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz', 'url': 'http://downloads.webmproject.org/releases/webp/libwebp-0.4.3.tar.gz',
'hash': 'sha1:1c307a61c4d0018620b4ba9a58e8f48a8d6640ef', 'hash': 'sha1:1c307a61c4d0018620b4ba9a58e8f48a8d6640ef',
'dir': 'libwebp-0.4.3', 'dir': 'libwebp-0.4.3',
}, },
'openjpeg': { 'openjpeg': {
'url': SF_MIRROR+'/project/openjpeg/openjpeg/2.1.0/openjpeg-2.1.0.tar.gz', 'url': SF_MIRROR+'/project/openjpeg/openjpeg/2.1.0/openjpeg-2.1.0.tar.gz',
@ -68,7 +70,7 @@ libs = {'zlib': {
'dir': 'openjpeg-2.1.0', 'dir': 'openjpeg-2.1.0',
}, },
} }
bin_libs = { bin_libs = {
'openjpeg': { 'openjpeg': {