pull/13993/merge
garret1317 2 days ago committed by GitHub
commit 20faff009b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,4 +1,5 @@
import http.cookies
import dataclasses
import re
import xml.etree.ElementTree
@ -439,6 +440,17 @@ class TestTraversal:
assert traverse_obj(data, [..., filter]) == [True, 1, 1.1, 'str', {0: 0}, [1]], \
'`filter` should filter falsy values'
def test_traversal_dataclass(self):
@dataclasses.dataclass
class _TestDataclass:
val: str
dc = _TestDataclass(val='yt-dlp')
assert traverse_obj(dc, 'val') == 'yt-dlp', \
'Dataclasses should be traversable'
assert traverse_obj({'dataclass': dc}, ('dataclass', 'val')) == 'yt-dlp', \
'Dataclasses inside other objects should be traversable'
class TestTraversalHelpers:
def test_traversal_require(self):

@ -3,6 +3,7 @@ from __future__ import annotations
import collections
import collections.abc
import contextlib
import dataclasses
import functools
import http.cookies
import inspect
@ -116,6 +117,9 @@ def traverse_obj(
branching = False
result = None
if dataclasses.is_dataclass(obj):
obj = dataclasses.asdict(obj)
if obj is None and traverse_string:
if key is ... or callable(key) or isinstance(key, slice):
branching = True

Loading…
Cancel
Save