Decorate-me


Python decorators to trim boilerplate.
Example 1: auto-add repr, str, hash, and eq
import decorateme as abcd
@abcd.auto_obj()
class Animal:
def __init__(self, species: str, age: int):
self.species = species
self.age = age
luna1 = Animal("dog", 12)
luna2 = Animal("dog", 12)
str(luna)
assert luna1 == luna2
assert hash(luna1) == hash(luna2)
Example 2: Customize
import decorateme as abcd
@abcd.auto_str(only=["species"])
class Animal:
...
Example 3: Add warnings about code quality
import decorateme as abcd
@abcd._status("immature")
def my_function():
...
my_function()
Example 4: Iterate, etc.
import decorateme as abcd
@abcd.sequence_over("members")
class Team:
def __init__(self, members: list):
self.members = members
team = Team(["john", "kerri"])
list(team)
@abcd.float_type("v")
class Size:
def __init__(self, v: float):
self.v = v
float(Size(6.2))
Example 5: clearly document behavior
import decorateme as abcd
@abcd.not_thread_safe
def run_command():
...
Example 6: combine things
import decorateme as abcd
@abcd.auto_obj()
@abcd.float_type("weight")
class Uno:
def __init__(self, weight):
self.weight = weight
light1, light2, heavy = Uno(3.1), Uno(3.1), Uno(12.8)
assert light1 == light2 != heavy
print(light1)
assert light1 * heavy == 39.68
Licensed under the Apache License, version 2.0.
New issues and pull requests are welcome.
Please refer to the contributing guide.
Generated with Tyrannosaurus.
List of decorators
String-like methods
- auto_repr_str
- auto_str
- auto_repr
- auto_html (for display in Jupyter)
- auto_info (add a .info method)
Equality
- auto_eq
- auto_hash
- total_ordering (from functools)
Make your class smart
- auto_obj (auto- for eq, str, and repr)
- dataclass (from dataclasses)
Docstring-related
- copy_docstring
- append_docstring
Timing
- takes_seconds
- takes_seconds_named
- auto_timeout
Allow a class to be used as a type
- iterable_over
- collection_over
- sequence_over
- float_type
- int_type
Overriding / inheritance
- final
- overrides
- override_recommended
- ABC (from abc)
- ABCMeta (from abc)
- abstractmethod (from abc)
Mark purpose / use
- internal
- external
- reserved
Multithreading
- thread_safe
- not_thread_safe
Mutability
Code maturity
- status (code deprecation & immaturity warnings)
Singletons