A shortcut to generate __repr__ methods for python classes
Project description
A magic shortcut to generate __repr__ methods for your classes.
Free software: BSD license
Installation
pip install repr
This package contains a single module magic_repr called so to not conflict with standart python’s repr.
Reasoning
What do you think each time, writing such code?
def __repr__(self):
return """
Issue(changelog={self.changelog},
type={self.type},
comment={self.comment},
created_at={self.created_at},
resolved_at={self.resolved_at})""".format(self=self).strip().encode('utf-8')
Isn’t this much better and readable?
__repr__ = make_repr('changelog', 'type', 'comment', 'created_at', 'resolved_at')
And this produces much nicer output:
<Issue changelog=<Changelog namespace=u'python'
name=u'geocoder'
source=u'https://github.com/DenisCarriere/geocoder'>
type=u'wrong-version-content'
comment=u'AllMyChanges should take release notes from the web site.'
created_at=datetime.datetime(2016, 6, 17, 6, 44, 52, 16760, tzinfo=<UTC>)
resolved_at=None>
Another advantage of the magic_repr
Is it’s recursiveness. If you use magic_repr for your objects and they include each other, then representation of the parent object will include child objects properly nested:
<Foo bars={1: <Bar first=1
second=2
third=3>,
2: <Bar first=1
second=2
third=3>,
u'три': <Bar first=1
second=2
third=3>}>
And all this for free! Just do __repr__ = make_repr().
Usage
For simple cases it is enough to call make_repr without arguments. It will figure out which attributes object has and will output them sorted alphabetically.
You can also specify which attributes you want to include in “representaion”:
from magic_repr import make_repr
__repr__ = make_repr('foo', 'bar')
And to specify a function to create a value for an attribute, using keywords:
from magic_repr import make_repr
class Some(object):
def is_active(self):
return True
Some.__repr__ = make_repr(active=Some.is_active)
Pay attention, that in this case __repr__ was created after the class definition. This is because inside of the class it can’t reference itself.
Documentation
Development
To run the all tests run:
tox
Note, to combine the coverage data from all the tox environments run:
Windows |
set PYTEST_ADDOPTS=--cov-append tox |
---|---|
Other |
PYTEST_ADDOPTS=--cov-append tox |
Changelog
0.3.1 (2016-06-22)
Fixed issue #1 prevented generated __repr__ methods to work in mutithreaded programs.
0.3.0 (2016-06-20)
Now make_repr can be used for recursive datastructures.
0.2.1 (2016-06-19)
Documentation improved.
0.2.0 (2016-06-19)
Better handling of nested datastructure.
Callables as source of the attribute’s value.
Some documentation.
0.1.0 (2016-06-09)
First release on PyPI.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file repr-0.3.1.tar.gz
.
File metadata
- Download URL: repr-0.3.1.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0684f8cbf452d0b4f4f7eaba2eeb3ea3478bbf67153df3afbc796bd9f3914a87 |
|
MD5 | 4c6c26cdd595d01502313b341a82deb9 |
|
BLAKE2b-256 | cfd9891955bf9e29cd6ab1000b9c66cee157070ac74e172a738d3388719fb49a |
File details
Details for the file repr-0.3.1-py2.py3-none-any.whl
.
File metadata
- Download URL: repr-0.3.1-py2.py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29f4c3a73f3a6d98551fe47759dbccf8a4f5c188622914f0449dd7e455196e74 |
|
MD5 | 7b9702738cbba20451d2fd224f29a27b |
|
BLAKE2b-256 | e9fe6421e10e77d544079bda49cc06f481a1ef5950a51e638025bb6701bed6ba |