Skip to main content

A library for enhanced print debugging.

Project description

printstream

A Python library that enhances the built-in print function for better debugging.

Table of Contents

  1. Features
  2. Installation
  3. Usage
  4. Configuration
  5. Examples
  6. Overhead Measurement
  7. Contribution
  8. License
  9. Contact

Features

  • Prepend function name to print output.
  • Colorize function name based on hash for better visual distinction.
  • Align print output for improved readability.
  • Toggle enhanced print functionality on and off as needed.
  • Highly configurable via simple API.
  • Lightweight with minimal setup.

Installation

Install printstream via pip:

pip install printstream

Usage

Import and activate the library at the top of your script:

from printstream import activate, deactivate

activate()

# Your code here...

deactivate()

Configuration

Configure printstream to suit your needs:

from printstream import (
    set_format, set_level, set_output, set_align, set_repeat_func_name,
    set_colorize, activate, deactivate
)

# Configure the debugger
set_format("[{func_name}] {message}")
set_align(False)
set_repeat_func_name(True)
set_colorize(True)
set_level(1)

activate()

# Your code here...

deactivate()

Additional Configuration Details

Here are some additional details about the configuration options:

  • align: If repeat_func_name is set to False and align is set to True, the output of a single print statement with newlines will be indented such that the output is fully aligned.

align and repeat_func_name set to False:

[test] Hello World
How are you?
  • repeat_func_name: If a print statement has newlines, and this option is set to True, it will still print the function name before each line (even within the same print statement).
[test] Hello World
[test] How are you?
  • colorize: This option colorizes the function name based on its hash. This introduces some significant overhead (~200%). If anyone has any suggestions on improvements, please submit a PR.

image-20231103002159681

  • levels: This option controls the output level.
    • -1: No output
    • 0: Normal print
    • 1: Debug activated

Examples

Example with printstream activated:

from printstream import activate, deactivate

activate()

def test():
    print("Hello World\nHow are you?")

test()

deactivate()

Output:

[test] Hello World
[test] How are you?

Overhead Measurement

Measure the overhead of printstream:

import timeit

# ... setup code ...

# Measure time with standard print
time_without_debug = timeit.timeit("test()", setup=setup_code, number=10)

# Measure time with printstream activated
time_with_debug = timeit.timeit("activate(); test(); deactivate()", setup=setup_code, number=10)

# Calculate overhead percentage
overhead_percentage = ((time_with_debug - time_without_debug) / time_without_debug) * 100

Contribution

Contributions to printstream are welcome! Please submit a pull request or create an issue on the GitHub repository.

License

printstream is licensed under the MIT License. See the LICENSE file for details.

Contact

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

printstream-0.1.3.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

printstream-0.1.3-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file printstream-0.1.3.tar.gz.

File metadata

  • Download URL: printstream-0.1.3.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/37.3 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/1.26.16 tqdm/4.65.0 importlib-metadata/6.8.0 keyring/23.13.1 rfc3986/1.5.0 colorama/0.4.6 CPython/3.9.18

File hashes

Hashes for printstream-0.1.3.tar.gz
Algorithm Hash digest
SHA256 99c4941c41b2d54de4a11e9286461b7d0bea881a9037a79418f49b7f41fcede1
MD5 c58a8a4e808f0c0cf96d2164304ef559
BLAKE2b-256 4d25cc162adecdbfc19da2ed8a22f6e1f5eb2d24a373ecfd3a5e6230fa6d495c

See more details on using hashes here.

File details

Details for the file printstream-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: printstream-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for printstream-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 73299c646a6d74956b6c817b3502f0b83dd020e52541f25d70cb770a7b8fedba
MD5 f9ee02b1a09d8dcc2718a8d074796d8b
BLAKE2b-256 f15f9bf20a37f19faa42275dd256a7440f1051dabf4d10e9ab7a227825ffa383

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