pillow-avif-plugin 1.4.6__cp312-cp312-win_amd64.whl → 1.5.1__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pillow-avif-plugin might be problematic. Click here for more details.

@@ -16,11 +16,9 @@ except ImportError:
16
16
  # to Image.open (see https://github.com/python-pillow/Pillow/issues/569)
17
17
  DECODE_CODEC_CHOICE = "auto"
18
18
  CHROMA_UPSAMPLING = "auto"
19
+ # Decoding is only affected by this for libavif **0.8.4** or greater.
19
20
  DEFAULT_MAX_THREADS = 0
20
21
 
21
- _VALID_AVIF_MODES = {"RGB", "RGBA"}
22
-
23
-
24
22
  if sys.version_info[0] == 2:
25
23
  text_type = unicode # noqa
26
24
  else:
@@ -29,18 +27,12 @@ else:
29
27
 
30
28
  def _accept(prefix):
31
29
  if prefix[4:8] != b"ftyp":
32
- return
33
- coding_brands = (b"avif", b"avis")
34
- container_brands = (b"mif1", b"msf1")
30
+ return False
35
31
  major_brand = prefix[8:12]
36
- if major_brand in coding_brands:
37
- if not SUPPORTED:
38
- return (
39
- "image file could not be identified because AVIF "
40
- "support not installed"
41
- )
42
- return True
43
- if major_brand in container_brands:
32
+ if major_brand in (
33
+ # coding brands
34
+ b"avif",
35
+ b"avis",
44
36
  # We accept files with AVIF container brands; we can't yet know if
45
37
  # the ftyp box has the correct compatible brands, but if it doesn't
46
38
  # then the plugin will raise a SyntaxError which Pillow will catch
@@ -48,67 +40,108 @@ def _accept(prefix):
48
40
  #
49
41
  # Also, because this file might not actually be an AVIF file, we
50
42
  # don't raise an error if AVIF support isn't properly compiled.
43
+ b"mif1",
44
+ b"msf1",
45
+ ):
46
+ if not SUPPORTED:
47
+ return (
48
+ "image file could not be identified because AVIF support not installed"
49
+ )
51
50
  return True
51
+ return False
52
52
 
53
53
 
54
54
  class AvifImageFile(ImageFile.ImageFile):
55
55
  format = "AVIF"
56
56
  format_description = "AVIF image"
57
- __loaded = -1
58
- __frame = 0
59
-
60
- def load_seek(self, pos):
61
- pass
57
+ __frame = -1
62
58
 
63
59
  def _open(self):
60
+ if not SUPPORTED:
61
+ msg = "image file could not be opened because AVIF support not installed"
62
+ raise SyntaxError(msg)
63
+
64
+ if DECODE_CODEC_CHOICE != "auto" and not _avif.decoder_codec_available(
65
+ DECODE_CODEC_CHOICE
66
+ ):
67
+ msg = "Invalid opening codec"
68
+ raise ValueError(msg)
64
69
  self._decoder = _avif.AvifDecoder(
65
70
  self.fp.read(), DECODE_CODEC_CHOICE, CHROMA_UPSAMPLING, DEFAULT_MAX_THREADS
66
71
  )
67
72
 
68
73
  # Get info from decoder
69
- width, height, n_frames, mode, icc, exif, xmp = self._decoder.get_info()
70
- self._size = width, height
71
- self.n_frames = n_frames
74
+ (
75
+ width,
76
+ height,
77
+ self.n_frames,
78
+ mode,
79
+ icc,
80
+ exif,
81
+ exif_orientation,
82
+ xmp,
83
+ ) = self._decoder.get_info()
84
+ self._size = (width, height)
72
85
  self.is_animated = self.n_frames > 1
73
86
  try:
74
87
  self.mode = self.rawmode = mode
75
88
  except AttributeError:
76
89
  self._mode = self.rawmode = mode
77
- self.tile = []
78
90
 
79
91
  if icc:
80
92
  self.info["icc_profile"] = icc
81
- if exif:
82
- self.info["exif"] = exif
83
93
  if xmp:
84
94
  self.info["xmp"] = xmp
85
95
 
