def __init__(self, settings): """Prepare to call daemon. :type settings: dict """ python_virtualenv = settings.get('python_virtualenv') python_interpreter = settings.get('python_interpreter') logger.debug('Jedi Environment: {0}'.format( (python_virtualenv, python_interpreter))) if python_virtualenv: self.env = environment.create_environment(python_virtualenv, safe=False) elif python_interpreter: self.env = environment.create_environment(python_interpreter, safe=False) else: self.env = jedi.get_default_environment() self.sys_path = self.env.get_sys_path() # prepare the extra packages if any extra_packages = settings.get('extra_packages') if extra_packages: self.sys_path = extra_packages + self.sys_path # how to autocomplete arguments self.complete_funcargs = settings.get('complete_funcargs')
def __init__(self, settings): """Prepare to call daemon. :type settings: dict """ python_virtualenv = settings.get('python_virtualenv') python_interpreter = settings.get('python_interpreter') logger.debug('Jedi Environment: {0}'.format( (python_virtualenv, python_interpreter)) ) if python_virtualenv: self.env = environment.create_environment(python_virtualenv, safe=False) elif python_interpreter: self.env = environment.create_environment(python_interpreter, safe=False) else: self.env = jedi.get_default_environment() self.sys_path = self.env.get_sys_path() # prepare the extra packages if any extra_packages = settings.get('extra_packages') if extra_packages: self.sys_path = extra_packages + self.sys_path # how to autocomplete arguments self.complete_funcargs = settings.get('complete_funcargs')
def get_environment(self): if self._environment is None: if self._environment_path is not None: self._environment = create_environment(self._environment_path, safe=False) else: self._environment = get_cached_default_environment() return self._environment
def test_venv_and_pths(venv_path): pjoin = os.path.join CUR_DIR = os.path.dirname(__file__) site_pkg_path = pjoin(venv_path, 'lib') if os.name == 'nt': site_pkg_path = pjoin(site_pkg_path, 'site-packages') else: site_pkg_path = glob(pjoin(site_pkg_path, 'python*', 'site-packages'))[0] shutil.rmtree(site_pkg_path) shutil.copytree(pjoin(CUR_DIR, 'sample_venvs', 'pth_directory'), site_pkg_path) virtualenv = create_environment(venv_path) venv_paths = virtualenv.get_sys_path() ETALON = [ # For now disable egg-links. I have no idea how they work... ~ dave #pjoin('/path', 'from', 'egg-link'), #pjoin(site_pkg_path, '.', 'relative', 'egg-link', 'path'), site_pkg_path, pjoin(site_pkg_path, 'dir-from-foo-pth'), '/foo/smth.py:module', # Not sure why it's added twice. It has to do with site.py which is not # something we can change. However this obviously also doesn't matter. '/foo/smth.py:from_func', '/foo/smth.py:from_func', ] # Ensure that pth and egg-link paths were added. assert venv_paths[-len(ETALON):] == ETALON # Ensure that none of venv dirs leaked to the interpreter. assert not set(sys.path).intersection(ETALON)
def test_venv_and_pths(venv_path): pjoin = os.path.join CUR_DIR = os.path.dirname(__file__) site_pkg_path = pjoin(venv_path, 'lib') if os.name == 'nt': site_pkg_path = pjoin(site_pkg_path, 'site-packages') else: site_pkg_path = glob(pjoin(site_pkg_path, 'python*', 'site-packages'))[0] shutil.rmtree(site_pkg_path) shutil.copytree(pjoin(CUR_DIR, 'sample_venvs', 'pth_directory'), site_pkg_path) virtualenv = create_environment(venv_path) venv_paths = virtualenv.get_sys_path() ETALON = [ # For now disable egg-links. I have no idea how they work... ~ dave #pjoin('/path', 'from', 'egg-link'), #pjoin(site_pkg_path, '.', 'relative', 'egg-link', 'path'), site_pkg_path, pjoin(site_pkg_path, 'dir-from-foo-pth'), '/foo/smth.py:module', # Not sure why it's added twice. It has to do with site.py which is not # something we can change. However this obviously also doesn't matter. '/foo/smth.py:from_func', '/foo/smth.py:from_func', ] # Ensure that pth and egg-link paths were added. assert venv_paths[-len(ETALON):] == ETALON # Ensure that none of venv dirs leaked to the interpreter. assert not set(sys.path).intersection(ETALON)
def __init__(self, view, settings): """Prepare to call daemon. :type settings: dict Parameters ---------- settings : TYPE Description """ view_context = utils.get_view_context(view) python_virtualenv = settings.get("python_virtualenv").get( sublime.platform(), "") python_interpreter = settings.get("python_interpreter").get( sublime.platform(), "") if python_virtualenv: logger.debug("Jedi Environment: {0}".format(python_virtualenv)) self.env = environment.create_environment( utils.substitute_variables(view_context, python_virtualenv), safe=False) elif python_interpreter: logger.debug("Jedi Environment: {0}".format(python_interpreter)) self.env = environment.create_environment( utils.substitute_variables(view_context, python_interpreter), safe=False) else: self.env = jedi.get_default_environment() self.sys_path = self.env.get_sys_path() # prepare the extra packages if any extra_packages = settings.get("python_package_paths").get( sublime.platform(), []) if extra_packages: logger.debug("Jedi Extra Packages: {0}".format(extra_packages)) self.sys_path = utils.substitute_variables( view_context, extra_packages) + self.sys_path
def test_create_environment_executable(): environment = create_environment(sys.executable) assert environment.executable == sys.executable
def test_create_environment_venv_path(venv_path): environment = create_environment(venv_path) assert environment.path == venv_path