over.core is mostly working
This commit is contained in:
parent
5baa9b75d0
commit
0df57ad386
23 changed files with 1528 additions and 1039 deletions
65
core/misc.py
Normal file
65
core/misc.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
#! /bin/env python3
|
||||
# encoding: utf-8
|
||||
|
||||
import imp
|
||||
import os
|
||||
|
||||
# --------------------------------------------------
|
||||
|
||||
def import_module(path):
|
||||
"""
|
||||
Imports a python file as a module. The path can be relative or absolute.
|
||||
|
||||
Based on the work of Yuval Greenfield released into the public domain.
|
||||
"""
|
||||
|
||||
# remove the .py suffix
|
||||
mod_dn = os.path.dirname(path)
|
||||
mod_fn = os.path.basename(path)
|
||||
|
||||
if mod_fn.endswith(".py"):
|
||||
mod_name = mod_fn[:-3]
|
||||
else:
|
||||
# packages for example
|
||||
mod_name = mod_fn
|
||||
|
||||
fd = None
|
||||
|
||||
try:
|
||||
data = imp.find_module(mod_name, [mod_dn])
|
||||
module = imp.load_module(mod_name, *data)
|
||||
fd = data[0]
|
||||
|
||||
finally:
|
||||
if fd is not None:
|
||||
fd.close()
|
||||
|
||||
return module
|
||||
|
||||
# --------------------------------------------------
|
||||
|
||||
def batch_gen(data, batch_size):
|
||||
"""
|
||||
Split data (a sequence) into sequences batch_size elements long.
|
||||
"""
|
||||
|
||||
for i in range(0, len(data), batch_size):
|
||||
yield data[i:i+batch_size]
|
||||
|
||||
# --------------------------------------------------
|
||||
|
||||
def console(environment, tab_completion=False):
|
||||
"""
|
||||
Opens up a Python console.
|
||||
|
||||
environment is a dictionary typically returned by locals() or similar
|
||||
tab_completion enables completion of object names using TAB, however note
|
||||
that this will make pasting formatted snippets of code difficult
|
||||
"""
|
||||
|
||||
import code, readline, rlcompleter
|
||||
|
||||
readline.parse_and_bind("tab: complete")
|
||||
|
||||
c = code.InteractiveConsole(environment)
|
||||
c.interact(banner="")
|
Loading…
Add table
Add a link
Reference in a new issue