96
+ if exif_orientation != 1 or exif:
97
+ exif_data = Image.Exif()
98
+ orientation_tag = next(
99
+ k for k, v in ExifTags.TAGS.items() if v == "Orientation"
100
+ )
101
+ if exif:
102
+ exif_data.load(exif)
103
+ original_orientation = exif_data.get(orientation_tag, 1)
104
+ else:
105
+ original_orientation = 1
106
+ if exif_orientation != original_orientation:
107
+ exif_data[orientation_tag] = exif_orientation
108
+ exif = exif_data.tobytes()
109
+ if exif:
110
+ self.info["exif"] = exif
111
+ self.seek(0)
112
+
86
113
  def seek(self, frame):
87
114
  if not self._seek_check(frame):
88
115
  return
89
116
 
117
+ # Set tile
90
118
  self.__frame = frame
119
+ if hasattr(ImageFile, "_Tile"):
120
+ self.tile = [ImageFile._Tile("raw", (0, 0) + self.size, 0, self.mode)]
121
+ else:
122
+ self.tile = [("raw", (0, 0) + self.size, 0, self.mode)]
91
123
 
92
124
  def load(self):
93
- if self.__loaded != self.__frame:
125
+ if self.tile:
94
126
  # We need to load the image data for this frame
95
- data, timescale, tsp_in_ts, dur_in_ts = self._decoder.get_frame(
96
- self.__frame
97
- )
98
- timestamp = round(1000 * (tsp_in_ts / timescale))
99
- duration = round(1000 * (dur_in_ts / timescale))
100
- self.info["timestamp"] = timestamp
101
- self.info["duration"] = duration
102
- self.__loaded = self.__frame
127
+ (
128
+ data,
129
+ timescale,
130
+ pts_in_timescales,
131
+ duration_in_timescales,
132
+ ) = self._decoder.get_frame(self.__frame)
133
+ self.info["timestamp"] = round(1000 * (pts_in_timescales / timescale))
134
+ self.info["duration"] = round(1000 * (duration_in_timescales / timescale))
103
135
 
104
- # Set tile
105
136
  if self.fp and self._exclusive_fp:
106
137
  self.fp.close()
107
138
  self.fp = BytesIO(data)
108
- self.tile = [("raw", (0, 0) + self.size, 0, self.rawmode)]
109
139
 
110
140
  return super(AvifImageFile, self).load()
111
141
 
142
+ def load_seek(self, pos):
143
+ pass
144
+
112
145
  def tell(self):
113
146
  return self.__frame
114
147
 
@@ -128,19 +161,21 @@ def _save(im, fp, filename, save_all=False):
128
161
  for ims in [im] + append_images:
129
162
  total += getattr(ims, "n_frames", 1)
130
163
 
131
- is_single_frame = total == 1
132
-
133
164
  qmin = info.get("qmin", -1)
134
165
  qmax = info.get("qmax", -1)
135
166
  quality = info.get("quality", 75)
136
167
  if not isinstance(quality, int) or quality < 0 or quality > 100:
137
- raise ValueError("Invalid quality setting")
168
+ msg = "Invalid quality setting"
169
+ raise ValueError(msg)
138
170
 
139
171
  duration = info.get("duration", 0)
140
172
  subsampling = info.get("subsampling", "4:2:0")
141
173
  speed = info.get("speed", 6)
142
174
  max_threads = info.get("max_threads", DEFAULT_MAX_THREADS)
143
175
  codec = info.get("codec", "auto")
176
+ if codec != "auto" and not _avif.encoder_codec_available(codec):
177
+ msg = "Invalid saving codec"
178
+ raise ValueError(msg)
144
179
  range_ = info.get("range", "full")
145
180
  tile_rows_log2 = info.get("tile_rows", 0)
146
181
  tile_cols_log2 = info.get("tile_cols", 0)
@@ -171,20 +206,21 @@ def _save(im, fp, filename, save_all=False):
171
206
  xmp = xmp.encode("utf-8")
172
207
 
173
208
  advanced = info.get("advanced")
174
- if isinstance(advanced, dict):
175
- advanced = tuple([k, v] for (k, v) in advanced.items())
176
209
  if advanced is not None:
