@ai-ecoverse/py-pillow 12.3.0-2

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.
Files changed (217) hide show
  1. package/LICENSE +30 -0
  2. package/README.md +4 -0
  3. package/lib/python3.14/site-packages/PIL/AvifImagePlugin.py +295 -0
  4. package/lib/python3.14/site-packages/PIL/BdfFontFile.py +124 -0
  5. package/lib/python3.14/site-packages/PIL/BlpImagePlugin.py +498 -0
  6. package/lib/python3.14/site-packages/PIL/BmpImagePlugin.py +514 -0
  7. package/lib/python3.14/site-packages/PIL/BufrStubImagePlugin.py +72 -0
  8. package/lib/python3.14/site-packages/PIL/ContainerIO.py +173 -0
  9. package/lib/python3.14/site-packages/PIL/CurImagePlugin.py +103 -0
  10. package/lib/python3.14/site-packages/PIL/DcxImagePlugin.py +84 -0
  11. package/lib/python3.14/site-packages/PIL/DdsImagePlugin.py +632 -0
  12. package/lib/python3.14/site-packages/PIL/EpsImagePlugin.py +484 -0
  13. package/lib/python3.14/site-packages/PIL/ExifTags.py +384 -0
  14. package/lib/python3.14/site-packages/PIL/FitsImagePlugin.py +153 -0
  15. package/lib/python3.14/site-packages/PIL/FliImagePlugin.py +184 -0
  16. package/lib/python3.14/site-packages/PIL/FontFile.py +160 -0
  17. package/lib/python3.14/site-packages/PIL/FpxImagePlugin.py +262 -0
  18. package/lib/python3.14/site-packages/PIL/FtexImagePlugin.py +115 -0
  19. package/lib/python3.14/site-packages/PIL/GbrImagePlugin.py +103 -0
  20. package/lib/python3.14/site-packages/PIL/GdImageFile.py +104 -0
  21. package/lib/python3.14/site-packages/PIL/GifImagePlugin.py +1223 -0
  22. package/lib/python3.14/site-packages/PIL/GimpGradientFile.py +154 -0
  23. package/lib/python3.14/site-packages/PIL/GimpPaletteFile.py +75 -0
  24. package/lib/python3.14/site-packages/PIL/GribStubImagePlugin.py +72 -0
  25. package/lib/python3.14/site-packages/PIL/Hdf5StubImagePlugin.py +72 -0
  26. package/lib/python3.14/site-packages/PIL/IcnsImagePlugin.py +401 -0
  27. package/lib/python3.14/site-packages/PIL/IcoImagePlugin.py +396 -0
  28. package/lib/python3.14/site-packages/PIL/ImImagePlugin.py +390 -0
  29. package/lib/python3.14/site-packages/PIL/Image.py +4385 -0
  30. package/lib/python3.14/site-packages/PIL/ImageChops.py +311 -0
  31. package/lib/python3.14/site-packages/PIL/ImageCms.py +1078 -0
  32. package/lib/python3.14/site-packages/PIL/ImageColor.py +320 -0
  33. package/lib/python3.14/site-packages/PIL/ImageDraw.py +1002 -0
  34. package/lib/python3.14/site-packages/PIL/ImageDraw2.py +244 -0
  35. package/lib/python3.14/site-packages/PIL/ImageEnhance.py +113 -0
  36. package/lib/python3.14/site-packages/PIL/ImageFile.py +938 -0
  37. package/lib/python3.14/site-packages/PIL/ImageFilter.py +617 -0
  38. package/lib/python3.14/site-packages/PIL/ImageFont.py +1330 -0
  39. package/lib/python3.14/site-packages/PIL/ImageGrab.py +234 -0
  40. package/lib/python3.14/site-packages/PIL/ImageMath.py +314 -0
  41. package/lib/python3.14/site-packages/PIL/ImageMode.py +85 -0
  42. package/lib/python3.14/site-packages/PIL/ImageMorph.py +317 -0
  43. package/lib/python3.14/site-packages/PIL/ImageOps.py +749 -0
  44. package/lib/python3.14/site-packages/PIL/ImagePalette.py +290 -0
  45. package/lib/python3.14/site-packages/PIL/ImagePath.py +20 -0
  46. package/lib/python3.14/site-packages/PIL/ImageQt.py +219 -0
  47. package/lib/python3.14/site-packages/PIL/ImageSequence.py +88 -0
  48. package/lib/python3.14/site-packages/PIL/ImageShow.py +367 -0
  49. package/lib/python3.14/site-packages/PIL/ImageStat.py +167 -0
  50. package/lib/python3.14/site-packages/PIL/ImageText.py +509 -0
  51. package/lib/python3.14/site-packages/PIL/ImageTk.py +266 -0
  52. package/lib/python3.14/site-packages/PIL/ImageTransform.py +136 -0
  53. package/lib/python3.14/site-packages/PIL/ImageWin.py +247 -0
  54. package/lib/python3.14/site-packages/PIL/ImtImagePlugin.py +103 -0
  55. package/lib/python3.14/site-packages/PIL/IptcImagePlugin.py +226 -0
  56. package/lib/python3.14/site-packages/PIL/Jpeg2KImagePlugin.py +466 -0
  57. package/lib/python3.14/site-packages/PIL/JpegImagePlugin.py +889 -0
  58. package/lib/python3.14/site-packages/PIL/JpegPresets.py +242 -0
  59. package/lib/python3.14/site-packages/PIL/McIdasImagePlugin.py +78 -0
  60. package/lib/python3.14/site-packages/PIL/MicImagePlugin.py +103 -0
  61. package/lib/python3.14/site-packages/PIL/MpegImagePlugin.py +84 -0
  62. package/lib/python3.14/site-packages/PIL/MpoImagePlugin.py +203 -0
  63. package/lib/python3.14/site-packages/PIL/MspImagePlugin.py +200 -0
  64. package/lib/python3.14/site-packages/PIL/PSDraw.py +238 -0
  65. package/lib/python3.14/site-packages/PIL/PaletteFile.py +54 -0
  66. package/lib/python3.14/site-packages/PIL/PalmImagePlugin.py +217 -0
  67. package/lib/python3.14/site-packages/PIL/PcdImagePlugin.py +68 -0
  68. package/lib/python3.14/site-packages/PIL/PcfFontFile.py +256 -0
  69. package/lib/python3.14/site-packages/PIL/PcxImagePlugin.py +232 -0
  70. package/lib/python3.14/site-packages/PIL/PdfImagePlugin.py +315 -0
  71. package/lib/python3.14/site-packages/PIL/PdfParser.py +1092 -0
  72. package/lib/python3.14/site-packages/PIL/PixarImagePlugin.py +72 -0
  73. package/lib/python3.14/site-packages/PIL/PngImagePlugin.py +1578 -0
  74. package/lib/python3.14/site-packages/PIL/PpmImagePlugin.py +375 -0
  75. package/lib/python3.14/site-packages/PIL/PsdImagePlugin.py +339 -0
  76. package/lib/python3.14/site-packages/PIL/QoiImagePlugin.py +235 -0
  77. package/lib/python3.14/site-packages/PIL/SgiImagePlugin.py +231 -0
  78. package/lib/python3.14/site-packages/PIL/SpiderImagePlugin.py +332 -0
  79. package/lib/python3.14/site-packages/PIL/SunImagePlugin.py +145 -0
  80. package/lib/python3.14/site-packages/PIL/TarIO.py +61 -0
  81. package/lib/python3.14/site-packages/PIL/TgaImagePlugin.py +284 -0
  82. package/lib/python3.14/site-packages/PIL/TiffImagePlugin.py +2354 -0
  83. package/lib/python3.14/site-packages/PIL/TiffTags.py +566 -0
  84. package/lib/python3.14/site-packages/PIL/WalImageFile.py +129 -0
  85. package/lib/python3.14/site-packages/PIL/WebPImagePlugin.py +322 -0
  86. package/lib/python3.14/site-packages/PIL/WmfImagePlugin.py +183 -0
  87. package/lib/python3.14/site-packages/PIL/XVThumbImagePlugin.py +83 -0
  88. package/lib/python3.14/site-packages/PIL/XbmImagePlugin.py +98 -0
  89. package/lib/python3.14/site-packages/PIL/XpmImagePlugin.py +157 -0
  90. package/lib/python3.14/site-packages/PIL/__init__.py +87 -0
  91. package/lib/python3.14/site-packages/PIL/__main__.py +7 -0
  92. package/lib/python3.14/site-packages/PIL/__pycache__/AvifImagePlugin.cpython-314.pyc +0 -0
  93. package/lib/python3.14/site-packages/PIL/__pycache__/BdfFontFile.cpython-314.pyc +0 -0
  94. package/lib/python3.14/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-314.pyc +0 -0
  95. package/lib/python3.14/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-314.pyc +0 -0
  96. package/lib/python3.14/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-314.pyc +0 -0
  97. package/lib/python3.14/site-packages/PIL/__pycache__/ContainerIO.cpython-314.pyc +0 -0
  98. package/lib/python3.14/site-packages/PIL/__pycache__/CurImagePlugin.cpython-314.pyc +0 -0
  99. package/lib/python3.14/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-314.pyc +0 -0
  100. package/lib/python3.14/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-314.pyc +0 -0
  101. package/lib/python3.14/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-314.pyc +0 -0
  102. package/lib/python3.14/site-packages/PIL/__pycache__/ExifTags.cpython-314.pyc +0 -0
  103. package/lib/python3.14/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-314.pyc +0 -0
  104. package/lib/python3.14/site-packages/PIL/__pycache__/FliImagePlugin.cpython-314.pyc +0 -0
  105. package/lib/python3.14/site-packages/PIL/__pycache__/FontFile.cpython-314.pyc +0 -0
  106. package/lib/python3.14/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-314.pyc +0 -0
  107. package/lib/python3.14/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-314.pyc +0 -0
  108. package/lib/python3.14/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-314.pyc +0 -0
  109. package/lib/python3.14/site-packages/PIL/__pycache__/GdImageFile.cpython-314.pyc +0 -0
  110. package/lib/python3.14/site-packages/PIL/__pycache__/GifImagePlugin.cpython-314.pyc +0 -0
  111. package/lib/python3.14/site-packages/PIL/__pycache__/GimpGradientFile.cpython-314.pyc +0 -0
  112. package/lib/python3.14/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-314.pyc +0 -0
  113. package/lib/python3.14/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-314.pyc +0 -0
  114. package/lib/python3.14/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-314.pyc +0 -0
  115. package/lib/python3.14/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-314.pyc +0 -0
  116. package/lib/python3.14/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-314.pyc +0 -0
  117. package/lib/python3.14/site-packages/PIL/__pycache__/ImImagePlugin.cpython-314.pyc +0 -0
  118. package/lib/python3.14/site-packages/PIL/__pycache__/Image.cpython-314.pyc +0 -0
  119. package/lib/python3.14/site-packages/PIL/__pycache__/ImageChops.cpython-314.pyc +0 -0
  120. package/lib/python3.14/site-packages/PIL/__pycache__/ImageCms.cpython-314.pyc +0 -0
  121. package/lib/python3.14/site-packages/PIL/__pycache__/ImageColor.cpython-314.pyc +0 -0
  122. package/lib/python3.14/site-packages/PIL/__pycache__/ImageDraw.cpython-314.pyc +0 -0
  123. package/lib/python3.14/site-packages/PIL/__pycache__/ImageDraw2.cpython-314.pyc +0 -0
  124. package/lib/python3.14/site-packages/PIL/__pycache__/ImageEnhance.cpython-314.pyc +0 -0
  125. package/lib/python3.14/site-packages/PIL/__pycache__/ImageFile.cpython-314.pyc +0 -0
  126. package/lib/python3.14/site-packages/PIL/__pycache__/ImageFilter.cpython-314.pyc +0 -0
  127. package/lib/python3.14/site-packages/PIL/__pycache__/ImageFont.cpython-314.pyc +0 -0
  128. package/lib/python3.14/site-packages/PIL/__pycache__/ImageGrab.cpython-314.pyc +0 -0
  129. package/lib/python3.14/site-packages/PIL/__pycache__/ImageMath.cpython-314.pyc +0 -0
  130. package/lib/python3.14/site-packages/PIL/__pycache__/ImageMode.cpython-314.pyc +0 -0
  131. package/lib/python3.14/site-packages/PIL/__pycache__/ImageMorph.cpython-314.pyc +0 -0
  132. package/lib/python3.14/site-packages/PIL/__pycache__/ImageOps.cpython-314.pyc +0 -0
  133. package/lib/python3.14/site-packages/PIL/__pycache__/ImagePalette.cpython-314.pyc +0 -0
  134. package/lib/python3.14/site-packages/PIL/__pycache__/ImagePath.cpython-314.pyc +0 -0
  135. package/lib/python3.14/site-packages/PIL/__pycache__/ImageQt.cpython-314.pyc +0 -0
  136. package/lib/python3.14/site-packages/PIL/__pycache__/ImageSequence.cpython-314.pyc +0 -0
  137. package/lib/python3.14/site-packages/PIL/__pycache__/ImageShow.cpython-314.pyc +0 -0
  138. package/lib/python3.14/site-packages/PIL/__pycache__/ImageStat.cpython-314.pyc +0 -0
  139. package/lib/python3.14/site-packages/PIL/__pycache__/ImageText.cpython-314.pyc +0 -0
  140. package/lib/python3.14/site-packages/PIL/__pycache__/ImageTk.cpython-314.pyc +0 -0
  141. package/lib/python3.14/site-packages/PIL/__pycache__/ImageTransform.cpython-314.pyc +0 -0
  142. package/lib/python3.14/site-packages/PIL/__pycache__/ImageWin.cpython-314.pyc +0 -0
  143. package/lib/python3.14/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-314.pyc +0 -0
  144. package/lib/python3.14/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-314.pyc +0 -0
  145. package/lib/python3.14/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-314.pyc +0 -0
  146. package/lib/python3.14/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-314.pyc +0 -0
  147. package/lib/python3.14/site-packages/PIL/__pycache__/JpegPresets.cpython-314.pyc +0 -0
  148. package/lib/python3.14/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-314.pyc +0 -0
  149. package/lib/python3.14/site-packages/PIL/__pycache__/MicImagePlugin.cpython-314.pyc +0 -0
  150. package/lib/python3.14/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-314.pyc +0 -0
  151. package/lib/python3.14/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-314.pyc +0 -0
  152. package/lib/python3.14/site-packages/PIL/__pycache__/MspImagePlugin.cpython-314.pyc +0 -0
  153. package/lib/python3.14/site-packages/PIL/__pycache__/PSDraw.cpython-314.pyc +0 -0
  154. package/lib/python3.14/site-packages/PIL/__pycache__/PaletteFile.cpython-314.pyc +0 -0
  155. package/lib/python3.14/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-314.pyc +0 -0
  156. package/lib/python3.14/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-314.pyc +0 -0
  157. package/lib/python3.14/site-packages/PIL/__pycache__/PcfFontFile.cpython-314.pyc +0 -0
  158. package/lib/python3.14/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-314.pyc +0 -0
  159. package/lib/python3.14/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-314.pyc +0 -0
  160. package/lib/python3.14/site-packages/PIL/__pycache__/PdfParser.cpython-314.pyc +0 -0
  161. package/lib/python3.14/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-314.pyc +0 -0
  162. package/lib/python3.14/site-packages/PIL/__pycache__/PngImagePlugin.cpython-314.pyc +0 -0
  163. package/lib/python3.14/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-314.pyc +0 -0
  164. package/lib/python3.14/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-314.pyc +0 -0
  165. package/lib/python3.14/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-314.pyc +0 -0
  166. package/lib/python3.14/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-314.pyc +0 -0
  167. package/lib/python3.14/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-314.pyc +0 -0
  168. package/lib/python3.14/site-packages/PIL/__pycache__/SunImagePlugin.cpython-314.pyc +0 -0
  169. package/lib/python3.14/site-packages/PIL/__pycache__/TarIO.cpython-314.pyc +0 -0
  170. package/lib/python3.14/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-314.pyc +0 -0
  171. package/lib/python3.14/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-314.pyc +0 -0
  172. package/lib/python3.14/site-packages/PIL/__pycache__/TiffTags.cpython-314.pyc +0 -0
  173. package/lib/python3.14/site-packages/PIL/__pycache__/WalImageFile.cpython-314.pyc +0 -0
  174. package/lib/python3.14/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-314.pyc +0 -0
  175. package/lib/python3.14/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-314.pyc +0 -0
  176. package/lib/python3.14/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-314.pyc +0 -0
  177. package/lib/python3.14/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-314.pyc +0 -0
  178. package/lib/python3.14/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-314.pyc +0 -0
  179. package/lib/python3.14/site-packages/PIL/__pycache__/__init__.cpython-314.pyc +0 -0
  180. package/lib/python3.14/site-packages/PIL/__pycache__/__main__.cpython-314.pyc +0 -0
  181. package/lib/python3.14/site-packages/PIL/__pycache__/_binary.cpython-314.pyc +0 -0
  182. package/lib/python3.14/site-packages/PIL/__pycache__/_deprecate.cpython-314.pyc +0 -0
  183. package/lib/python3.14/site-packages/PIL/__pycache__/_tkinter_finder.cpython-314.pyc +0 -0
  184. package/lib/python3.14/site-packages/PIL/__pycache__/_typing.cpython-314.pyc +0 -0
  185. package/lib/python3.14/site-packages/PIL/__pycache__/_util.cpython-314.pyc +0 -0
  186. package/lib/python3.14/site-packages/PIL/__pycache__/_version.cpython-314.pyc +0 -0
  187. package/lib/python3.14/site-packages/PIL/__pycache__/features.cpython-314.pyc +0 -0
  188. package/lib/python3.14/site-packages/PIL/__pycache__/report.cpython-314.pyc +0 -0
  189. package/lib/python3.14/site-packages/PIL/_avif.pyi +3 -0
  190. package/lib/python3.14/site-packages/PIL/_binary.py +113 -0
  191. package/lib/python3.14/site-packages/PIL/_deprecate.py +72 -0
  192. package/lib/python3.14/site-packages/PIL/_imaging.cpython-314-wasm32-wasix.so +0 -0
  193. package/lib/python3.14/site-packages/PIL/_imaging.pyi +31 -0
  194. package/lib/python3.14/site-packages/PIL/_imagingcms.pyi +143 -0
  195. package/lib/python3.14/site-packages/PIL/_imagingft.cpython-314-wasm32-wasix.so +0 -0
  196. package/lib/python3.14/site-packages/PIL/_imagingft.pyi +70 -0
  197. package/lib/python3.14/site-packages/PIL/_imagingmath.cpython-314-wasm32-wasix.so +0 -0
  198. package/lib/python3.14/site-packages/PIL/_imagingmath.pyi +3 -0
  199. package/lib/python3.14/site-packages/PIL/_imagingmorph.cpython-314-wasm32-wasix.so +0 -0
  200. package/lib/python3.14/site-packages/PIL/_imagingmorph.pyi +3 -0
  201. package/lib/python3.14/site-packages/PIL/_imagingtk.cpython-314-wasm32-wasix.so +0 -0
  202. package/lib/python3.14/site-packages/PIL/_imagingtk.pyi +3 -0
  203. package/lib/python3.14/site-packages/PIL/_tkinter_finder.py +20 -0
  204. package/lib/python3.14/site-packages/PIL/_typing.py +45 -0
  205. package/lib/python3.14/site-packages/PIL/_util.py +29 -0
  206. package/lib/python3.14/site-packages/PIL/_version.py +4 -0
  207. package/lib/python3.14/site-packages/PIL/_webp.pyi +3 -0
  208. package/lib/python3.14/site-packages/PIL/features.py +343 -0
  209. package/lib/python3.14/site-packages/PIL/py.typed +0 -0
  210. package/lib/python3.14/site-packages/PIL/report.py +5 -0
  211. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/METADATA +180 -0
  212. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/RECORD +117 -0
  213. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/WHEEL +5 -0
  214. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/licenses/LICENSE +30 -0
  215. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/top_level.txt +1 -0
  216. package/lib/python3.14/site-packages/pillow-12.3.0.dist-info/zip-safe +1 -0
  217. package/package.json +46 -0
