From 926aa28c5207da4d76ba458e0c45636f5dfbeb1b Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 15 Jun 2026 00:14:41 +0000 Subject: [PATCH] Import collections.abc ABCs from collections.abc instead of typing Callable, Iterable, Iterator, Mapping, and Sequence have been deprecated as typing aliases since Python 3.9 (PEP 585). Move these imports to collections.abc across the SDK. All edits are import-only and behavior- preserving; PEP 585 makes the collections.abc forms subscriptable at runtime on Python 3.9+, matching the package's requires-python >=3.9. --- yutori/_async/chat.py | 3 ++- yutori/_sync/chat.py | 3 ++- yutori/auth/flow.py | 3 ++- yutori/cli/commands/__init__.py | 3 ++- yutori/cli/commands/install_flow.py | 3 ++- yutori/navigator/coordinates.py | 2 +- yutori/navigator/loop.py | 3 ++- yutori/navigator/payload.py | 3 ++- 8 files changed, 15 insertions(+), 8 deletions(-) diff --git a/yutori/_async/chat.py b/yutori/_async/chat.py index bcc4463..82bdb46 100644 --- a/yutori/_async/chat.py +++ b/yutori/_async/chat.py @@ -2,7 +2,8 @@ from __future__ import annotations -from typing import Any, Iterable +from collections.abc import Iterable +from typing import Any from openai import AsyncOpenAI from openai.types.chat import ChatCompletion, ChatCompletionMessageParam diff --git a/yutori/_sync/chat.py b/yutori/_sync/chat.py index 648121a..316a5c6 100644 --- a/yutori/_sync/chat.py +++ b/yutori/_sync/chat.py @@ -2,7 +2,8 @@ from __future__ import annotations -from typing import Any, Iterable +from collections.abc import Iterable +from typing import Any from openai import OpenAI from openai.types.chat import ChatCompletion, ChatCompletionMessageParam diff --git a/yutori/auth/flow.py b/yutori/auth/flow.py index c9c0ec0..9ea9ca8 100644 --- a/yutori/auth/flow.py +++ b/yutori/auth/flow.py @@ -17,8 +17,9 @@ import sys import threading import webbrowser +from collections.abc import Callable from datetime import datetime, timezone -from typing import Any, Callable +from typing import Any from urllib.parse import parse_qs, urlencode, urlparse import httpx diff --git a/yutori/cli/commands/__init__.py b/yutori/cli/commands/__init__.py index e212e10..980f763 100644 --- a/yutori/cli/commands/__init__.py +++ b/yutori/cli/commands/__init__.py @@ -3,7 +3,8 @@ from __future__ import annotations import contextlib -from typing import Any, Iterator +from collections.abc import Iterator +from typing import Any import httpx import typer diff --git a/yutori/cli/commands/install_flow.py b/yutori/cli/commands/install_flow.py index 7542f84..00d58f6 100644 --- a/yutori/cli/commands/install_flow.py +++ b/yutori/cli/commands/install_flow.py @@ -24,10 +24,11 @@ import subprocess import sys import time +from collections.abc import Mapping, Sequence from dataclasses import dataclass from importlib.metadata import PackageNotFoundError, version from pathlib import Path -from typing import Literal, Mapping, Sequence +from typing import Literal import typer from rich import box diff --git a/yutori/navigator/coordinates.py b/yutori/navigator/coordinates.py index 7feabed..eb96110 100644 --- a/yutori/navigator/coordinates.py +++ b/yutori/navigator/coordinates.py @@ -3,7 +3,7 @@ from __future__ import annotations import math -from typing import Sequence +from collections.abc import Sequence NAVIGATOR_COORDINATE_SCALE = 1000 diff --git a/yutori/navigator/loop.py b/yutori/navigator/loop.py index b8c3161..ea38e5d 100644 --- a/yutori/navigator/loop.py +++ b/yutori/navigator/loop.py @@ -3,7 +3,8 @@ from __future__ import annotations import copy -from typing import Any, Iterable, Protocol +from collections.abc import Iterable +from typing import Any, Protocol from openai.types.chat import ChatCompletion, ChatCompletionMessageParam diff --git a/yutori/navigator/payload.py b/yutori/navigator/payload.py index 1d49868..40b55eb 100644 --- a/yutori/navigator/payload.py +++ b/yutori/navigator/payload.py @@ -11,8 +11,9 @@ from __future__ import annotations import json +from collections.abc import Callable from copy import deepcopy -from typing import Any, Callable +from typing import Any DEFAULT_MAX_REQUEST_BYTES = 9_500_000 DEFAULT_KEEP_RECENT_SCREENSHOTS = 6