210
+ if isinstance(advanced, dict):
211
+ advanced = tuple(advanced.items())
177
212
  try:
178
213
  advanced = tuple(advanced)
179
214
  except TypeError:
180
215
  invalid = True
181
216
  else:
182
- invalid = all(isinstance(v, tuple) and len(v) == 2 for v in advanced)
217
+ invalid = any(not isinstance(v, tuple) or len(v) != 2 for v in advanced)
183
218
  if invalid:
184
- raise ValueError(
219
+ msg = (
185
220
  "advanced codec options must be a dict of key-value string "
186
221
  "pairs or a series of key-value two-tuples"
187
222
  )
223
+ raise ValueError(msg)
188
224
  advanced = tuple(
189
225
  [(str(k).encode("utf-8"), str(v).encode("utf-8")) for k, v in advanced]
190
226
  )
@@ -214,8 +250,9 @@ def _save(im, fp, filename, save_all=False):
214
250
 
215
251
  # Add each frame
216
252
  frame_idx = 0
217
- frame_dur = 0
253
+ frame_duration = 0
218
254
  cur_idx = im.tell()
255
+ is_single_frame = total == 1
219
256
  try:
220
257
  for ims in [im] + append_images:
221
258
  # Get # of frames in this image
@@ -228,7 +265,7 @@ def _save(im, fp, filename, save_all=False):
228
265
  # Make sure image mode is supported
229
266
  frame = ims
230
267
  rawmode = ims.mode
231
- if ims.mode not in _VALID_AVIF_MODES:
268
+ if ims.mode not in {"RGB", "RGBA"}:
232
269
  alpha = (
233
270
  "A" in ims.mode
234
271
  or "a" in ims.mode
@@ -243,14 +280,14 @@ def _save(im, fp, filename, save_all=False):
243
280
 
244
281
  # Update frame duration
245
282
  if isinstance(duration, (list, tuple)):
246
- frame_dur = duration[frame_idx]
283
+ frame_duration = duration[frame_idx]
247
284
  else:
248
- frame_dur = duration
285
+ frame_duration = duration
249
286
 
250
287
  # Append the frame to the animation encoder
251
288
  enc.add(
252
289
  frame.tobytes("raw", rawmode),
253
- frame_dur,
290
+ int(frame_duration),
254
291
  frame.size[0],
255
292
  frame.size[1],
256
293
  rawmode,
@@ -269,7 +306,8 @@ def _save(im, fp, filename, save_all=False):
269
306
  # Get the final output from the encoder
270
307
  data = enc.finish()
271
308
  if data is None:
272
- raise OSError("cannot write file as AVIF (encoder returned None)")
309
+ msg = "cannot write file as AVIF (encoder returned None)"
310
+ raise OSError(msg)
273
311
 
274
312
  fp.write(data)
275
313
 
pillow_avif/__init__.py CHANGED
@@ -2,4 +2,4 @@ from . import AvifImagePlugin
2
2
 
3
3
 
4
4
  __all__ = ["AvifImagePlugin"]
5
- __version__ = "1.4.6"
5
+ __version__ = "1.5.1"
Binary file
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pillow-avif-plugin
3
- Version: 1.4.6
3
+ Version: 1.5.1
4
4
  Summary: A pillow plugin that adds avif support via libavif
5
5
  Home-page: https://github.com/fdintino/pillow-avif-plugin/
6
6
  Download-URL: https://github.com/fdintino/pillow-avif-plugin/releases
@@ -28,6 +28,23 @@ Classifier: Topic :: Multimedia :: Graphics
28
28
  Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
+ Provides-Extra: tests
32
+ Requires-Dist: pytest; extra == "tests"
33
+ Requires-Dist: packaging; extra == "tests"
34
+ Requires-Dist: pytest-cov; extra == "tests"
35
+ Requires-Dist: test-image-results; extra == "tests"
36
+ Requires-Dist: pillow; extra == "tests"
37
+ Dynamic: author
38
+ Dynamic: author-email
39
+ Dynamic: classifier
40
+ Dynamic: description
41
+ Dynamic: description-content-type
42
+ Dynamic: download-url
43
+ Dynamic: home-page
44
+ Dynamic: license
45
+ Dynamic: license-file
46
+ Dynamic: provides-extra
47
+ Dynamic: summary
31
48
 
32
49
  # pillow-avif-plugin
33
50
 
@@ -0,0 +1,9 @@
1
+ pillow_avif/AvifImagePlugin.py,sha256=feaH0FfbvdvJTz8O7T5iFpaTzYWWFvawYmSCw-04fk4,10076
2
+ pillow_avif/__init__.py,sha256=RfORGRHIlF1FqvDt1j9YFNiVbOIUqamAwQP53KsnbkM,89
3
+ pillow_avif/_avif.cp312-win_amd64.pyd,sha256=hhw-pJzF8pDOFi93cAxZ6tbMjz1N1onTX6L7RBUWV6k,29499392
4
+ pillow_avif_plugin-1.5.1.dist-info/licenses/LICENSE,sha256=SixYjO_g9-EXRHQrFHl8gWLuk_m8oMNPoOzY9qM5w14,22157
5
+ pillow_avif_plugin-1.5.1.dist-info/METADATA,sha256=980JcTUJRU5OsG_2EMiYiNfbBkf40Rn53J_SgA39FVw,2196
6
+ pillow_avif_plugin-1.5.1.dist-info/WHEEL,sha256=bD_lVjJPXnAmh08wyNd_NU-OTjIi9_WBp6WVHPsPU2g,101
7
+ pillow_avif_plugin-1.5.1.dist-info/top_level.txt,sha256=xrg4zRnqDyl_JEyEQh3oCcAU4BHneocD-DCFDzf4g9E,12
8
+ pillow_avif_plugin-1.5.1.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
9
+ pillow_avif_plugin-1.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.3.0)
2
+ Generator: setuptools (77.0.3)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp312-cp312-win_amd64
5
5
 
@@ -0,0 +1,412 @@
1
+ Copyright (c) 2021, Frankie Dintino. All rights reserved.
2
+
3
+ Redistribution and use in source and binary forms, with or without
4
+ modification, are permitted provided that the following conditions are met:
5
+
6
+ * Redistributions of source code must retain the above copyright notice, this
7
+ list of conditions and the following disclaimer.
8
+
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23
+
24
+ ===== libavif-1.2.1 =====
25
+
26
+ Copyright 2019 Joe Drago. All rights reserved.
27
+
28
+ Redistribution and use in source and binary forms, with or without
29
+ modification, are permitted provided that the following conditions are met:
30
+
31
+ 1. Redistributions of source code must retain the above copyright notice, this
32
+ list of conditions and the following disclaimer.
33
+
34
+ 2. Redistributions in binary form must reproduce the above copyright notice,
35
+ this list of conditions and the following disclaimer in the documentation
36
+ and/or other materials provided with the distribution.
37
+
38
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
39
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
41
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
42
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
43
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
44
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
45
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
47
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
48
+
49
+ ------------------------------------------------------------------------------
50
+
51
+ Files: src/obu.c
52
+
53
+ Copyright © 2018-2019, VideoLAN and dav1d authors
54
+ All rights reserved.
55
+
56
+ Redistribution and use in source and binary forms, with or without
57
+ modification, are permitted provided that the following conditions are met:
58
+
59
+ 1. Redistributions of source code must retain the above copyright notice, this
60
+ list of conditions and the following disclaimer.
61
+
62
+ 2. Redistributions in binary form must reproduce the above copyright notice,
63
+ this list of conditions and the following disclaimer in the documentation
64
+ and/or other materials provided with the distribution.
65
+
66
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
67
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
68
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
69
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
70
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
71
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
72
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
73
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
74
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
75
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
76
+
77
+ ------------------------------------------------------------------------------
78
+
79
+ Files: third_party/iccjpeg/*
80
+
81
+ In plain English:
82
+
83
+ 1. We don't promise that this software works. (But if you find any bugs,
84
+ please let us know!)
85
+ 2. You can use this software for whatever you want. You don't have to pay us.
86
+ 3. You may not pretend that you wrote this software. If you use it in a
87
+ program, you must acknowledge somewhere in your documentation that
88
+ you've used the IJG code.
89
+
90
+ In legalese:
91
+
92
+ The authors make NO WARRANTY or representation, either express or implied,
93
+ with respect to this software, its quality, accuracy, merchantability, or
94
+ fitness for a particular purpose. This software is provided "AS IS", and you,
95
+ its user, assume the entire risk as to its quality and accuracy.
96
+
97
+ This software is copyright (C) 1991-2013, Thomas G. Lane, Guido Vollbeding.
98
+ All Rights Reserved except as specified below.
99
+
100
+ Permission is hereby granted to use, copy, modify, and distribute this
101
+ software (or portions thereof) for any purpose, without fee, subject to these
102
+ conditions:
103
+ (1) If any part of the source code for this software is distributed, then this
104
+ README file must be included, with this copyright and no-warranty notice
105
+ unaltered; and any additions, deletions, or changes to the original files
106
+ must be clearly indicated in accompanying documentation.
107
+ (2) If only executable code is distributed, then the accompanying
108
+ documentation must state that "this software is based in part on the work of
109
+ the Independent JPEG Group".
110
+ (3) Permission for use of this software is granted only if the user accepts
111
+ full responsibility for any undesirable consequences; the authors accept
112
+ NO LIABILITY for damages of any kind.
113
+
114
+ These conditions apply to any software derived from or based on the IJG code,
115
+ not just to the unmodified library. If you use our work, you ought to
116
+ acknowledge us.
117
+
118
+ Permission is NOT granted for the use of any IJG author's name or company name
119
+ in advertising or publicity relating to this software or products derived from
120
+ it. This software may be referred to only as "the Independent JPEG Group's
121
+ software".
122
+
123
+ We specifically permit and encourage the use of this software as the basis of
124
+ commercial products, provided that all warranty or liability claims are
125
+ assumed by the product vendor.
126
+
127
+
128
+ The Unix configuration script "configure" was produced with GNU Autoconf.
129
+ It is copyright by the Free Software Foundation but is freely distributable.
130
+ The same holds for its supporting scripts (config.guess, config.sub,
131
+ ltmain.sh). Another support script, install-sh, is copyright by X Consortium
132
+ but is also freely distributable.
133
+
134
+ The IJG distribution formerly included code to read and write GIF files.
135
+ To avoid entanglement with the Unisys LZW patent, GIF reading support has
136
+ been removed altogether, and the GIF writer has been simplified to produce
137
+ "uncompressed GIFs". This technique does not use the LZW algorithm; the
138
+ resulting GIF files are larger than usual, but are readable by all standard
139
+ GIF decoders.
140
+
141
+ We are required to state that
142
+ "The Graphics Interchange Format(c) is the Copyright property of
143
+ CompuServe Incorporated. GIF(sm) is a Service Mark property of
144
+ CompuServe Incorporated."
145
+
146
+ ------------------------------------------------------------------------------
147
+
148
+ Files: contrib/gdk-pixbuf/*
149
+
150
+ Copyright 2020 Emmanuel Gil Peyrot. All rights reserved.
151
+
152
+ Redistribution and use in source and binary forms, with or without
153
+ modification, are permitted provided that the following conditions are met:
154
+
155
+ 1. Redistributions of source code must retain the above copyright notice, this
156
+ list of conditions and the following disclaimer.
157
+
158
+ 2. Redistributions in binary form must reproduce the above copyright notice,
159
+ this list of conditions and the following disclaimer in the documentation
160
+ and/or other materials provided with the distribution.
161
+
162
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
163
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
164
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
165
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
166
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
167
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
168
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
169
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
170
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
171
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
172
+
173
+ ------------------------------------------------------------------------------
174
+
175
+ Files: android_jni/gradlew*
176
+
177
+
178
+ Apache License
179
+ Version 2.0, January 2004
180
+ http://www.apache.org/licenses/
181
+
182
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
183
+
184
+ 1. Definitions.
185
+
186
+ "License" shall mean the terms and conditions for use, reproduction,
187
+ and distribution as defined by Sections 1 through 9 of this document.
188
+
189
+ "Licensor" shall mean the copyright owner or entity authorized by
190
+ the copyright owner that is granting the License.
191
+
192
+ "Legal Entity" shall mean the union of the acting entity and all
193
+ other entities that control, are controlled by, or are under common
194
+ control with that entity. For the purposes of this definition,
195
+ "control" means (i) the power, direct or indirect, to cause the
196
+ direction or management of such entity, whether by contract or
197
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
198
+ outstanding shares, or (iii) beneficial ownership of such entity.
199
+
200
+ "You" (or "Your") shall mean an individual or Legal Entity
201
+ exercising permissions granted by this License.
202
+
203
+ "Source" form shall mean the preferred form for making modifications,
204
+ including but not limited to software source code, documentation
205
+ source, and configuration files.
206
+
207
+ "Object" form shall mean any form resulting from mechanical
208
+ transformation or translation of a Source form, including but
209
+ not limited to compiled object code, generated documentation,
210
+ and conversions to other media types.
211
+
212
+ "Work" shall mean the work of authorship, whether in Source or
213
+ Object form, made available under the License, as indicated by a
214
+ copyright notice that is included in or attached to the work
215
+ (an example is provided in the Appendix below).
216
+
217
+ "Derivative Works" shall mean any work, whether in Source or Object
218
+ form, that is based on (or derived from) the Work and for which the
219
+ editorial revisions, annotations, elaborations, or other modifications
220
+ represent, as a whole, an original work of authorship. For the purposes
221
+ of this License, Derivative Works shall not include works that remain
222
+ separable from, or merely link (or bind by name) to the interfaces of,
223
+ the Work and Derivative Works thereof.
224
+
225
+ "Contribution" shall mean any work of authorship, including
226
+ the original version of the Work and any modifications or additions
227
+ to that Work or Derivative Works thereof, that is intentionally
228
+ submitted to Licensor for inclusion in the Work by the copyright owner
229
+ or by an individual or Legal Entity authorized to submit on behalf of
230
+ the copyright owner. For the purposes of this definition, "submitted"
231
+ means any form of electronic, verbal, or written communication sent
232
+ to the Licensor or its representatives, including but not limited to
233
+ communication on electronic mailing lists, source code control systems,
234
+ and issue tracking systems that are managed by, or on behalf of, the
235
+ Licensor for the purpose of discussing and improving the Work, but
236
+ excluding communication that is conspicuously marked or otherwise
237
+ designated in writing by the copyright owner as "Not a Contribution."
238
+
239
+ "Contributor" shall mean Licensor and any individual or Legal Entity
240
+ on behalf of whom a Contribution has been received by Licensor and
241
+ subsequently incorporated within the Work.
242
+
243
+ 2. Grant of Copyright License. Subject to the terms and conditions of
244
+ this License, each Contributor hereby grants to You a perpetual,
245
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
246
+ copyright license to reproduce, prepare Derivative Works of,
247
+ publicly display, publicly perform, sublicense, and distribute the
248
+ Work and such Derivative Works in Source or Object form.
249
+
250
+ 3. Grant of Patent License. Subject to the terms and conditions of
251
+ this License, each Contributor hereby grants to You a perpetual,
252
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
253
+ (except as stated in this section) patent license to make, have made,
254
+ use, offer to sell, sell, import, and otherwise transfer the Work,
255
+ where such license applies only to those patent claims licensable
256
+ by such Contributor that are necessarily infringed by their
257
+ Contribution(s) alone or by combination of their Contribution(s)
258
+ with the Work to which such Contribution(s) was submitted. If You
259
+ institute patent litigation against any entity (including a
260
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
261
+ or a Contribution incorporated within the Work constitutes direct
262
+ or contributory patent infringement, then any patent licenses
263
+ granted to You under this License for that Work shall terminate
264
+ as of the date such litigation is filed.
265
+
266
+ 4. Redistribution. You may reproduce and distribute copies of the
267
+ Work or Derivative Works thereof in any medium, with or without
268
+ modifications, and in Source or Object form, provided that You
269
+ meet the following conditions:
270
+
271
+ (a) You must give any other recipients of the Work or
272
+ Derivative Works a copy of this License; and
273
+
274
+ (b) You must cause any modified files to carry prominent notices
275
+ stating that You changed the files; and
276
+
277
+ (c) You must retain, in the Source form of any Derivative Works
278
+ that You distribute, all copyright, patent, trademark, and
279
+ attribution notices from the Source form of the Work,
280
+ excluding those notices that do not pertain to any part of
281
+ the Derivative Works; and
282
+
283
+ (d) If the Work includes a "NOTICE" text file as part of its
284
+ distribution, then any Derivative Works that You distribute must
285
+ include a readable copy of the attribution notices contained
286
+ within such NOTICE file, excluding those notices that do not
287
+ pertain to any part of the Derivative Works, in at least one
288
+ of the following places: within a NOTICE text file distributed
289
+ as part of the Derivative Works; within the Source form or
290
+ documentation, if provided along with the Derivative Works; or,
291
+ within a display generated by the Derivative Works, if and
292
+ wherever such third-party notices normally appear. The contents
293
+ of the NOTICE file are for informational purposes only and
294
+ do not modify the License. You may add Your own attribution
295
+ notices within Derivative Works that You distribute, alongside
296
+ or as an addendum to the NOTICE text from the Work, provided
297
+ that such additional attribution notices cannot be construed
298
+ as modifying the License.
299
+
300
+ You may add Your own copyright statement to Your modifications and
301
+ may provide additional or different license terms and conditions
302
+ for use, reproduction, or distribution of Your modifications, or
303
+ for any such Derivative Works as a whole, provided Your use,
304
+ reproduction, and distribution of the Work otherwise complies with
305
+ the conditions stated in this License.
306
+
307
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
308
+ any Contribution intentionally submitted for inclusion in the Work
309
+ by You to the Licensor shall be under the terms and conditions of
310
+ this License, without any additional terms or conditions.
311
+ Notwithstanding the above, nothing herein shall supersede or modify
312
+ the terms of any separate license agreement you may have executed
313
+ with Licensor regarding such Contributions.
314
+
315
+ 6. Trademarks. This License does not grant permission to use the trade
316
+ names, trademarks, service marks, or product names of the Licensor,
317
+ except as required for reasonable and customary use in describing the
318
+ origin of the Work and reproducing the content of the NOTICE file.
319
+
320
+ 7. Disclaimer of Warranty. Unless required by applicable law or
321
+ agreed to in writing, Licensor provides the Work (and each
322
+ Contributor provides its Contributions) on an "AS IS" BASIS,
323
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
324
+ implied, including, without limitation, any warranties or conditions
325
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
326
+ PARTICULAR PURPOSE. You are solely responsible for determining the
327
+ appropriateness of using or redistributing the Work and assume any
328
+ risks associated with Your exercise of permissions under this License.
329
+
330
+ 8. Limitation of Liability. In no event and under no legal theory,
331
+ whether in tort (including negligence), contract, or otherwise,
332
+ unless required by applicable law (such as deliberate and grossly
333
+ negligent acts) or agreed to in writing, shall any Contributor be
334
+ liable to You for damages, including any direct, indirect, special,
335
+ incidental, or consequential damages of any character arising as a
336
+ result of this License or out of the use or inability to use the
337
+ Work (including but not limited to damages for loss of goodwill,
338
+ work stoppage, computer failure or malfunction, or any and all
339
+ other commercial damages or losses), even if such Contributor
340
+ has been advised of the possibility of such damages.
341
+
342
+ 9. Accepting Warranty or Additional Liability. While redistributing
343
+ the Work or Derivative Works thereof, You may choose to offer,
344
+ and charge a fee for, acceptance of support, warranty, indemnity,
345
+ or other liability obligations and/or rights consistent with this
346
+ License. However, in accepting such obligations, You may act only
347
+ on Your own behalf and on Your sole responsibility, not on behalf
348
+ of any other Contributor, and only if You agree to indemnify,
349
+ defend, and hold each Contributor harmless for any liability
350
+ incurred by, or claims asserted against, such Contributor by reason
351
+ of your accepting any such warranty or additional liability.
352
+
353
+ END OF TERMS AND CONDITIONS
354
+
355
+ APPENDIX: How to apply the Apache License to your work.
356
+
357
+ To apply the Apache License to your work, attach the following
358
+ boilerplate notice, with the fields enclosed by brackets "[]"
359
+ replaced with your own identifying information. (Don't include
360
+ the brackets!) The text should be enclosed in the appropriate
361
+ comment syntax for the file format. We also recommend that a
362
+ file or class name and description of purpose be included on the
363
+ same "printed page" as the copyright notice for easier
364
+ identification within third-party archives.
365
+
366
+ Copyright [yyyy] [name of copyright owner]
367
+
368
+ Licensed under the Apache License, Version 2.0 (the "License");
369
+ you may not use this file except in compliance with the License.
370
+ You may obtain a copy of the License at
371
+
372
+ http://www.apache.org/licenses/LICENSE-2.0
373
+
374
+ Unless required by applicable law or agreed to in writing, software
375
+ distributed under the License is distributed on an "AS IS" BASIS,
376
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
377
+ See the License for the specific language governing permissions and
378
+ limitations under the License.
379
+
380
+ ------------------------------------------------------------------------------
381
+
382
+ Files: third_party/libyuv/*
383
+
384
+ Copyright 2011 The LibYuv Project Authors. All rights reserved.
385
+
386
+ Redistribution and use in source and binary forms, with or without
387
+ modification, are permitted provided that the following conditions are
388
+ met:
389
+
390
+ * Redistributions of source code must retain the above copyright
391
+ notice, this list of conditions and the following disclaimer.
392
+
393
+ * Redistributions in binary form must reproduce the above copyright
394
+ notice, this list of conditions and the following disclaimer in
395
+ the documentation and/or other materials provided with the
396
+ distribution.
397
+
398
+ * Neither the name of Google nor the names of its contributors may
399
+ be used to endorse or promote products derived from this software
400
+ without specific prior written permission.
401
+
402
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
403
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
404
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
405
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
406
+ HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
407
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
408
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
409
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
410
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
411
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
412
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,22 +0,0 @@
1
- Copyright (c) 2021, Frankie Dintino. All rights reserved.
2
-
3
- Redistribution and use in source and binary forms, with or without
4
- modification, are permitted provided that the following conditions are met:
5
-
6
- * Redistributions of source code must retain the above copyright notice, this
7
- list of conditions and the following disclaimer.
8
-
9
- * Redistributions in binary form must reproduce the above copyright notice,
10
- this list of conditions and the following disclaimer in the documentation
11
- and/or other materials provided with the distribution.
12
-
13
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
14
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
17
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
21
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -1,9 +0,0 @@
1
- pillow_avif/AvifImagePlugin.py,sha256=frEKrbOSyxbVr4HCqjo0SgJxKLQ6lYvBO_8rg1PLsSo,8768
2
- pillow_avif/__init__.py,sha256=d3tNSsaIRLmugB4pdoP-oGnlGkN84_Bp2gGDn1IcmR0,89
3
- pillow_avif/_avif.cp312-win_amd64.pyd,sha256=NwL-UHMlyGUq5gHiK_2JI7di7LoruJnF9yPDNvo4JjE,27896832
4
- pillow_avif_plugin-1.4.6.dist-info/LICENSE,sha256=tubzK3TFrT8GFgUPEKC-WmCziD1dGOFLCjDky3t9Lnc,1321
5
- pillow_avif_plugin-1.4.6.dist-info/METADATA,sha256=XPF1Ehy246RuQrSIcreSz9No5ePPbMnbdjqsgaqN_Lo,1704
6
- pillow_avif_plugin-1.4.6.dist-info/WHEEL,sha256=zUKlehupiwlnUEPaWzoeU3i_GPyMnWLKYSUI9sqi8Vs,101
7
- pillow_avif_plugin-1.4.6.dist-info/top_level.txt,sha256=xrg4zRnqDyl_JEyEQh3oCcAU4BHneocD-DCFDzf4g9E,12
8
- pillow_avif_plugin-1.4.6.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
9
- pillow_avif_plugin-1.4.6.dist-info/RECORD,,