diff --git a/pipenv/patched/pipfile/api.py b/pipenv/patched/pipfile/api.py index 08aa49c3..18a1ea23 100644 --- a/pipenv/patched/pipfile/api.py +++ b/pipenv/patched/pipfile/api.py @@ -9,6 +9,13 @@ import sys import os +DEFAULT_SOURCE = { + u'url': u'https://pypi.python.org/simple', + u'verify_ssl': True, + u'name': u'pypi', +} + + def format_full_version(info): version = '{0.major}.{0.minor}.{0.micro}'.format(info) kind = info.releaselevel @@ -89,7 +96,7 @@ class PipfileParser(object): # Load the default configuration. default_config = { - u'source': [{u'url': u'https://pypi.python.org/simple', u'verify_ssl': True, 'name': "pypi"}], + u'source': [DEFAULT_SOURCE], u'packages': {}, u'requires': {}, u'dev-packages': {} diff --git a/pipenv/project.py b/pipenv/project.py index 7c33fb28..9da86876 100644 --- a/pipenv/project.py +++ b/pipenv/project.py @@ -12,6 +12,7 @@ import hashlib import contoml import delegator import pipfile +import pipfile.api import toml from pip9 import ConfigOptionParser @@ -51,6 +52,26 @@ if PIPENV_PIPFILE: _pipfile_cache = {} +if PIPENV_TEST_INDEX: + DEFAULT_SOURCE = { + u'url': PIPENV_TEST_INDEX, + u'verify_ssl': True, + u'name': u'custom', + } +else: + DEFAULT_SOURCE = { + u'url': u'https://pypi.python.org/simple', + u'verify_ssl': True, + u'name': u'pypi', + } + +pipfile.api.DEFAULT_SOURCE = DEFAULT_SOURCE + + +class SourceNotFound(KeyError): + pass + + class Project(object): """docstring for Project""" @@ -490,35 +511,20 @@ class Project(object): config_parser = ConfigOptionParser(name=self.name) install = dict(config_parser.get_config_section('install')) indexes = install.get('extra-index-url', '').lstrip('\n').split('\n') - if PIPENV_TEST_INDEX: - sources = [ - { - u'url': PIPENV_TEST_INDEX, - u'verify_ssl': True, - u'name': u'custom', - } - ] - else: - # Default source. - pypi_source = { - u'url': u'https://pypi.python.org/simple', - u'verify_ssl': True, - u'name': 'pypi', - } - sources = [pypi_source] - for i, index in enumerate(indexes): - if not index: - continue + sources = [DEFAULT_SOURCE] + for i, index in enumerate(indexes): + if not index: + continue - source_name = 'pip_index_{}'.format(i) - verify_ssl = index.startswith('https') - sources.append( - { - u'url': index, - u'verify_ssl': verify_ssl, - u'name': source_name, - } - ) + source_name = 'pip_index_{}'.format(i) + verify_ssl = index.startswith('https') + sources.append( + { + u'url': index, + u'verify_ssl': verify_ssl, + u'name': source_name, + } + ) data = { u'source': sources, # Default packages. @@ -565,23 +571,8 @@ class Project(object): if 'source' in self.parsed_pipfile: return self.parsed_pipfile['source'] - - elif PIPENV_TEST_INDEX: - return [ - { - u'url': PIPENV_TEST_INDEX, - u'verify_ssl': True, - u'name': u'custom', - } - ] else: - return [ - { - u'url': u'https://pypi.python.org/simple', - u'verify_ssl': True, - u'name': u'pypi', - } - ] + return [DEFAULT_SOURCE] def get_source(self, name=None, url=None): for source in self.sources: @@ -592,6 +583,7 @@ class Project(object): elif url: if source.get('url') in url: return source + raise SourceNotFound(name or url) def destroy_lockfile(self): """Deletes the lockfile."""