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
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']
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"]
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"]