Skip to main content

Decorate-me

Version status License Python version compatibility Version on Docker Hub Version on Github Version on PyPi
Build (Actions) Documentation status Coverage (coveralls) Maintainability (Code Climate) Scrutinizer Code Quality

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)  # "Animal(species="dog", age=12)"
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()  # warns with an ImmatureWarning

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)  # ["john", "kerri"]

@abcd.float_type("v")
class Size:
    def __init__(self, v: float):
        self.v = v
      
float(Size(6.2))  # 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)  # 'Duo(weight=22.3)'
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

  • mutable
  • immutable

Code maturity

  • status (code deprecation & immaturity warnings)

Singletons

  • auto_singleton

Metadata

Release files for decorateme 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for decorateme 0.3.0
File Size Uploaded Provenance
decorateme-0.3.0.tar.gz 14.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for decorateme 0.3.0
File Interpreter ABI Platform
decorateme-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.8 kB

Release files / decorateme-0.3.0.tar.gz

Download URL decorateme-0.3.0.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
7d71c5f74539a5e4edf81f4fe7a4f5de46375021680d6936636a58cd0632c410
BLAKE2b-256 checksum
How to use checksums
9586adb8713f425299a7abb245bfefc3b1bef296d2ca3b7bc223055668e0d784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.9.13 Linux/5.15.0-1014-azure

Release files / decorateme-0.3.0-py3-none-any.whl

Download URL decorateme-0.3.0-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b647ec83245e670558e1d7ca03d2a81d460f964fd3bb0a6430cfe721daa783b
BLAKE2b-256 checksum
How to use checksums
2a730db629f5891edc78ae3eba045eb600e38f7a98d3297f9ea043b53070bcfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.9.13 Linux/5.15.0-1014-azure

Security for decorateme 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page