Last active
February 6, 2025 23:17
-
-
Save StefanTodoran/73c1305ca78e33e2dfab912a5d16899c to your computer and use it in GitHub Desktop.
Code for testing block style pprint on various datastructures
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pprint | |
from collections import OrderedDict | |
from collections import defaultdict | |
from collections import Counter | |
from collections import ChainMap | |
from collections import deque | |
from collections import UserDict, UserList | |
from dataclasses import dataclass, field | |
from types import SimpleNamespace, MappingProxyType | |
from typing import Optional | |
# ===== # | |
@dataclass | |
class DummyDataclass: | |
foo: str | |
bar: float | |
baz: bool | |
qux: dict = field(default_factory=dict) | |
quux: list = field(default_factory=list) | |
corge: int = 1 | |
grault: set = field(default_factory=set) | |
garply: tuple = (1, 2, 3, 4) | |
waldo: Optional["DummyDataclass"] = None | |
dummy_dataclass = DummyDataclass( | |
foo="foo", | |
bar=1.2, | |
baz=False, | |
qux={"foo": "bar", "baz": 123}, | |
quux=["foo", "bar", "baz"], | |
corge=7, | |
grault={"foo", "bar", "baz", "baz"}, | |
garply=(1, 2, 3, 4), | |
waldo=None, | |
) | |
# ===== # | |
dummy_dict = { | |
"foo": "bar", | |
"baz": 123, | |
"qux": {"foo": "bar", "baz": 123}, | |
"quux": ["foo", "bar", "baz"], | |
"corge": 7, | |
} | |
# ===== # | |
dummy_ordered_dict = OrderedDict( | |
[ | |
("foo", 1), | |
("bar", 12), | |
("baz", 123), | |
] | |
) | |
# ===== # | |
dummy_list = [ | |
"foo", | |
"bar", | |
"baz", | |
] | |
# ===== # | |
dummy_tuple = ( | |
"foo", | |
"bar", | |
"baz", | |
4, | |
5, | |
6, | |
dummy_list, | |
) | |
# ===== # | |
dummy_set = { | |
"foo", | |
"bar", | |
"baz", | |
(1, 2, 3), | |
} | |
# ===== # | |
dummy_frozenset = frozenset( | |
{ | |
"foo", | |
"bar", | |
"baz", | |
(1, 2, 3), | |
frozenset(dummy_set), | |
} | |
) | |
# ===== # | |
dummy_bytes = b"Hello world! foo bar baz 123 456 789" | |
dummy_byte_array = bytearray(dummy_bytes) | |
# ===== # | |
dummy_mappingproxy = MappingProxyType(dummy_dict) | |
# ===== # | |
dummy_namespace = SimpleNamespace( | |
foo="bar", | |
bar=42, | |
baz=SimpleNamespace( | |
x=321, | |
y="string", | |
d={"foo": True, "bar": "baz"}, | |
), | |
) | |
# ===== # | |
dummy_defaultdict = defaultdict(list) | |
dummy_defaultdict["foo"].append("bar") | |
dummy_defaultdict["foo"].append("baz") | |
dummy_defaultdict["foo"].append("qux") | |
dummy_defaultdict["bar"] = {"foo": "bar", "baz": None} | |
# ===== # | |
dummy_counter = Counter() | |
dummy_counter.update("foo") | |
dummy_counter.update( | |
{ | |
"bar": 5, | |
"baz": 3, | |
"qux": 10, | |
} | |
) | |
# TODO: pprint doesn't support nested Counters within Counters... | |
# dummy_counter["bar"] = dummy_counter | |
# ===== # | |
dummy_chainmap = ChainMap( | |
{"foo": "bar"}, | |
{"baz": "qux"}, | |
{"corge": dummy_dict}, | |
) | |
dummy_chainmap.maps.append({"garply": "waldo"}) | |
# ===== # | |
dummy_deque = deque(maxlen=10) | |
dummy_deque.append("foo") | |
dummy_deque.append(123) | |
dummy_deque.append(dummy_dict) | |
dummy_deque.extend(dummy_list) | |
dummy_deque.appendleft(dummy_set) | |
# ===== # | |
class DummyUserDict(UserDict): | |
"""A custom UserDict with some extra attributes""" | |
def __init__(self, *args, **kwargs): | |
super().__init__(*args, **kwargs) | |
self.access_count = 0 | |
dummy_userdict = DummyUserDict( | |
{ | |
"foo": "bar", | |
"baz": 123, | |
"qux": {"foo": "bar", "baz": 123}, | |
"quux": ["foo", "bar", "baz"], | |
"corge": 7, | |
} | |
) | |
dummy_userdict.access_count = 5 | |
# ===== # | |
class DummyUserList(UserList): | |
"""A custom UserList with some extra attributes""" | |
def __init__(self, *args, **kwargs): | |
super().__init__(*args, **kwargs) | |
self.description = "foo" | |
dummy_userlist = DummyUserList(["first", 2, {"key": "value"}, [4, 5, 6]]) | |
# ===== # | |
dummy_samples = [ | |
dummy_dataclass, | |
dummy_dict, | |
dummy_ordered_dict, | |
dummy_list, | |
dummy_tuple, | |
dummy_set, | |
dummy_frozenset, | |
dummy_bytes, | |
dummy_byte_array, | |
dummy_mappingproxy, | |
dummy_namespace, | |
dummy_defaultdict, | |
dummy_counter, | |
dummy_chainmap, | |
dummy_deque, | |
dummy_userdict, | |
dummy_userlist, | |
] | |
nested_dummy_samples = { | |
"dummy_dataclass": dummy_dataclass, | |
"dummy_dict": dummy_dict, | |
"dummy_ordered_dict": dummy_ordered_dict, | |
"dummy_list": dummy_list, | |
"dummy_tuple": dummy_tuple, | |
"dummy_set": dummy_set, | |
"dummy_frozenset": dummy_frozenset, | |
"dummy_bytes": dummy_bytes, | |
"dummy_byte_array": dummy_byte_array, | |
"dummy_mappingproxy": dummy_mappingproxy, | |
"dummy_namespace": dummy_namespace, | |
"dummy_defaultdict": dummy_defaultdict, | |
"dummy_counter": dummy_counter, | |
"dummy_chainmap": dummy_chainmap, | |
"dummy_deque": dummy_deque, | |
"dummy_userdict": dummy_userdict, | |
"dummy_userlist": dummy_userlist, | |
} | |
# ===== # | |
pprint.pprint( | |
nested_dummy_samples, width=40, indent=4, block_style=True, sort_dicts=False | |
) | |
print("-" * 100) | |
for entry in dummy_samples: | |
pprint.pprint(entry, width=10, indent=4, block_style=True, sort_dicts=False) | |
print("-" * 100) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment