Skip to main content

A mix-in that provides __repr__() from constructor arguments.

Project description

ctorrepr

https://img.shields.io/pypi/v/ctorrepr.svg https://img.shields.io/travis/astralblue/ctorrepr.svg Documentation Status Updates

A mix-in that provides __repr__() from constructor arguments.

Usage

To use, simply inherit from ~ctorrepr.CtorRepr then implement its ~ctorrepr.CtorRepr._collect_repr_args() to match your existing __init__() method:

>>> from ctorrepr import CtorRepr
>>> class X(CtorRepr):
...     def __init__(self, x1='x1', x2='x2', *poargs, **kwargs):
...         super().__init__(*poargs, **kwargs)
...         self.x1 = x1
...         self.x2 = x2
...     def _collect_repr_args(self, poargs, kwargs):
...         super()._collect_repr_args(poargs, kwargs)
...         poargs[:0] = self.x1, self.x2
>>> class Y(CtorRepr):
...     def __init__(self, *y, **kwargs):
...         super().__init__(**kwargs)
...         self.y = y          # completely consumes positional args
...     def _collect_repr_args(self, poargs, kwargs):
...         super()._collect_repr_args(poargs, kwargs)
...         poargs[:0] = self.y
>>> class Z(CtorRepr):
...     def __init__(self, *poargs, zk='zk', **kwargs):
...         super().__init__(*poargs, **kwargs)
...         self.zk = zk
...     def _collect_repr_args(self, poargs, kwargs):
...         super()._collect_repr_args(poargs, kwargs)
...         kwargs.update(zk=self.zk)
>>> class W(X, Y, Z):
...     def __str__(self):
...         return repr(self)
>>> print(' '.join(t.__name__ for t in W.mro()))
W X Y Z CtorRepr object
>>> print(W())
W('x1', 'x2', zk='zk')
>>> print(W(24))
W(24, 'x2', zk='zk')
>>> w = W(24, 25, 'y1', 'y2')
>>> w.y
('y1', 'y2')
>>> print(w)
W(24, 25, 'y1', 'y2', zk='zk')
>>> print(W(zk=100))
W('x1', 'x2', zk=100)

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.1.0 (2017-07-31)

  • 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

ctorrepr-0.1.2.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

ctorrepr-0.1.2-py2.py3-none-any.whl (4.9 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file ctorrepr-0.1.2.tar.gz.

File metadata

  • Download URL: ctorrepr-0.1.2.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for ctorrepr-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5bde58f3b531751ae8b9823b84540ef6df0b2c6f94ad4b212de4cbb2fb32c1f7
MD5 16a1af646476611ed91f69203f5b87eb
BLAKE2b-256 05e89e57bc01bfde3f14b64378df6dda605cf45187f57756fef1b0147484f203

See more details on using hashes here.

File details

Details for the file ctorrepr-0.1.2-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for ctorrepr-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 024a77115c05283e7629216e687276cefd68ba1cba6352c2cf23280e37f2b53a
MD5 74778b46e042829796b59f38f7ec30f9
BLAKE2b-256 dc0d54c792598904da0e5c176992f2595e4fab7ed40c22c643d1874514b52bf1

See more details on using hashes here.

Supported by

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