Skip to content

Upgrading pillow 4 to 5

Breaking4.3.0 → 5.4.1Breaking11Deprecated2New43Changed22Fixed28Other94

BreakingUpgrade verdict

11 breaking changes.

  • 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].
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).

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].
Deprecated2
Deprecate PILLOW_VERSION and VERSION [hugovk].
Setup: Replace deprecated platform.dist with file existence check [wiredfool].

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