File: pyedit-products/unzipped/docetc/examples/Assorted-demos/trimmed-string-mode-code.py
"""
------------------------------------------------------------------
# redef for main module scope
def input(prompt=''):
if prompt:
sys.stdout.write(prompt) # no \n here: console
sys.stdout.flush()
return sys.stdin.readline().rstrip('\n') # readline blocks GUI
# redef globally for imported modules
import builtins
builtins.input = input
# save/restore run state
mycwd = os.getcwd() # cwd poss launcher
mypath = sys.path.copy() # sets __file__ too
myargv = sys.argv.copy() # tbd: os.envion?
thefile = self.getFileName() # possibly None
if thefile != None: # iff saved once
dirname = os.path.dirname(thefile)
os.chdir(dirname or mycwd) # cd for filenames
sys.path.insert(0, dirname) # path for imports
else:
# not in PyEdit's dir!
os.chdir(self.startfiledir) # user's home dir
print('[PyEdit: Run Code]') # separate output
namespace = {'__name__': '__main__'} # run as top-level
sys.argv = [str(thefile)] + cmdargs.split() # could use threads
namespace['__file__'] = str(thefile) # in code's scope
try:
name = thefile or '<string>' # compile for msgs
text = self.getAllText() + '\n' # map to file if any
code = compile(text, name, 'exec')
exec(code, namespace) # handle code's excs:
except Exception: # syntax + others
traceback.print_exc() # send to console too
finally:
sys.argv = myargv # always restore
sys.path = mypath # reset imports path
os.chdir(mycwd) # go back to my dir
---------------------------------------------------------------------
"""