Skip to content

Instantly share code, notes, and snippets.

@StefanTodoran
Last active February 6, 2025 23:17
Show Gist options
  • Save StefanTodoran/73c1305ca78e33e2dfab912a5d16899c to your computer and use it in GitHub Desktop.
Save StefanTodoran/73c1305ca78e33e2dfab912a5d16899c to your computer and use it in GitHub Desktop.
Code for testing block style pprint on various datastructures
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