Skip to content

Instantly share code, notes, and snippets.

@sobolevn
Created February 18, 2019 15:34
Show Gist options
  • Save sobolevn/665695b82e4259e9875875167b111e35 to your computer and use it in GitHub Desktop.
Save sobolevn/665695b82e4259e9875875167b111e35 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import json
import toml
def read_pipenv_lock():
with open('Pipfile.lock') as lock:
return json.loads(lock.read())
def read_pipenv():
with open('Pipfile') as pipfile:
return toml.loads(pipfile.read())
def convert_version(version):
return version.replace('==', '^')
def to_name_version_notation(pipfile, lock, section):
category = 'packages' if section == 'default' else 'dev-packages'
notations = {}
dependencies = lock[section]
for dep in dependencies:
if dep not in pipfile[category]:
continue
notations.update({
dep: convert_version(dependencies[dep]['version']),
})
return notations
pipfile = read_pipenv()
lock = read_pipenv_lock()
for section in ['default', 'develop']:
print('Section:', section)
current = to_name_version_notation(pipfile, lock, section)
for dep, version in current.items():
print(dep, '=', '"' + version + '"')
print()
@orsinium
Copy link

dephell deps convert --from=Pipfile --to-format poetry --to-path pyproject.toml

And then you have a valid poetry file 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment