Skip to content

Commit cb3c1bb

Browse files
authored
Replace IO with protocols (#7092)
1 parent 064317a commit cb3c1bb

File tree

5 files changed

+49
-30
lines changed

5 files changed

+49
-30
lines changed

stubs/PyYAML/yaml/__init__.pyi

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
from collections.abc import Callable, Iterable, Iterator, Mapping, Sequence
2-
from typing import IO, Any, Pattern, TypeVar, overload
2+
from typing import Any, Pattern, TypeVar, overload
33

44
from . import resolver as resolver # Help mypy a bit; this is implied by loader and dumper
55
from .constructor import BaseConstructor
66
from .cyaml import *
77
from .dumper import *
8+
from .emitter import _WriteStream
89
from .error import *
910
from .events import *
1011
from .loader import *
1112
from .nodes import *
13+
from .reader import _ReadStream
1214
from .representer import BaseRepresenter
1315
from .resolver import BaseResolver
1416
from .tokens import *
@@ -28,17 +30,17 @@ def scan(stream, Loader=...): ...
2830
def parse(stream, Loader=...): ...
2931
def compose(stream, Loader=...): ...
3032
def compose_all(stream, Loader=...): ...
31-
def load(stream: bytes | IO[bytes] | str | IO[str], Loader) -> Any: ...
32-
def load_all(stream: bytes | IO[bytes] | str | IO[str], Loader) -> Iterator[Any]: ...
33-
def full_load(stream: bytes | IO[bytes] | str | IO[str]) -> Any: ...
34-
def full_load_all(stream: bytes | IO[bytes] | str | IO[str]) -> Iterator[Any]: ...
35-
def safe_load(stream: bytes | IO[bytes] | str | IO[str]) -> Any: ...
36-
def safe_load_all(stream: bytes | IO[bytes] | str | IO[str]) -> Iterator[Any]: ...
37-
def unsafe_load(stream: bytes | IO[bytes] | str | IO[str]) -> Any: ...
38-
def unsafe_load_all(stream: bytes | IO[bytes] | str | IO[str]) -> Iterator[Any]: ...
33+
def load(stream: _ReadStream, Loader) -> Any: ...
34+
def load_all(stream: _ReadStream, Loader) -> Iterator[Any]: ...
35+
def full_load(stream: _ReadStream) -> Any: ...
36+
def full_load_all(stream: _ReadStream) -> Iterator[Any]: ...
37+
def safe_load(stream: _ReadStream) -> Any: ...
38+
def safe_load_all(stream: _ReadStream) -> Iterator[Any]: ...
39+
def unsafe_load(stream: _ReadStream) -> Any: ...
40+
def unsafe_load_all(stream: _ReadStream) -> Iterator[Any]: ...
3941
def emit(
4042
events,
41-
stream=...,
43+
stream: _WriteStream[Any] | None = ...,
4244
Dumper=...,
4345
canonical: bool | None = ...,
4446
indent: int | None = ...,
@@ -49,7 +51,7 @@ def emit(
4951
@overload
5052
def serialize_all(
5153
nodes,
52-
stream: IO[str],
54+
stream: _WriteStream[Any],
5355
Dumper=...,
5456
canonical: bool | None = ...,
5557
indent: int | None = ...,
@@ -81,7 +83,7 @@ def serialize_all(
8183
@overload
8284
def serialize(
8385
node,
84-
stream: IO[str],
86+
stream: _WriteStream[Any],
8587
Dumper=...,
8688
*,
8789
canonical: bool | None = ...,
@@ -115,7 +117,7 @@ def serialize(
115117
@overload
116118
def dump_all(
117119
documents: Sequence[Any],
118-
stream: IO[str],
120+
stream: _WriteStream[Any],
119121
Dumper=...,
120122
default_style: str | None = ...,
121123
default_flow_style: bool | None = ...,
@@ -153,7 +155,7 @@ def dump_all(
153155
@overload
154156
def dump(
155157
data: Any,
156-
stream: IO[str],
158+
stream: _WriteStream[Any],
157159
Dumper=...,
158160
*,
159161
default_style: str | None = ...,
@@ -193,7 +195,7 @@ def dump(
193195
@overload
194196
def safe_dump_all(
195197
documents: Sequence[Any],
196-
stream: IO[str],
198+
stream: _WriteStream[Any],
197199
*,
198200
default_style: str | None = ...,
199201
default_flow_style: bool | None = ...,
@@ -231,7 +233,7 @@ def safe_dump_all(
231233
@overload
232234
def safe_dump(
233235
data: Any,
234-
stream: IO[str],
236+
stream: _WriteStream[Any],
235237
*,
236238
default_style: str | None = ...,
237239
default_flow_style: bool | None = ...,

stubs/PyYAML/yaml/dumper.pyi

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
from _typeshed import SupportsWrite
21
from collections.abc import Mapping
2+
from typing import Any
33

44
from yaml.emitter import Emitter
55
from yaml.representer import BaseRepresenter, Representer, SafeRepresenter
66
from yaml.resolver import BaseResolver, Resolver
77
from yaml.serializer import Serializer
88

9+
from .emitter import _WriteStream
10+
911
class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver):
1012
def __init__(
1113
self,
12-
stream: SupportsWrite[bytes | str],
14+
stream: _WriteStream[Any],
1315
default_style: str | None = ...,
1416
default_flow_style: bool | None = ...,
1517
canonical: bool | None = ...,
@@ -28,7 +30,7 @@ class BaseDumper(Emitter, Serializer, BaseRepresenter, BaseResolver):
2830
class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver):
2931
def __init__(
3032
self,
31-
stream: SupportsWrite[bytes | str],
33+
stream: _WriteStream[Any],
3234
default_style: str | None = ...,
3335
default_flow_style: bool | None = ...,
3436
canonical: bool | None = ...,
@@ -47,7 +49,7 @@ class SafeDumper(Emitter, Serializer, SafeRepresenter, Resolver):
4749
class Dumper(Emitter, Serializer, Representer, Resolver):
4850
def __init__(
4951
self,
50-
stream: SupportsWrite[bytes | str],
52+
stream: _WriteStream[Any],
5153
default_style: str | None = ...,
5254
default_flow_style: bool | None = ...,
5355
canonical: bool | None = ...,

stubs/PyYAML/yaml/emitter.pyi

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
1-
from typing import Any
1+
from typing import Any, Protocol, TypeVar
22

33
from yaml.error import YAMLError
44

5+
_T_contra = TypeVar("_T_contra", str, bytes, contravariant=True)
6+
7+
class _WriteStream(Protocol[_T_contra]):
8+
def write(self, __data: _T_contra) -> object: ...
9+
# Optional fields:
10+
# encoding: str
11+
# def flush(self) -> object: ...
12+
513
class EmitterError(YAMLError): ...
614

715
class ScalarAnalysis:
@@ -19,7 +27,7 @@ class ScalarAnalysis:
1927

2028
class Emitter:
2129
DEFAULT_TAG_PREFIXES: Any
22-
stream: Any
30+
stream: _WriteStream[Any]
2331
encoding: Any
2432
states: Any
2533
state: Any
@@ -47,7 +55,9 @@ class Emitter:
4755
prepared_tag: Any
4856
analysis: Any
4957
style: Any
50-
def __init__(self, stream, canonical=..., indent=..., width=..., allow_unicode=..., line_break=...) -> None: ...
58+
def __init__(
59+
self, stream: _WriteStream[Any], canonical=..., indent=..., width=..., allow_unicode=..., line_break=...
60+
) -> None: ...
5161
def dispose(self): ...
5262
def emit(self, event): ...
5363
def need_more_events(self): ...

stubs/PyYAML/yaml/loader.pyi

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@ from yaml.reader import Reader
55
from yaml.resolver import BaseResolver, Resolver
66
from yaml.scanner import Scanner
77

8+
from .reader import _ReadStream
9+
810
class BaseLoader(Reader, Scanner, Parser, Composer, BaseConstructor, BaseResolver):
9-
def __init__(self, stream) -> None: ...
11+
def __init__(self, stream: _ReadStream) -> None: ...
1012

1113
class FullLoader(Reader, Scanner, Parser, Composer, FullConstructor, Resolver):
12-
def __init__(self, stream) -> None: ...
14+
def __init__(self, stream: _ReadStream) -> None: ...
1315

1416
class SafeLoader(Reader, Scanner, Parser, Composer, SafeConstructor, Resolver):
15-
def __init__(self, stream) -> None: ...
17+
def __init__(self, stream: _ReadStream) -> None: ...
1618

1719
class Loader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
18-
def __init__(self, stream) -> None: ...
20+
def __init__(self, stream: _ReadStream) -> None: ...
1921

2022
class UnsafeLoader(Reader, Scanner, Parser, Composer, Constructor, Resolver):
21-
def __init__(self, stream) -> None: ...
23+
def __init__(self, stream: _ReadStream) -> None: ...

stubs/PyYAML/yaml/reader.pyi

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from _typeshed import SupportsRead
12
from typing import Any
23

34
from yaml.error import YAMLError
45

6+
_ReadStream = str | bytes | SupportsRead[str] | SupportsRead[bytes]
7+
58
class ReaderError(YAMLError):
69
name: Any
710
character: Any
@@ -12,7 +15,7 @@ class ReaderError(YAMLError):
1215

1316
class Reader:
1417
name: Any
15-
stream: Any
18+
stream: SupportsRead[str] | SupportsRead[bytes] | None
1619
stream_pointer: Any
1720
eof: Any
1821
buffer: Any
@@ -23,7 +26,7 @@ class Reader:
2326
index: Any
2427
line: Any
2528
column: Any
26-
def __init__(self, stream) -> None: ...
29+
def __init__(self, stream: _ReadStream) -> None: ...
2730
def peek(self, index=...): ...
2831
def prefix(self, length=...): ...
2932
def forward(self, length=...): ...

0 commit comments

Comments
 (0)