Skip to main content

The package that allows you to create clear and informative methods for your own classes in Python.

Project description

pretty_repr

GitHub repo size PyPI version GitHub contributors GitHub stars GitHub forks GitHub licence

pretty_repr is a package that allows you to create clear and informative methods for your own classes in Python.

Prerequisites

Before you begin, ensure you have installed the latest version of Python.

Installing pretty_repr

To install pretty_repr, follow these steps:

Linux and macOS:

pip3 install pretty-repr

Windows:

pip install pretty-repr

Using pretty_repr

There are will be examples of how to use pretty_repr.

get_representation

  1. The get_representation function requires an instance of some class as parameter and returns its string representation:
>>> from pretty_repr import get_representation
>>> class A:
...     def __init__(self, a, b, c, d=0):
...         self.a = a
...         self.__b = b
...         self._c = c
...         self.d = d
...
>>> example_1 = A(1, 2, 3)
>>> print(get_representation(example_1))
A(a=1, b=2, _c=3, d=0)
  1. Run the following to exclude some parameters from the representation:
>>> print(get_representation(example_1, excluded={'a', '_c'}))
A(b=2, d=0)
  1. If a parameter is iterable is represented in accordance to its __repr__ method:
>>> import numpy as np
>>> example_2 = A((1, 2), [3, 4], {5, 6}, np.zeros(3))
>>> print(get_representation(example_2))
A(a=(1, 2), b=[3, 4], _c={5, 6}, d=array([0., 0., 0.]))
  1. Inheritor representation includes all parameters of the ancestor as well as its own parameters:
>>> from pretty_repr import get_representation
>>> class B(A):
...     def __init__(self, e, f, h=1, **kwargs):
...         super().__init__(**kwargs)
...         self.e = e
...         self.__f = f
...         self.h = h
...
>>> example_3 = B(a=1, b=2, c=3, e=4, f=5)
>>> print(get_representation(example_3))
B(a=1, b=2, _c=3, d=0, e=4, f=5, h=1)
  1. This representation includes private attributes of the ancestor. Run the following to exclude it from representation:
>>> example_3._A__b
2
>>> print(get_representation(example_3, ancestor_private_attributes=False))
B(a=1, _c=3, d=0, e=4, f=5, h=1)

RepresentableObject

The RepresentableObject class is the class which __repr__ method returns get_representation function result:

>>> from pretty_repr import RepresentableObject
>>> print(get_representation(RepresentableObject()))
RepresentableObject()
>>> print(repr(RepresentableObject()))
RepresentableObject()

You can use class inherited from RepresentableObject instead of __repr__ method implementation:

>>> class C(RepresentableObject):
...     def __init__(self, a, b, c, d=0):
...         self.a = a
...         self.__b = b
...         self._c = c
...         self.d = d
...
>>> example_1 = C(1, 2, 3)
>>> example_1
C(a=1, b=2, _c=3, d=0)

Define property excluded_attributes_for_repr to exclude some parameters from representation:

>>> class D(C):
...     def __init__(self, e, f, h=1, **kwargs):
...         super().__init__(**kwargs)
...         self.e = e
...         self.__f = f
...         self.h = h
...     @property
...     def excluded_attributes_for_repr(self):
...         return {'f', 'h'}
... 
>>> example_4 = D(a=1, b=2, c=3, e=4, f=5)
>>> example_4
D(a=1, b=2, _c=3, d=0, e=4)

Contributing to pretty_repr

To contribute to pretty_repr, follow these steps:

  1. Fork this repository.
  2. Create a branch: git checkout -b <branch_name>.
  3. Make your changes and commit them: git commit -m '<commit_message>'
  4. Push to the original branch: git push origin <project_name>/<location>
  5. Create the pull request.

Alternatively see the GitHub documentation on creating a pull request.

Contributors

Contact

If you want to contact me you can reach me at albertfarhutdinov@gmail.com.

License

This project uses the following license: MIT License.

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

pretty_repr-1.0.6.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pretty_repr-1.0.6-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file pretty_repr-1.0.6.tar.gz.

File metadata

  • Download URL: pretty_repr-1.0.6.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.3

File hashes

Hashes for pretty_repr-1.0.6.tar.gz
Algorithm Hash digest
SHA256 7d9cdaca6f2ef8b188be6e86da4db1a8c463f2c67d356caa47e1181e8e4ca40c
MD5 157c78bd4423511b2b92e5aa9692f62d
BLAKE2b-256 2d6d56c512f5c71ef6b8e5f3742ea110b9d78f08b9ca7da03ecebf459db41551

See more details on using hashes here.

File details

Details for the file pretty_repr-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: pretty_repr-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.3

File hashes

Hashes for pretty_repr-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4738f5cce4a5c2a17781699f8f7d44899d453a646992ad1dfd4bb9981398fa1e
MD5 58803adaaba3e5496b93ac070e1abb50
BLAKE2b-256 2f7abd48919875fb9985298c0231a275b7c0b0b440b86a30a8ac839fea91a33c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page