@@ -0,0 +1,343 @@
1
+ from __future__ import annotations
2
+
3
+ import collections
4
+ import os
5
+ import sys
6
+ import warnings
7
+ from typing import IO
8
+
9
+ import PIL
10
+
11
+ from . import Image
12
+
13
+ modules = {
14
+ "pil": ("PIL._imaging", "PILLOW_VERSION"),
15
+ "tkinter": ("PIL._tkinter_finder", "tk_version"),
16
+ "freetype2": ("PIL._imagingft", "freetype2_version"),
17
+ "littlecms2": ("PIL._imagingcms", "littlecms_version"),
18
+ "webp": ("PIL._webp", "webpdecoder_version"),
19
+ "avif": ("PIL._avif", "libavif_version"),
20
+ }
21
+
22
+
23
+ def check_module(feature: str) -> bool:
24
+ """
25
+ Checks if a module is available.
26
+
27
+ :param feature: The module to check for.
28
+ :returns: ``True`` if available, ``False`` otherwise.
29
+ :raises ValueError: If the module is not defined in this version of Pillow.
30
+ """
31
+ if feature not in modules:
32
+ msg = f"Unknown module {feature}"
33
+ raise ValueError(msg)
34
+
35
+ module, ver = modules[feature]
36
+
37
+ try:
38
+ __import__(module)
39
+ return True
40
+ except ModuleNotFoundError:
41
+ return False
42
+ except ImportError as ex:
43
+ warnings.warn(str(ex))
44
+ return False
45
+
46
+
47
+ def version_module(feature: str) -> str | None:
48
+ """
49
+ :param feature: The module to check for.
50
+ :returns:
51
+ The loaded version number as a string, or ``None`` if unknown or not available.
52
+ :raises ValueError: If the module is not defined in this version of Pillow.
53
+ """
54
+ if not check_module(feature):
55
+ return None
56
+
57
+ module, ver = modules[feature]
58
+
59
+ return getattr(__import__(module, fromlist=[ver]), ver)
60
+
61
+
62
+ def get_supported_modules() -> list[str]:
63
+ """
64
+ :returns: A list of all supported modules.
65
+ """
66
+ return [f for f in modules if check_module(f)]
67
+
68
+
69
+ codecs = {
70
+ "jpg": ("jpeg", "jpeglib"),
71
+ "jpg_2000": ("jpeg2k", "jp2klib"),
72
+ "zlib": ("zip", "zlib"),
73
+ "libtiff": ("libtiff", "libtiff"),
74
+ }
75
+
76
+
77
+ def check_codec(feature: str) -> bool:
78
+ """
79
+ Checks if a codec is available.
80
+
81
+ :param feature: The codec to check for.
82
+ :returns: ``True`` if available, ``False`` otherwise.
83
+ :raises ValueError: If the codec is not defined in this version of Pillow.
84
+ """
85
+ if feature not in codecs:
86
+ msg = f"Unknown codec {feature}"
87
+ raise ValueError(msg)
88
+
89
+ codec, lib = codecs[feature]
90
+
91
+ return f"{codec}_encoder" in dir(Image.core)
92
+
93
+
94
+ def version_codec(feature: str) -> str | None:
95
+ """
96
+ :param feature: The codec to check for.
97
+ :returns:
98
+ The version number as a string, or ``None`` if not available.
99
+ Checked at compile time for ``jpg``, run-time otherwise.
100
+ :raises ValueError: If the codec is not defined in this version of Pillow.
101
+ """
102
+ if not check_codec(feature):
103
+ return None
104
+
105
+ codec, lib = codecs[feature]
106
+
107
+ version = getattr(Image.core, f"{lib}_version")
108
+
109
+ if feature == "libtiff":
110
+ return version.split("\n")[0].split("Version ")[1]
111
+
112
+ return version
113
+
114
+
115
+ def get_supported_codecs() -> list[str]:
116
+ """
117
+ :returns: A list of all supported codecs.
118
+ """
119
+ return [f for f in codecs if check_codec(f)]
120
+
121
+
122
+ features: dict[str, tuple[str, str, str | None]] = {
123
+ "raqm": ("PIL._imagingft", "HAVE_RAQM", "raqm_version"),
124
+ "fribidi": ("PIL._imagingft", "HAVE_FRIBIDI", "fribidi_version"),
125
+ "harfbuzz": ("PIL._imagingft", "HAVE_HARFBUZZ", "harfbuzz_version"),
126
+ "libjpeg_turbo": ("PIL._imaging", "HAVE_LIBJPEGTURBO", "libjpeg_turbo_version"),
127
+ "mozjpeg": ("PIL._imaging", "HAVE_MOZJPEG", "libjpeg_turbo_version"),
128
+ "zlib_ng": ("PIL._imaging", "HAVE_ZLIBNG", "zlib_ng_version"),
129
+ "libimagequant": ("PIL._imaging", "HAVE_LIBIMAGEQUANT", "imagequant_version"),
130
+ "xcb": ("PIL._imaging", "HAVE_XCB", None),
131
+ }
132
+
133
+
134
+ def check_feature(feature: str) -> bool | None:
135
+ """
136
+ Checks if a feature is available.
137
+
138
+ :param feature: The feature to check for.
139
+ :returns: ``True`` if available, ``False`` if unavailable, ``None`` if unknown.
140
+ :raises ValueError: If the feature is not defined in this version of Pillow.
141
+ """
142
+ if feature not in features:
143
+ msg = f"Unknown feature {feature}"
144
+ raise ValueError(msg)
145
+
146
+ module, flag, ver = features[feature]
147
+
148
+ try:
149
+ imported_module = __import__(module, fromlist=["PIL"])
150
+ return getattr(imported_module, flag)
151
+ except ModuleNotFoundError:
152
+ return None
153
+ except ImportError as ex:
154
+ warnings.warn(str(ex))
155
+ return None
156
+
157
+
158
+ def version_feature(feature: str) -> str | None:
159
+ """
160
+ :param feature: The feature to check for.
161
+ :returns: The version number as a string, or ``None`` if not available.
162
+ :raises ValueError: If the feature is not defined in this version of Pillow.
163
+ """
164
+ if not check_feature(feature):
165
+ return None
166
+
167
+ module, flag, ver = features[feature]
168
+
169
+ if ver is None:
170
+ return None
171
+
172
+ return getattr(__import__(module, fromlist=[ver]), ver)
173
+
174
+
175
+ def get_supported_features() -> list[str]:
176
+ """
177
+ :returns: A list of all supported features.
178
+ """
179
+ return [f for f in features if check_feature(f)]
180
+
181
+
182
+ def check(feature: str) -> bool | None:
183
+ """
184
+ :param feature: A module, codec, or feature name.
185
+ :returns:
186
+ ``True`` if the module, codec, or feature is available,
187
+ ``False`` or ``None`` otherwise.
188
+ """
189
+
190
+ if feature in modules:
191
+ return check_module(feature)
192
+ if feature in codecs:
193
+ return check_codec(feature)
194
+ if feature in features:
195
+ return check_feature(feature)
196
+ warnings.warn(f"Unknown feature '{feature}'.", stacklevel=2)
197
+ return False
198
+
199
+
200
+ def version(feature: str) -> str | None:
201
+ """
202
+ :param feature:
203
+ The module, codec, or feature to check for.
204
+ :returns:
205
+ The version number as a string, or ``None`` if unknown or not available.
206
+ """
207
+ if feature in modules:
208
+ return version_module(feature)
209
+ if feature in codecs:
210
+ return version_codec(feature)
211
+ if feature in features:
212
+ return version_feature(feature)
213
+ return None
214
+
215
+
216
+ def get_supported() -> list[str]:
217
+ """
218
+ :returns: A list of all supported modules, features, and codecs.
219
+ """
220
+
221
+ ret = get_supported_modules()
222
+ ret.extend(get_supported_features())
223
+ ret.extend(get_supported_codecs())
224
+ return ret
225
+
226
+
227
+ def pilinfo(out: IO[str] | None = None, supported_formats: bool = True) -> None:
228
+ """
229
+ Prints information about this installation of Pillow.
230
+ This function can be called with ``python3 -m PIL``.
231
+ It can also be called with ``python3 -m PIL.report`` or ``python3 -m PIL --report``
232
+ to have "supported_formats" set to ``False``, omitting the list of all supported
233
+ image file formats.
234
+
235
+ :param out:
236
+ The output stream to print to. Defaults to ``sys.stdout`` if ``None``.
237
+ :param supported_formats:
238
+ If ``True``, a list of all supported image file formats will be printed.
239
+ """
240
+
241
+ if out is None:
242
+ out = sys.stdout
243
+
244
+ Image.init()
245
+
246
+ print("-" * 68, file=out)
247
+ print(f"Pillow {PIL.__version__}", file=out)
248
+ py_version_lines = sys.version.splitlines()
249
+ print(f"Python {py_version_lines[0].strip()}", file=out)
250
+ for py_version in py_version_lines[1:]:
251
+ print(f" {py_version.strip()}", file=out)
252
+ print("-" * 68, file=out)
253
+ print(f"Python executable is {sys.executable or 'unknown'}", file=out)
254
+ if sys.prefix != sys.base_prefix:
255
+ print(f"Environment Python files loaded from {sys.prefix}", file=out)
256
+ print(f"System Python files loaded from {sys.base_prefix}", file=out)
257
+ print("-" * 68, file=out)
258
+ print(
259
+ f"Python Pillow modules loaded from {os.path.dirname(Image.__file__)}",
260
+ file=out,
261
+ )
262
+ print(
263
+ f"Binary Pillow modules loaded from {os.path.dirname(Image.core.__file__)}",
264
+ file=out,
265
+ )
266
+ print("-" * 68, file=out)
267
+
268
+ for name, feature in [
269
+ ("pil", "PIL CORE"),
270
+ ("tkinter", "TKINTER"),
271
+ ("freetype2", "FREETYPE2"),
272
+ ("littlecms2", "LITTLECMS2"),
273
+ ("webp", "WEBP"),
274
+ ("avif", "AVIF"),
275
+ ("jpg", "JPEG"),
276
+ ("jpg_2000", "OPENJPEG (JPEG2000)"),
277
+ ("zlib", "ZLIB (PNG/ZIP)"),
278
+ ("libtiff", "LIBTIFF"),
279
+ ("raqm", "RAQM (Bidirectional Text)"),
280
+ ("libimagequant", "LIBIMAGEQUANT (Quantization method)"),
281
+ ("xcb", "XCB (X protocol)"),
282
+ ]:
283
+ if check(name):
284
+ v: str | None = None
285
+ if name == "jpg":
286
+ libjpeg_turbo_version = version_feature("libjpeg_turbo")
287
+ if libjpeg_turbo_version is not None:
288
+ v = "mozjpeg" if check_feature("mozjpeg") else "libjpeg-turbo"
289
+ v += " " + libjpeg_turbo_version
290
+ if v is None:
291
+ v = version(name)
292
+ if v is not None:
293
+ version_static = name in ("pil", "jpg")
294
+ if name == "littlecms2":
295
+ # this check is also in src/_imagingcms.c:setup_module()
296
+ version_static = tuple(int(x) for x in v.split(".")) < (2, 7)
297
+ t = "compiled for" if version_static else "loaded"
298
+ if name == "zlib":
299
+ zlib_ng_version = version_feature("zlib_ng")
300
+ if zlib_ng_version is not None:
301
+ v += ", compiled for zlib-ng " + zlib_ng_version
302
+ elif name == "raqm":
303
+ for f in ("fribidi", "harfbuzz"):
304
+ v2 = version_feature(f)
305
+ if v2 is not None:
306
+ v += f", {f} {v2}"
307
+ print("---", feature, "support ok,", t, v, file=out)
308
+ else:
309
+ print("---", feature, "support ok", file=out)
310
+ else:
311
+ print("***", feature, "support not installed", file=out)
312
+ print("-" * 68, file=out)
313
+
314
+ if supported_formats:
315
+ extensions = collections.defaultdict(list)
316
+ for ext, i in Image.EXTENSION.items():
317
+ extensions[i].append(ext)
318
+
319
+ for i in sorted(Image.ID):
320
+ line = f"{i}"
321
+ if i in Image.MIME:
322
+ line = f"{line} {Image.MIME[i]}"
323
+ print(line, file=out)
324
+
325
+ if i in extensions:
326
+ print(
327
+ "Extensions: {}".format(", ".join(sorted(extensions[i]))), file=out
328
+ )
329
+
330
+ features = []
331
+ if i in Image.OPEN:
332
+ features.append("open")
333
+ if i in Image.SAVE:
334
+ features.append("save")
335
+ if i in Image.SAVE_ALL:
336
+ features.append("save_all")
337
+ if i in Image.DECODERS:
338
+ features.append("decode")
339
+ if i in Image.ENCODERS:
340
+ features.append("encode")
341
+
342
+ print("Features: {}".format(", ".join(features)), file=out)
343
+ print("-" * 68, file=out)
File without changes
@@ -0,0 +1,5 @@
1
+ from __future__ import annotations
2
+
3
+ from .features import pilinfo
4
+
5
+ pilinfo(supported_formats=False)
@@ -0,0 +1,180 @@
1
+ Metadata-Version: 2.4
2
+ Name: pillow
3
+ Version: 12.3.0
4
+ Summary: Python Imaging Library (fork)
5
+ Author-email: Jeffrey 'Alex' Clark <aclark@aclark.net>
6
+ License-Expression: MIT-CMU
7
+ Project-URL: Release notes, https://pillow.readthedocs.io/en/stable/releasenotes/index.html
8
+ Project-URL: Changelog, https://github.com/python-pillow/Pillow/releases
9
+ Project-URL: Documentation, https://pillow.readthedocs.io
10
+ Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi
11
+ Project-URL: Homepage, https://python-pillow.github.io
12
+ Project-URL: Mastodon, https://fosstodon.org/@pillow
13
+ Project-URL: Source, https://github.com/python-pillow/Pillow
14
+ Keywords: Imaging
15
+ Classifier: Development Status :: 6 - Mature
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Programming Language :: Python :: Implementation :: CPython
23
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
24
+ Classifier: Topic :: Multimedia :: Graphics
25
+ Classifier: Topic :: Multimedia :: Graphics :: Capture :: Digital Camera
26
+ Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture
27
+ Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion
28
+ Classifier: Topic :: Multimedia :: Graphics :: Viewers
29
+ Classifier: Typing :: Typed
30
+ Requires-Python: >=3.10
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Provides-Extra: docs
34
+ Requires-Dist: furo; extra == "docs"
35
+ Requires-Dist: olefile; extra == "docs"
36
+ Requires-Dist: sphinx>=8.2; extra == "docs"
37
+ Requires-Dist: sphinx-autobuild; extra == "docs"
38
+ Requires-Dist: sphinx-copybutton; extra == "docs"
39
+ Requires-Dist: sphinx-inline-tabs; extra == "docs"
40
+ Requires-Dist: sphinxext-opengraph; extra == "docs"
41
+ Provides-Extra: fpx
42
+ Requires-Dist: olefile; extra == "fpx"
43
+ Provides-Extra: mic
44
+ Requires-Dist: olefile; extra == "mic"
45
+ Provides-Extra: test-arrow
46
+ Requires-Dist: arro3-compute; extra == "test-arrow"
47
+ Requires-Dist: arro3-core; extra == "test-arrow"
48
+ Requires-Dist: nanoarrow; extra == "test-arrow"
49
+ Requires-Dist: pyarrow; extra == "test-arrow"
50
+ Provides-Extra: tests
51
+ Requires-Dist: coverage>=7.4.2; extra == "tests"
52
+ Requires-Dist: defusedxml; extra == "tests"
53
+ Requires-Dist: markdown2; extra == "tests"
54
+ Requires-Dist: olefile; extra == "tests"
55
+ Requires-Dist: packaging; extra == "tests"
56
+ Requires-Dist: pytest; extra == "tests"
57
+ Requires-Dist: pytest-cov; extra == "tests"
58
+ Requires-Dist: pytest-timeout; extra == "tests"
59
+ Requires-Dist: pytest-xdist; extra == "tests"
60
+ Requires-Dist: setuptools; extra == "tests"
61
+ Requires-Dist: trove-classifiers>=2024.10.12; extra == "tests"
62
+ Provides-Extra: xmp
63
+ Requires-Dist: defusedxml; extra == "xmp"
64
+ Dynamic: license-file
65
+
66
+ <p align="center">
67
+ <img width="248" height="250" src="https://raw.githubusercontent.com/python-pillow/pillow-logo/main/pillow-logo-248x250.png" alt="Pillow logo">
68
+ </p>
69
+
70
+ # Pillow
71
+
72
+ ## Python Imaging Library (Fork)
73
+
74
+ Pillow is the friendly PIL fork by [Jeffrey 'Alex' Clark and
75
+ contributors](https://github.com/python-pillow/Pillow/graphs/contributors).
76
+ PIL is the Python Imaging Library by Fredrik Lundh and contributors.
77
+ Development is supported by:
78
+ - [Tidelift](https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=readme&utm_campaign=enterprise) (since 2018)
79
+ - [Thanks.dev](https://thanks.dev) (since 2023)
80
+ - [GitHub Sponsors](https://github.com/sponsors/python-pillow) (since 2026)
81
+
82
+ <table>
83
+ <tr>
84
+ <th>docs</th>
85
+ <td>
86
+ <a href="https://pillow.readthedocs.io/?badge=latest"><img
87
+ alt="Documentation Status"
88
+ src="https://readthedocs.org/projects/pillow/badge/?version=latest"></a>
89
+ </td>
90
+ </tr>
91
+ <tr>
92
+ <th>tests</th>
93
+ <td>
94
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/lint.yml"><img
95
+ alt="GitHub Actions build status (Lint)"
96
+ src="https://github.com/python-pillow/Pillow/workflows/Lint/badge.svg"></a>
97
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/test.yml"><img
98
+ alt="GitHub Actions build status (Test Linux and macOS)"
99
+ src="https://github.com/python-pillow/Pillow/workflows/Test/badge.svg"></a>
100
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/test-windows.yml"><img
101
+ alt="GitHub Actions build status (Test Windows)"
102
+ src="https://github.com/python-pillow/Pillow/workflows/Test%20Windows/badge.svg"></a>
103
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/test-mingw.yml"><img
104
+ alt="GitHub Actions build status (Test MinGW)"
105
+ src="https://github.com/python-pillow/Pillow/workflows/Test%20MinGW/badge.svg"></a>
106
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/test-docker.yml"><img
107
+ alt="GitHub Actions build status (Test Docker)"
108
+ src="https://github.com/python-pillow/Pillow/workflows/Test%20Docker/badge.svg"></a>
109
+ <a href="https://github.com/python-pillow/Pillow/actions/workflows/wheels.yml"><img
110
+ alt="GitHub Actions build status (Wheels)"
111
+ src="https://github.com/python-pillow/Pillow/workflows/Wheels/badge.svg"></a>
112
+ <a href="https://app.codecov.io/gh/python-pillow/Pillow"><img
113
+ alt="Code coverage"
114
+ src="https://codecov.io/gh/python-pillow/Pillow/branch/main/graph/badge.svg"></a>
115
+ <a href="https://issues.oss-fuzz.com/issues?q=title:pillow"><img
116
+ alt="Fuzzing Status"
117
+ src="https://oss-fuzz-build-logs.storage.googleapis.com/badges/pillow.svg"></a>
118
+ </td>
119
+ </tr>
120
+ <tr>
121
+ <th>package</th>
122
+ <td>
123
+ <a href="https://zenodo.org/badge/latestdoi/17549/python-pillow/Pillow"><img
124
+ alt="Zenodo"
125
+ src="https://zenodo.org/badge/17549/python-pillow/Pillow.svg"></a>
126
+ <a href="https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=badge"><img
127
+ alt="Tidelift"
128
+ src="https://tidelift.com/badges/package/pypi/pillow?style=flat"></a>
129
+ <a href="https://pypi.org/project/pillow/"><img
130
+ alt="Newest PyPI version"
131
+ src="https://img.shields.io/pypi/v/pillow.svg"></a>
132
+ <a href="https://pypi.org/project/pillow/"><img
133
+ alt="Number of PyPI downloads"
134
+ src="https://img.shields.io/pypi/dm/pillow.svg"></a>
135
+ <a href="https://www.bestpractices.dev/projects/6331"><img
136
+ alt="OpenSSF Best Practices"
137
+ src="https://www.bestpractices.dev/projects/6331/badge"></a>
138
+ </td>
139
+ </tr>
140
+ <tr>
141
+ <th>social</th>
142
+ <td>
143
+ <a href="https://gitter.im/python-pillow/Pillow?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"><img
144
+ alt="Join the chat at https://gitter.im/python-pillow/Pillow"
145
+ src="https://badges.gitter.im/python-pillow/Pillow.svg"></a>
146
+ <a href="https://fosstodon.org/@pillow"><img
147
+ alt="Follow on https://fosstodon.org/@pillow"
148
+ src="https://img.shields.io/badge/publish-on%20Mastodon-595aff.svg"
149
+ rel="me"></a>
150
+ </td>
151
+ </tr>
152
+ </table>
153
+
154
+ ## Overview
155
+
156
+ The Python Imaging Library adds image processing capabilities to your Python interpreter.
157
+
158
+ This library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities.
159
+
160
+ The core image library is designed for fast access to data stored in a few basic pixel formats. It should provide a solid foundation for a general image processing tool.
161
+
162
+ ## More information
163
+
164
+ - [Documentation](https://pillow.readthedocs.io/)
165
+ - [Installation](https://pillow.readthedocs.io/en/latest/installation/basic-installation.html)
166
+ - [Handbook](https://pillow.readthedocs.io/en/latest/handbook/index.html)
167
+ - [Contribute](https://github.com/python-pillow/Pillow/blob/main/.github/CONTRIBUTING.md)
168
+ - [Issues](https://github.com/python-pillow/Pillow/issues)
169
+ - [Pull requests](https://github.com/python-pillow/Pillow/pulls)
170
+ - [Release notes](https://pillow.readthedocs.io/en/stable/releasenotes/index.html)
171
+ - [Changelog](https://github.com/python-pillow/Pillow/releases)
172
+ - [Pre-fork](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst#pre-fork)
173
+
174
+ ## Report a vulnerability
175
+
176
+ To report sensitive vulnerability information, report it [privately on GitHub](https://github.com/python-pillow/Pillow/security/advisories/new).
177
+
178
+ If you cannot use GitHub, use the [Tidelift security contact](https://tidelift.com/security). Tidelift will coordinate the fix and disclosure.
179
+
180
+ DO NOT report sensitive vulnerability information in public.
@@ -0,0 +1,117 @@
1
+ PIL/AvifImagePlugin.py,sha256=KrlhSXvdFRlGHezLZYHa9r3CgvbfunfTunLGMLXYlG0,9301
2
+ PIL/BdfFontFile.py,sha256=CqCPqFX8J3Tqw65z9ydxEychqmI0qf_RgykPcRAOnE4,3339
3
+ PIL/BlpImagePlugin.py,sha256=YVBYw2jCR9Brqglf6ZdW85kTFT7r4jB_ImJpnNCfeWc,16550
4
+ PIL/BmpImagePlugin.py,sha256=4AZ-smjRJX3loddGZSk4o5EHoG614_5BXTHuB7eoOw8,19863
5
+ PIL/BufrStubImagePlugin.py,sha256=QDLMMoNfuNCsZTn3VTU8o2A1g3FWDjG6Nsy1N0G-2eU,1685
6
+ PIL/ContainerIO.py,sha256=wkBqL2GDAb5fh3wrtfTGUfqioJipCl-lg2GxbjQrTZw,4604
7
+ PIL/CurImagePlugin.py,sha256=ZBLATsIlFrX5rv6DleE1oSteOUszjM9b1bOcJP5U4_o,2711
8
+ PIL/DcxImagePlugin.py,sha256=OlCv6yDI0LLZNbuUI7s69FI1DuArPyGxo3YCzQ1n8Hg,2180
9
+ PIL/DdsImagePlugin.py,sha256=hc9FUpbQVKyVyXHQPNOo6iRcui0ROLSV01M8IzPwkFA,19101
10
+ PIL/EpsImagePlugin.py,sha256=lMsdp1hx7JesbLB7_1flgJkpgQ7J1RQPvtVV6BWtvIE,16769
11
+ PIL/ExifTags.py,sha256=YcJXrdb__UY6p4jjf5mLOSDFf-kx2xD6-b2SHu82vfM,9955
12
+ PIL/FitsImagePlugin.py,sha256=-frFmERACr3cJzv_j7fuuj9cH7J7y6J76rZiN3-mqCA,4722
13
+ PIL/FliImagePlugin.py,sha256=4zxH8IXBX9DGi6dJRM6Y5NMdbA1d99x696mcGZHxHzI,4929
14
+ PIL/FontFile.py,sha256=64YkCqrGQ8HHm0fUtQKPIb0STd_86A9GNd9EA9sAADY,4259
15
+ PIL/FpxImagePlugin.py,sha256=9xdbTaweLUDpopuKZDCeHBDGsZbjboLzZ3j-k-s34SU,7462
16
+ PIL/FtexImagePlugin.py,sha256=ZS0WqBHtItNoi0W52A4REOGrDIfh40dCGDLruaXLRFE,3570
17
+ PIL/GbrImagePlugin.py,sha256=DYyvhekFB1sOQLEWPwYbf0CEfGdgdax1ci-3DuSeIgQ,3053
18
+ PIL/GdImageFile.py,sha256=8Ordd9EU4ObZu7PNXTPaM8ln6jpLx8QdEvCH_LXpJsA,2847
19
+ PIL/GifImagePlugin.py,sha256=_pVshaw6ZbqfAdrsGsw_xYtIXavPJckP6baGA5rK42E,42373
20
+ PIL/GimpGradientFile.py,sha256=zWdbMT-VssXx0Tg0DOmysToUgY-fyCXJvYmFSpJ1eNg,3983
21
+ PIL/GimpPaletteFile.py,sha256=hIHQ9LJ5ri0hy1e_vZYeD-n67UWdhEDlKc4vDxgaUdg,1860
22
+ PIL/GribStubImagePlugin.py,sha256=8yM4VeuNzYbAnofxcp3yroZD3tle8K8dcW-PuYHqz7o,1714
23
+ PIL/Hdf5StubImagePlugin.py,sha256=ETM4yeScy-eQi8UirP6HI1LvNOe0tWW7Nk9nyn3UIwo,1696
24
+ PIL/IcnsImagePlugin.py,sha256=Qu1FZdZyx-sbWogD5iNmH7hwuS3BkRcXsqIDFsGrhiA,12397
25
+ PIL/IcoImagePlugin.py,sha256=UGzIDlQ02ZB-VJEsoyI7YWmTx26ZiB2EHJZ1qvB28JQ,13103
26
+ PIL/ImImagePlugin.py,sha256=8sBOAy7xlqP722sXWhnJn4VoBhTBzbZQTtfW_XsWefU,11602
27
+ PIL/Image.py,sha256=BK8_Lbf_3WHoKfp6qPVIHTlKCkEpqP2KpbE5CJKPzW0,153786
28
+ PIL/ImageChops.py,sha256=GEjlymcoDtA5OOeIxQVIX96BD-s6AXhb7TmSLYn2tUg,7946
29
+ PIL/ImageCms.py,sha256=3ADA_p4sR5q0Hy09Gt9l5XnmfZeGqEMowiS1xs1s6IM,40695
30
+ PIL/ImageColor.py,sha256=IGA9C2umeED_EzS2Cvj6KsU0VutC9RstWIYPe8uDsVk,9441
31
+ PIL/ImageDraw.py,sha256=6DpfwfJw5p8kPmy83VzFSOmXGZqrJ2-hmmfe1ZG7PJo,35419
32
+ PIL/ImageDraw2.py,sha256=ewTYOS5i26PBBpquzKGHsSzaNHUuIv9e2kYUobuDg8s,7226
33
+ PIL/ImageEnhance.py,sha256=4Elhz_lyyxLmx0GkSHrwOAmNJ2TkqVQPHejzGihZUMI,3627
34
+ PIL/ImageFile.py,sha256=mDxPNeDFEEbUxjaZjsdwAM0togiHCgOyBeEEzQst9ik,29890
35
+ PIL/ImageFilter.py,sha256=G4Xfesaq3D2drus8jcLG8WgvwO61kn9soW2hE7gne_g,19097
36
+ PIL/ImageFont.py,sha256=JPpf7rkbS_Y-qtDrugioFh6ciJ2f0FajfJKBNAl7lkk,63750
37
+ PIL/ImageGrab.py,sha256=EkzWU05_4j-DRCd97VzXHJqHCETkrG9wHzTcQQE5kto,8241
38
+ PIL/ImageMath.py,sha256=qCDSjTWm-UxxV7mwcgSJUoiocW-LsVatEkQJCwQV6rI,10345
39
+ PIL/ImageMode.py,sha256=aaZVHAiCEanOA2K1jN3DlW3NPKa8Dm5nIXTXErzyFms,2395
40
+ PIL/ImageMorph.py,sha256=otf5f9A-Y4Aosfl1E4YWEVatgDBInGp6xWBJfAJ0NRs,10356
41
+ PIL/ImageOps.py,sha256=k49WsFOgNe0GJ42Q18-ydYB6uMz14n21LCNZXM2pf_8,25697
42
+ PIL/ImagePalette.py,sha256=Zn4g_xcQ1KDlf0lKcvPNcjIPeufQx-ktO5Hcd3yKdx8,9208
43
+ PIL/ImagePath.py,sha256=5yUG5XCUil1KKTTA_8PgGhcmg-mnue-GK0FwTBlhjw4,371
44
+ PIL/ImageQt.py,sha256=PTt5TPyngWL-Vuvx_bwnH17EOBe3tE7l4huVmvGQP5Y,6684
45
+ PIL/ImageSequence.py,sha256=Mphgkr79scmYBgmi9ZguhDfVwHvpLSX5uZVHDZlrn0I,2253
46
+ PIL/ImageShow.py,sha256=ugoxSYzGSTfa_AFeV4zDXKT89C--zKda81agQiHFT5A,10317
47
+ PIL/ImageStat.py,sha256=FVTiYWGCciPW1QD61b7DYZlcDqR0dS6hsLjq-gcKcG4,5495
48
+ PIL/ImageText.py,sha256=n3e9qCGxpwk_R3TspgKI-XDbWqVuS3TaCwcd7nwTRvM,18578
49
+ PIL/ImageTk.py,sha256=b5SntckGXs0ECsI2MmdJg3CSX6AtELsWh0Ohxu41u_k,8132
50
+ PIL/ImageTransform.py,sha256=-qek7P3lzLddcXt9cWt5w_L11JGp2yY3AJtOfmJAkDc,3916
51
+ PIL/ImageWin.py,sha256=cneVjuwf1q2cG0OsN1eo7PV_F_UcA94gMcojwgHi43I,8098
52
+ PIL/ImtImagePlugin.py,sha256=SL5IrsHcblltxtX4v_HVFhYnR6haJ0AOd2NHhZKMImY,2665
53
+ PIL/IptcImagePlugin.py,sha256=4mCGxtWqemjeP_Z2brdwT0YJX-jmjA_OZwwUp3pQ2qo,6437
54
+ PIL/Jpeg2KImagePlugin.py,sha256=yd2v9b1fogwDkDaU31ZQR5sV9BhhuB558Xfaors0ZVg,14622
55
+ PIL/JpegImagePlugin.py,sha256=J-vo9Zp6EuQCd_j4TORjfDABReGB-1vQWtiUuJw5G7E,31334
56
+ PIL/JpegPresets.py,sha256=lnqWHo4DLIHIulcdHp0NJ7CWexHt8T3w51kIKlLfkIA,12379
57
+ PIL/McIdasImagePlugin.py,sha256=baOIkD-CIIeCgBFTf8kos928PKBuCUqYYa38u3WES_8,1877
58
+ PIL/MicImagePlugin.py,sha256=j91UizvL-zgXZgOcq_4oWBbSX6LPq1J9kNHkdITM1Qw,2599
59
+ PIL/MpegImagePlugin.py,sha256=g7BZd93kWpFi41SG_wKFoi0yEPsioI4kj45b2F-3Vrw,2010
60
+ PIL/MpoImagePlugin.py,sha256=CU8UePn0bsm0q7EPXNF3LHKI5Ie3B5EuquvJZORuTBA,6784
61
+ PIL/MspImagePlugin.py,sha256=CQ6kvvSs5BlSaHWGf_nOQEssZUsN_7U2a_QmzOkhRn4,5872
62
+ PIL/PSDraw.py,sha256=QB7MGMumb-PqjZE4zsga2qvTh7sxEthIz8nbffwjecY,6992
63
+ PIL/PaletteFile.py,sha256=suDdAL6VMljXw4oEn1vhTt4DQ4vbpIHGd3A4oxOgE6s,1216
64
+ PIL/PalmImagePlugin.py,sha256=muM80ZJd0xCq-EspVxA7gwNfWHQgaeac7LLlvd6RQjk,8748
65
+ PIL/PcdImagePlugin.py,sha256=-gnMUqQH0R-aljsd3nZS9eBI1j75ijWD_HZfadE3RsQ,1774
66
+ PIL/PcfFontFile.py,sha256=-LYZx2VFfqXj8vr3gHGAEAgfkDP5Wj5Kv7kkKqxUlo0,6984
67
+ PIL/PcxImagePlugin.py,sha256=-pZVK7Hx0kSQtnGiy6UOF3qi5QejMYQbcMWlebsR1x4,6364
68
+ PIL/PdfImagePlugin.py,sha256=o11O4qxbm5A4m9ktpn3HrdE7le2dFF3y6BtMf8dHIaY,9405
69
+ PIL/PdfParser.py,sha256=f13uOcpI520tgBveB4_BiwVXj-UBwmH5oyd6LeJetrk,38661
70
+ PIL/PixarImagePlugin.py,sha256=l_4GwBd0mATnIXYJbwmmODU2vP7wewLu6BRviHCB2EI,1758
71
+ PIL/PngImagePlugin.py,sha256=WRHrs8jljt9PzKzoWt4gw6BizEHcVTQL-3tA8L8YYcU,52399
72
+ PIL/PpmImagePlugin.py,sha256=Vkz6Z_ujPUhVD9ujcVwVWiAxT1aKKw26SI9gpjF9bVg,12344
73
+ PIL/PsdImagePlugin.py,sha256=JV32UInADfXI5wABeQyieSAKj3I7Qg8-LWbIM2o_1ZQ,8910
74
+ PIL/QoiImagePlugin.py,sha256=EE6lOIqqryupuP081oqOViTCfqD3qRA75875nGP7rZU,8596
75
+ PIL/SgiImagePlugin.py,sha256=JCYuQPt9YduG--vxaTmlvvzHdcwqEb2_m9ruz-GIcts,6371
76
+ PIL/SpiderImagePlugin.py,sha256=ybpuiHLo-9B1IL3R6mvMTwwbFdlWSJIxeBGlN8XKb0o,10294
77
+ PIL/SunImagePlugin.py,sha256=Hdxkhk0pxpBGxYhPJfCDLwsYcO1KjxjtplNMFYibIvk,4589
78
+ PIL/TarIO.py,sha256=BqYUChCBb9F7Sh-uZ86iz1Dtoy2D0obNwGm65z1rdc0,1442
79
+ PIL/TgaImagePlugin.py,sha256=GMCM_4s0WoyJOqnaq18xFHOoaNwnId7nlKFCNm8DPyE,7733
80
+ PIL/TiffImagePlugin.py,sha256=RAsqOoCygNGM2j_HDZ_SBuL6ROmJfJVQ9wtROVBHsnM,85947
81
+ PIL/TiffTags.py,sha256=dm3qNQQkuaLKqzUTvnlGiUA8K3IizQOABvac_wjttF0,17206
82
+ PIL/WalImageFile.py,sha256=dZ21IDQST2o7Y7gA-QxRzwIx2aiObGO1Uosgdd2EpJc,5762
83
+ PIL/WebPImagePlugin.py,sha256=Y0Ngoyar_NKexeBfa4TDvm5aeD58TdatRr0OuhgtriM,9967
84
+ PIL/WmfImagePlugin.py,sha256=zR4metz5R-NcO8FN1a05Bli83geOabTpKdrheTtRow0,5207
85
+ PIL/XVThumbImagePlugin.py,sha256=XghmnRm8Y_8j0O28XPbHRrmK7CrGVuR844gv1hfF5ug,2126
86
+ PIL/XbmImagePlugin.py,sha256=Fd6GVDEo73nyFICA3Z3w4LjkwoZWvhHB6rKCm5yVrho,2669
87
+ PIL/XpmImagePlugin.py,sha256=weCrDgO3H96lLQ-uXY-Fnow1ZJ4QARDpZAYtzJkefLo,4382
88
+ PIL/__init__.py,sha256=c2G2rTh4WJr_5ZVuSk2iTXE5iwiR_TqMFek2Ihe0ygE,2035
89
+ PIL/__main__.py,sha256=Lpj4vef8mI7jA1sRCUAoVYaeePD_Uc898xF5c7XLx1A,133
90
+ PIL/_avif.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63
91
+ PIL/_binary.py,sha256=puDoNyI8yrOw6Rx3IjyVHTs_udaaws5SQwztcZuvOXU,2551
92
+ PIL/_deprecate.py,sha256=KhyLVmQYVVww0rORbU24Te3t8fOt9G2LeM6fJGWbl0o,2034
93
+ PIL/_imaging.cpython-314-wasm32-wasix.so,sha256=v7sTiR3JYFf0Zek2hF-PE9h1P7fXrzq6KY01i6yopgg,1233374
94
+ PIL/_imaging.pyi,sha256=fT-TTGQS0kym1gv77gXTKQtJrAmO1NynS5LKBtG3G6M,893
95
+ PIL/_imagingcms.pyi,sha256=ZZ8iIoi6EHWLvgAdfm1hPD5CQmxi75LiJl5x8yGxYoU,4433
96
+ PIL/_imagingft.cpython-314-wasm32-wasix.so,sha256=5GZGZCf6O49bOPnCISOIrxQf5_jMHS6iIbpz2Rd7HII,767995
97
+ PIL/_imagingft.pyi,sha256=cYySzvcKBCiHPBsvttMie9AdfUcEsqZR-3256YQtz2Q,1833
98
+ PIL/_imagingmath.cpython-314-wasm32-wasix.so,sha256=L0StfDujrRSiw2uvacAZHQk3whh34F9WxiAUSDUegTY,18898
99
+ PIL/_imagingmath.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63
100
+ PIL/_imagingmorph.cpython-314-wasm32-wasix.so,sha256=XyCRtoeyUnG1HDtRGpYo9mIqLH6va3XKXGkyCVGnSQw,6255
101
+ PIL/_imagingmorph.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63
102
+ PIL/_imagingtk.cpython-314-wasm32-wasix.so,sha256=clFD_Y51YQgsPntAiC0rxVOOQnW7iAF939CfNlEl_cw,6687
103
+ PIL/_imagingtk.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63
104
+ PIL/_tkinter_finder.py,sha256=GIZ4stmFhUosmHKSrdxcjStiocDNfyJn7RBie2SWxU0,538
105
+ PIL/_typing.py,sha256=2z33ZUp9aQnkSqXzNR3Zn7l04d2W-oAj1OiZhiyFF68,919
106
+ PIL/_util.py,sha256=fxhWdrLARyc2PsMgN3m9_U1dY3oUKbV7mkoHcXgoeeA,684
107
+ PIL/_version.py,sha256=_n111AGTJqyiSuV9SrGQzWK6EiWxdQURGc1hzYfkKx0,87
108
+ PIL/_webp.pyi,sha256=3fBxcSppJr6EOEcUojvflG3Eegg7lv2Qp0dNQQILrP4,63
109
+ PIL/features.py,sha256=FPkEhjtBaRSqpkgHNYduwxiFtycu4NjZKwEMWxtemPU,10775
110
+ PIL/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
+ PIL/report.py,sha256=4JY6-IU7sH1RKuRbOvy1fUt0dAoi79FX4tYJN3p1DT0,100
112
+ pillow-12.3.0.dist-info/licenses/LICENSE,sha256=FRgec2Pcqa7Xi3m-vrx_3n8YFLi9MR6juHrozK38GFs,1457
113
+ pillow-12.3.0.dist-info/METADATA,sha256=j8BxRsqzPvdYI2HaturFltNAsD7GSPGCF9p4lPc4OMg,9093
114
+ pillow-12.3.0.dist-info/WHEEL,sha256=V3xm0hpSo9RepW12BjHNsqfQoDlxnJ_rhcIwbEhUZxY,104
115
+ pillow-12.3.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4
116
+ pillow-12.3.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
117
+ pillow-12.3.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp314-cp314-wasix_wasm32
5
+