Beispiel #1
0
    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')
Beispiel #2
0
    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')
Beispiel #3
0
 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)
Beispiel #5
0
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)
Beispiel #6
0
    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