mirror of
https://github.com/kennethreitz/pipenv.git
synced 2026-06-05 22:50:18 +00:00
refactor
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
||||
from .core import *
|
||||
from .cli import cli
|
||||
@@ -11,6 +11,8 @@ import toml
|
||||
import _pipfile as pipfile
|
||||
|
||||
from .project import Project
|
||||
from .utils import format_toml, multi_split
|
||||
from .utils import convert_deps_from_pip, convert_deps_to_pip
|
||||
|
||||
__version__ = '0.1.4'
|
||||
|
||||
@@ -30,85 +32,6 @@ def ensure_latest_pip():
|
||||
click.echo(crayons.blue(c.out))
|
||||
|
||||
|
||||
def format_toml(data):
|
||||
"""Pretty-formats a given toml string."""
|
||||
data = data.split('\n')
|
||||
for i, line in enumerate(data):
|
||||
if i > 0:
|
||||
if line.startswith('['):
|
||||
data[i] = '\n{}'.format(line)
|
||||
|
||||
return '\n'.join(data)
|
||||
|
||||
|
||||
|
||||
def multi_split(s, split):
|
||||
"""Splits on multiple given seperators."""
|
||||
for r in split:
|
||||
s = s.replace(r, '|')
|
||||
|
||||
return [i for i in s.split('|') if len(i) > 0]
|
||||
|
||||
|
||||
def convert_deps_from_pip(dep):
|
||||
""""Converts a pip-formatted dependency to a Pipfile-formatted one."""
|
||||
dependency = {}
|
||||
|
||||
# Comparison operators: e.g. Django>1.10
|
||||
if '=' in dep or '<' in dep or '>' in dep:
|
||||
r = multi_split(dep, '=<>')
|
||||
dependency[r[0]] = dep[len(r[0]):]
|
||||
|
||||
# Extras: e.g. requests[socks]
|
||||
elif '[' in dep:
|
||||
r = multi_split(dep, '[]')
|
||||
dependency[r[0]] = {'extras': r[1].split(',')}
|
||||
|
||||
# TODO: Editable installs.
|
||||
# if dep.startswith('-e'):
|
||||
|
||||
# Bare dependencies: e.g. requests
|
||||
else:
|
||||
dependency[dep] = '*'
|
||||
|
||||
return dependency
|
||||
|
||||
|
||||
def convert_deps_to_pip(deps):
|
||||
""""Converts a Pipfile-formatteddependency to a pip-formatted one."""
|
||||
dependencies = []
|
||||
|
||||
for dep in deps.keys():
|
||||
# Default (e.g. '>1.10').
|
||||
extra = deps[dep]
|
||||
|
||||
# Get rid of '*'.
|
||||
if deps[dep] == '*' or str(extra) == '{}':
|
||||
extra = ''
|
||||
|
||||
# Support for extras (e.g. requests[socks])
|
||||
if 'extras' in deps[dep]:
|
||||
extra = '[{}]'.format(deps[dep]['extras'][0])
|
||||
|
||||
# Support for git.
|
||||
if 'git' in deps[dep]:
|
||||
extra = 'git+{}'.format(deps[dep]['git'])
|
||||
|
||||
# Support for @refs.
|
||||
if 'ref' in deps[dep]:
|
||||
extra += '@{}'.format(deps[dep]['ref'])
|
||||
|
||||
# Support for editable.
|
||||
if 'editable' in deps[dep]:
|
||||
# Support for --egg.
|
||||
extra += ' --egg={}'.format(dep)
|
||||
dep = '-e '
|
||||
|
||||
dependencies.append('{}{}'.format(dep, extra))
|
||||
|
||||
return dependencies
|
||||
|
||||
|
||||
|
||||
def do_where(virtualenv=False, bare=True):
|
||||
"""Executes the where functionality."""
|
||||
@@ -215,7 +138,7 @@ def activate_virtualenv(source=True):
|
||||
def do_activate_virtualenv(bare=False):
|
||||
"""Executes the activate virtualenv functionality."""
|
||||
if not bare:
|
||||
click.echo('To activate this project\'s virtualenv, run the following:\n $ {}'.format(crayons.red(activate_virtualenv())))
|
||||
click.echo('To activate this project\'s virtualenv, run the following:\n $ {}'.format(crayons.red('pipenv shell')))
|
||||
else:
|
||||
click.echo(activate_virtualenv())
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
import delegator
|
||||
import click
|
||||
|
||||
|
||||
def format_toml(data):
|
||||
"""Pretty-formats a given toml string."""
|
||||
data = data.split('\n')
|
||||
for i, line in enumerate(data):
|
||||
if i > 0:
|
||||
if line.startswith('['):
|
||||
data[i] = '\n{}'.format(line)
|
||||
|
||||
return '\n'.join(data)
|
||||
|
||||
|
||||
|
||||
def multi_split(s, split):
|
||||
"""Splits on multiple given seperators."""
|
||||
for r in split:
|
||||
s = s.replace(r, '|')
|
||||
|
||||
return [i for i in s.split('|') if len(i) > 0]
|
||||
|
||||
|
||||
def convert_deps_from_pip(dep):
|
||||
""""Converts a pip-formatted dependency to a Pipfile-formatted one."""
|
||||
dependency = {}
|
||||
|
||||
# Comparison operators: e.g. Django>1.10
|
||||
if '=' in dep or '<' in dep or '>' in dep:
|
||||
r = multi_split(dep, '=<>')
|
||||
dependency[r[0]] = dep[len(r[0]):]
|
||||
|
||||
# Extras: e.g. requests[socks]
|
||||
elif '[' in dep:
|
||||
r = multi_split(dep, '[]')
|
||||
dependency[r[0]] = {'extras': r[1].split(',')}
|
||||
|
||||
# TODO: Editable installs.
|
||||
# if dep.startswith('-e'):
|
||||
|
||||
# Bare dependencies: e.g. requests
|
||||
else:
|
||||
dependency[dep] = '*'
|
||||
|
||||
return dependency
|
||||
|
||||
|
||||
def convert_deps_to_pip(deps):
|
||||
""""Converts a Pipfile-formatteddependency to a pip-formatted one."""
|
||||
dependencies = []
|
||||
|
||||
for dep in deps.keys():
|
||||
# Default (e.g. '>1.10').
|
||||
extra = deps[dep]
|
||||
|
||||
# Get rid of '*'.
|
||||
if deps[dep] == '*' or str(extra) == '{}':
|
||||
extra = ''
|
||||
|
||||
# Support for extras (e.g. requests[socks])
|
||||
if 'extras' in deps[dep]:
|
||||
extra = '[{}]'.format(deps[dep]['extras'][0])
|
||||
|
||||
# Support for git.
|
||||
if 'git' in deps[dep]:
|
||||
extra = 'git+{}'.format(deps[dep]['git'])
|
||||
|
||||
# Support for @refs.
|
||||
if 'ref' in deps[dep]:
|
||||
extra += '@{}'.format(deps[dep]['ref'])
|
||||
|
||||
# Support for editable.
|
||||
if 'editable' in deps[dep]:
|
||||
# Support for --egg.
|
||||
extra += ' --egg={}'.format(dep)
|
||||
dep = '-e '
|
||||
|
||||
dependencies.append('{}{}'.format(dep, extra))
|
||||
|
||||
return dependencies
|
||||
Reference in New Issue
Block a user