Merge branch 'development' of https://github.com/Annihilator708/Sebi-Machine into development

This commit is contained in:
annihilator708 2018-05-23 19:35:17 +02:00
commit b7b40fdcbc

View File

@ -3,6 +3,7 @@
"""
IO stuff.
"""
import copy
import inspect
import os
@ -45,10 +46,17 @@ def in_here(first_path_bit: str, *path_bits: str, stack_depth: int=0) -> str:
module = inspect.getmodule(frame[0])
assert hasattr(module, '__file__'), 'No `__file__\' attr, welp.'
# https://docs.python.org/3/library/inspect.html#the-interpreter-stack
# If Python caches strings rather than copying when we move them
# around or modify them, then this may cause a referential cycle which
# will consume more memory and stop the garbage collection system
# from working correctly. Best thing to do here is deepcopy anything
# we need and prevent this occuring. Del the references to allow them
# to be freed.
file = module.__file__
file = copy.deepcopy(file)
del module, frame
dir_name = os.path.dirname(file)
abs_dir_name = os.path.abspath(dir_name)
pathish = os.path.join(abs_dir_name, first_path_bit, *path_bits)
return pathish