Skip to main content

Python class utilities

Project description

Python Class Utilities

pipeline status coverage report documentation PyPI

class-tools is a collection of utilities for Python classes that the author frequently needs.

What can I do with class-tools?

Quickly Add Properties to Classes

from class_tools.decorators import wrapper_property

@wrapper_property("name", default=lambda: "Bob", doc="The dog's name")
@wrapper_property("toy", default=lambda: "ball")
@wrapper_property("sharp_teeth", default=lambda: 4, type=int)
class Dog:
    pass

dog = Dog()
dog.__doc__
# "The dog's name"
dog.name
# 'Bob'
dog.toy
# 'ball'
dog.sharp_teeth = "4" # (set as a string value)
dog.sharp_teeth
# 4 (returned as int)

Add a Pretty __repr__ Method

from class_tools.decorators import *

@with_init_from_properties()
@with_repr_like_init_from_properties()
@wrapper_property("name")
@wrapper_property("furcolor")
class Cat:
    pass

cat = Cat(name="Lucy", furcolor="white")
cat
# Cat(
#     furcolor = 'white',
#     name = 'Lucy'
# )

Make Classes Comparable by Properties

from class_tools.decorators import *

@with_eq_comparing_properties()
@wrapper_property("name")
@wrapper_property("furcolor")
class Cat:
    pass

lucy = Cat()
lucy.name = "Lucy"
lucy.furcolor = "white"
lucy_clone = Cat()
lucy_clone.name = "Lucy"
lucy_clone.furcolor = "white"
gary = Cat()
gary.name = "Gary"
lucy == gary
# False
lucy == lucy_clone
# True

All of the Above

from class_tools.propertyobject import PropertyObject
from class_tools.decorators import wrapper_property

@wrapper_property("name")
@wrapper_property("height", type=float)
@wrapper_property("friends", type=list, default=list)
class Giraffe(PropertyObject):
		pass

matt = Giraffe(name="Matt")
matt.height = 3
gunther = Giraffe(name="Gunther")
gunther.friends.append(matt)
gunther
# Giraffe(
#     friends=[Giraffe(
#         friends=[],
#         height=3.0,
#         name='Matt'
#     )],
#     height=None,
#     name='Gunther'
# )

Installation

The class-tools package is best installed via pip. Run from anywhere:

python3 -m pip install --user class-tools

This downloads and installs the package from the Python Package Index.

You may also install class-tools from the repository root:

python3 -m pip install --user .

Documentation

Documentation of the class-tools package can be found here on GitLab.

Also, the command-line help page python3 -m class-tools -h is your friend.

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

class-tools-0.2.0.tar.gz (18.9 kB view details)

Uploaded Source

File details

Details for the file class-tools-0.2.0.tar.gz.

File metadata

  • Download URL: class-tools-0.2.0.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.7.2

File hashes

Hashes for class-tools-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4039b5895ac8e9d2f0d1fd3641afbdac5017f72f800440db0faf87fd9bc29c58
MD5 4ca68c412f55ac192e88e6a79d1bd696
BLAKE2b-256 76e6d473d6898fc3a308f22f3b7504f26d55022da40a9b65156a246461306506

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