Upgrading pillow 4 to 5
Breaking4.3.0 → 5.4.1Breaking11Deprecated2New43Changed22Fixed28Other94
BreakingUpgrade verdict
11 breaking changes.
In plain terms
- Remove unused draw.draw_line, draw.draw_point and font.getabc methods [hugovk].
- Remove unnecessary '#if 0' code [hugovk].
- Rename PIL.version to PIL._version and remove it from module [homm].
- Remove unnecessary #if 1 directive [jdufresne].
Must act Top 5 of 13 that need code or config changes
Requires Python >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* from 5.0.0 (none stated before).
What you must change
Breaking11
Remove unused draw.draw_line, draw.draw_point and font.getabc methods [hugovk].
Remove unnecessary '#if 0' code [hugovk].
Rename PIL.version to PIL._version and remove it from module [homm].
Remove unnecessary #if 1 directive [jdufresne].
Remove unused Python class, Path [jdufresne].
Removed main code from ImageCms [radarhere].
Remove _imaging.crc32 in favor of builtin Python crc32 implementation [wiredfool].
Remove unused and duplicate imports [radarhere].
Removed scripts directory [wiredfool].
Removed check parameter from _save in BmpImagePlugin, PngImagePlugin, ImImagePlugin, PalmImagePlugin, and PcxImagePlugin. [radarhere].
Remove unnecessary bool calls in Image.registered_extensions and skipKnownBadTests [jdufresne].
Deprecations to plan for
Deprecated2
Deprecate PILLOW_VERSION and VERSION [hugovk].
Setup: Replace deprecated platform.dist with file existence check [wiredfool].
API changes
Generated by DepDelta from published Python source. Not mixed with prose notes.
- removed:
export version
- added:
class BLP1Decoder(_BLPBaseDecoder) - added:
class BLP2Decoder(_BLPBaseDecoder) - added:
class BLPFormatError(NotImplementedError) - added:
class BlpImageFile(ImageFile.ImageFile) - added:
field BlpImageFile.format - added:
field BlpImageFile.format_description - added:
function decode_dxt1(data, alpha=…) - added:
function decode_dxt3(data) - added:
function decode_dxt5(data) - added:
function unpack_565(i) - added:
variable BLP_ALPHA_ENCODING_DXT1 - added:
variable BLP_ALPHA_ENCODING_DXT3 - added:
variable BLP_ALPHA_ENCODING_DXT5 - added:
variable BLP_ENCODING_DXT - added:
variable BLP_ENCODING_UNCOMPRESSED - added:
variable BLP_ENCODING_UNCOMPRESSED_RAW_BGRA - added:
variable BLP_FORMAT_JPEG
- removed:
variable builtins
- added:
property IcnsImageFile.size
- added:
property IcoImageFile.size
- removed:
variable HAS_CFFI - changed:
method Image.rotate(angle, resample=…, expand=…, center=…, translate=…) → method Image.rotate(angle, resample=…, expand=…, center=…, translate=…, fillcolor=…) - changed:
method Image.transform(size, method, data=…, resample=…, fill=…) → method Image.transform(size, method, data=…, resample=…, fill=…, fillcolor=…) - added:
class DecompressionBombError(Exception) - added:
property Image.size - added:
variable cffi
- changed:
method ImageDraw.arc(xy, start, end, fill=…) → method ImageDraw.arc(xy, start, end, fill=…, width=…) - changed:
method ImageDraw.chord(xy, start, end, fill=…, outline=…) → method ImageDraw.chord(xy, start, end, fill=…, outline=…, width=…) - changed:
method ImageDraw.ellipse(xy, fill=…, outline=…) → method ImageDraw.ellipse(xy, fill=…, outline=…, width=…) - changed:
method ImageDraw.line(xy, fill=…, width=…) → method ImageDraw.line(xy, fill=…, width=…, joint=…) - changed:
method ImageDraw.pieslice(xy, start, end, fill=…, outline=…) → method ImageDraw.pieslice(xy, start, end, fill=…, outline=…, width=…) - changed:
method ImageDraw.rectangle(xy, fill=…, outline=…) → method ImageDraw.rectangle(xy, fill=…, outline=…, width=…)
- removed:
method Draw.symbol(xy, symbol, *options)
- added:
method ImageFile.get_format_mimetype()
- removed:
constructor BuiltinFilter() - removed:
method Kernel.filter(image) - changed:
class BuiltinFilter(Kernel) → class BuiltinFilter(MultibandFilter) - changed:
class Kernel(MultibandFilter) → class Kernel(BuiltinFilter) - added:
class Color3DLUT(MultibandFilter) - added:
constructor Color3DLUT(size, table, channels=…, target_mode=…, **kwargs) - added:
field Color3DLUT.name - added:
field Kernel.name - added:
method BuiltinFilter.filter(image) - added:
method Color3DLUT.filter(image) - added:
method Color3DLUT.transform(callback, with_normals=…, channels=…, target_mode=…) - added:
static method Color3DLUT.generate(size, callback, channels=…, target_mode=…) - added:
variable numpy
- added:
method FreeTypeFont.getsize_multiline(text, direction=…, spacing=…, features=…)
- changed:
function colorize(image, black, white) → function colorize(image, black, white, mid=…, blackpoint=…, whitepoint=…, midpoint=…) - added:
function pad(image, size, method=…, color=…, centering=…)
- removed:
class Path(object) - removed:
constructor Path(xy) - removed:
method Path.compact(distance=…) - removed:
method Path.getbbox() - removed:
method Path.map(function) - removed:
method Path.tolist(flat=…) - removed:
method Path.transform(matrix)
- removed:
variable qt_is_installed - removed:
variable qt_version - added:
variable qt_versions
- added:
class EogViewer(UnixViewer) - added:
method EogViewer.get_command_ex(file, **options) - added:
method MacViewer.show_file(file, **options) - added:
method UnixViewer.get_command(file, **options)
- removed:
variable ffi
- added:
method JpegImageFile.load_read(read_bytes)
- added:
class IndirectObjectDef(IndirectReference) - added:
class IndirectReference(collections.namedtuple('IndirectReferenceTuple', ['object_id', 'generation'])) - added:
class PdfArray(list) - added:
class PdfBinary - added:
class PdfDict(UserDict) - added:
class PdfFormatError(RuntimeError) - added:
class PdfName - added:
class PdfParser - added:
class PdfStream - added:
class XrefTable - added:
constructor PdfBinary(data) - added:
constructor PdfName(name) - added:
constructor PdfParser(filename=…, f=…, buf=…, start_offset=…, mode=…) - added:
constructor PdfStream(dictionary, buf) - added:
constructor XrefTable() - added:
field PdfName.allowed_chars - added:
field PdfParser.delimiter - added:
field PdfParser.delimiter_or_ws - added:
field PdfParser.escaped_chars - added:
field PdfParser.newline - added:
field PdfParser.newline_only - added:
field PdfParser.re_array_end - added:
field PdfParser.re_array_start - added:
field PdfParser.re_comment - added:
field PdfParser.re_dict_end - added:
field PdfParser.re_dict_start - added:
field PdfParser.re_false - added:
field PdfParser.re_hashes_in_name - added:
field PdfParser.re_indirect_def_end - added:
field PdfParser.re_indirect_def_start - added:
field PdfParser.re_indirect_reference - added:
field PdfParser.re_int - added:
field PdfParser.re_lit_str_token - added:
field PdfParser.re_name - added:
field PdfParser.re_null - added:
field PdfParser.re_real - added:
field PdfParser.re_stream_end - added:
field PdfParser.re_stream_start - added:
field PdfParser.re_string_hex - added:
field PdfParser.re_string_lit - added:
field PdfParser.re_trailer_end - added:
field PdfParser.re_trailer_prev - added:
field PdfParser.re_true - added:
field PdfParser.re_whitespace_optional - added:
field PdfParser.re_xref_entry - added:
field PdfParser.re_xref_section_start - added:
field PdfParser.re_xref_subsection_start - added:
field PdfParser.whitespace - added:
field PdfParser.whitespace_mandatory - added:
field PdfParser.whitespace_optional - added:
field PdfParser.whitespace_or_hex - added:
function check_format_condition(condition, error_message) - added:
function decode_text(b) - added:
function encode_text(s) - added:
function make_bytes(s) - added:
function pdf_repr(x) - added:
method PdfName.name_as_str() - added:
method PdfParser.close() - added:
method PdfParser.close_buf() - added:
method PdfParser.del_root() - added:
method PdfParser.linearize_page_tree(node=…) - added:
method PdfParser.next_object_id(offset=…) - added:
method PdfParser.read_indirect(ref, max_nesting=…) - added:
method PdfParser.read_pdf_info() - added:
method PdfParser.read_prev_trailer(xref_section_offset) - added:
method PdfParser.read_trailer() - added:
method PdfParser.read_xref_table(xref_section_offset) - added:
method PdfParser.rewrite_pages() - added:
method PdfParser.seek_end() - added:
method PdfParser.start_writing() - added:
method PdfParser.write_catalog() - added:
method PdfParser.write_comment(s) - added:
method PdfParser.write_header() - added:
method PdfParser.write_obj(ref, *objs, **dict_obj) - added:
method PdfParser.write_page(ref, *objs, **dict_obj) - added:
method PdfParser.write_xref_and_trailer(new_root_ref=…) - added:
method PdfStream.decode() - added:
method XrefTable.keys() - added:
method XrefTable.write(f) - added:
static method PdfName.from_pdf_stream(data) - added:
static method PdfParser.get_buf_from_file(f) - added:
static method PdfParser.get_literal_string(data, offset) - added:
static method PdfParser.get_value(data, offset, expect_indirect=…, max_nesting=…) - added:
static method PdfParser.interpret_name(raw, as_text=…) - added:
static method PdfParser.interpret_trailer(trailer_data) - added:
variable PDFDocEncoding - added:
variable UserDict
- added:
method PngStream.chunk_acTL(pos, length) - added:
method PngStream.chunk_cHRM(pos, length) - added:
method PngStream.chunk_fcTL(pos, length) - added:
method PngStream.chunk_fdAT(pos, length) - added:
method PngStream.chunk_sRGB(pos, length) - added:
property PngImageFile.text
- removed:
variable locale_enc - removed:
variable locale_lang
- added:
method TarIO.close()
- changed:
class ImageFileDirectory_v2(collections.MutableMapping) → class ImageFileDirectory_v2(MutableMapping) - added:
property TiffImageFile.size
- added:
variable FLOAT - added:
variable SIGNED_BYTE - added:
variable SIGNED_LONG - added:
variable SIGNED_SHORT
- added:
method WebPImageFile.load() - added:
method WebPImageFile.seek(frame) - added:
method WebPImageFile.tell() - added:
property WebPImageFile.is_animated - added:
property WebPImageFile.n_frames - added:
variable SUPPORTED