本文整理汇总了Python中codeintel2.manager.Manager类的典型用法代码示例。如果您正苦于以下问题:Python Manager类的具体用法?Python Manager怎么用?Python Manager使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Manager类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: codeintel_manager
def codeintel_manager():
global _ci_mgr_, condeintel_log_filename, condeintel_log_file
if _ci_mgr_:
mgr = _ci_mgr_
else:
for thread in threading.enumerate():
if thread.name == "CodeIntel Manager":
thread.finalize() # this finalizes the index, citadel and the manager and waits them to end (join)
mgr = Manager(
extra_module_dirs=_ci_extra_module_dirs_,
db_base_dir=_ci_db_base_dir_,
db_catalog_dirs=_ci_db_catalog_dirs_,
db_import_everything_langs=_ci_db_import_everything_langs,
)
mgr.upgrade()
mgr.initialize()
# Connect the logging file to the handler
condeintel_log_filename = os.path.join(mgr.db.base_dir, "codeintel.log")
condeintel_log_file = open(condeintel_log_filename, "w", 1)
codeintel_log.handlers = [logging.StreamHandler(condeintel_log_file)]
msg = "Starting logging SublimeCodeIntel rev %s (%s) on %s" % (
get_revision()[:12],
os.stat(__file__)[stat.ST_MTIME],
datetime.datetime.now().ctime(),
)
print >> condeintel_log_file, "%s\n%s" % (msg, "=" * len(msg))
_ci_mgr_ = mgr
return mgr
示例2: codeintel_manager
def codeintel_manager(folders_id):
folders_id = None
global _ci_mgr_, condeintel_log_filename, condeintel_log_file
mgr = _ci_mgr_.get(folders_id)
if mgr is None:
for thread in threading.enumerate():
if thread.name == "CodeIntel Manager":
thread.finalize() # this finalizes the index, citadel and the manager and waits them to end (join)
mgr = Manager(
extra_module_dirs=None,
db_base_dir=None, # os.path.expanduser(os.path.join('~', '.codeintel', 'databases', folders_id)),
db_catalog_dirs=[],
db_import_everything_langs=None,
)
mgr.upgrade()
mgr.initialize()
# Connect the logging file to the handler
condeintel_log_filename = os.path.join(mgr.db.base_dir, 'codeintel.log')
condeintel_log_file = open(condeintel_log_filename, 'w', 1)
codeintel_log.handlers = [logging.StreamHandler(condeintel_log_file)]
msg = "Starting logging SublimeCodeIntel v%s rev %s (%s) on %s" % (VERSION, get_revision()[:12], os.stat(__file__)[stat.ST_MTIME], datetime.datetime.now().ctime())
print("%s\n%s" % (msg, "=" * len(msg)), file=condeintel_log_file)
_ci_mgr_[folders_id] = mgr
return mgr
示例3: do_html
def do_html(self, subcmd, opts, path):
"""Convert the given path to styled HTML.
${cmd_usage}
${cmd_option_list}
The output includes trigger info and other stats. I.e. this is
primarily a debugging tool.
"""
from codeintel2.manager import Manager
from codeintel2.common import Error
from ci2 import _url_from_local_path
mgr = Manager()
try:
if opts.browse:
htmls = []
buf = mgr.buf_from_path(path, lang=opts.lang)
html = buf.to_html(True, True, title=path,
do_trg=opts.do_trg,
do_eval=opts.do_eval)
finally:
mgr.finalize()
if opts.output == '-':
output_path = None
output_file = sys.stdout
else:
if opts.output:
output_path = opts.output
else:
output_path = path + ".html"
if os.path.exists(output_path):
if opts.force:
os.remove(output_path)
else:
raise Error("`%s' exists: use -f|--force option to allow overwrite" % output_path)
output_file = open(output_path, 'w')
# else:
# output_path = None
# output_file = sys.stdout
# #XXX Disable writing t
# output_file = None
if output_file:
output_file.write(html)
if output_path:
output_file.close()
if opts.browse:
if not output_path:
raise Error("cannot open in browser if stdout used "
"for output")
import webbrowser
url = _url_from_local_path(output_path)
webbrowser.open_new(url)
示例4: do_html
def do_html(self, subcmd, opts, path):
"""Convert the given path to styled HTML.
${cmd_usage}
${cmd_option_list}
The generated HTML provides a good tool for seeing how Komodo's
lexer lexes the given content. This is the same tokenization that
you get from "buf.accessor.*" methods -- which you can use for
writing the CILE, trigger handling, and completion evaluation
for this language.
Use the "-t" and "-e" option to also exercise the current
trigger handling and completion evaluation (i.e. determining
the appropriate completions and calltips at a given trigger
point).
"""
extra_lang_module_dirs = []
if koextlib.is_ext_dir() and exists("pylib"):
sys.path.append(abspath("pylib"))
extra_lang_module_dirs = [sys.path[-1]]
mgr = Manager(extra_lang_module_dirs=extra_lang_module_dirs)
try:
if opts.browse:
htmls = []
buf = mgr.buf_from_path(path, lang=opts.lang)
html = buf.to_html(True, True, title=path, do_trg=opts.do_trg, do_eval=opts.do_eval)
finally:
mgr.finalize()
if opts.output == "-":
output_path = None
output_file = sys.stdout
else:
if opts.output:
output_path = opts.output
else:
output_path = path + ".html"
if exists(output_path):
os.remove(output_path)
output_file = open(output_path, "w")
if output_file:
output_file.write(html)
if output_path:
output_file.close()
if opts.browse:
if not output_path:
raise CodeIntelError("cannot open in browser if stdout " "used for output")
import webbrowser
url = _url_from_local_path(output_path)
webbrowser.open_new(url)
示例5: do_scan
def do_scan(self, subcmd, opts, *path_patterns):
"""Scan and print the CIX for the given path(s).
${cmd_usage}
${cmd_option_list}
"""
extra_module_dirs = []
if koextlib.is_ext_dir() and exists("pylib"):
sys.path.append(abspath("pylib"))
extra_module_dirs = [sys.path[-1]]
mgr = Manager(extra_module_dirs=extra_module_dirs)
mgr.upgrade()
mgr.initialize()
try:
tree = None
for path in _paths_from_path_patterns(path_patterns):
try:
lang = opts.lang or guess_lang_from_path(path)
except CodeIntelError:
log.info("skip `%s': couldn't determine language " "(use --lang option)", path)
continue
buf = mgr.buf_from_path(path, lang=opts.lang)
if not isinstance(buf, CitadelBuffer):
raise CodeIntelError("`%s' (%s) is not a language that " "uses CIX" % (path, buf.lang))
buf.scan() # force a fresh scan
tree = buf.tree
for severity, msg in check_tree(tree):
dump = {"warning": log.warn, "error": log.error}[severity]
dump(msg)
if opts.pretty_print:
tree = pretty_tree_from_tree(tree)
ET.dump(tree)
finally:
mgr.finalize()
示例6: __init__
def __init__(self, db_base_dir=None, fd_in=sys.stdin, fd_out=sys.stdout):
threading.Thread.__init__(self, name="Codeintel OOP Driver")
self.daemon = True
self.fd_in = fd_in
self.fd_out = fd_out
self.abort = None
self.quit = False
self.buffers = {} # path to Buffer objects
self.next_buffer = 0
self.active_request = None
self.queue = collections.deque()
self.queue_cv = threading.Condition()
self.env = Environment(name="global",
send_fn=functools.partial(self.send, request=None))
# Fill out the non-overridable build-in commands
self._builtin_commands = {}
for attr in dir(self):
# Note that we check startswith first to avoid getters etc.
if attr.startswith("do_") and callable(getattr(self, attr)):
command = attr[len("do_"):].replace("_", "-")
self._builtin_commands[command] = getattr(self, attr)
from codeintel2.manager import Manager
log.debug("using db base dir %s", db_base_dir)
self.mgr = Manager(db_base_dir=db_base_dir,
db_catalog_dirs=[],
env=self.env,
on_scan_complete=self._on_scan_complete)
self.mgr.initialize()
示例7: do_dbcheck
def do_dbcheck(self, subcmd, opts):
"""Run an internal consistency check on the database.
${cmd_usage}
${cmd_option_list}
Any errors will be printed. Returns the number of errors (i.e.
exit value is 0 if there are no consistency problems).
"""
mgr = Manager(opts.db_base_dir)
try:
errors = mgr.db.check()
finally:
mgr.finalize()
for error in errors:
print error
return len(errors)
示例8: do_json
def do_json(self, subcmd, opts, path):
"""Convert cix XML file into json format.
${cmd_usage}
${cmd_option_list}
"""
import json
if opts.output == '-':
output_path = None
output_file = sys.stdout
else:
if opts.output:
output_path = opts.output
else:
output_path = splitext(path)[0]+".json"
if exists(output_path):
if opts.force:
os.remove(output_path)
else:
raise Error("`%s' exists: use -f|--force option to "
"allow overwrite" % output_path)
output_file = open(output_path, 'w')
mgr = Manager()
mgr.upgrade()
mgr.initialize()
try:
if path.endswith(".cix"):
tree = tree_from_cix(open(path, 'r').read())
else:
buf = mgr.buf_from_path(path, lang=opts.lang)
tree = buf.tree
result = {}
ci = result["codeintel"] = defaultdict(list)
def _elemToDict(parent, elem):
data = defaultdict(list)
name = elem.get("name")
if name is not None:
data["name"] = name
data["tag"] = elem.tag
for attr_name, attr in elem.attrib.items():
data[attr_name] = attr
parent["children"].append(data)
for child in elem:
_elemToDict(data, child)
for child in tree:
_elemToDict(ci, child)
json.dump(result, output_file, indent=2)
finally:
mgr.finalize()
示例9: worker
def worker(queue, lock, cix_dir, root="/"):
"""
worker procedure
"""
fix_module_path()
import dxr.mime
from codeintel2.citadel import CitadelBuffer
from codeintel2.common import CodeIntelError
from codeintel2.manager import Manager
from codeintel2.util import guess_lang_from_path
logging.getLogger("codeintel").setLevel(logging.ERROR)
log.info("starting indexing using %s", multiprocessing.current_process().name)
mgr = Manager(db_base_dir=cix_dir)
#mgr.upgrade()
mgr.initialize()
while True:
file_path = queue.get()
if file_path is None:
# marker for end of list
queue.put(None) # put it back so others can quit too
break
rel_path = os.path.relpath(file_path, root)
try:
lang = guess_lang_from_path(file_path)
except CodeIntelError:
log.info("%s: Cannot determine language, skipping", rel_path)
continue
# the file
with open(file_path, "r") as source_file:
data = source_file.read()
# Discard non-text files
if not dxr.mime.is_text(file_path, data):
continue
try:
buf = mgr.buf_from_path(file_path, lang=lang)
except CodeIntelError as ex:
if ex.message.startswith("File too big."):
log.info("%s: %s", file_path, ex.message)
continue # Nothing we can do about that, and the user can't
# fix this ever.
raise
if not isinstance(buf, CitadelBuffer):
log.info("%s: language %s does not have CIX, skipping",
rel_path, lang)
continue
log.info("%s: Using language %s", rel_path, lang)
buf.scan()
mgr.finalize()
示例10: casper_tests
def casper_tests():
from codeintel2.manager import Manager
db_base_dir = join(dirname(__file__), "tmp", "db")
mgr = Manager(db_base_dir)
mgr.upgrade()
mgr.initialize()
try:
for testpath in testpaths():
buf = mgr.buf_from_path(testpath, lang="JavaScript")
# Ensure the test is up to date.
if buf.scan_time < os.stat(testpath).st_mtime:
buf.scan()
for test in casper_tests_from_citree(buf.tree):
yield test
finally:
mgr.finalize()
示例11: setUp
def setUp(self):
if _xpcom_:
# The tests are run outside of Komodo. If run with PyXPCOM up
# parts codeintel will try to use the nsIDirectoryService and
# will query dirs only provided by nsXREDirProvider -- which
# isn't registered outside of Komodo (XRE_main() isn't called).
# The KoTestService provides a backup.
koTestSvc = components.classes["@activestate.com/koTestService;1"] \
.getService(components.interfaces.koITestService)
koTestSvc.init()
if self._ci_test_setup_mgr_:
env = None
if self._ci_env_prefs_ is not None:
env = SimplePrefsEnvironment(**self._ci_env_prefs_)
self.mgr = Manager(
extra_module_dirs=self._ci_extra_module_dirs_,
db_base_dir=self._ci_db_base_dir_ or test_db_base_dir,
db_catalog_dirs=self._ci_db_catalog_dirs_,
db_import_everything_langs=self._ci_db_import_everything_langs,
env=env)
self.mgr.upgrade()
self.mgr.initialize()
示例12: do_scan
def do_scan(self, subcmd, opts, *path_patterns):
"""Scan and print the CIX for the given path(s).
${cmd_usage}
${cmd_option_list}
"""
import time
import ciElementTree as ET
from ci2 import _paths_from_path_patterns
from codeintel2.manager import Manager
from codeintel2.citadel import CitadelBuffer
from codeintel2.common import CodeIntelError
from codeintel2.tree import pretty_tree_from_tree
from codeintel2.util import guess_lang_from_path
mgr = Manager()
mgr.upgrade()
mgr.initialize()
try:
if opts.time_it:
start = time.time()
quiet = opts.quiet
if opts.time_it or opts.time_details:
opts.force = True
scan_count = 0
lang_warnings = set()
tree = None
for path in _paths_from_path_patterns(path_patterns,
recursive=opts.recursive,
includes=opts.includes):
if opts.time_it:
sys.stderr.write(path + "\n")
if opts.time_details:
start1 = time.time()
try:
lang = opts.lang or guess_lang_from_path(path)
except CodeIntelError:
self.log.info("skip `%s': couldn't determine language", path)
continue
try:
buf = mgr.buf_from_path(path, lang=lang)
except OSError as ex:
# Couldn't access the file.
if not opts.recursive:
raise
# Ignore files we don't really care about.
self.log.warn("%r - %r", ex, path)
continue
if not isinstance(buf, CitadelBuffer):
if opts.recursive:
# Ignore files that scanning isn't provided for.
continue
raise CodeIntelError("`%s' (%s) is not a language that "
"uses CIX" % (path, buf.lang))
scan_count += 1
if scan_count % 10 == 0:
self.log.info("%d scanning %r", scan_count, path)
try:
if opts.force:
buf.scan()
if tree is None:
tree = ET.Element("codeintel", version="2.0")
file_elem = ET.SubElement(tree, "file",
lang=buf.lang,
mtime=str(int(time.time())),
path=os.path.basename(path))
for lang, blob in sorted(buf.blob_from_lang.items()):
blob = buf.blob_from_lang[lang]
file_elem.append(blob)
except KeyError as ex:
# Unknown cile language.
if not opts.recursive:
raise
message = str(ex)
if message not in lang_warnings:
lang_warnings.add(message)
self.log.warn("Skipping unhandled language %s", message)
if opts.time_details:
delta = time.time() - start1
sys.stderr.write("%.3f %s\n" % (delta, path))
sys.stderr.flush()
if tree is not None:
if opts.stripfuncvars:
# For stdlibs, we don't care about variables inside of
# functions and they take up a lot of space.
for function in tree.getiterator('scope'):
if function.get('ilk') == 'function':
function[:] = [child for child in function
if child.tag != 'variable']
if opts.pretty_print:
tree = pretty_tree_from_tree(tree)
if not quiet:
sys.stdout.write('<?xml version="1.0" encoding="UTF-8"?>\n')
ET.dump(tree)
#.........这里部分代码省略.........
示例13: do_outline
def do_outline(self, subcmd, opts, path):
"""Print code outline of the given file.
You can specify a lookup path into the file code outline to
display via URL-anchor syntax, e.g.:
ci2 outline path/to/foo.py#AClass.amethod
${cmd_usage}
${cmd_option_list}
"""
import re
from ci2 import _outline_ci_elem
from codeintel2.manager import Manager
from codeintel2.util import tree_from_cix
mgr = Manager()
mgr.upgrade()
mgr.initialize()
try:
if '#' in path:
path, anchor = path.rsplit('#', 1)
else:
anchor = None
if path.endswith(".cix"):
tree = tree_from_cix(open(path, 'r').read())
# buf = mgr.buf_from_content("", tree[0].get("lang"), path=path)
else:
buf = mgr.buf_from_path(path, lang=opts.lang)
tree = buf.tree
if anchor is not None:
# Lookup the anchor in the codeintel CIX tree.
lpath = re.split(r'\.|::', anchor)
def blobs_from_tree(tree):
for file_elem in tree:
for blob in file_elem:
yield blob
for elem in blobs_from_tree(tree):
# Generally have 3 types of codeintel trees:
# 1. single-lang file: one <file>, one <blob>
# 2. multi-lang file: one <file>, one or two <blob>'s
# 3. CIX stdlib/catalog file: possibly multiple
# <file>'s, likely multiple <blob>'s
# Allow the first token to be the blob name or lang.
# (This can sometimes be weird, but seems the most
# convenient solution.)
if lpath[0] in (elem.get("name"), elem.get("lang")):
remaining_lpath = lpath[1:]
else:
remaining_lpath = lpath
for name in remaining_lpath:
try:
elem = elem.names[name]
except KeyError:
elem = None
break # try next lang blob
if elem is not None:
break # found one
else:
self.log.error("could not find `%s' definition (or blob) in `%s'",
anchor, path)
return 1
else:
elem = tree
try:
_outline_ci_elem(elem, brief=opts.brief, doSort=opts.doSort)
except IOError as ex:
if ex.errno == 0:
# Ignore this error from aborting 'less' of 'ci2 outline'
# output:
# IOError: (0, 'Error')
pass
else:
raise
finally:
mgr.finalize()
示例14: do_outline
def do_outline(self, subcmd, opts, path):
"""Scan and outline the structure of the given path.
${cmd_usage}
${cmd_option_list}
"""
extra_lang_module_dirs = []
if koextlib.is_ext_dir() and exists("pylib"):
sys.path.append(abspath("pylib"))
extra_lang_module_dirs = [sys.path[-1]]
mgr = Manager(extra_lang_module_dirs=extra_lang_module_dirs)
mgr.upgrade()
mgr.initialize()
try:
if "#" in path:
path, anchor = path.rsplit("#", 1)
else:
anchor = None
tree = None
try:
lang = opts.lang or guess_lang_from_path(path)
except CodeIntelError:
log.info("skip `%s': couldn't determine language " "(use --lang option)", path)
return
if path.endswith(".cix"):
tree = tree_from_cix(open(path, "r").read())
# buf = mgr.buf_from_content("", tree[0].get("lang"), path=path)
else:
buf = mgr.buf_from_path(path, lang=opts.lang)
if not isinstance(buf, CitadelBuffer):
raise CodeIntelError("`%s' (%s) is not a language that " "uses CIX" % (path, buf.lang))
tree = buf.tree
if anchor is not None:
# Lookup the anchor in the codeintel CIX tree.
lpath = re.split(r"\.|::", anchor)
def blobs_from_tree(tree):
for file_elem in tree:
for blob in file_elem:
yield blob
for elem in blobs_from_tree(tree):
# Generally have 3 types of codeintel trees:
# 1. single-lang file: one <file>, one <blob>
# 2. multi-lang file: one <file>, one or two <blob>'s
# 3. CIX stdlib/catalog file: possibly multiple
# <file>'s, likely multiple <blob>'s
# Allow the first token to be the blob name or lang.
# (This can sometimes be weird, but seems the most
# convenient solution.)
if lpath[0] in (elem.get("name"), elem.get("lang")):
remaining_lpath = lpath[1:]
else:
remaining_lpath = lpath
for name in remaining_lpath:
try:
elem = elem.names[name]
except KeyError:
elem = None
break # try next lang blob
if elem is not None:
break # found one
else:
log.error("could not find `%s' definition (or blob) in `%s'", anchor, path)
return 1
else:
elem = tree
try:
_outline_ci_elem(mgr, elem, quiet=opts.quiet)
except IOError, ex:
if ex.errno == 0:
# Ignore this error from aborting 'less' of this
# command:
# IOError: (0, 'Error')
pass
else:
raise
finally:
mgr.finalize()
示例15: dict
self.send_response(200)
self.end_headers()
self.wfile.write(process(source, dict(args)))
def log_message(self, format, *args):
return # log silently
logStream = logging.StreamHandler(sys.stderr)
logStream.setFormatter(logging.Formatter("%(name)s: %(levelname)s: %(message)s"))
logging.getLogger("codeintel").addHandler(logStream)
logger = logging.getLogger("codeintel_server")
logger.addHandler(logStream)
logger.setLevel(logging.WARNING)
manager = Manager(
# db_base_dir = path.join(CI_DIR, 'db'),
# extra_module_dirs = [path.join(CI_DIR, 'codeintel2'),],
# db_import_everything_langs = None,
# db_catalog_dirs = []
)
manager.upgrade()
manager.initialize()
scanned_langs = []
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Run codeintel commands as a daemon or via stdin")
parser.add_argument("mode", help="Mode of operation", choices=["daemon", "completions", "definitions", "calltips", "catalogs"])
parser.add_argument("--row", type=int, help="The row to read from")
parser.add_argument("--column", type=int, help="The column to read from")
parser.add_argument("--path", help="The path of the file")
parser.add_argument("--basedir", help="The basedir of the file")
parser.add_argument("--language", help="The language of the file")
parser.add_argument("--port", type=int, help="The port for the daemon to listen on")