예제 #1
0
 def update(cls, content, dependency, version, spec="==", hashes=()):
     data = toml.loads(content)
     if data:
         for package_type in ['packages', 'dev-packages']:
             if package_type in data:
                 if dependency.full_name in data[package_type]:
                     data[package_type][
                         dependency.full_name] = "{spec}{version}".format(
                             spec=spec, version=version)
     try:
         from pipenv.project import Project
     except ImportError:
         raise ImportError(
             "Updating a Pipfile requires the pipenv extra to be installed. Install it with "
             "pip install dparse[pipenv]")
     pipfile = tempfile.NamedTemporaryFile(delete=False)
     p = Project(chdir=False)
     p.write_toml(data=data, path=pipfile.name)
     data = open(pipfile.name).read()
     os.remove(pipfile.name)
     return data
예제 #2
0
def test_local_extras_install(PipenvInstance, pypi, line, pipfile):
    """Test -e .[extras] installs... note that the extras themselves
    are currently not landing in the lockfile for reasons that are unclear.
    """
    with PipenvInstance(pypi=pypi, chdir=True) as p:
        project = Project()
        setup_py = os.path.join(p.path, 'setup.py')
        with open(setup_py, 'w') as fh:
            contents = """
from setuptools import setup, find_packages
setup(
name='testpipenv',
version='0.1',
description='Pipenv Test Package',
author='Pipenv Test',
author_email='*****@*****.**',
license='MIT',
packages=find_packages(),
install_requires=[],
extras_require={'dev': ['six']},
zip_safe=False
)
            """.strip()
            fh.write(contents)
        project.write_toml({'packages': pipfile, 'dev-packages': {}})
        c = p.pipenv('install')
        assert c.return_code == 0
        assert 'testpipenv' in p.lockfile['default']
        assert p.lockfile['default']['testpipenv']['extras'] == ['dev']
        assert 'six' in p.lockfile['default']
        c = p.pipenv('--rm')
        assert c.return_code == 0
        project.write_toml({'packages': {}, 'dev-packages': {}})
        c = p.pipenv('install {0}'.format(line))
        assert c.return_code == 0
        assert 'testpipenv' in p.pipfile['packages']
        assert p.pipfile['packages']['testpipenv']['path'] == '.'
        assert p.pipfile['packages']['testpipenv']['extras'] == ['dev']
        assert 'six' in p.lockfile['default']
예제 #3
0
def test_local_extras_install(PipenvInstance, pypi, line, pipfile):
    """Ensure -e .[extras] installs.
    """
    with PipenvInstance(pypi=pypi, chdir=True) as p:
        project = Project()
        setup_py = os.path.join(p.path, "setup.py")
        with open(setup_py, "w") as fh:
            contents = """
from setuptools import setup, find_packages
setup(
name='testpipenv',
version='0.1',
description='Pipenv Test Package',
author='Pipenv Test',
author_email='*****@*****.**',
license='MIT',
packages=find_packages(),
install_requires=[],
extras_require={'dev': ['six']},
zip_safe=False
)
            """.strip()
            fh.write(contents)
        project.write_toml({"packages": pipfile, "dev-packages": {}})
        c = p.pipenv("install")
        assert c.return_code == 0
        assert "testpipenv" in p.lockfile["default"]
        assert p.lockfile["default"]["testpipenv"]["extras"] == ["dev"]
        assert "six" in p.lockfile["default"]
        c = p.pipenv("--rm")
        assert c.return_code == 0
        project.write_toml({"packages": {}, "dev-packages": {}})
        c = p.pipenv("install {0}".format(line))
        assert c.return_code == 0
        assert "testpipenv" in p.pipfile["packages"]
        assert p.pipfile["packages"]["testpipenv"]["path"] == "."
        assert p.pipfile["packages"]["testpipenv"]["extras"] == ["dev"]
        assert "six" in p.lockfile["default"]
예제 #4
0
def test_local_extras_install(PipenvInstance, pypi, line, pipfile):
    """Ensure -e .[extras] installs.
    """
    with PipenvInstance(pypi=pypi, chdir=True) as p:
        project = Project()
        setup_py = os.path.join(p.path, "setup.py")
        with open(setup_py, "w") as fh:
            contents = """
from setuptools import setup, find_packages
setup(
name='testpipenv',
version='0.1',
description='Pipenv Test Package',
author='Pipenv Test',
author_email='*****@*****.**',
license='MIT',
packages=find_packages(),
install_requires=[],
extras_require={'dev': ['six']},
zip_safe=False
)
            """.strip()
            fh.write(contents)
        project.write_toml({"packages": pipfile, "dev-packages": {}})
        c = p.pipenv("install")
        assert c.return_code == 0
        assert "testpipenv" in p.lockfile["default"]
        assert p.lockfile["default"]["testpipenv"]["extras"] == ["dev"]
        assert "six" in p.lockfile["default"]
        c = p.pipenv("--rm")
        assert c.return_code == 0
        project.write_toml({"packages": {}, "dev-packages": {}})
        c = p.pipenv("install {0}".format(line))
        assert c.return_code == 0
        assert "testpipenv" in p.pipfile["packages"]
        assert p.pipfile["packages"]["testpipenv"]["path"] == "."
        assert p.pipfile["packages"]["testpipenv"]["extras"] == ["dev"]
        assert "six" in p.lockfile["default"]