massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-pyright / node_modules / pyright / dist / typeshed-fallback / stubs / Pillow / PIL / Image.pyi
1 from _typeshed import SupportsRead, SupportsWrite
2 from collections.abc import Iterable, Iterator, MutableMapping
3 from pathlib import Path
4 from typing import Any, Callable, Dict, Protocol, Sequence, SupportsBytes, Tuple, Union
5 from typing_extensions import Literal
6
7 from ._imaging import (
8     DEFAULT_STRATEGY as DEFAULT_STRATEGY,
9     FILTERED as FILTERED,
10     FIXED as FIXED,
11     HUFFMAN_ONLY as HUFFMAN_ONLY,
12     RLE as RLE,
13 )
14 from .ImageFilter import Filter
15 from .ImagePalette import ImagePalette
16
17 _Mode = Literal["1", "CMYK", "F", "HSV", "I", "L", "LAB", "P", "RGB", "RGBA", "RGBX", "YCbCr"]
18 _Resample = Literal[0, 1, 2, 3, 4, 5]
19 _Size = Tuple[int, int]
20 _Box = Tuple[int, int, int, int]
21
22 _ConversionMatrix = Union[
23     Tuple[float, float, float, float], Tuple[float, float, float, float, float, float, float, float, float, float, float, float],
24 ]
25 _Color = Union[float, Tuple[float, ...]]
26
27 class _Writeable(SupportsWrite[bytes], Protocol):
28     def seek(self, __offset: int) -> Any: ...
29
30 # obsolete
31 NORMAL: Literal[0]
32 SEQUENCE: Literal[1]
33 CONTAINER: Literal[2]
34
35 class DecompressionBombWarning(RuntimeWarning): ...
36 class DecompressionBombError(Exception): ...
37
38 MAX_IMAGE_PIXELS: int
39
40 NONE: Literal[0]
41
42 FLIP_LEFT_RIGHT: Literal[0]
43 FLIP_TOP_BOTTOM: Literal[1]
44 ROTATE_90: Literal[2]
45 ROTATE_180: Literal[3]
46 ROTATE_270: Literal[4]
47 TRANSPOSE: Literal[5]
48 TRANSVERSE: Literal[6]
49
50 AFFINE: Literal[0]
51 EXTENT: Literal[1]
52 PERSPECTIVE: Literal[2]
53 QUAD: Literal[3]
54 MESH: Literal[4]
55
56 NEAREST: Literal[0]
57 BOX: Literal[4]
58 BILINEAR: Literal[2]
59 LINEAR: Literal[2]
60 HAMMING: Literal[5]
61 BICUBIC: Literal[3]
62 CUBIC: Literal[3]
63 LANCZOS: Literal[1]
64 ANTIALIAS: Literal[1]
65
66 ORDERED: Literal[1]
67 RASTERIZE: Literal[2]
68 FLOYDSTEINBERG: Literal[3]
69
70 WEB: Literal[0]
71 ADAPTIVE: Literal[1]
72
73 MEDIANCUT: Literal[0]
74 MAXCOVERAGE: Literal[1]
75 FASTOCTREE: Literal[2]
76 LIBIMAGEQUANT: Literal[3]
77
78 ID: list[str]
79 OPEN: dict[str, Any]
80 MIME: dict[str, str]
81 SAVE: dict[str, Any]
82 SAVE_ALL: dict[str, Any]
83 EXTENSION: dict[str, str]
84 DECODERS: dict[str, Any]
85 ENCODERS: dict[str, Any]
86
87 MODES: list[_Mode]
88
89 def getmodebase(mode: _Mode) -> Literal["L", "RGB"]: ...
90 def getmodetype(mode: _Mode) -> Literal["L", "I", "F"]: ...
91 def getmodebandnames(mode: _Mode) -> Tuple[str, ...]: ...
92 def getmodebands(mode: _Mode) -> int: ...
93 def preinit() -> None: ...
94 def init() -> None: ...
95 def coerce_e(value) -> _E: ...
96
97 class _E:
98     def __init__(self, data) -> None: ...
99     def __add__(self, other) -> _E: ...
100     def __mul__(self, other) -> _E: ...
101
102 _ImageState = Tuple[Dict[str, Any], str, Tuple[int, int], Any, bytes]
103
104 class Image:
105     format: Any
106     format_description: Any
107     im: Any
108     mode: str
109     palette: Any
110     info: dict[Any, Any]
111     readonly: int
112     pyaccess: Any
113     @property
114     def width(self) -> int: ...
115     @property
116     def height(self) -> int: ...
117     @property
118     def size(self) -> tuple[int, int]: ...
119     def __enter__(self) -> Image: ...
120     def __exit__(self, *args: Any) -> None: ...
121     def close(self) -> None: ...
122     def __eq__(self, other: object) -> bool: ...
123     def __array__(self, dtype=...) -> Any: ...  # returns numpy.array()
124     def __getstate__(self) -> _ImageState: ...
125     def __setstate__(self, state: _ImageState) -> None: ...
126     def tobytes(self, encoder_name: str = ..., *args) -> bytes: ...
127     def tobitmap(self, name: str = ...) -> bytes: ...
128     def frombytes(self, data: bytes, decoder_name: str = ..., *args) -> None: ...
129     def load(self) -> None: ...
130     def verify(self) -> None: ...
131     def convert(
132         self,
133         mode: str | None = ...,
134         matrix: _ConversionMatrix | None = ...,
135         dither: int | None = ...,
136         palette: Literal[0, 1] = ...,
137         colors: int = ...,
138     ) -> Image: ...
139     def quantize(
140         self,
141         colors: int = ...,
142         method: Literal[0, 1, 2, 3] | None = ...,
143         kmeans: int = ...,
144         palette: Image | None = ...,
145         dither: int = ...,
146     ) -> Image: ...
147     def copy(self) -> Image: ...
148     __copy__ = copy
149     def crop(self, box: _Box | None = ...) -> Image: ...
150     def draft(self, mode: str, size: _Size) -> None: ...
151     def filter(self, filter: Filter | Callable[[], Filter]) -> Image: ...
152     def getbands(self) -> Tuple[str, ...]: ...
153     def getbbox(self) -> tuple[int, int, int, int] | None: ...
154     def getcolors(self, maxcolors: int = ...) -> list[tuple[int, int]]: ...
155     def getdata(self, band: int | None = ...): ...
156     def getextrema(self): ...
157     def getexif(self) -> Exif: ...
158     def getim(self): ...
159     def getpalette(self) -> list[int] | None: ...
160     def getpixel(self, xy: tuple[int, int]): ...
161     def getprojection(self) -> tuple[list[int], list[int]]: ...
162     def histogram(self, mask: Image | None = ..., extrema: tuple[int, int] | tuple[float, float] | None = ...) -> list[int]: ...
163     def entropy(self, mask: Image | None = ..., extrema: tuple[int, int] | tuple[float, float] | None = ...) -> float: ...
164     def paste(self, im: Image, box: tuple[float, float] | _Box | None = ..., mask: Image | None = ...) -> None: ...
165     def alpha_composite(self, im: Image, dest: tuple[int, int] = ..., source: tuple[int, int] = ...) -> None: ...
166     def point(self, lut, mode: str | None = ...) -> Image: ...
167     def putalpha(self, alpha: Image | int) -> None: ...
168     def putdata(self, data: Sequence[int], scale: float = ..., offset: float = ...) -> None: ...
169     def putpalette(self, data: ImagePalette | bytes | Iterable[int] | SupportsBytes, rawmode: str | None = ...) -> None: ...
170     def putpixel(self, xy: tuple[int, int], value: _Color | list[float]) -> None: ...
171     def remap_palette(self, dest_map: Iterable[int], source_palette: Sequence[int] | None = ...) -> Image: ...
172     def resize(
173         self,
174         size: tuple[int, int],
175         resample: _Resample | None = ...,
176         box: tuple[float, float, float, float] | None = ...,
177         reducing_gap: float | None = ...,
178     ) -> Image: ...
179     def reduce(self, factor: int | tuple[int, int] | list[int], box: _Box | None = ...) -> Image: ...
180     def rotate(
181         self,
182         angle: float,
183         resample: _Resample = ...,
184         expand: bool = ...,
185         center: tuple[float, float] | None = ...,
186         translate: tuple[float, float] | None = ...,
187         fillcolor: _Color | None = ...,
188     ) -> Image: ...
189     def save(
190         self,
191         fp: str | bytes | Path | _Writeable,
192         format: str | None = ...,
193         *,
194         save_all: bool = ...,
195         bitmap_format: Literal["bmp", "png"] = ...,  # for ICO files
196         **params: Any,
197     ) -> None: ...
198     def seek(self, frame: int) -> None: ...
199     def show(self, title: str | None = ..., command: str | None = ...) -> None: ...
200     def split(self) -> Tuple[Image, ...]: ...
201     def getchannel(self, channel: int | str) -> Image: ...
202     def tell(self) -> int: ...
203     def thumbnail(self, size: tuple[int, int], resample: _Resample = ..., reducing_gap: float = ...) -> None: ...
204     def transform(
205         self,
206         size: _Size,
207         method: Literal[0, 1, 2, 3, 4],
208         data=...,
209         resample: _Resample = ...,
210         fill: int = ...,
211         fillcolor: _Color | int | None = ...,
212     ) -> None: ...
213     def transpose(self, method: Literal[0, 1, 2, 3, 4, 5, 6]) -> Image: ...
214     def effect_spread(self, distance: int) -> Image: ...
215     def toqimage(self): ...
216     def toqpixmap(self): ...
217
218 class ImagePointHandler: ...
219 class ImageTransformHandler: ...
220
221 def new(mode: _Mode, size: tuple[int, int], color: float | Tuple[float, ...] | str = ...) -> Image: ...
222 def frombytes(mode: _Mode, size: tuple[int, int], data, decoder_name: str = ..., *args) -> Image: ...
223 def frombuffer(mode: _Mode, size: tuple[int, int], data, decoder_name: str = ..., *args) -> Image: ...
224 def fromarray(obj, mode: _Mode | None = ...) -> Image: ...
225 def fromqimage(im) -> Image: ...
226 def fromqpixmap(im) -> Image: ...
227 def open(
228     fp: str | bytes | Path | SupportsRead[bytes], mode: Literal["r"] = ..., formats: list[str] | tuple[str] | None = ...
229 ) -> Image: ...
230 def alpha_composite(im1: Image, im2: Image) -> Image: ...
231 def blend(im1: Image, im2: Image, alpha: float) -> Image: ...
232 def composite(image1: Image, image2: Image, mask: Image) -> Image: ...
233 def eval(image: Image, *args) -> Image: ...
234 def merge(mode: str, bands: Sequence[Image]) -> Image: ...
235 def register_open(id: str, factory, accept=...) -> None: ...
236 def register_mime(id: str, mimetype: str) -> None: ...
237 def register_save(id: str, driver) -> None: ...
238 def register_save_all(id: str, driver) -> None: ...
239 def register_extension(id: str, extension: str) -> None: ...
240 def register_extensions(id: str, extensions: Iterable[str]) -> None: ...
241 def registered_extensions() -> dict[str, str]: ...
242 def register_decoder(name: str, decoder) -> None: ...
243 def register_encoder(name: str, encoder) -> None: ...
244 def effect_mandelbrot(size: tuple[int, int], extent: tuple[float, float, float, float], quality: int) -> Image: ...
245 def effect_noise(size: tuple[int, int], sigma: float) -> Image: ...
246 def linear_gradient(mode: str) -> Image: ...
247 def radial_gradient(mode: str) -> Image: ...
248
249 class Exif(MutableMapping[int, Any]):
250     def load(self, data: bytes) -> None: ...
251     def tobytes(self, offset: int = ...) -> bytes: ...
252     def get_ifd(self, tag: int): ...
253     def __len__(self) -> int: ...
254     def __getitem__(self, tag: int) -> Any: ...
255     def __contains__(self, tag: object) -> bool: ...
256     def __setitem__(self, tag: int, value: Any) -> None: ...
257     def __delitem__(self, tag: int) -> None: ...
258     def __iter__(self) -> Iterator[int]: ...