diff --git a/stubs/ExifRead/@tests/stubtest_allowlist.txt b/stubs/ExifRead/@tests/stubtest_allowlist.txt deleted file mode 100644 index 57820b2cc0ff..000000000000 --- a/stubs/ExifRead/@tests/stubtest_allowlist.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Stub-only module. -exifread._types diff --git a/stubs/ExifRead/METADATA.toml b/stubs/ExifRead/METADATA.toml deleted file mode 100644 index b65bbc46611c..000000000000 --- a/stubs/ExifRead/METADATA.toml +++ /dev/null @@ -1,3 +0,0 @@ -version = "3.0.*" -upstream_repository = "https://github.com/ianare/exif-py" -obsolete_since = "3.1.0" # Released on 2025-04-25 diff --git a/stubs/ExifRead/exifread/__init__.pyi b/stubs/ExifRead/exifread/__init__.pyi deleted file mode 100644 index eede72dcd5d8..000000000000 --- a/stubs/ExifRead/exifread/__init__.pyi +++ /dev/null @@ -1,17 +0,0 @@ -from logging import Logger -from typing import Any - -from ._types import Reader - -__version__: str -logger: Logger - -def process_file( - fh: Reader, - stop_tag: str = "UNDEF", - details: bool = True, - strict: bool = False, - debug: bool = False, - truncate_tags: bool = True, - auto_seek: bool = True, -) -> dict[str, Any]: ... diff --git a/stubs/ExifRead/exifread/_types.pyi b/stubs/ExifRead/exifread/_types.pyi deleted file mode 100644 index 2c2e84770669..000000000000 --- a/stubs/ExifRead/exifread/_types.pyi +++ /dev/null @@ -1,15 +0,0 @@ -# Stubs-only module with type aliases for ExifRead. - -from collections.abc import Iterator -from typing import Any, Literal, Protocol -from typing_extensions import TypeAlias - -# The second item of the value tuple - if it exists - can be a variety of types, -# including a callable or another dict. -TagDict: TypeAlias = dict[int, tuple[str] | tuple[str, Any]] - -class Reader(Protocol): - def __iter__(self) -> Iterator[bytes]: ... - def read(self, size: int, /) -> bytes: ... - def tell(self) -> int: ... - def seek(self, offset: int, whence: Literal[0, 1] = ..., /) -> object: ... diff --git a/stubs/ExifRead/exifread/classes.pyi b/stubs/ExifRead/exifread/classes.pyi deleted file mode 100644 index 2d7611b63d57..000000000000 --- a/stubs/ExifRead/exifread/classes.pyi +++ /dev/null @@ -1,47 +0,0 @@ -from logging import Logger -from typing import Any, Literal - -from ._types import Reader, TagDict - -logger: Logger - -class IfdTag: - printable: str - tag: int - field_type: int - field_offset: int - field_length: int - values: Any # either string, bytes or list of data items - def __init__(self, printable: str, tag: int, field_type: int, values: Any, field_offset: int, field_length: int) -> None: ... - -class ExifHeader: - file_handle: Reader - endian: Literal["I", "M"] - offset: int - fake_exif: bool - strict: bool - debug: bool - detailed: bool - truncate_tags: bool - tags: dict[str, Any] - def __init__( - self, - file_handle: Reader, - endian: Literal["I", "M"], - offset: int, - fake_exif: bool, - strict: bool, - debug: bool = False, - detailed: bool = True, - truncate_tags: bool = True, - ) -> None: ... - def s2n(self, offset: int, length: int, signed: bool = False) -> int: ... - def n2b(self, offset: int, length: int) -> bytes: ... - def list_ifd(self) -> list[int]: ... - def dump_ifd( - self, ifd: int, ifd_name: str, tag_dict: TagDict | None = None, relative: int = 0, stop_tag: str = "UNDEF" - ) -> None: ... - def extract_tiff_thumbnail(self, thumb_ifd: int) -> None: ... - def extract_jpeg_thumbnail(self) -> None: ... - def decode_maker_note(self) -> None: ... - def parse_xmp(self, xmp_bytes: bytes) -> None: ... diff --git a/stubs/ExifRead/exifread/exceptions.pyi b/stubs/ExifRead/exifread/exceptions.pyi deleted file mode 100644 index 47b39e3095c0..000000000000 --- a/stubs/ExifRead/exifread/exceptions.pyi +++ /dev/null @@ -1,2 +0,0 @@ -class InvalidExif(Exception): ... -class ExifNotFound(Exception): ... diff --git a/stubs/ExifRead/exifread/exif_log.pyi b/stubs/ExifRead/exifread/exif_log.pyi deleted file mode 100644 index f7cbc25218ab..000000000000 --- a/stubs/ExifRead/exifread/exif_log.pyi +++ /dev/null @@ -1,24 +0,0 @@ -import logging -from typing import TextIO - -TEXT_NORMAL: int -TEXT_BOLD: int -TEXT_RED: int -TEXT_GREEN: int -TEXT_YELLOW: int -TEXT_BLUE: int -TEXT_MAGENTA: int -TEXT_CYAN: int - -def get_logger() -> logging.Logger: ... -def setup_logger(debug: bool, color: bool) -> None: ... - -class Formatter(logging.Formatter): - color: bool - debug: bool - def __init__(self, debug: bool = False, color: bool = False) -> None: ... - -class Handler(logging.StreamHandler[TextIO]): - color: bool - debug: bool - def __init__(self, log_level: logging._Level, debug: bool = False, color: bool = False) -> None: ... diff --git a/stubs/ExifRead/exifread/heic.pyi b/stubs/ExifRead/exifread/heic.pyi deleted file mode 100644 index 7fd0e1f839e3..000000000000 --- a/stubs/ExifRead/exifread/heic.pyi +++ /dev/null @@ -1,56 +0,0 @@ -from collections.abc import Callable -from logging import Logger - -from ._types import Reader - -logger: Logger - -class WrongBox(Exception): ... -class NoParser(Exception): ... -class BoxVersion(Exception): ... -class BadSize(Exception): ... - -class Box: - version: int - minor_version: int - item_count: int - size: int - after: int - pos: int - compat: list[bytes] - base_offset: int - subs: dict[str, Box] - locs: dict[int, list[tuple[int, int]]] - exif_infe: Box | None - item_id: int - item_type: bytes - item_name: bytes - item_protection_index: int - major_brand: bytes - offset_size: int - length_size: int - base_offset_size: int - index_size: int - flags: int - name: str - def __init__(self, name: str) -> None: ... - def set_sizes(self, offset: int, length: int, base_offset: int, index: int) -> None: ... - def set_full(self, vflags: int) -> None: ... - -class HEICExifFinder: - file_handle: Reader - def __init__(self, file_handle: Reader) -> None: ... - def get(self, nbytes: int) -> bytes: ... - def get16(self) -> int: ... - def get32(self) -> int: ... - def get64(self) -> int: ... - def get_int4x2(self) -> tuple[int, int]: ... - def get_int(self, size: int) -> int: ... - def get_string(self) -> bytes: ... - def next_box(self) -> Box: ... - def get_full(self, box: Box) -> None: ... - def skip(self, box: Box) -> None: ... - def expect_parse(self, name: str) -> Box: ... - def get_parser(self, box: Box) -> Callable[[Box], None]: ... - def parse_box(self, box: Box) -> Box: ... - def find_exif(self) -> tuple[int, bytes]: ... diff --git a/stubs/ExifRead/exifread/jpeg.pyi b/stubs/ExifRead/exifread/jpeg.pyi deleted file mode 100644 index 9b179150410d..000000000000 --- a/stubs/ExifRead/exifread/jpeg.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from logging import Logger - -from ._types import Reader - -logger: Logger - -def find_jpeg_exif(fh: Reader, data: bytes, fake_exif: bool) -> tuple[int, bytes, bool]: ... diff --git a/stubs/ExifRead/exifread/tags/__init__.pyi b/stubs/ExifRead/exifread/tags/__init__.pyi deleted file mode 100644 index ce0670d24c74..000000000000 --- a/stubs/ExifRead/exifread/tags/__init__.pyi +++ /dev/null @@ -1,15 +0,0 @@ -from _typeshed import Incomplete - -from exifread.tags.exif import EXIF_TAGS as EXIF_TAGS -from exifread.tags.makernote import ( - apple as apple, - canon as canon, - casio as casio, - fujifilm as fujifilm, - nikon as nikon, - olympus as olympus, -) - -DEFAULT_STOP_TAG: str -FIELD_TYPES: Incomplete -IGNORE_TAGS: Incomplete diff --git a/stubs/ExifRead/exifread/tags/exif.pyi b/stubs/ExifRead/exifread/tags/exif.pyi deleted file mode 100644 index 569609e93fb3..000000000000 --- a/stubs/ExifRead/exifread/tags/exif.pyi +++ /dev/null @@ -1,7 +0,0 @@ -from exifread._types import TagDict - -INTEROP_TAGS: TagDict -INTEROP_INFO: tuple[str, TagDict] -GPS_TAGS: TagDict -GPS_INFO: tuple[str, TagDict] -EXIF_TAGS: TagDict diff --git a/stubs/ExifRead/exifread/tags/makernote/__init__.pyi b/stubs/ExifRead/exifread/tags/makernote/__init__.pyi deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/stubs/ExifRead/exifread/tags/makernote/apple.pyi b/stubs/ExifRead/exifread/tags/makernote/apple.pyi deleted file mode 100644 index c72072637e49..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/apple.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from exifread._types import TagDict - -TAGS: TagDict diff --git a/stubs/ExifRead/exifread/tags/makernote/canon.pyi b/stubs/ExifRead/exifread/tags/makernote/canon.pyi deleted file mode 100644 index 97d4f93c5309..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/canon.pyi +++ /dev/null @@ -1,26 +0,0 @@ -from collections.abc import Callable -from typing import Any -from typing_extensions import TypeAlias - -from exifread._types import TagDict - -TAGS: TagDict - -CAMERA_SETTINGS: TagDict -FOCAL_LENGTH: TagDict -SHOT_INFO: TagDict -AF_INFO_2: TagDict -FILE_INFO: TagDict - -def add_one(value: int) -> int: ... -def subtract_one(value: int) -> int: ... -def convert_temp(value: int) -> str: ... - -_CameraInfo: TypeAlias = dict[int, tuple[str, str, Callable[[int], Any]]] - -CAMERA_INFO_TAG_NAME: str -CAMERA_INFO_5D: _CameraInfo -CAMERA_INFO_5DMKII: _CameraInfo -CAMERA_INFO_5DMKIII: _CameraInfo -CAMERA_INFO_600D: _CameraInfo -CAMERA_INFO_MODEL_MAP: dict[str, _CameraInfo] diff --git a/stubs/ExifRead/exifread/tags/makernote/casio.pyi b/stubs/ExifRead/exifread/tags/makernote/casio.pyi deleted file mode 100644 index c72072637e49..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/casio.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from exifread._types import TagDict - -TAGS: TagDict diff --git a/stubs/ExifRead/exifread/tags/makernote/fujifilm.pyi b/stubs/ExifRead/exifread/tags/makernote/fujifilm.pyi deleted file mode 100644 index c72072637e49..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/fujifilm.pyi +++ /dev/null @@ -1,3 +0,0 @@ -from exifread._types import TagDict - -TAGS: TagDict diff --git a/stubs/ExifRead/exifread/tags/makernote/nikon.pyi b/stubs/ExifRead/exifread/tags/makernote/nikon.pyi deleted file mode 100644 index ffa7101f5df4..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/nikon.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from exifread._types import TagDict - -def ev_bias(seq: list[int]) -> str: ... - -TAGS_NEW: TagDict -TAGS_OLD: TagDict diff --git a/stubs/ExifRead/exifread/tags/makernote/olympus.pyi b/stubs/ExifRead/exifread/tags/makernote/olympus.pyi deleted file mode 100644 index 0744c773824f..000000000000 --- a/stubs/ExifRead/exifread/tags/makernote/olympus.pyi +++ /dev/null @@ -1,6 +0,0 @@ -from exifread._types import TagDict - -def special_mode(val: bytes) -> str: ... - -TAGS: TagDict -TAG_0x2020: TagDict diff --git a/stubs/ExifRead/exifread/utils.pyi b/stubs/ExifRead/exifread/utils.pyi deleted file mode 100644 index 1dace202cbd2..000000000000 --- a/stubs/ExifRead/exifread/utils.pyi +++ /dev/null @@ -1,22 +0,0 @@ -from collections.abc import Mapping -from fractions import Fraction -from typing import Any, TypeVar, overload -from typing_extensions import Self - -_T = TypeVar("_T") - -@overload -def ord_(dta: str) -> int: ... -@overload -def ord_(dta: _T) -> _T: ... -def make_string(seq: str | list[int]) -> str: ... -def make_string_uc(seq: str | list[int]) -> str: ... -def get_gps_coords(tags: Mapping[str, Any]) -> tuple[float, float]: ... - -class Ratio(Fraction): - def __new__(cls, numerator: int = 0, denominator: int | None = None) -> Self: ... - @property - def num(self) -> int: ... - @property - def den(self) -> int: ... - def decimal(self) -> float: ...