A library that can print Python objects in human readable format
Project description
objprint
A library that can print Python objects in human readable format
Install
pip install objprint
Usage
objprint
Use objprint()
to print objects.
from objprint import objprint
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
class Player:
def __init__(self):
self.name = "Alice"
self.age = 18
self.items = ["axe", "armor"]
self.coins = {"gold": 1, "silver": 33, "bronze": 57}
self.position = Position(3, 5)
objprint(Player())
<Player
.age = 18,
.coins = {'bronze': 57, 'gold': 1, 'silver': 33},
.items = ['axe', 'armor'],
.name = 'Alice',
.position = <Position
.x = 3,
.y = 5
>
>
add_objprint
If you want to use print()
to print your object, you can also use the class decorator
add_objprint
to add __str__
method for your class.
from objprint import add_objprint
class Position:
def __init__(self, x, y):
self.x = x
self.y = y
@add_objprint
class Player:
def __init__(self):
self.name = "Alice"
self.age = 18
self.items = ["axe", "armor"]
self.coins = {"gold": 1, "silver": 33, "bronze": 57}
self.position = Position(3, 5)
# This will print the same thing as above
print(Player())
objstr
If you want the str
representation of the object, instead of printing it on the screen,
you can use objstr
function
from objprint import objstr
s = objstr(my_object)
include/exclude attributes
You can include/exclude attributes using regular expression so objprint
will only print
out the attributes you are interested in.
objprint(Player(), include=["name"])
<Player
.name = 'Alice'
>
objprint(Player(), exclude=[".*s"])
<Player
.name = 'Alice',
.age = 18,
.position = <Position
.x = 3,
.y = 5
>
>
If you specify both include
and exclude
, it will do a inclusive check first, then filter out the attributes
that match exclusive check.
include
and exclude
arguments work on objprint
, objstr
and @add_objprint
.
config
objprint
formats the output based on some configs
depth
determines how deepobjprint
goes into nested data structuresindent
determines the indentationwidth
determines the maximum width a data structure will be presented as a single lineelements
determines the maximum number of elements that will be displayed
You can set the configs globally using config
function
from objprint import config
config(indent=4)
Or you can do a one time config by passing the arguments into objprint
function
from objprint import objprint
objprint(var, indent=4)
install
Maybe you don't want to import objprint
in every single file that you want to use. You can
use install
to make it globally accessible
from objprint import install
# Now you can use objprint() in any file
install()
# You can specify a name for objprint()
install("op")
op(my_object)
Bugs/Requests
Please send bug reports and feature requests through github issue tracker.
License
Copyright Tian Gao, 2020.
Distributed under the terms of the Apache 2.0 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.