Skip to content

Commit 4e592ad

Browse files
authored
Upgrade PyYAML to version 6 (#6183)
* Fix load_all() argument * Remove Python 2 remnants + Replace Text with str + Replace alias "_Str" with str + Import from collections.abc and re where applicable + Remove Python 2 branches * Fix PyYaml allowlist entries + Add yaml._yaml and move CParser and CEmitter there. + Add missing functions, classes, and arguments. * Use relative imports in some modules. * Add __all__ to yaml.cyaml. * Remove unnecessary noqa markers.
1 parent 12dd8d9 commit 4e592ad

File tree

7 files changed

+118
-94
lines changed

7 files changed

+118
-94
lines changed

stubs/PyYAML/@tests/stubtest_allowlist.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

stubs/PyYAML/METADATA.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
version = "5.4.*"
2-
python2 = true
1+
version = "6.0.*"

stubs/PyYAML/yaml/__init__.pyi

Lines changed: 34 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,19 @@
1-
import sys
2-
from typing import IO, Any, Callable, Iterable, Iterator, Pattern, Sequence, Text, Type, TypeVar, Union, overload
3-
4-
from yaml.constructor import BaseConstructor
5-
from yaml.dumper import * # noqa: F403
6-
from yaml.error import * # noqa: F403
7-
from yaml.events import * # noqa: F403
8-
from yaml.loader import * # noqa: F403
9-
from yaml.nodes import * # noqa: F403
10-
from yaml.representer import BaseRepresenter
11-
from yaml.resolver import BaseResolver
12-
from yaml.tokens import * # noqa: F403
1+
from collections.abc import Callable, Iterable, Iterator, Sequence
2+
from typing import IO, Any, Pattern, Type, TypeVar, overload
133

144
from . import resolver as resolver # Help mypy a bit; this is implied by loader and dumper
5+
from .constructor import BaseConstructor
156
from .cyaml import *
7+
from .dumper import *
8+
from .error import *
9+
from .events import *
10+
from .loader import *
11+
from .nodes import *
12+
from .representer import BaseRepresenter
13+
from .resolver import BaseResolver
14+
from .tokens import *
1615

17-
if sys.version_info >= (3, 0):
18-
_Str = str
19-
else:
20-
_Str = Union[Text, str]
21-
# FIXME: the functions really return py2:unicode/py3:str if encoding is None, otherwise py2:str/py3:bytes. Waiting for python/mypy#5621
16+
# FIXME: the functions really return str if encoding is None, otherwise bytes. Waiting for python/mypy#5621
2217
_Yaml = Any
2318

2419
__with_libyaml__: Any
@@ -28,18 +23,19 @@ _T = TypeVar("_T")
2823
_Constructor = TypeVar("_Constructor", bound=BaseConstructor)
2924
_Representer = TypeVar("_Representer", bound=BaseRepresenter)
3025

26+
def warnings(settings=...): ...
3127
def scan(stream, Loader=...): ...
3228
def parse(stream, Loader=...): ...
3329
def compose(stream, Loader=...): ...
3430
def compose_all(stream, Loader=...): ...
35-
def load(stream: bytes | IO[bytes] | Text | IO[Text], Loader=...) -> Any: ...
36-
def load_all(stream: bytes | IO[bytes] | Text | IO[Text], Loader=...) -> Iterator[Any]: ...
37-
def full_load(stream: bytes | IO[bytes] | Text | IO[Text]) -> Any: ...
38-
def full_load_all(stream: bytes | IO[bytes] | Text | IO[Text]) -> Iterator[Any]: ...
39-
def safe_load(stream: bytes | IO[bytes] | Text | IO[Text]) -> Any: ...
40-
def safe_load_all(stream: bytes | IO[bytes] | Text | IO[Text]) -> Iterator[Any]: ...
41-
def unsafe_load(stream: bytes | IO[bytes] | Text | IO[Text]) -> Any: ...
42-
def unsafe_load_all(stream: bytes | IO[bytes] | Text | IO[Text]) -> Iterator[Any]: ...
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]: ...
4339
def emit(events, stream=..., Dumper=..., canonical=..., indent=..., width=..., allow_unicode=..., line_break=...): ...
4440
@overload
4541
def serialize_all(
@@ -67,7 +63,7 @@ def serialize_all(
6763
width=...,
6864
allow_unicode=...,
6965
line_break=...,
70-
encoding: _Str | None = ...,
66+
encoding: str | None = ...,
7167
explicit_start=...,
7268
explicit_end=...,
7369
version=...,
@@ -101,7 +97,7 @@ def serialize(
10197
width=...,
10298
allow_unicode=...,
10399
line_break=...,
104-
encoding: _Str | None = ...,
100+
encoding: str | None = ...,
105101
explicit_start=...,
106102
explicit_end=...,
107103
version=...,
@@ -138,7 +134,7 @@ def dump_all(
138134
width=...,
139135
allow_unicode=...,
140136
line_break=...,
141-
encoding: _Str | None = ...,
137+
encoding: str | None = ...,
142138
explicit_start=...,
143139
explicit_end=...,
144140
version=...,
@@ -178,7 +174,7 @@ def dump(
178174
width=...,
179175
allow_unicode=...,
180176
line_break=...,
181-
encoding: _Str | None = ...,
177+
encoding: str | None = ...,
182178
explicit_start=...,
183179
explicit_end=...,
184180
version=...,
@@ -216,7 +212,7 @@ def safe_dump_all(
216212
width=...,
217213
allow_unicode=...,
218214
line_break=...,
219-
encoding: _Str | None = ...,
215+
encoding: str | None = ...,
220216
explicit_start=...,
221217
explicit_end=...,
222218
version=...,
@@ -254,40 +250,40 @@ def safe_dump(
254250
width=...,
255251
allow_unicode=...,
256252
line_break=...,
257-
encoding: _Str | None = ...,
253+
encoding: str | None = ...,
258254
explicit_start=...,
259255
explicit_end=...,
260256
version=...,
261257
tags=...,
262258
sort_keys: bool = ...,
263259
) -> _Yaml: ...
264260
def add_implicit_resolver(
265-
tag: _Str,
261+
tag: str,
266262
regexp: Pattern[str],
267263
first: Iterable[Any] | None = ...,
268264
Loader: Type[BaseResolver] | None = ...,
269265
Dumper: Type[BaseResolver] = ...,
270266
) -> None: ...
271267
def add_path_resolver(
272-
tag: _Str,
268+
tag: str,
273269
path: Iterable[Any],
274270
kind: Type[Any] | None = ...,
275271
Loader: Type[BaseResolver] | None = ...,
276272
Dumper: Type[BaseResolver] = ...,
277273
) -> None: ...
278274
@overload
279275
def add_constructor(
280-
tag: _Str, constructor: Callable[[Loader | FullLoader | UnsafeLoader, Node], Any], Loader: None = ...
276+
tag: str, constructor: Callable[[Loader | FullLoader | UnsafeLoader, Node], Any], Loader: None = ...
281277
) -> None: ...
282278
@overload
283-
def add_constructor(tag: _Str, constructor: Callable[[_Constructor, Node], Any], Loader: Type[_Constructor]) -> None: ...
279+
def add_constructor(tag: str, constructor: Callable[[_Constructor, Node], Any], Loader: Type[_Constructor]) -> None: ...
284280
@overload
285281
def add_multi_constructor(
286-
tag_prefix: _Str, multi_constructor: Callable[[Loader | FullLoader | UnsafeLoader, _Str, Node], Any], Loader: None = ...
282+
tag_prefix: str, multi_constructor: Callable[[Loader | FullLoader | UnsafeLoader, str, Node], Any], Loader: None = ...
287283
) -> None: ...
288284
@overload
289285
def add_multi_constructor(
290-
tag_prefix: _Str, multi_constructor: Callable[[_Constructor, _Str, Node], Any], Loader: Type[_Constructor]
286+
tag_prefix: str, multi_constructor: Callable[[_Constructor, str, Node], Any], Loader: Type[_Constructor]
291287
) -> None: ...
292288
@overload
293289
def add_representer(data_type: Type[_T], representer: Callable[[Dumper, _T], Node]) -> None: ...
@@ -301,7 +297,7 @@ def add_multi_representer(
301297
) -> None: ...
302298

303299
class YAMLObjectMetaclass(type):
304-
def __init__(self, name, bases, kwds) -> None: ...
300+
def __init__(cls, name, bases, kwds) -> None: ...
305301

306302
class YAMLObject(metaclass=YAMLObjectMetaclass):
307303
yaml_loader: Any

stubs/PyYAML/yaml/_yaml.pyi

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
from _typeshed import SupportsRead
2+
from collections.abc import Mapping, Sequence
3+
from typing import IO, Any
4+
5+
from .events import Event
6+
from .nodes import Node
7+
from .tokens import Token
8+
9+
def get_version_string() -> str: ...
10+
def get_version() -> tuple[int, int, int]: ...
11+
12+
class Mark:
13+
name: Any
14+
index: int
15+
line: int
16+
column: int
17+
buffer: Any
18+
pointer: Any
19+
def __init__(self, name, index: int, line: int, column: int, buffer, pointer) -> None: ...
20+
def get_snippet(self): ...
21+
22+
class CParser:
23+
def __init__(self, stream: str | bytes | SupportsRead[str | bytes]) -> None: ...
24+
def dispose(self) -> None: ...
25+
def get_token(self) -> Token | None: ...
26+
def peek_token(self) -> Token | None: ...
27+
def check_token(self, *choices) -> bool: ...
28+
def get_event(self) -> Event | None: ...
29+
def peek_event(self) -> Event | None: ...
30+
def check_event(self, *choices) -> bool: ...
31+
def check_node(self) -> bool: ...
32+
def get_node(self) -> Node | None: ...
33+
def get_single_node(self) -> Node | None: ...
34+
def raw_parse(self) -> int: ...
35+
def raw_scan(self) -> int: ...
36+
37+
class CEmitter:
38+
def __init__(
39+
self,
40+
stream: IO[Any],
41+
canonical: Any | None = ...,
42+
indent: int | None = ...,
43+
width: int | None = ...,
44+
allow_unicode: Any | None = ...,
45+
line_break: str | None = ...,
46+
encoding: str | None = ...,
47+
explicit_start: Any | None = ...,
48+
explicit_end: Any | None = ...,
49+
version: Sequence[int] | None = ...,
50+
tags: Mapping[str, str] | None = ...,
51+
) -> None: ...
52+
def dispose(self) -> None: ...
53+
def emit(self, event_object) -> None: ...
54+
def open(self) -> None: ...
55+
def close(self) -> None: ...
56+
def serialize(self, node) -> None: ...

stubs/PyYAML/yaml/constructor.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
import sys
2-
from typing import Any, Text, Union
1+
from typing import Any, Pattern, Union
32

43
from yaml.error import MarkedYAMLError
54
from yaml.nodes import ScalarNode
65

7-
_Scalar = Union[Text, int, float, bool, None]
6+
_Scalar = Union[str, int, float, bool, None]
87

98
class ConstructorError(MarkedYAMLError): ...
109

@@ -17,6 +16,7 @@ class BaseConstructor:
1716
deep_construct: Any
1817
def __init__(self) -> None: ...
1918
def check_data(self): ...
19+
def check_state_key(self, key: str) -> None: ...
2020
def get_data(self): ...
2121
def get_single_data(self) -> Any: ...
2222
def construct_document(self, node): ...
@@ -54,6 +54,8 @@ class SafeConstructor(BaseConstructor):
5454
def construct_undefined(self, node): ...
5555

5656
class FullConstructor(SafeConstructor):
57+
def get_state_keys_blacklist(self) -> list[str]: ...
58+
def get_state_keys_blacklist_regexp(self) -> Pattern[str]: ...
5759
def construct_python_str(self, node): ...
5860
def construct_python_unicode(self, node): ...
5961
def construct_python_bytes(self, node): ...
@@ -65,7 +67,7 @@ class FullConstructor(SafeConstructor):
6567
def construct_python_name(self, suffix, node): ...
6668
def construct_python_module(self, suffix, node): ...
6769
def make_python_instance(self, suffix, node, args=..., kwds=..., newobj=..., unsafe=...): ...
68-
def set_python_instance_state(self, instance, state): ...
70+
def set_python_instance_state(self, instance, state, unsafe: bool = ...) -> None: ...
6971
def construct_python_object(self, suffix, node): ...
7072
def construct_python_object_apply(self, suffix, node, newobj=...): ...
7173
def construct_python_object_new(self, suffix, node): ...
@@ -86,8 +88,6 @@ class Constructor(SafeConstructor):
8688
def find_python_name(self, name, mark): ...
8789
def construct_python_name(self, suffix, node): ...
8890
def construct_python_module(self, suffix, node): ...
89-
if sys.version_info < (3, 0):
90-
class classobj: ...
9191
def make_python_instance(self, suffix, node, args=..., kwds=..., newobj=...): ...
9292
def set_python_instance_state(self, instance, state): ...
9393
def construct_python_object(self, suffix, node): ...

stubs/PyYAML/yaml/cyaml.pyi

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,15 @@
11
from _typeshed import SupportsRead
2-
from typing import IO, Any, Mapping, Sequence, Text, Union
2+
from collections.abc import Mapping, Sequence
3+
from typing import IO, Any, Union
34

4-
from yaml.constructor import BaseConstructor, FullConstructor, SafeConstructor, UnsafeConstructor
5-
from yaml.events import Event
6-
from yaml.nodes import Node
7-
from yaml.representer import BaseRepresenter, SafeRepresenter
8-
from yaml.resolver import BaseResolver, Resolver
9-
from yaml.tokens import Token
5+
from ._yaml import CEmitter, CParser
6+
from .constructor import BaseConstructor, FullConstructor, SafeConstructor, UnsafeConstructor
7+
from .representer import BaseRepresenter, SafeRepresenter
8+
from .resolver import BaseResolver, Resolver
109

11-
_Readable = SupportsRead[Union[Text, bytes]]
10+
__all__ = ["CBaseLoader", "CSafeLoader", "CFullLoader", "CUnsafeLoader", "CLoader", "CBaseDumper", "CSafeDumper", "CDumper"]
1211

13-
class CParser:
14-
def __init__(self, stream: str | bytes | _Readable) -> None: ...
15-
def dispose(self) -> None: ...
16-
def get_token(self) -> Token | None: ...
17-
def peek_token(self) -> Token | None: ...
18-
def check_token(self, *choices) -> bool: ...
19-
def get_event(self) -> Event | None: ...
20-
def peek_event(self) -> Event | None: ...
21-
def check_event(self, *choices) -> bool: ...
22-
def check_node(self) -> bool: ...
23-
def get_node(self) -> Node | None: ...
24-
def get_single_node(self) -> Node | None: ...
12+
_Readable = SupportsRead[Union[str, bytes]]
2513

2614
class CBaseLoader(CParser, BaseConstructor, BaseResolver):
2715
def __init__(self, stream: str | bytes | _Readable) -> None: ...
@@ -38,40 +26,42 @@ class CFullLoader(CParser, FullConstructor, Resolver):
3826
class CUnsafeLoader(CParser, UnsafeConstructor, Resolver):
3927
def __init__(self, stream: str | bytes | _Readable) -> None: ...
4028

41-
class CEmitter(object):
29+
class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver):
4230
def __init__(
4331
self,
4432
stream: IO[Any],
33+
default_style: str | None = ...,
34+
default_flow_style: bool | None = ...,
4535
canonical: Any | None = ...,
4636
indent: int | None = ...,
4737
width: int | None = ...,
4838
allow_unicode: Any | None = ...,
4939
line_break: str | None = ...,
50-
encoding: Text | None = ...,
40+
encoding: str | None = ...,
5141
explicit_start: Any | None = ...,
5242
explicit_end: Any | None = ...,
5343
version: Sequence[int] | None = ...,
54-
tags: Mapping[Text, Text] | None = ...,
44+
tags: Mapping[str, str] | None = ...,
45+
sort_keys: bool = ...,
5546
) -> None: ...
5647

57-
class CBaseDumper(CEmitter, BaseRepresenter, BaseResolver):
48+
class CDumper(CEmitter, SafeRepresenter, Resolver):
5849
def __init__(
5950
self,
6051
stream: IO[Any],
6152
default_style: str | None = ...,
62-
default_flow_style: bool | None = ...,
53+
default_flow_style: bool = ...,
6354
canonical: Any | None = ...,
6455
indent: int | None = ...,
6556
width: int | None = ...,
6657
allow_unicode: Any | None = ...,
6758
line_break: str | None = ...,
68-
encoding: Text | None = ...,
59+
encoding: str | None = ...,
6960
explicit_start: Any | None = ...,
7061
explicit_end: Any | None = ...,
7162
version: Sequence[int] | None = ...,
72-
tags: Mapping[Text, Text] | None = ...,
63+
tags: Mapping[str, str] | None = ...,
64+
sort_keys: bool = ...,
7365
) -> None: ...
7466

75-
class CDumper(CEmitter, SafeRepresenter, Resolver): ...
76-
7767
CSafeDumper = CDumper

0 commit comments

Comments
 (0)