Skip to main content

A function-tagging library using decorators as tags.

Project description

Graffito

Speak softly, but carry a big can of paint.

Banksy

Installtion

Find this tool onPyPI: pip install graffito

Usage

Given a program:

from graffito.tags import graffiti, get_tags

func_test = graffiti

@func_test
def test():
    pass

class TestClass:

    method_test = graffiti

    @method_test
    def class_test(self):
        pass

print(get_tags(TestClass))
print(get_tags(test))

Executing the program will return:

{'class_test': ['method_test']}
{'test': ['func_test']}

This is a bespoke module. However, let's say that we wanted to characterize functions of a certain signature with a decorator so that we could handle them the same way. Let's say:

from graffito.tags import graffiti, get_tags

class TestClass:

    two_var_sig = graffiti

    @two_var_sig
    def function_a(self, input_a, input_b):
        print(f"{input_a}, {input_b}")

    @two_var_sig
    def function_b(self, input_a, input_b):
        print(f"{input_b}, {input_a}")

    def function_not_like_them(self, input_a):
        print(f"SIKE!")

t = TestClass()
tags = get_tags(TestClass)
for tag in tags:
    if "two_var_sig" in tags[tag]:
        getattr(t, tag)(1,2)

I know it seems really arbitrary, but it helped me write a simple computer emulator and I think I can develop it to be useful outside of my silly context. Let's find out.

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

graffito-0.0.1.tar.gz (5.4 kB view details)

Uploaded Source

File details

Details for the file graffito-0.0.1.tar.gz.

File metadata

  • Download URL: graffito-0.0.1.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.2

File hashes

Hashes for graffito-0.0.1.tar.gz
Algorithm Hash digest
SHA256 f08842905f73da7c2f9bc9b117bbef40da5addbf67bc9e9287f5215453e0f97c
MD5 9d301fb3790db526447295dc4c685a91
BLAKE2b-256 81ac12c8a0cb9e30301c5a142485066a7e163aeea8d57850d877f21c23cb4520

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