Tatuagem, the boastful code signature suite
Tatuagem is a tool to generate ASCII art signatures (tattoos) and apply them to your code files recursively.
Usage
python3 tatuagem.py [text_input] [options]
Arguments
| Argument | Description | Default |
|---|---|---|
text_input |
The string you want to convert into a tattoo. Required if --file is not provided. |
None |
--text |
The character used to draw the text pixels. | 1 |
--backsplash |
The character used to fill the background. | 0$*~ |
--font |
The TrueType font file (.ttf) to use for generating the text shape. | unicode-arial.ttf |
--pattern |
A repeating string pattern to use for the background. Overrides --backsplash. |
None |
--margin |
Number of empty lines (margin) to add above and below the text. | 3 |
--recurse-path |
Path to a directory. Tatuagem will walk through this directory and prepend the tattoo to every file found. | None |
--file, -f |
Path to a file containing text. • Standard Mode: The content of the file is converted into the tattoo art. • Recurse Mode (with --recurse-path): The content of the file is used as-is for the tattoo (useful for pre-generated art). |
None |
--overwrite |
When using --recurse-path, this flag allows overwriting existing tattoos in files. Without this flag, files that are already tattooed will be skipped. |
False |
Examples
Basic Example
Generate a simple tattoo.
python3 tatuagem.py "tatuagem"
Defaults: '1' for text, '0' for background, unicode-arial.ttf for font
Elaborate Syntax Example
Customizing the text and background characters.
python3 tatuagem.py "L'appel du vide" --font 'unicode-arial.ttf' --backsplash '!' --text '@'
Wallpaper: Pattern-Argument Syntax Example
Using a pattern string for the background.
python3 tatuagem.py "Tatuagem" --pattern '`':,:''
Recurse your project
Apply the generated tattoo to all files in test_tattoo/.
python tatuagem.py "Tatuagem" --pattern '`':,:'' --recurse-path test_tattoo/
Recurse your project with a text file
Apply the contents of tests/aeaea.inc as a header to all files in test_tattoo/.
python3 tatuagem.py --file tests/aeaea.inc --recurse-path test_tattoo/
Replace existing tattoos with --overwrite
Update existing tattoos in files that were already tattooed. Without this flag, already-tattooed files will be skipped.
python3 tatuagem.py "New Tattoo" --recurse-path test_tattoo/ --overwrite
Features
✓ Shebang detection and preservation - files with #!/... shebangs keep them at the top
✓ Safe for npm projects - tattooed npm projects continue to work after tattooing
✓ Idempotent - Tattoos won't repeat on themselves if run multiple times
✓ .tatignore support - Exclude specific files and directories from tattooing
.tatignore
Similar to .gitignore, you can create a .tatignore file in the root of the directory you want to tattoo to specify patterns of files and directories to exclude from tattooing.
.tatignore Syntax
The .tatignore file supports the following patterns:
- Simple filenames:
file.txt- ignores any file namedfile.txt - Wildcards:
*.log- ignores all files ending with.log - Directory patterns:
node_modules/- ignores all files innode_modulesdirectory - Recursive patterns:
build/**- ignores all files inbuildand its subdirectories - Comments: Lines starting with
#are treated as comments - Empty lines: Empty lines are ignored
.tatignore Example
# Ignore log files
*.log
# Ignore build artifacts
build/
dist/
# Ignore dependencies
node_modules/
# Ignore specific files
secrets.py
config.local.json
# Ignore test directories
tests/**
Usage with .tatignore
- Create a
.tatignorefile in the directory you want to tattoo (or copy.tatignore.examplefrom this repository) - Add patterns for files/directories to exclude
- Run tatuagem with
--recurse-pathas usual
# This will respect patterns in .tatignore
python3 tatuagem.py "MyProject" --recurse-path ./my-project/
Release files for tatuagem 0.1.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tatuagem-0.1.14.tar.gz | 15.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tatuagem-0.1.14-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.7 MB
Release files / tatuagem-0.1.14.tar.gz
| Download URL | tatuagem-0.1.14.tar.gz |
|---|---|
| Size | 15.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
313d38a8534d1e3a2be4e0be0c80462be322944755a079b65170b02eb3058b97
|
|
BLAKE2b-256 checksum How to use checksums |
c6415d63fc26727f26dee2fba0d1f384fd292a456016a4ede5e5f05c2a259b6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency logRelease files / tatuagem-0.1.14-py3-none-any.whl
| Download URL | tatuagem-0.1.14-py3-none-any.whl |
|---|---|
| Size | 15.4 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cebd94a28fef2c3de2d104e59ba084bdccffd2cbde51ef1e989727e07071213b
|
|
BLAKE2b-256 checksum How to use checksums |
67560bbe33831a91aa8d19715e42bd55c4c591299994883b61fb27491e8d0f87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 3, 2026.
Transparency log