Last active
February 27, 2018 21:59
-
-
Save MichaelScript/444cbe5b74dce2c01a151d60b714ac3a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import site | |
import os | |
import pathlib | |
# Big thanks to Match on StackOverflow for helping me with this | |
# see https://stackoverflow.com/a/48713998/5614280 | |
# This is some cool hackery to overwrite the default functionality of | |
# the builtin print function within you're entire python environment | |
# to display the file name and the line number as well as always flush | |
# the output. It works by creating a custom user script and placing it | |
# within the user's sitepackages file and then overwriting the builtin. | |
# You can disable this behavior by running python with the '-s' flag. | |
# We could probably swap this out by reading the text from a python file | |
# which would make it easier to maintain larger modifications to builtins | |
# or a set of files to make this more portable or to modify the behavior | |
# of more builtins for debugging purposes. | |
customize_script = """ | |
from inspect import getframeinfo,stack | |
def debug_printer(func): | |
# I made this so that output always gets flushed as it won't by default | |
# within the environment I'm running it in. Also it will print the | |
# file name and line number of where the print occurs | |
def debug_print(*args,**kwargs): | |
frame = getframeinfo(stack()[1][0]) | |
return func(f"{frame.filename} : {frame.lineno} ", flush=True,*args,**kwargs) | |
return debug_print | |
__builtins__['print'] = debug_printer(print) | |
""" | |
# Creating the user site dir if it doesn't already exist and writing our | |
# custom behavior modifications | |
pathlib.Path(site.USER_SITE).mkdir(parents=True, exist_ok=True) | |
custom_file = os.path.join(site.USER_SITE,"usercustomize.py") | |
with open(custom_file,'w+') as f: | |
f.write(customize_script) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment