mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-12-27 10:26:19 +03:00
commit
81c88b1ead
9
.gitignore
vendored
9
.gitignore
vendored
|
@ -6,6 +6,7 @@ __pycache__/
|
||||||
*.so
|
*.so
|
||||||
|
|
||||||
# Distribution / packaging
|
# Distribution / packaging
|
||||||
|
.eggs/
|
||||||
.Python
|
.Python
|
||||||
env/
|
env/
|
||||||
bin/
|
bin/
|
||||||
|
@ -69,3 +70,11 @@ docs/_build/
|
||||||
#OS
|
#OS
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
# JetBrains
|
||||||
|
.idea
|
||||||
|
|
||||||
|
# Extra test images installed from pillow-depends/test_images
|
||||||
|
Tests/images/README.md
|
||||||
|
Tests/images/msp
|
||||||
|
Tests/images/picins
|
||||||
|
Tests/images/sunraster
|
||||||
|
|
27
.travis.yml
27
.travis.yml
|
@ -17,19 +17,18 @@ matrix:
|
||||||
- python: "2.7_with_system_site_packages" # For PyQt4
|
- python: "2.7_with_system_site_packages" # For PyQt4
|
||||||
- python: '3.5'
|
- python: '3.5'
|
||||||
- python: '3.4'
|
- python: '3.4'
|
||||||
- python: '3.3'
|
|
||||||
- python: '3.7-dev'
|
- python: '3.7-dev'
|
||||||
- env: DOCKER="alpine"
|
- env: DOCKER="alpine" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="arch" # contains PyQt5
|
- env: DOCKER="arch" DOCKER_TAG="pytest" # contains PyQt5
|
||||||
- env: DOCKER="ubuntu-trusty-x86"
|
- env: DOCKER="ubuntu-trusty-x86" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="ubuntu-xenial-amd64"
|
- env: DOCKER="ubuntu-xenial-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="debian-stretch-x86"
|
- env: DOCKER="debian-stretch-x86" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="centos-6-amd64"
|
- env: DOCKER="centos-6-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="centos-7-amd64"
|
- env: DOCKER="centos-7-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="amazon-1-amd64"
|
- env: DOCKER="amazon-1-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="amazon-2-amd64"
|
- env: DOCKER="amazon-2-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="fedora-26-amd64"
|
- env: DOCKER="fedora-26-amd64" DOCKER_TAG="pytest"
|
||||||
- env: DOCKER="fedora-27-amd64"
|
- env: DOCKER="fedora-27-amd64" DOCKER_TAG="pytest"
|
||||||
|
|
||||||
dist: trusty
|
dist: trusty
|
||||||
|
|
||||||
|
@ -42,7 +41,7 @@ install:
|
||||||
- if [ "$DOCKER" == "" ]; then .travis/install.sh; fi
|
- if [ "$DOCKER" == "" ]; then .travis/install.sh; fi
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- if [ "$DOCKER" ]; then docker pull pythonpillow/$DOCKER; fi
|
- if [ "$DOCKER" ]; then docker pull pythonpillow/$DOCKER:$DOCKER_TAG; fi
|
||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
# Qt needs a display for some of the tests, and it's only run on the system site packages install
|
# Qt needs a display for some of the tests, and it's only run on the system site packages install
|
||||||
|
@ -56,7 +55,7 @@ script:
|
||||||
else
|
else
|
||||||
# the Pillow user in the docker container is UID 1000
|
# the Pillow user in the docker container is UID 1000
|
||||||
sudo chown -R 1000 $TRAVIS_BUILD_DIR
|
sudo chown -R 1000 $TRAVIS_BUILD_DIR
|
||||||
docker run -v $TRAVIS_BUILD_DIR:/Pillow pythonpillow/$DOCKER
|
docker run -v $TRAVIS_BUILD_DIR:/Pillow pythonpillow/$DOCKER:$DOCKER_TAG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
|
|
|
@ -18,9 +18,9 @@ codecov
|
||||||
if [ "$DOCKER" == "" ]; then
|
if [ "$DOCKER" == "" ]; then
|
||||||
pip install pyflakes pycodestyle
|
pip install pyflakes pycodestyle
|
||||||
pyflakes *.py | tee >(wc -l)
|
pyflakes *.py | tee >(wc -l)
|
||||||
pyflakes PIL/*.py | tee >(wc -l)
|
pyflakes src/PIL/*.py | tee >(wc -l)
|
||||||
pyflakes Tests/*.py | tee >(wc -l)
|
pyflakes Tests/*.py | tee >(wc -l)
|
||||||
pycodestyle --statistics --count PIL/*.py
|
pycodestyle --statistics --count src/PIL/*.py
|
||||||
pycodestyle --statistics --count Tests/*.py
|
pycodestyle --statistics --count Tests/*.py
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -8,11 +8,12 @@ sudo apt-get -qq install libfreetype6-dev liblcms2-dev python-tk\
|
||||||
libharfbuzz-dev libfribidi-dev
|
libharfbuzz-dev libfribidi-dev
|
||||||
|
|
||||||
pip install cffi
|
pip install cffi
|
||||||
pip install nose
|
|
||||||
pip install check-manifest
|
pip install check-manifest
|
||||||
pip install olefile
|
|
||||||
pip install pyroma
|
|
||||||
pip install coverage
|
pip install coverage
|
||||||
|
pip install olefile
|
||||||
|
pip install -U pytest
|
||||||
|
pip install -U pytest-cov
|
||||||
|
pip install pyroma
|
||||||
pip install test-image-results
|
pip install test-image-results
|
||||||
|
|
||||||
# docs only on Python 2.7
|
# docs only on Python 2.7
|
||||||
|
|
|
@ -3,12 +3,13 @@
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
coverage erase
|
coverage erase
|
||||||
python setup.py clean
|
make clean
|
||||||
CFLAGS="-coverage" python setup.py build_ext --inplace
|
make install-coverage
|
||||||
|
|
||||||
|
python selftest.py
|
||||||
|
python -m pytest -vx --cov PIL --cov-report term Tests
|
||||||
|
|
||||||
coverage run --append --include=PIL/* selftest.py
|
|
||||||
coverage run --append --include=PIL/* -m nose -vx Tests/test_*.py
|
|
||||||
pushd /tmp/check-manifest && check-manifest --ignore ".coveragerc,.editorconfig,*.yml,*.yaml,tox.ini" && popd
|
pushd /tmp/check-manifest && check-manifest --ignore ".coveragerc,.editorconfig,*.yml,*.yaml,tox.ini" && popd
|
||||||
|
|
||||||
# Docs
|
# Docs
|
||||||
if [ "$TRAVIS_PYTHON_VERSION" == "2.7" ]; then make install && make doccheck; fi
|
if [ "$TRAVIS_PYTHON_VERSION" == "2.7" ]; then make doccheck; fi
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Changelog (Pillow)
|
Changelog (Pillow)
|
||||||
==================
|
==================
|
||||||
|
|
||||||
4.4.0 (unreleased)
|
5.0.0 (unreleased)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
- Dynamically link libraqm #2753
|
- Dynamically link libraqm #2753
|
||||||
|
|
|
@ -10,9 +10,8 @@ include *.txt
|
||||||
include LICENSE
|
include LICENSE
|
||||||
include Makefile
|
include Makefile
|
||||||
graft Tests
|
graft Tests
|
||||||
graft PIL
|
graft src
|
||||||
graft Tk
|
graft Tk
|
||||||
graft libImaging
|
|
||||||
graft depends
|
graft depends
|
||||||
graft winbuild
|
graft winbuild
|
||||||
graft docs
|
graft docs
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -15,12 +15,9 @@ co:
|
||||||
done
|
done
|
||||||
|
|
||||||
coverage:
|
coverage:
|
||||||
coverage erase
|
python selftest.py
|
||||||
coverage run --parallel-mode --include=PIL/* selftest.py
|
python setup.py test
|
||||||
nosetests --with-cov --cov='PIL/' --cov-report=html Tests/test_*.py
|
|
||||||
# Doesn't combine properly before report, writing report instead of displaying invalid report.
|
|
||||||
rm -r htmlcov || true
|
rm -r htmlcov || true
|
||||||
coverage combine
|
|
||||||
coverage report
|
coverage report
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
|
@ -53,15 +50,15 @@ help:
|
||||||
@echo " upload-test build and upload sdists to test.pythonpackages.com"
|
@echo " upload-test build and upload sdists to test.pythonpackages.com"
|
||||||
|
|
||||||
inplace: clean
|
inplace: clean
|
||||||
python setup.py build_ext --inplace
|
python setup.py develop build_ext --inplace
|
||||||
|
|
||||||
install:
|
install:
|
||||||
python setup.py install
|
python setup.py install
|
||||||
python selftest.py --installed
|
python selftest.py
|
||||||
|
|
||||||
install-coverage:
|
install-coverage:
|
||||||
CFLAGS="-coverage" python setup.py build_ext install
|
CFLAGS="-coverage" python setup.py build_ext install
|
||||||
python selftest.py --installed
|
python selftest.py
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
# make a debug version if we don't have a -dbg python. Leaves in symbols
|
# make a debug version if we don't have a -dbg python. Leaves in symbols
|
||||||
|
@ -81,9 +78,9 @@ release-test:
|
||||||
$(MAKE) install-req
|
$(MAKE) install-req
|
||||||
python setup.py develop
|
python setup.py develop
|
||||||
python selftest.py
|
python selftest.py
|
||||||
nosetests Tests/test_*.py
|
python -m pytest Tests
|
||||||
python setup.py install
|
python setup.py install
|
||||||
python test-installed.py
|
python -m pytest -qq
|
||||||
check-manifest
|
check-manifest
|
||||||
pyroma .
|
pyroma .
|
||||||
viewdoc
|
viewdoc
|
||||||
|
@ -92,7 +89,7 @@ sdist:
|
||||||
python setup.py sdist --format=gztar
|
python setup.py sdist --format=gztar
|
||||||
|
|
||||||
test:
|
test:
|
||||||
python test-installed.py
|
pytest -qq
|
||||||
|
|
||||||
# https://docs.python.org/2/distutils/packageindex.html#the-pypirc-file
|
# https://docs.python.org/2/distutils/packageindex.html#the-pypirc-file
|
||||||
upload-test:
|
upload-test:
|
||||||
|
|
|
@ -8,7 +8,7 @@ Dependencies
|
||||||
|
|
||||||
Install::
|
Install::
|
||||||
|
|
||||||
pip install coverage nose
|
pip install pytest pytest-cov
|
||||||
|
|
||||||
Execution
|
Execution
|
||||||
---------
|
---------
|
||||||
|
@ -21,12 +21,11 @@ To run an individual test::
|
||||||
|
|
||||||
Run all the tests from the root of the Pillow source distribution::
|
Run all the tests from the root of the Pillow source distribution::
|
||||||
|
|
||||||
nosetests -vx Tests/test_*.py
|
pytest -vx Tests
|
||||||
|
|
||||||
Or with coverage::
|
Or with coverage::
|
||||||
|
|
||||||
coverage run --append --include=PIL/* -m nose -vx Tests/test_*.py
|
pytest -vx --cov PIL --cov-report term Tests
|
||||||
coverage report
|
|
||||||
coverage html
|
coverage html
|
||||||
open htmlcov/index.html
|
open htmlcov/index.html
|
||||||
|
|
||||||
|
@ -34,11 +33,8 @@ Or with coverage::
|
||||||
|
|
||||||
To run an individual test::
|
To run an individual test::
|
||||||
|
|
||||||
./test-installed.py Tests/test_image.py
|
pytest -k Tests/test_image.py
|
||||||
|
|
||||||
Run all the tests from the root of the Pillow source distribution::
|
Run all the tests from the root of the Pillow source distribution::
|
||||||
|
|
||||||
./test-installed.py
|
pytest
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -63,9 +63,8 @@ class PillowTestCase(unittest.TestCase):
|
||||||
def delete_tempfile(self, path):
|
def delete_tempfile(self, path):
|
||||||
try:
|
try:
|
||||||
ok = self.currentResult.wasSuccessful()
|
ok = self.currentResult.wasSuccessful()
|
||||||
except AttributeError: # for nosetests
|
except AttributeError: # for pytest
|
||||||
proxy = self.currentResult
|
ok = True
|
||||||
ok = (len(proxy.errors) + len(proxy.failures) == 0)
|
|
||||||
|
|
||||||
if ok:
|
if ok:
|
||||||
# only clean out tempfiles if test passed
|
# only clean out tempfiles if test passed
|
||||||
|
@ -210,10 +209,6 @@ class PillowTestCase(unittest.TestCase):
|
||||||
if skip:
|
if skip:
|
||||||
self.skipTest(msg or "Known Bad Test")
|
self.skipTest(msg or "Known Bad Test")
|
||||||
|
|
||||||
def shortDescription(self):
|
|
||||||
# Prevents `nose -v` printing docstrings
|
|
||||||
return None
|
|
||||||
|
|
||||||
def tempfile(self, template):
|
def tempfile(self, template):
|
||||||
assert template[:5] in ("temp.", "temp_")
|
assert template[:5] in ("temp.", "temp_")
|
||||||
fd, path = tempfile.mkstemp(template[4:], template[:4])
|
fd, path = tempfile.mkstemp(template[4:], template[:4])
|
||||||
|
|
|
@ -251,7 +251,7 @@ class TestCffi(AccessTest):
|
||||||
|
|
||||||
class TestEmbeddable(unittest.TestCase):
|
class TestEmbeddable(unittest.TestCase):
|
||||||
@unittest.skipIf(not sys.platform.startswith('win32') or
|
@unittest.skipIf(not sys.platform.startswith('win32') or
|
||||||
sys.version_info[:2] in ((3, 3), (3, 4)) or
|
sys.version_info[:2] == (3, 4) or
|
||||||
on_appveyor(), # failing on appveyor when run from
|
on_appveyor(), # failing on appveyor when run from
|
||||||
# subprocess, not from shell
|
# subprocess, not from shell
|
||||||
"requires Python 2.7 or >=3.5 for Windows")
|
"requires Python 2.7 or >=3.5 for Windows")
|
||||||
|
|
13
appveyor.yml
13
appveyor.yml
|
@ -21,8 +21,6 @@ environment:
|
||||||
- PYTHON: C:/Python34
|
- PYTHON: C:/Python34
|
||||||
- PYTHON: C:/Python27
|
- PYTHON: C:/Python27
|
||||||
- PYTHON: C:/Python34-x64
|
- PYTHON: C:/Python34-x64
|
||||||
- PYTHON: C:/Python33
|
|
||||||
- PYTHON: C:/Python33-x64
|
|
||||||
- PYTHON: C:/msys64/mingw32
|
- PYTHON: C:/msys64/mingw32
|
||||||
EXECUTABLE: bin/python3
|
EXECUTABLE: bin/python3
|
||||||
PIP_DIR: bin
|
PIP_DIR: bin
|
||||||
|
@ -69,13 +67,17 @@ build_script:
|
||||||
$host.SetShouldExit(0)
|
$host.SetShouldExit(0)
|
||||||
}
|
}
|
||||||
- cd c:\pillow
|
- cd c:\pillow
|
||||||
- mv PIL PIL.temp
|
|
||||||
- '%PYTHON%\%EXECUTABLE% selftest.py --installed'
|
- '%PYTHON%\%EXECUTABLE% selftest.py --installed'
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- cd c:\pillow
|
- cd c:\pillow
|
||||||
- '%PYTHON%\%PIP_DIR%\pip.exe install nose'
|
- '%PYTHON%\%PIP_DIR%\pip.exe install pytest pytest-cov'
|
||||||
- '%PYTHON%\%EXECUTABLE% test-installed.py -v -s %TEST_OPTIONS%'
|
- '%PYTHON%\%EXECUTABLE% -m pytest -vx --cov PIL --cov-report term --cov-report xml Tests'
|
||||||
|
#- '%PYTHON%\%EXECUTABLE% test-installed.py -v -s %TEST_OPTIONS%' TODO TEST_OPTIONS with pytest?
|
||||||
|
|
||||||
|
after_test:
|
||||||
|
- pip install codecov
|
||||||
|
- codecov --file coverage.xml --name %PYTHON%
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
|
@ -88,7 +90,6 @@ artifacts:
|
||||||
|
|
||||||
before_deploy:
|
before_deploy:
|
||||||
- cd c:\pillow
|
- cd c:\pillow
|
||||||
- mv PIL.temp PIL
|
|
||||||
- '%PYTHON%\%PIP_DIR%\pip.exe install wheel'
|
- '%PYTHON%\%PIP_DIR%\pip.exe install wheel'
|
||||||
- cd c:\pillow\winbuild\
|
- cd c:\pillow\winbuild\
|
||||||
- '%PYTHON%\%EXECUTABLE% c:\pillow\winbuild\build.py --wheel'
|
- '%PYTHON%\%EXECUTABLE% c:\pillow\winbuild\build.py --wheel'
|
||||||
|
|
|
@ -17,7 +17,9 @@ Notes
|
||||||
|
|
||||||
.. note:: Pillow >= 2.0.0 < 4.0.0 supports Python versions 2.6, 2.7, 3.2, 3.3, 3.4, 3.5
|
.. note:: Pillow >= 2.0.0 < 4.0.0 supports Python versions 2.6, 2.7, 3.2, 3.3, 3.4, 3.5
|
||||||
|
|
||||||
.. note:: Pillow >= 4.0.0 supports Python versions 2.7, 3.3, 3.4, 3.5, 3.6
|
.. note:: Pillow >= 4.0.0 < 5.0.0 supports Python versions 2.7, 3.3, 3.4, 3.5, 3.6
|
||||||
|
|
||||||
|
.. note:: Pillow >= 5.0.0 supports Python versions 2.7, 3.4, 3.5, 3.6
|
||||||
|
|
||||||
Basic Installation
|
Basic Installation
|
||||||
------------------
|
------------------
|
||||||
|
@ -382,16 +384,16 @@ These platforms are built and tested for every change.
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
| Fedora 26 | 2.7 |x86-64 |
|
| Fedora 26 | 2.7 |x86-64 |
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
| Mac OS X 10.10 Yosemite* | 2.7, 3.3, 3.4, 3.5, 3.6 |x86-64 |
|
| Mac OS X 10.10 Yosemite* | 2.7, 3.4, 3.5, 3.6 |x86-64 |
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
| Ubuntu Linux 16.04 LTS | 2.7 |x86-64 |
|
| Ubuntu Linux 16.04 LTS | 2.7 |x86-64 |
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
| Ubuntu Linux 14.04 LTS | 2.7, 3.3, 3.4, 3.5, 3.6, |x86-64 |
|
| Ubuntu Linux 14.04 LTS | 2.7, 3.4, 3.5, 3.6, |x86-64 |
|
||||||
| | pypy, pypy3 | |
|
| | pypy, pypy3 | |
|
||||||
| | | |
|
| | | |
|
||||||
| | 2.7 |x86 |
|
| | 2.7 |x86 |
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
| Windows Server 2012 R2 | 2.7, 3.3, 3.4 |x86, x86-64 |
|
| Windows Server 2012 R2 | 2.7, 3.4 |x86, x86-64 |
|
||||||
| | | |
|
| | | |
|
||||||
| | pypy, 3.5/mingw |x86 |
|
| | pypy, 3.5/mingw |x86 |
|
||||||
+----------------------------------+-------------------------------+-----------------------+
|
+----------------------------------+-------------------------------+-----------------------+
|
||||||
|
|
|
@ -1,6 +1,17 @@
|
||||||
4.4.0
|
5.0.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
Backwards Incompatible Changes
|
||||||
|
==============================
|
||||||
|
|
||||||
|
Python 3.3 Dropped
|
||||||
|
^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Python 3.3 is EOL and no longer supported due to moving testing from nose,
|
||||||
|
which is deprecated, to pytest, which doesn't support Python 3.3. We will not
|
||||||
|
be creating binaries, testing, or retaining compatibility with this version.
|
||||||
|
The final version of Pillow for Python 3.3 is 4.3.0.
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
@ -17,7 +28,6 @@ Further, the vendored version was removed in Pillow 4.0.0 and replaced with a
|
||||||
deprecation warning that PIL.OleFileIO would be removed in a future version.
|
deprecation warning that PIL.OleFileIO would be removed in a future version.
|
||||||
This warning has been upgraded to an import error pending future removal.
|
This warning has been upgraded to an import error pending future removal.
|
||||||
|
|
||||||
|
|
||||||
API Additions
|
API Additions
|
||||||
=============
|
=============
|
||||||
|
|
|
@ -6,7 +6,7 @@ Release Notes
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
4.4.0
|
5.0.0
|
||||||
4.3.0
|
4.3.0
|
||||||
4.2.1
|
4.2.1
|
||||||
4.2.0
|
4.2.0
|
||||||
|
|
|
@ -54,19 +54,12 @@ def _mp_compile(self, sources, output_dir=None, macros=None,
|
||||||
|
|
||||||
def install():
|
def install():
|
||||||
|
|
||||||
fl_pypy3 = (hasattr(sys, 'pypy_version_info') and
|
|
||||||
(3, 0) < sys.version_info < (3, 3))
|
|
||||||
fl_win = sys.platform.startswith('win')
|
fl_win = sys.platform.startswith('win')
|
||||||
fl_cygwin = sys.platform.startswith('cygwin')
|
fl_cygwin = sys.platform.startswith('cygwin')
|
||||||
|
|
||||||
if fl_pypy3:
|
|
||||||
# see https://github.com/travis-ci/travis-ci/issues/3587
|
|
||||||
print("Single threaded build for pypy3")
|
|
||||||
return
|
|
||||||
|
|
||||||
if fl_win or fl_cygwin:
|
if fl_win or fl_cygwin:
|
||||||
# windows barfs on multiprocessing installs
|
# Windows barfs on multiprocessing installs
|
||||||
print("Single threaded build for windows")
|
print("Single threaded build for Windows")
|
||||||
return
|
return
|
||||||
|
|
||||||
if MAX_PROCS != 1:
|
if MAX_PROCS != 1:
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import glob
|
|
||||||
|
|
||||||
import profile
|
|
||||||
|
|
||||||
# monkey with the path, removing the local directory but adding the Tests/
|
|
||||||
# directory for helper.py and the other local imports there.
|
|
||||||
|
|
||||||
del(sys.path[0])
|
|
||||||
sys.path.insert(0, os.path.abspath('./Tests'))
|
|
||||||
|
|
||||||
# if there's no test selected (mostly) choose a working default.
|
|
||||||
# Something is required, because if we import the tests from the local
|
|
||||||
# directory, once again, we've got the non-installed PIL in the way
|
|
||||||
if len(sys.argv) == 1:
|
|
||||||
sys.argv.extend(glob.glob('Tests/test*.py'))
|
|
||||||
|
|
||||||
# Make sure that nose doesn't muck with our paths.
|
|
||||||
if ('--no-path-adjustment' not in sys.argv) and ('-P' not in sys.argv):
|
|
||||||
sys.argv.insert(1, '--no-path-adjustment')
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
profile.run("nose.main()", sort=2)
|
|
|
@ -11,10 +11,10 @@ docutils
|
||||||
jarn.viewdoc
|
jarn.viewdoc
|
||||||
Jinja2
|
Jinja2
|
||||||
MarkupSafe
|
MarkupSafe
|
||||||
nose
|
|
||||||
nose-cov
|
|
||||||
olefile
|
olefile
|
||||||
pycodestyle
|
pycodestyle
|
||||||
|
pytest
|
||||||
|
pytest-cov
|
||||||
pyflakes
|
pyflakes
|
||||||
Pygments
|
Pygments
|
||||||
pyroma
|
pyroma
|
||||||
|
|
|
@ -5,15 +5,9 @@ from __future__ import print_function
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
if "--installed" in sys.argv:
|
|
||||||
sys_path_0 = sys.path.pop(0)
|
|
||||||
|
|
||||||
from PIL import Image, ImageDraw, ImageFilter, ImageMath
|
from PIL import Image, ImageDraw, ImageFilter, ImageMath
|
||||||
from PIL import features
|
from PIL import features
|
||||||
|
|
||||||
if "--installed" in sys.argv:
|
|
||||||
sys.path.insert(0, sys_path_0)
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Image.core.ping
|
Image.core.ping
|
||||||
except ImportError as v:
|
except ImportError as v:
|
||||||
|
|
|
@ -1,2 +1,6 @@
|
||||||
|
[aliases]
|
||||||
|
test=pytest
|
||||||
[metadata]
|
[metadata]
|
||||||
license_file = LICENSE
|
license_file = LICENSE
|
||||||
|
[tool:pytest]
|
||||||
|
addopts = -vx Tests
|
||||||
|
|
36
setup.py
36
setup.py
|
@ -19,7 +19,7 @@ import warnings
|
||||||
from distutils import ccompiler, sysconfig
|
from distutils import ccompiler, sysconfig
|
||||||
from distutils.command.build_ext import build_ext
|
from distutils.command.build_ext import build_ext
|
||||||
|
|
||||||
from setuptools import Extension, find_packages, setup
|
from setuptools import Extension, setup
|
||||||
|
|
||||||
# monkey patch import hook. Even though flake8 says it's not used, it is.
|
# monkey patch import hook. Even though flake8 says it's not used, it is.
|
||||||
# comment this out to disable multi threaded builds.
|
# comment this out to disable multi threaded builds.
|
||||||
|
@ -122,7 +122,7 @@ def _read(file):
|
||||||
|
|
||||||
|
|
||||||
def get_version():
|
def get_version():
|
||||||
version_file = 'PIL/version.py'
|
version_file = 'src/PIL/version.py'
|
||||||
with open(version_file, 'r') as f:
|
with open(version_file, 'r') as f:
|
||||||
exec(compile(f.read(), version_file, 'exec'))
|
exec(compile(f.read(), version_file, 'exec'))
|
||||||
return locals()['__version__']
|
return locals()['__version__']
|
||||||
|
@ -223,7 +223,7 @@ class pil_build_ext(build_ext):
|
||||||
library_dirs = []
|
library_dirs = []
|
||||||
include_dirs = []
|
include_dirs = []
|
||||||
|
|
||||||
_add_directory(include_dirs, "libImaging")
|
_add_directory(include_dirs, "src/libImaging")
|
||||||
|
|
||||||
pkg_config = None
|
pkg_config = None
|
||||||
if _cmd_exists('pkg-config'):
|
if _cmd_exists('pkg-config'):
|
||||||
|
@ -583,11 +583,11 @@ class pil_build_ext(build_ext):
|
||||||
#
|
#
|
||||||
# core library
|
# core library
|
||||||
|
|
||||||
files = ["_imaging.c"]
|
files = ["src/_imaging.c"]
|
||||||
for src_file in _IMAGING:
|
for src_file in _IMAGING:
|
||||||
files.append(src_file + ".c")
|
files.append("src/" + src_file + ".c")
|
||||||
for src_file in _LIB_IMAGING:
|
for src_file in _LIB_IMAGING:
|
||||||
files.append(os.path.join("libImaging", src_file + ".c"))
|
files.append(os.path.join("src/libImaging", src_file + ".c"))
|
||||||
|
|
||||||
libs = []
|
libs = []
|
||||||
defs = []
|
defs = []
|
||||||
|
@ -630,7 +630,7 @@ class pil_build_ext(build_ext):
|
||||||
libs = ["freetype"]
|
libs = ["freetype"]
|
||||||
defs = []
|
defs = []
|
||||||
exts.append(Extension(
|
exts.append(Extension(
|
||||||
"PIL._imagingft", ["_imagingft.c"], libraries=libs,
|
"PIL._imagingft", ["src/_imagingft.c"], libraries=libs,
|
||||||
define_macros=defs))
|
define_macros=defs))
|
||||||
|
|
||||||
if feature.lcms:
|
if feature.lcms:
|
||||||
|
@ -638,7 +638,7 @@ class pil_build_ext(build_ext):
|
||||||
if sys.platform == "win32":
|
if sys.platform == "win32":
|
||||||
extra.extend(["user32", "gdi32"])
|
extra.extend(["user32", "gdi32"])
|
||||||
exts.append(Extension("PIL._imagingcms",
|
exts.append(Extension("PIL._imagingcms",
|
||||||
["_imagingcms.c"],
|
["src/_imagingcms.c"],
|
||||||
libraries=[feature.lcms] + extra))
|
libraries=[feature.lcms] + extra))
|
||||||
|
|
||||||
if feature.webp:
|
if feature.webp:
|
||||||
|
@ -651,18 +651,18 @@ class pil_build_ext(build_ext):
|
||||||
libs.append(feature.webpmux.replace('pmux', 'pdemux'))
|
libs.append(feature.webpmux.replace('pmux', 'pdemux'))
|
||||||
|
|
||||||
exts.append(Extension("PIL._webp",
|
exts.append(Extension("PIL._webp",
|
||||||
["_webp.c"],
|
["src/_webp.c"],
|
||||||
libraries=libs,
|
libraries=libs,
|
||||||
define_macros=defs))
|
define_macros=defs))
|
||||||
|
|
||||||
tk_libs = ['psapi'] if sys.platform == 'win32' else []
|
tk_libs = ['psapi'] if sys.platform == 'win32' else []
|
||||||
exts.append(Extension("PIL._imagingtk",
|
exts.append(Extension("PIL._imagingtk",
|
||||||
["_imagingtk.c", "Tk/tkImaging.c"],
|
["src/_imagingtk.c", "Tk/tkImaging.c"],
|
||||||
include_dirs=['Tk'],
|
include_dirs=['Tk'],
|
||||||
libraries=tk_libs))
|
libraries=tk_libs))
|
||||||
|
|
||||||
exts.append(Extension("PIL._imagingmath", ["_imagingmath.c"]))
|
exts.append(Extension("PIL._imagingmath", ["src/_imagingmath.c"]))
|
||||||
exts.append(Extension("PIL._imagingmorph", ["_imagingmorph.c"]))
|
exts.append(Extension("PIL._imagingmorph", ["src/_imagingmorph.c"]))
|
||||||
|
|
||||||
self.extensions[:] = exts
|
self.extensions[:] = exts
|
||||||
|
|
||||||
|
@ -751,6 +751,9 @@ def debug_build():
|
||||||
return hasattr(sys, 'gettotalrefcount')
|
return hasattr(sys, 'gettotalrefcount')
|
||||||
|
|
||||||
|
|
||||||
|
needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
|
||||||
|
pytest_runner = ['pytest-runner'] if needs_pytest else []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
setup(name=NAME,
|
setup(name=NAME,
|
||||||
version=PILLOW_VERSION,
|
version=PILLOW_VERSION,
|
||||||
|
@ -770,19 +773,20 @@ try:
|
||||||
"Programming Language :: Python :: 2",
|
"Programming Language :: Python :: 2",
|
||||||
"Programming Language :: Python :: 2.7",
|
"Programming Language :: Python :: 2.7",
|
||||||
"Programming Language :: Python :: 3",
|
"Programming Language :: Python :: 3",
|
||||||
"Programming Language :: Python :: 3.3",
|
|
||||||
"Programming Language :: Python :: 3.4",
|
"Programming Language :: Python :: 3.4",
|
||||||
"Programming Language :: Python :: 3.5",
|
"Programming Language :: Python :: 3.5",
|
||||||
"Programming Language :: Python :: 3.6",
|
"Programming Language :: Python :: 3.6",
|
||||||
"Programming Language :: Python :: Implementation :: CPython",
|
"Programming Language :: Python :: Implementation :: CPython",
|
||||||
"Programming Language :: Python :: Implementation :: PyPy",
|
"Programming Language :: Python :: Implementation :: PyPy",
|
||||||
],
|
],
|
||||||
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*",
|
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
|
||||||
cmdclass={"build_ext": pil_build_ext},
|
cmdclass={"build_ext": pil_build_ext},
|
||||||
ext_modules=[Extension("PIL._imaging", ["_imaging.c"])],
|
ext_modules=[Extension("PIL._imaging", ["_imaging.c"])],
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
packages=find_packages(),
|
setup_requires=pytest_runner,
|
||||||
test_suite='nose.collector',
|
tests_require=['pytest'],
|
||||||
|
packages=["PIL"],
|
||||||
|
package_dir={'':'src'},
|
||||||
keywords=["Imaging", ],
|
keywords=["Imaging", ],
|
||||||
license='Standard PIL License',
|
license='Standard PIL License',
|
||||||
zip_safe=not (debug_build() or PLATFORM_MINGW), )
|
zip_safe=not (debug_build() or PLATFORM_MINGW), )
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user