Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

setup.py best practices? #742

Closed
AlJohri opened this issue Sep 28, 2017 · 54 comments
Closed

setup.py best practices? #742

AlJohri opened this issue Sep 28, 2017 · 54 comments

Comments

@AlJohri
Copy link
Contributor

AlJohri commented Sep 28, 2017

I'm trying to understand the best practices for handling setup.py files with pipenv. Running into a few issues.

  1. it seems as though requests[security] is not respected? I'm getting an ImportError: No module named ipaddress after doing a pipenv install. I do see idna and pyopenssl getting installed though.
  2. when I change dependencies in my setup.py, and then try to run pipenv install or pipenv update those changes seem to not be respected since it's using the Pipfile.lock. I have to do some combination of deleting the Pipfile.lock or pipenv --rm before I can get the changes to register.

what's the best way to handle this type of stuff?

[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages]
"286599a" = {path = ".", editable = true}

[dev-packages]
from setuptools import setup, find_packages

setup(
    name='congressionalrecord2',
    version='0.9.1',
    description='Parse the U.S. Congressional Record from FDsys.',
    url='https://github.com/unitedstates/congressional-record',
    author='Nick Judd',
    author_email='nick@nclarkjudd.com',
    license='BSD3',
    packages=find_packages(),
    install_requires=[
        'beautifulsoup4 >= 4.4.0',
        'lxml >= 3.3.5',
        'numpy >= 1.9.0',
        'psycopg2 >= 2.6.1',
        'pyelasticsearch >= 1.4',
        'SQLAlchemy >= 1.0.8',
        'requests[security]',
        'PyYAML >= 3.11',
        'enum34',
        'unicodecsv',
        'future'
        ],
        zip_safe=False
    )
@kennethreitz
Copy link
Contributor

Run pipenv lock at any time to re-generate your lockfile.

@kennethreitz
Copy link
Contributor

requests[security] is being respected for me. look at the contents of your lockfile.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

Aha! That's what pipenv lock is for. Cool. However, I think there's still an issue with requests[security]:

$ pipenv --rm
Removing virtualenv (/Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u)…
$ pipenv lock --python 2.7
Creating a virtualenv for this project…
Using /Users/johria/.pyenv/versions/2.7.13/bin/python2.7 to create virtualenv…
⠋Running virtualenv with interpreter /Users/johria/.pyenv/versions/2.7.13/bin/python2.7
New python executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python2.7
Also creating executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock!
$ pipenv install --python 2.7 --dev
Virtualenv already exists!
Removing existing virtualenv…
Creating a virtualenv for this project…
Using /Users/johria/.pyenv/versions/2.7.13/bin/python2.7 to create virtualenv…
⠋Running virtualenv with interpreter /Users/johria/.pyenv/versions/2.7.13/bin/python2.7
New python executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python2.7
Also creating executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u
Installing dependencies from Pipfile.lock…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 24/24 — 00:00:25
To activate this project's virtualenv, run the following:
 $ pipenv shell
$ pipenv graph
congressionalrecord2==0.9.1
  - beautifulsoup4 [required: >=4.4.0, installed: 4.6.0]
  - enum34 [required: Any, installed: 1.1.6]
  - future [required: Any, installed: 0.16.0]
  - lxml [required: >=3.3.5, installed: 4.0.0]
  - numpy [required: >=1.9.0, installed: 1.13.1]
  - psycopg2 [required: >=2.6.1, installed: 2.7.3.1]
  - pyelasticsearch [required: >=1.4, installed: 1.4]
    - certifi [required: Any, installed: 2017.7.27.1]
    - elasticsearch [required: <2.0.0,>=1.3.0, installed: 1.9.0]
      - urllib3 [required: >=1.8,<2.0, installed: 1.22]
    - simplejson [required: >=3.0, installed: 3.11.1]
    - six [required: >=1.4.0,<2.0, installed: 1.11.0]
    - urllib3 [required: >=1.8,<2.0, installed: 1.22]
  - PyYAML [required: >=3.11, installed: 3.12]
  - requests [required: Any, installed: 2.18.4]
    - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.7, installed: 2.6]
    - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
  - SQLAlchemy [required: >=1.0.8, installed: 1.1.14]
  - unicodecsv [required: Any, installed: 0.14.1]
pyOpenSSL==17.3.0
  - cryptography [required: >=1.9, installed: 2.0.3]
    - asn1crypto [required: >=0.21.0, installed: 0.23.0]
    - cffi [required: >=1.7, installed: 1.11.0]
      - pycparser [required: Any, installed: 2.18]
    - enum34 [required: Any, installed: 1.1.6]
    - idna [required: >=2.1, installed: 2.6]
    - ipaddress [required: Any, installed: ?]
    - six [required: >=1.4.1, installed: 1.11.0]
  - six [required: >=1.5.2, installed: 1.11.0]

Notice the question mark next to ipaddress? I think it has to do with the fact that it's using my host python (3.6) and determining it doesn't need to install ipaddress ?

@kennethreitz
Copy link
Contributor

reproducing

@kennethreitz
Copy link
Contributor

cannot reproduce. ensure you're using the latest version.

@kennethreitz
Copy link
Contributor

we are not using the host python to determine if ipddress should be installed, we are using the one from the virtualenv.

but, that change happened recently. hence, make sure you're using the latest version.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

@kennethreitz okay, trying again

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

I still got the issue on pipenv, version 8.1.4. Let me try and make a repro repo

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

it worked just fine in my repro example. trying again...

@kennethreitz
Copy link
Contributor

see, works great :)

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

haha, gah, I'm still getting this error.

$ pipenv --rm
Removing virtualenv (/Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u)…
$ rm Pipfile.lock
$ pipenv install --python 2.7 --dev
Creating a virtualenv for this project…
Using /Users/johria/.pyenv/versions/2.7.13/bin/python2.7 to create virtualenv…
⠋Running virtualenv with interpreter /Users/johria/.pyenv/versions/2.7.13/bin/python2.7
New python executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python2.7
Also creating executable in /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /Users/johria/.local/share/virtualenvs/congressional-record-wnnDd4_u
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock!
Installing dependencies from Pipfile.lock…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 24/24 — 00:00:22
To activate this project's virtualenv, run the following:
 $ pipenv shell
$ pipenv graph
congressionalrecord==0.9.1
  - beautifulsoup4 [required: >=4.4.0, installed: 4.6.0]
  - enum34 [required: Any, installed: 1.1.6]
  - future [required: Any, installed: 0.16.0]
  - lxml [required: >=3.3.5, installed: 4.0.0]
  - numpy [required: >=1.9.0, installed: 1.13.2]
  - psycopg2 [required: >=2.6.1, installed: 2.7.3.1]
  - pyelasticsearch [required: >=1.4, installed: 1.4]
    - certifi [required: Any, installed: 2017.7.27.1]
    - elasticsearch [required: <2.0.0,>=1.3.0, installed: 1.9.0]
      - urllib3 [required: >=1.8,<2.0, installed: 1.22]
    - simplejson [required: >=3.0, installed: 3.11.1]
    - six [required: >=1.4.0,<2.0, installed: 1.11.0]
    - urllib3 [required: >=1.8,<2.0, installed: 1.22]
  - PyYAML [required: >=3.11, installed: 3.12]
  - requests [required: Any, installed: 2.18.4]
    - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.7, installed: 2.6]
    - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
  - SQLAlchemy [required: >=1.0.8, installed: 1.1.14]
  - unicodecsv [required: Any, installed: 0.14.1]
pyOpenSSL==17.3.0
  - cryptography [required: >=1.9, installed: 2.0.3]
    - asn1crypto [required: >=0.21.0, installed: 0.23.0]
    - cffi [required: >=1.7, installed: 1.11.0]
      - pycparser [required: Any, installed: 2.18]
    - enum34 [required: Any, installed: 1.1.6]
    - idna [required: >=2.1, installed: 2.6]
    - ipaddress [required: Any, installed: ?]
    - six [required: >=1.4.1, installed: 1.11.0]
  - six [required: >=1.5.2, installed: 1.11.0]

so weird! still getting the issue in the actual repo repeatedly. can't think of what could possibly be going wrong

@kennethreitz
Copy link
Contributor

is ip address in the lockfile?

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

@kennethreitz nope

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

I think I was able to reproduce: https://github.com/AlJohri/pipenv-issues

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

I just ran pipenv install --python 2.7 --dev locally in that repo

@kennethreitz
Copy link
Contributor

looks to me like you generated this lockfile with python 3. this is expected behavior, then.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

could you elaborate? I deleted the lockfile and ran pipenv install --python 2.7 --dev without a lockfile in place

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

just reproduced in docker with global python 2 (pushed)!

FROM python:2.7
RUN pip install --upgrade pipenv
RUN mkdir /app
WORKDIR /app
COPY Pipfile Pipfile
COPY Pipfile.lock Pipfile.lock
COPY . /app
RUN pipenv install --python 2.7 --dev
$ docker-compose run app pipenv graph
mypackage==0.0.1
  - beautifulsoup4 [required: >=4.4.0, installed: 4.6.0]
  - enum34 [required: Any, installed: 1.1.6]
  - future [required: Any, installed: 0.16.0]
  - lxml [required: >=3.3.5, installed: 4.0.0]
  - numpy [required: >=1.9.0, installed: 1.13.2]
  - psycopg2 [required: >=2.6.1, installed: 2.7.3.1]
  - pyelasticsearch [required: >=1.4, installed: 1.4]
    - certifi [required: Any, installed: 2017.7.27.1]
    - elasticsearch [required: <2.0.0,>=1.3.0, installed: 1.9.0]
      - urllib3 [required: >=1.8,<2.0, installed: 1.22]
    - simplejson [required: >=3.0, installed: 3.11.1]
    - six [required: >=1.4.0,<2.0, installed: 1.11.0]
    - urllib3 [required: >=1.8,<2.0, installed: 1.22]
  - PyYAML [required: >=3.11, installed: 3.12]
  - requests [required: Any, installed: 2.18.4]
    - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.7, installed: 2.6]
    - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
  - SQLAlchemy [required: >=1.0.8, installed: 1.1.14]
  - unicodecsv [required: Any, installed: 0.14.1]
pyOpenSSL==17.3.0
  - cryptography [required: >=1.9, installed: 2.0.3]
    - asn1crypto [required: >=0.21.0, installed: 0.23.0]
    - cffi [required: >=1.7, installed: 1.11.0]
      - pycparser [required: Any, installed: 2.18]
    - enum34 [required: Any, installed: 1.1.6]
    - idna [required: >=2.1, installed: 2.6]
    - ipaddress [required: Any, installed: ?]
    - six [required: >=1.4.1, installed: 1.11.0]
  - six [required: >=1.5.2, installed: 1.11.0]

@kennethreitz
Copy link
Contributor

and no lockfile was present?

@kennethreitz
Copy link
Contributor

look, if it's not in the lockfile, it's not going to get installed.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

screen shot 2017-09-27 at 9 20 36 pm

^ yeah see, Pipfile.lock is deleted before I run the command

@kennethreitz
Copy link
Contributor

cannot reproduce

@kennethreitz
Copy link
Contributor

is ipaddress in the lockfile that's generated? that's all that matters.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

it's not. can you try reproducing with docker? it should just be docker-compose build app && docker-compose run app cat Pipfile.lock

@kennethreitz
Copy link
Contributor

i don't have docker setup locally.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

got it, if you're willing brew cask install docker on mac works great for me.
otherwise, will travis help? I can do that instead

@kennethreitz
Copy link
Contributor

i'm not on my normal machine, i'm on a 12" macbook at the moment.

@kennethreitz
Copy link
Contributor

i'm convinced there is no bug here

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

let me retry without sending Pipfile.lock to docker, that might be the issue

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

I'm pretty reliably able to reproduce this in docker with global python 27 and virtualenv python 27 with no Pipfile.lock sent to docker. Full logs attached:

$ docker-compose build --no-cache app && docker-compose run app cat Pipfile.lock
Building app
Step 1/7 : FROM python:2.7
 ---> 26bddf7dbe1b
Step 2/7 : RUN pip install --upgrade pipenv
 ---> Running in a0a864b09298
Collecting pipenv
  Downloading pipenv-8.1.4.tar.gz (3.7MB)
Requirement already up-to-date: virtualenv in /usr/local/lib/python2.7/site-packages (from pipenv)
Collecting pew>=0.1.26 (from pipenv)
  Downloading pew-0.1.26-py2.py3-none-any.whl
Requirement already up-to-date: pip>=9.0.1 in /usr/local/lib/python2.7/site-packages (from pipenv)
Collecting pip-tools>=1.9.0 (from pipenv)
  Downloading pip_tools-1.10.1-py2.py3-none-any.whl
Collecting requests>2.18.0 (from pipenv)
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
Collecting flake8 (from pipenv)
  Downloading flake8-3.4.1-py2.py3-none-any.whl (68kB)
Collecting urllib3>=1.21.1 (from pipenv)
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
Collecting pathlib; python_version == "2.7" (from pew>=0.1.26->pipenv)
  Downloading pathlib-1.0.1.tar.gz (49kB)
Collecting pythonz-bd>=1.10.2 (from pew>=0.1.26->pipenv)
  Downloading pythonz-bd-1.11.4.tar.gz (86kB)
Collecting shutilwhich; python_version == "2.7" (from pew>=0.1.26->pipenv)
  Downloading shutilwhich-1.1.0.tar.gz
Collecting backports.shutil-get-terminal-size; python_version == "2.7" (from pew>=0.1.26->pipenv)
  Downloading backports.shutil_get_terminal_size-1.0.0-py2.py3-none-any.whl
Requirement already up-to-date: setuptools>=17.1 in /usr/local/lib/python2.7/site-packages (from pew>=0.1.26->pipenv)
Collecting virtualenv-clone>=0.2.5 (from pew>=0.1.26->pipenv)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting six (from pip-tools>=1.9.0->pipenv)
  Downloading six-1.11.0-py2.py3-none-any.whl
Collecting click>=6 (from pip-tools>=1.9.0->pipenv)
  Downloading click-6.7-py2.py3-none-any.whl (71kB)
Collecting first (from pip-tools>=1.9.0->pipenv)
  Downloading first-2.0.1-py2.py3-none-any.whl
Collecting idna<2.7,>=2.5 (from requests>2.18.0->pipenv)
  Downloading idna-2.6-py2.py3-none-any.whl (56kB)
Collecting certifi>=2017.4.17 (from requests>2.18.0->pipenv)
  Downloading certifi-2017.7.27.1-py2.py3-none-any.whl (349kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests>2.18.0->pipenv)
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting enum34; python_version < "3.4" (from flake8->pipenv)
  Downloading enum34-1.1.6-py2-none-any.whl
Collecting configparser; python_version < "3.2" (from flake8->pipenv)
  Downloading configparser-3.5.0.tar.gz
Collecting pyflakes<1.6.0,>=1.5.0 (from flake8->pipenv)
  Downloading pyflakes-1.5.0-py2.py3-none-any.whl (225kB)
Collecting mccabe<0.7.0,>=0.6.0 (from flake8->pipenv)
  Downloading mccabe-0.6.1-py2.py3-none-any.whl
Collecting pycodestyle<2.4.0,>=2.0.0 (from flake8->pipenv)
  Downloading pycodestyle-2.3.1-py2.py3-none-any.whl (45kB)
Building wheels for collected packages: pipenv, pathlib, pythonz-bd, shutilwhich, virtualenv-clone, configparser
  Running setup.py bdist_wheel for pipenv: started
  Running setup.py bdist_wheel for pipenv: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/6a/87/1c/136824655862cdb1fa3138a0e0b7ca06bba4e5eff217d56bf2
  Running setup.py bdist_wheel for pathlib: started
  Running setup.py bdist_wheel for pathlib: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/2a/23/a5/d8803db5d631e9f391fe6defe982a238bf5483062eeb34e841
  Running setup.py bdist_wheel for pythonz-bd: started
  Running setup.py bdist_wheel for pythonz-bd: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/04/de/c8/da2d21bb0112bb65bfb28bdf9ee8f2c819c25db143c32435b2
  Running setup.py bdist_wheel for shutilwhich: started
  Running setup.py bdist_wheel for shutilwhich: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/0e/28/70/d5cc6586f26d614b26901485f6f6072d35cbbb5bbeffb6ea43
  Running setup.py bdist_wheel for virtualenv-clone: started
  Running setup.py bdist_wheel for virtualenv-clone: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/24/51/ef/93120d304d240b4b6c2066454250a1626e04f73d34417b956d
  Running setup.py bdist_wheel for configparser: started
  Running setup.py bdist_wheel for configparser: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/1c/bd/b4/277af3f6c40645661b4cd1c21df26aca0f2e1e9714a1d4cda8
Successfully built pipenv pathlib pythonz-bd shutilwhich virtualenv-clone configparser
Installing collected packages: pathlib, pythonz-bd, shutilwhich, backports.shutil-get-terminal-size, virtualenv-clone, pew, six, click, first, pip-tools, idna, urllib3, certifi, chardet, requests, enum34, configparser, pyflakes, mccabe, pycodestyle, flake8, pipenv
Successfully installed backports.shutil-get-terminal-size-1.0.0 certifi-2017.7.27.1 chardet-3.0.4 click-6.7 configparser-3.5.0 enum34-1.1.6 first-2.0.1 flake8-3.4.1 idna-2.6 mccabe-0.6.1 pathlib-1.0.1 pew-0.1.26 pip-tools-1.10.1 pipenv-8.1.4 pycodestyle-2.3.1 pyflakes-1.5.0 pythonz-bd-1.11.4 requests-2.18.4 shutilwhich-1.1.0 six-1.11.0 urllib3-1.22 virtualenv-clone-0.2.6
 ---> 49efa66a7a08
Removing intermediate container a0a864b09298
Step 3/7 : RUN mkdir /app
 ---> Running in 45c23f9cc9ec
 ---> bf8604f70508
Removing intermediate container 45c23f9cc9ec
Step 4/7 : WORKDIR /app
 ---> 9f4923620dfc
Removing intermediate container 6764e129e11b
Step 5/7 : COPY . /app
 ---> 8346c32763c0
Removing intermediate container 68c489665489
Step 6/7 : RUN rm -f Pipfile.lock
 ---> Running in 0493b5210c34
 ---> 076ea5bb21c8
Removing intermediate container 0493b5210c34
Step 7/7 : RUN pipenv install --python 2.7 --dev
 ---> Running in da96d074050c
Creating a virtualenv for this project…
Using /usr/local/bin/python2.7 to create virtualenv…
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python2.7
Also creating executable in /root/.local/share/virtualenvs/app-4PlAip0Q/bin/python
Installing setuptools, pip, wheel...done.

Virtualenv location: /root/.local/share/virtualenvs/app-4PlAip0Q
Pipfile.lock not found, creating…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Updated Pipfile.lock!
Installing dependencies from Pipfile.lock…
To activate this project's virtualenv, run the following:
 $ pipenv shell
 ---> 20b1b21a0643
Removing intermediate container da96d074050c
Successfully built 20b1b21a0643
Successfully tagged pipenvissues_app:latest
{
    "_meta": {
        "hash": {
            "sha256": "0a6b374908a321bedf03e9c2fa3320b04d48d957548499ca4ef7f622f9e159fa"
        },
        "host-environment-markers": {
            "implementation_name": "cpython",
            "implementation_version": "0",
            "os_name": "posix",
            "platform_machine": "x86_64",
            "platform_python_implementation": "CPython",
            "platform_release": "4.9.41-moby",
            "platform_system": "Linux",
            "platform_version": "#1 SMP Fri Aug 18 01:58:38 UTC 2017",
            "python_full_version": "2.7.14",
            "python_version": "2.7",
            "sys_platform": "linux2"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "url": "https://pypi.python.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "asn1crypto": {
            "hashes": [
                "sha256:654b7db3b120e23474e9a1e5e38d268c77e58a9e17d2cb595456c37309846494",
                "sha256:0874981329cfebb366d6584c3d16e913f2a0eb026c9463efcc4aaf42a9d94d70"
            ],
            "version": "==0.23.0"
        },
        "beautifulsoup4": {
            "hashes": [
                "sha256:7015e76bf32f1f574636c4288399a6de66ce08fb7b2457f628a8d70c0fbabb11",
                "sha256:11a9a27b7d3bddc6d86f59fb76afb70e921a25ac2d6cc55b40d072bd68435a76",
                "sha256:808b6ac932dccb0a4126558f7dfdcf41710dd44a4ef497a0bb59a77f9f078e89"
            ],
            "version": "==4.6.0"
        },
        "certifi": {
            "hashes": [
                "sha256:54a07c09c586b0e4c619f02a5e94e36619da8e2b053e20f594348c0611803704",
                "sha256:40523d2efb60523e113b44602298f0960e900388cf3bb6043f645cf57ea9e3f5"
            ],
            "version": "==2017.7.27.1"
        },
        "cffi": {
            "hashes": [
                "sha256:eddf6bd95b100f34c56a226847be92bde416d028213e87fd700bc593cbf3e9da",
                "sha256:929d206ecfefadcec0b0e13956131eec7442829d240da020d67274fefb9e61a4",
                "sha256:040e0b5462c65a39b7112ad9e951f3f57b487d0db053ea510dcf8fc53931ab4b",
                "sha256:d361e8c504bae02f665fad8d5ba4b74a6c1fab7862eec39cddcc21e4479fa275",
                "sha256:56a8c39e6e7225474b36c16a03240fcbbfc5c8cb016645793e0dec2d2f9bdf67",
                "sha256:4d2e388ce51e6a4efae8d4533ca15503ea957c41233bad165f8ccec354edca67",
                "sha256:c091a1ac521dac2770632f499c124762ddf978d23ced0472f19a8830e006eab8",
                "sha256:5c20f34a6858cd8c59eac23f80bc80bb5fd294bd9b22b264255a3eec0ab459f5",
                "sha256:b45efc8d81640a8e9122c1ba1817da2a998ca0168c40de7bbfc47b960771ca94",
                "sha256:f2ffdfd930bc4bcd4900def32fbb2a16a91656d9caafff573a25934327140431",
                "sha256:bd93a0df4dc72893ba604c05d487ea4d47a799e54172b89e414953685b0b08fb",
                "sha256:45233398f5e7114e719d0b83ffd0642af7fbf05136195f500fb6b72133c8e998",
                "sha256:47853d133f0de32697b55e0c2ee377d88e3143bc8645a3b93d38be2f5387b0a2",
                "sha256:6f1a2f85510c675b068e29625ff534f02567f24839cbd7d61cda6b7df62da2b1",
                "sha256:6153b26756de2f34f80ca4e8b1e79011ad62bb670539dc3df71e62909a112fdf",
                "sha256:5152bbde6ee514a11e2cd1b76a7ccab5af1043356ec3df9efe0112d97b20dae3",
                "sha256:42b38cd48e55b2a4c5f038f80137c2cb4393fd4e4d1c3dbeeb7aea9475b68ea1",
                "sha256:f6202eab19fd2c44d7d7af2bb8d286cf18b7b3d67b0e5bf1f2f113c99303ff87",
                "sha256:ec1112466a924ba69df5a90f31d26d323e3b91ce21f94b10fa0b77f44a07df48",
                "sha256:7a55f044dd78fdca379d455550c581b9455af022b8f8b5d97f585a25f4da63f6",
                "sha256:fd3c49d7d22ba75382e19c4877e1d4dca232ef48137442f8582c2259b0cdf612",
                "sha256:a76b89adecd46138aafdbd348563df1deb714962b5b3659ee1b6b0c5cf6ae0e5",
                "sha256:dd9577197fff563e4784ef4ace7da28c7da96a81895b69c008cdb82f1e82853c",
                "sha256:2217d22cb001386947693bd93ca4370224989468daf2939f3bf717956fb0a119",
                "sha256:59fc30a6f7331fe69cfc67ef151fd03a33491d25430ae0c4597e69c4235fa87e",
                "sha256:8a5632592b2752375b6d9e81da022896ece235713129fcc33703b3e10c639ef9",
                "sha256:48d6589fda4ec0ccb7d973807890a733381f828d29167177eb7d97892255a769",
                "sha256:f14c53dc624529eef175c993ceb886f37ecece09825bf47bf3230aacbc3b7acc",
                "sha256:d8930a719781987a876d6de8cf33ce937191c383158daafcb9db804bf3421adf",
                "sha256:765cf591a2f790b012075c7f54344a02b622a8561708ec27b3042c8c1699a465",
                "sha256:5f4ff33371c6969b39b293d9771ee91e81d26f9129be093ca1b7be357fcefd15"
            ],
            "version": "==1.11.0"
        },
        "chardet": {
            "hashes": [
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
            ],
            "version": "==3.0.4"
        },
        "cryptography": {
            "hashes": [
                "sha256:b17e4244212c9ec6526b6ad47534a12e0378387ad86228141053c112e759769d",
                "sha256:1fb7dbf630daba53494da88de1e87429f2740e6ffdc92bbdcb385ddb9ff67b32",
                "sha256:369e4669cac8296e320f86d0a3c9f489b7593d2a144e7b0504b884bed56fd5d7",
                "sha256:15d655434cf6f350462c6c97f24cbf42ee0e6270886a7937eaaa52fd09e474ce",
                "sha256:b25d97585f1d2b2f16560737aba6257a10ca18aa3a2a70407c05fe8b64b375f9",
                "sha256:59d2b285fb24d30deaf4143c2d048fcefdd7e560f30cd1745da881705ca965c6",
                "sha256:fe6d56a4ff08875d70cc9b336fcd6e938db5808cb47cbc33c6927affb659aded",
                "sha256:d32dad8448ea88fe8eb02dc943d46db658cf9e618386761e498802c79e97c937",
                "sha256:d44db8e4435a10dcbf22fbc03072d18b31e6c1100084a2010239efd359f2f162",
                "sha256:a972eb37b6409a2d67ddd956e6bf74f2e9315105083d1fdaa8bbe6eb520dc367",
                "sha256:fb7dfc4b3a79ca4b9233803b80617fd302374e57771c9a28e32ee6c1296cdea3",
                "sha256:795af466e52daf404d783877157b106bc79e0cffa55f8d6360fa9f9fd03148bd",
                "sha256:4ffc706fbe4c12146050d432250896f2fcad8b77c6fd89d3c3bd456884dbf421",
                "sha256:317127295b14f5c943ed789ab60ade0d7d39041f8975d58a214af19dd1148705",
                "sha256:5c9e46b219e2b65ab9192e10407d7698589794407f15f11f39abbf3b04d16890",
                "sha256:27b7b005debcf4c0562299d5ceeaea151120eaad7bd84ef91fb22c204a958f03",
                "sha256:8bbff1de3002db5c7146b88fea392526260becc153adc8810103fc750c3eb333",
                "sha256:bb715b0d8d5c9111e9656eabe58ee7b95842a797c04608aef7f52439ab73d5f3",
                "sha256:bc86d3de2c7d63f3c73dff24fa43c55c00c7b8ea8102ed638c903c939b85e6a6",
                "sha256:2f0b681e89530750e4c0adf98701cafd0384ac160ceafe39c9d10be6034d2cc7",
                "sha256:5544d9433f9c25d55d609e2b014d47c390288bb98ae84e35b8cf93e9f6a6c832",
                "sha256:55cc98c93323efcf6f3300b6e9a7d435146a9d451ffd27aa14074f576f275786",
                "sha256:4ef205496c518aae7e699731dfff4b630c046ea9dbbe34e8ec8ce77bb399c1c7",
                "sha256:886759453c5b93b1e8953e92abee65ee09fdf78bf655c95d0a206d6387adbfed",
                "sha256:0f3dcdd06c5491cad2ed283ebc802805e3ac77ffe4789ad1b44ff0f0f891f59b",
                "sha256:8067fce92ec98cb52fabe2e10205ff27dba5755d9ffc1f521be9c504f9a6d5fc",
                "sha256:5a266ff306683cd82b2f19203f469b7580aee115f1818d2b2d1e12f1ee7fd12b",
                "sha256:d5341dac22e8ab080e637c632d1b1e92acaa8e66a02d139c0c795c1797531384",
                "sha256:a83318144a0037f264891ddfcbae9b75303949bb0efaece9713df5e04388b7ef",
                "sha256:d04bb2425086c3fe86f7bc48915290b13e798497839fbb18ab7f6dffcf98cc3a"
            ],
            "version": "==2.0.3"
        },
        "e1839a8": {
            "editable": true,
            "path": "."
        },
        "elasticsearch": {
            "hashes": [
                "sha256:cbee23c29f9947b1b78be5c0f741c1f8b504d3c53163b1355ea08f69cbd0fc0c",
                "sha256:eb0d4b5b20a4ccf9e49bd20498b6215d5e960d8a63a0eae44cd4431e3f303a24"
            ],
            "version": "==1.9.0"
        },
        "enum34": {
            "hashes": [
                "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
                "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
                "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
                "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850"
            ],
            "version": "==1.1.6"
        },
        "future": {
            "hashes": [
                "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
            ],
            "version": "==0.16.0"
        },
        "idna": {
            "hashes": [
                "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4",
                "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
            ],
            "version": "==2.6"
        },
        "lxml": {
            "hashes": [
                "sha256:3593f49858fc6229cd93326be06b099ae477fd65d8f4a981320a6d0bb7fc7a5a",
                "sha256:8996df6b0f205b00b89bbd04d88f1fa1e04139a025fd291aa4ddd05dc86836f4",
                "sha256:9f399c37b8e61c3989ef12ecf0abd9c10a5075f0fc9ad1ecd67ce6f9c72a7211",
                "sha256:550a51dee73c14e5863bdbbbe5836b2b8092a3f92631b5a908b9c41e72f123a5",
                "sha256:e37eda3d05519918403084b43eb7324df21a0daf45c8ae8172a860710dd0fa78",
                "sha256:48ab0e79175fd16f9478edc679ee14c79524c64b26f665f92cbecff81312d04d",
                "sha256:52e18dd86f153c4383bb4c4ef62f81f9b7e44809d068848a5a183b2285496faf",
                "sha256:0b8f3d6e669ea26849a6184f04c7802dbef6fd418a8b90e6c026e237db07af31",
                "sha256:567b76f291a8d02aa8b4d3f8295ae749ac4d532570d8a8c7176f0556c7d95891",
                "sha256:61825daaf2d80dc3da7635ee108720b0739962db008343822753bbf343cbfd14",
                "sha256:b7f6ef610680709be11cb7662e46e254bc561dafe0de3b4848be2cf3924bd300",
                "sha256:824664493a012f5b70396e841a4b4049bdaf445a70307e60f82fe35619f72cc7",
                "sha256:e908d685800626f10cd6ae01a013fc42094be167fb2a683eb920dfddfaa0ee76",
                "sha256:10c86b2248043f4428be33ed10202764b02b281eaa4550f16f0fbbc6ccaae9ac",
                "sha256:d9ec728caddb161405e7c33ed9d176e96309893481370163bbf4b00e43008795",
                "sha256:b2ecb3fd5470b740dfc21b064bbc1337be4b7b805994a868488145d36f35f517",
                "sha256:a211288459c9115ddb255ff88e8ac12dc2063e70bddc15e3c65136477a358bb5",
                "sha256:1f81074e77c25f9b787fa3854f400ca924d3d798cb7ae910c0e7920be7138c90",
                "sha256:99b7eabfb46663ed5918eca4ed12420613ba24196964a741ccd962d09296c0b2",
                "sha256:a8ad0adeedbbb7b85916214fcd4f5d02829d0e7b3c32abc298789218b6c3d699",
                "sha256:88d137e440b5de35df2e0616da8e28a88d0119abdaa84520ad1ba815ee9da732",
                "sha256:c4e02657e629f02ab8712471d77d6896c2cf6f09f8ffa6a0f23b1b1ef0318474",
                "sha256:9581b438e5d0d0a6fa3937fac2abffd95380bd513bcd39f6952bfcf20cf0b9a7",
                "sha256:c446fde3284c363cd2085ad1ce5a07c18f15f6766d72684622bc14b0a9ddfd29",
                "sha256:d4507916c408feec2ea8cee3f0d1380e49ea431f6e07b0dd927388bd6e92d6eb",
                "sha256:7030f44b758e930fd09ade87d770f5a231a19a8c561a3acc54e5122b5ec09e29",
                "sha256:d78c0a114cf127a41a526aef99aef539c0b2537e57f04a2cc7a49e2c94a44ab8",
                "sha256:f7bc9f702500e205b1560d620f14015fec76dcd6f9e889a946a2ddcc3c344fd0"
            ],
            "version": "==4.0.0"
        },
        "numpy": {
            "hashes": [
                "sha256:a51b0788f098b76b5750d0b2352709fbe3fb4736ed93ab60028513ea2bf10259",
                "sha256:077dfc6c05fec867a9caaffbce22b0581894f885931111b0749eb95e3ad390be",
                "sha256:cf7a17d41027551bcb198e2de061ebbe1fee1affc332b4d3add650bc21794ec2",
                "sha256:6eeb63d026ba8e0bf177b50819a8a9a5a808ea82d3477001eb35a9ca3e4c698c",
                "sha256:4f9dd034b88604d0f67454e879a1d07d54794650fea51186b5199bb780530a07",
                "sha256:1b21a68ed1aa9e0d9eb4b72729f7e6bf6ad7a48d902a7ae2b7252926ed4616fd",
                "sha256:e9a2ebff47bf737e0e04e2c7545e843aab637716ab1b732e1ac0a8e1956444a9",
                "sha256:90eed22ffb0001e8330737b3323bd712eee7af898e726a0e8cb4c4d435f72d00",
                "sha256:9f3b213396ad52beba7b70b1bd9cbab11bd422ba756935aff9858af26ba98d35",
                "sha256:4bdce25f2aa0cc0f83c599cf2a57dc6c44d1e71264879da6ca411fafa4a6380e",
                "sha256:d01d6c03422d5a6663aba0022a552fb77c2e503f19a79ca4418d7da6a6165fee",
                "sha256:46f4da749206ca75def0eae3ce4d0985d9555c57e5121257eec56e3c351cd3c2",
                "sha256:8a8e5a848e362a864d40a0b99fcc4eccfc6618cd5f8c3587d74bc8c9796ee015",
                "sha256:6fc660f6713250307f340b3dae1811ff08a55697e4ee8393ede52f757d39c3e1",
                "sha256:5c159ac450569594c1f10c118e221c234a481f9fcfa157a736c80f52c6e698ec",
                "sha256:6930af9a8252454dc6ce037845c7d6c007671f6a156e64b1d8ff973ff42569a0",
                "sha256:2f10c7042587044e9791df60c3733d9b03b4a5d5f5bf3793c9c30ac7c376cfce",
                "sha256:2e80e8904636ce1f01d59c019f128161ae472171710b5541f6a535b3ab7f11e4",
                "sha256:1847a3dd54240b523b383e95635c5305b785c3fe932a2b6ac0a379c5788f1401",
                "sha256:9725d3cb40dccee76df0ce7816c8d80464b2ebf3d1c68a0620c9633d1b7ffc10",
                "sha256:da025523172dc61dab586d31e326bc3517004dfeb8e0337d2b556d76bb5217df",
                "sha256:4cecc6c842762154649fd1c976d40b5903c75076924464b46645af101019e1ad",
                "sha256:90ceeb683d69ef86cb424818d0bff7597b2a8d05f459679cf43d243c4442b8ba"
            ],
            "version": "==1.13.2"
        },
        "psycopg2": {
            "hashes": [
                "sha256:3ab693b907b2c7a34c1dca198cfc454516cfd75440fd913bb372da6f70d6db55",
                "sha256:3c99c88216e0fc62113a1177aae9db18a533274370e99a4537b433b87b319360",
                "sha256:df70e0a387b0145a7a80de67d43d84e1c5a24a33bbfaedb96271876d573e5fb6",
                "sha256:8d2003d23d8fc59f0f0a2e73c13baa41581006b8227a9d82bbdc1aa233285ba4",
                "sha256:face605eea5826fa36600c04447b61674992bbd5eb177f66f86f61a04436dbd9",
                "sha256:ebee4f59803eda1ed4035649469a713818dbf5b6de2e12396edd9fa228727c20",
                "sha256:4d7c872d9c85745964cf8efabba3fb1a6010b345c18d0e2b620509f0444aa729",
                "sha256:99a298b9030f8fd36f885c5d0661e4d5a059136a541bb6c4d7d1100e38da3cd1",
                "sha256:b7646f7bdb42ba3cf7ef9f500f6514b5e413d25c5b3093d70e6ba52df417a83c",
                "sha256:39369e40bc3e062da5da93ce5f1e7f9bed95e9a60cb6f003d316f2a834722e2d",
                "sha256:c939b238cbc18e786909d20277c9f051241696ebb03ca9e3490094f526ce69a7",
                "sha256:9a0a74a6f20d82c389095c88d4d281e66eb3ffbc09adf543dcec4bec22436569",
                "sha256:16482d050db68503abbb693795d75e9fca287a00f662376759825404533ca87c",
                "sha256:f74e50341f45fb9bcd3598c11b5774c3e4349ee38cf15c342cc7075c73ef1f95",
                "sha256:e80a1ae04218e854a5d71085f9498c8c979033ca855cedeed3afc5d976c348ce",
                "sha256:f07791ee5793621bfaaa844f731529cd72321280f94e8dc3bd4ef524d20f58f2",
                "sha256:0bd0b1cf81eb6d74a77199570d5ce097fb3c6b8e57acc1edd328cef5c552f98a",
                "sha256:4db0de7d6236acbf7d020926489b6c4b98e845ba98df11057f22d54866e26b20",
                "sha256:604c49bf196c654c417ade1dc765bd23fe9bc3392d9a8c7184a7077142d621b3",
                "sha256:6194e81d8839b636118f5275c53be3c70eb3c3abcf836de675c34b20c06025ea",
                "sha256:e26aca5eb272869fdf8e55111f36026517c1c0799eb7ef1ddf67d4412affe1ef",
                "sha256:35d1fec112337c2607c8ca17dee3c2f8455e07dd69d140ff8e86ef1240dace3d",
                "sha256:891a70235c202158780fc0ab98d7ca2a7ed1625c26725b15119d47b2d852a5c6",
                "sha256:4cca242df228364b4de6241c54553301856bc253d7f21e15009b11c812eb7b5c",
                "sha256:3fbba0dd7f3ac458f355dcfc4d7d9cd082c19748e453bcd81bf9d8bc14260c01",
                "sha256:04a5b2805c620ddecdff33e015631cc8d7ea8dd01e1fcc930bfe002fdc26b9e0",
                "sha256:4fbe2c29f6d4c8d9eac5fc3c42c42036e7cc58e225036130b7713afa72489aac",
                "sha256:471e3140e1cb241ecb53602cdc98fe305b82c854cfa53c3e343d642683dc96c7",
                "sha256:279dbf220c94c9f73aefac719ea3b9550ca791389bc9184c15e835516bc8428d",
                "sha256:a4d7134058e8869d785c0be386cd702fe2a4be14b678d7571a51045e1bbad862",
                "sha256:9b7b16e26448b43cf167f785d8b5345007731ebf153a510e12dae826800caa65"
            ],
            "version": "==2.7.3.1"
        },
        "pycparser": {
            "hashes": [
                "sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
            ],
            "version": "==2.18"
        },
        "pyelasticsearch": {
            "hashes": [
                "sha256:277733776ed538bb2fef4ee3c80d71b9309e6a43d1b891a1dfd06ce9283597a3"
            ],
            "version": "==1.4"
        },
        "pyopenssl": {
            "hashes": [
                "sha256:aade9985b93eaec51b0c0a2a60d14bb8dcff1ff8e36fe542e3c22812ec07315e",
                "sha256:29630b9064a82e04d8242ea01d7c93d70ec320f5e3ed48e95fcabc6b1d0f6c76"
            ],
            "version": "==17.3.0"
        },
        "pyyaml": {
            "hashes": [
                "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
                "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
                "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269",
                "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
                "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
                "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
                "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
                "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
                "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
                "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
                "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
                "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
                "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
                "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7"
            ],
            "version": "==3.12"
        },
        "requests": {
            "hashes": [
                "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
                "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
            ],
            "version": "==2.18.4"
        },
        "simplejson": {
            "hashes": [
                "sha256:38c2b563cd03363e7cb2bbba6c20ae4eaafd853a83954c8c8dd345ee391787bf",
                "sha256:8d73b96a6ee7c81fd49dac7225e3846fd60b54a0b5b93a0aaea04c5a5d2e7bf2",
                "sha256:7f53ab6a675594f237ce7372c1edf742a6acb158149ed3259c5fffc5b613dc94",
                "sha256:86aa9fd492230c4b8b6814fcf089b36ffba2cec4d0635c8c642135b9067ebbd7",
                "sha256:7df76ae6cac4a62ad5295f9a9131857077d84cb15fad2011acb2ce7410476009",
                "sha256:a6939199c30b78ae31e62e6913f0e12cb71a4a5ad67c259e0a98688df027a5de",
                "sha256:11d91b88cc1e9645c79f0f6fd2961684249af963e2bbff5a00061ed4bbf55379",
                "sha256:36b0de42e3a8a51086c339cc803f6ac7a9d1d5254066d680956a195ca12cf0d8",
                "sha256:01a22d49ddd9a168b136f26cac87d9a335660ce07aa5c630b8e3607d6f4325e7",
                "sha256:ebbd52b59948350ad66205e66b299fcca0e0821ed275c21262c522f4a6cea9d2",
                "sha256:2dc7fb8c0c0ff9483ce31b93b700b1fa60aca9d099e6aca9813f28ff131ccf59",
                "sha256:97cc43ef4cb18a2725f6e26d22b96f8ca50872a195bde32707dcb284f89c1d4d",
                "sha256:c76d55d78dc8b06c96fd08c6cc5e2b0b650799627d3f9ca4ad23f40db72d5f6d",
                "sha256:1975e6b621fe1c2b9321c56476e8ebe1b851006517c1d67041b378950374694c",
                "sha256:f60f01b16215568a08611eb6a4d61d76c4173c3d69aac9cad593777056c284d5",
                "sha256:6be48181337ac5f5d9f48c9c504f317e245519318992122a05c40e482a721d59",
                "sha256:8ae8cdcbe49e29ddfdae0ab81c1f6c070706d18fcee86371352d0d54b47ad8ec"
            ],
            "version": "==3.11.1"
        },
        "six": {
            "hashes": [
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
            ],
            "version": "==1.11.0"
        },
        "sqlalchemy": {
            "hashes": [
                "sha256:f1191e29e35b6fe1aef7175a09b1707ebb7bd08d0b17cb0feada76c49e5a2d1e"
            ],
            "version": "==1.1.14"
        },
        "unicodecsv": {
            "hashes": [
                "sha256:018c08037d48649a0412063ff4eda26eaa81eff1546dbffa51fa5293276ff7fc"
            ],
            "version": "==0.14.1"
        },
        "urllib3": {
            "hashes": [
                "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
                "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
            ],
            "version": "==1.22"
        }
    },
    "develop": {}
}
$ docker-compose run app pipenv graph
mypackage==0.0.1
  - beautifulsoup4 [required: >=4.4.0, installed: 4.6.0]
  - enum34 [required: Any, installed: 1.1.6]
  - future [required: Any, installed: 0.16.0]
  - lxml [required: >=3.3.5, installed: 4.0.0]
  - numpy [required: >=1.9.0, installed: 1.13.2]
  - psycopg2 [required: >=2.6.1, installed: 2.7.3.1]
  - pyelasticsearch [required: >=1.4, installed: 1.4]
    - certifi [required: Any, installed: 2017.7.27.1]
    - elasticsearch [required: <2.0.0,>=1.3.0, installed: 1.9.0]
      - urllib3 [required: >=1.8,<2.0, installed: 1.22]
    - simplejson [required: >=3.0, installed: 3.11.1]
    - six [required: >=1.4.0,<2.0, installed: 1.11.0]
    - urllib3 [required: >=1.8,<2.0, installed: 1.22]
  - PyYAML [required: >=3.11, installed: 3.12]
  - requests [required: Any, installed: 2.18.4]
    - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
    - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
    - idna [required: >=2.5,<2.7, installed: 2.6]
    - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]
  - SQLAlchemy [required: >=1.0.8, installed: 1.1.14]
  - unicodecsv [required: Any, installed: 0.14.1]
pyOpenSSL==17.3.0
  - cryptography [required: >=1.9, installed: 2.0.3]
    - asn1crypto [required: >=0.21.0, installed: 0.23.0]
    - cffi [required: >=1.7, installed: 1.11.0]
      - pycparser [required: Any, installed: 2.18]
    - enum34 [required: Any, installed: 1.1.6]
    - idna [required: >=2.1, installed: 2.6]
    - ipaddress [required: Any, installed: ?]
    - six [required: >=1.4.1, installed: 1.11.0]
  - six [required: >=1.5.2, installed: 1.11.0]

@kennethreitz
Copy link
Contributor

run pipenv lock --verbose

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

$ docker-compose run app pipenv lock --verbose
Locking [dev-packages] dependencies…
Using pip: -i https://pypi.python.org/simple

                          ROUND 1
Current constraints:

Finding the best candidates:

Finding secondary dependencies:
------------------------------------------------------------
Result of round 1: stable, done
Locking [packages] dependencies…
Using pip: -i https://pypi.python.org/simple

                          ROUND 1
Current constraints:
  file:///app

Finding the best candidates:
  found candidate -e file:///app (constraint was <any>)

Finding secondary dependencies:

New dependencies found in this round:
  adding [u'beautifulsoup4', '>=4.4.0', '[]']
  adding [u'enum34', '', '[]']
  adding [u'future', '', '[]']
  adding [u'lxml', '>=3.3.5', '[]']
  adding [u'numpy', '>=1.9.0', '[]']
  adding [u'psycopg2', '>=2.6.1', '[]']
  adding [u'pyelasticsearch', '>=1.4', '[]']
  adding [u'pyyaml', '>=3.11', '[]']
  adding [u'requests', '', "['security']"]
  adding [u'sqlalchemy', '>=1.0.8', '[]']
  adding [u'unicodecsv', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2
Current constraints:
  beautifulsoup4>=4.4.0
  enum34
  future
  lxml>=3.3.5
  mypackage==0.0.1 from file:///app
  numpy>=1.9.0
  psycopg2>=2.6.1
  pyelasticsearch>=1.4
  PyYAML>=3.11
  requests[security]
  SQLAlchemy>=1.0.8
  unicodecsv

Finding the best candidates:
  found candidate beautifulsoup4==4.6.0 (constraint was >=4.4.0)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate future==0.16.0 (constraint was <any>)
  found candidate lxml==4.0.0 (constraint was >=3.3.5)
  found candidate -e file:///app (constraint was ==0.0.1)
  found candidate numpy==1.13.2 (constraint was >=1.9.0)
  found candidate psycopg2==2.7.3.1 (constraint was >=2.6.1)
  found candidate pyelasticsearch==1.4 (constraint was >=1.4)
  found candidate pyyaml==3.12 (constraint was >=3.11)
  found candidate requests[security]==2.18.4 (constraint was <any>)
  found candidate sqlalchemy==1.1.14 (constraint was >=1.0.8)
  found candidate unicodecsv==0.14.1 (constraint was <any>)

Finding secondary dependencies:
  sqlalchemy==1.1.14        requires -
  lxml==4.0.0               requires -
  psycopg2==2.7.3.1         requires -
  beautifulsoup4==4.6.0     requires -
  enum34==1.1.6             requires -
  pyyaml==3.12              requires -
  pyelasticsearch==1.4      requires certifi, elasticsearch<2.0.0,>=1.3.0, simplejson>=3.0, six<2.0,>=1.4.0, urllib3<2.0,>=1.8
  future==0.16.0            requires -
  numpy==1.13.2             requires -
  unicodecsv==0.14.1        requires -
  requests[security]==2.18.4 requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, cryptography>=1.3.4; extra == "security", idna<2.7,>=2.5, pyOpenSSL>=0.14; extra == "security", urllib3<1.23,>=1.21.1

New dependencies found in this round:
  adding [u'certifi', '>=2017.4.17', '[]']
  adding [u'chardet', '<3.1.0,>=3.0.2', '[]']
  adding [u'cryptography', '>=1.3.4', '[]']
  adding [u'elasticsearch', '<2.0.0,>=1.3.0', '[]']
  adding [u'idna', '<2.7,>=2.5', '[]']
  adding [u'pyopenssl', '>=0.14', '[]']
  adding [u'simplejson', '>=3.0', '[]']
  adding [u'six', '<2.0,>=1.4.0', '[]']
  adding [u'urllib3', '<1.23,<2.0,>=1.21.1,>=1.8', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 2: not stable

                          ROUND 3
Current constraints:
  beautifulsoup4>=4.4.0
  certifi>=2017.4.17
  chardet<3.1.0,>=3.0.2
  cryptography>=1.3.4
  elasticsearch<2.0.0,>=1.3.0
  enum34
  future
  idna<2.7,>=2.5
  lxml>=3.3.5
  mypackage==0.0.1 from file:///app
  numpy>=1.9.0
  psycopg2>=2.6.1
  pyelasticsearch>=1.4
  pyOpenSSL>=0.14
  PyYAML>=3.11
  requests[security]
  simplejson>=3.0
  six<2.0,>=1.4.0
  SQLAlchemy>=1.0.8
  unicodecsv
  urllib3<1.23,<2.0,>=1.21.1,>=1.8

Finding the best candidates:
  found candidate beautifulsoup4==4.6.0 (constraint was >=4.4.0)
  found candidate certifi==2017.7.27.1 (constraint was >=2017.4.17)
  found candidate chardet==3.0.4 (constraint was >=3.0.2,<3.1.0)
  found candidate cryptography==2.0.3 (constraint was >=1.3.4)
  found candidate elasticsearch==1.9.0 (constraint was >=1.3.0,<2.0.0)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate future==0.16.0 (constraint was <any>)
  found candidate idna==2.6 (constraint was >=2.5,<2.7)
  found candidate lxml==4.0.0 (constraint was >=3.3.5)
  found candidate -e file:///app (constraint was ==0.0.1)
  found candidate numpy==1.13.2 (constraint was >=1.9.0)
  found candidate psycopg2==2.7.3.1 (constraint was >=2.6.1)
  found candidate pyelasticsearch==1.4 (constraint was >=1.4)
  found candidate pyopenssl==17.3.0 (constraint was >=0.14)
  found candidate pyyaml==3.12 (constraint was >=3.11)
  found candidate requests[security]==2.18.4 (constraint was <any>)
  found candidate simplejson==3.11.1 (constraint was >=3.0)
  found candidate six==1.11.0 (constraint was >=1.4.0,<2.0)
  found candidate sqlalchemy==1.1.14 (constraint was >=1.0.8)
  found candidate unicodecsv==0.14.1 (constraint was <any>)
  found candidate urllib3==1.22 (constraint was >=1.21.1,<1.23,>=1.8,<2.0)

Finding secondary dependencies:
  beautifulsoup4==4.6.0     requires -
  simplejson==3.11.1        requires -
  urllib3==1.22             requires -
  cryptography==2.0.3       requires asn1crypto>=0.21.0, cffi>=1.7, idna>=2.1, six>=1.4.1
  certifi==2017.7.27.1      requires -
  psycopg2==2.7.3.1         requires -
  pyopenssl==17.3.0         requires cryptography>=1.9, six>=1.5.2
  sqlalchemy==1.1.14        requires -
  future==0.16.0            requires -
  six==1.11.0               requires -
  elasticsearch==1.9.0      requires urllib3<2.0,>=1.8
  lxml==4.0.0               requires -
  numpy==1.13.2             requires -
  unicodecsv==0.14.1        requires -
  chardet==3.0.4            requires -
  pyelasticsearch==1.4      requires certifi, elasticsearch<2.0.0,>=1.3.0, simplejson>=3.0, six<2.0,>=1.4.0, urllib3<2.0,>=1.8
  enum34==1.1.6             requires -
  requests[security]==2.18.4 requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, cryptography>=1.3.4; extra == "security", idna<2.7,>=2.5, pyOpenSSL>=0.14; extra == "security", urllib3<1.23,>=1.21.1
  pyyaml==3.12              requires -
  idna==2.6                 requires -

New dependencies found in this round:
  adding [u'asn1crypto', '>=0.21.0', '[]']
  adding [u'cffi', '>=1.7', '[]']
  adding [u'cryptography', '>=1.3.4,>=1.9', '[]']
  adding [u'idna', '<2.7,>=2.1,>=2.5', '[]']
  adding [u'six', '<2.0,>=1.4.0,>=1.4.1,>=1.5.2', '[]']
Removed dependencies in this round:
  removing [u'cryptography', '>=1.3.4', '[]']
  removing [u'idna', '<2.7,>=2.5', '[]']
  removing [u'six', '<2.0,>=1.4.0', '[]']
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 3: not stable

                          ROUND 4
Current constraints:
  asn1crypto>=0.21.0
  beautifulsoup4>=4.4.0
  certifi>=2017.4.17
  cffi>=1.7
  chardet<3.1.0,>=3.0.2
  cryptography>=1.3.4,>=1.9
  elasticsearch<2.0.0,>=1.3.0
  enum34
  future
  idna<2.7,>=2.1,>=2.5
  lxml>=3.3.5
  mypackage==0.0.1 from file:///app
  numpy>=1.9.0
  psycopg2>=2.6.1
  pyelasticsearch>=1.4
  pyOpenSSL>=0.14
  PyYAML>=3.11
  requests[security]
  simplejson>=3.0
  six<2.0,>=1.4.0,>=1.4.1,>=1.5.2
  SQLAlchemy>=1.0.8
  unicodecsv
  urllib3<1.23,<2.0,>=1.21.1,>=1.8

Finding the best candidates:
  found candidate asn1crypto==0.23.0 (constraint was >=0.21.0)
  found candidate beautifulsoup4==4.6.0 (constraint was >=4.4.0)
  found candidate certifi==2017.7.27.1 (constraint was >=2017.4.17)
  found candidate cffi==1.11.0 (constraint was >=1.7)
  found candidate chardet==3.0.4 (constraint was >=3.0.2,<3.1.0)
  found candidate cryptography==2.0.3 (constraint was >=1.3.4,>=1.9)
  found candidate elasticsearch==1.9.0 (constraint was >=1.3.0,<2.0.0)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate future==0.16.0 (constraint was <any>)
  found candidate idna==2.6 (constraint was >=2.1,>=2.5,<2.7)
  found candidate lxml==4.0.0 (constraint was >=3.3.5)
  found candidate -e file:///app (constraint was ==0.0.1)
  found candidate numpy==1.13.2 (constraint was >=1.9.0)
  found candidate psycopg2==2.7.3.1 (constraint was >=2.6.1)
  found candidate pyelasticsearch==1.4 (constraint was >=1.4)
  found candidate pyopenssl==17.3.0 (constraint was >=0.14)
  found candidate pyyaml==3.12 (constraint was >=3.11)
  found candidate requests[security]==2.18.4 (constraint was <any>)
  found candidate simplejson==3.11.1 (constraint was >=3.0)
  found candidate six==1.11.0 (constraint was >=1.4.0,>=1.4.1,>=1.5.2,<2.0)
  found candidate sqlalchemy==1.1.14 (constraint was >=1.0.8)
  found candidate unicodecsv==0.14.1 (constraint was <any>)
  found candidate urllib3==1.22 (constraint was >=1.21.1,<1.23,>=1.8,<2.0)

Finding secondary dependencies:
  requests[security]==2.18.4 requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, cryptography>=1.3.4; extra == "security", idna<2.7,>=2.5, pyOpenSSL>=0.14; extra == "security", urllib3<1.23,>=1.21.1
  future==0.16.0            requires -
  asn1crypto==0.23.0        requires -
  enum34==1.1.6             requires -
  sqlalchemy==1.1.14        requires -
  urllib3==1.22             requires -
  idna==2.6                 requires -
  unicodecsv==0.14.1        requires -
  cffi==1.11.0              requires pycparser
  pyelasticsearch==1.4      requires certifi, elasticsearch<2.0.0,>=1.3.0, simplejson>=3.0, six<2.0,>=1.4.0, urllib3<2.0,>=1.8
  cryptography==2.0.3       requires asn1crypto>=0.21.0, cffi>=1.7, idna>=2.1, six>=1.4.1
  elasticsearch==1.9.0      requires urllib3<2.0,>=1.8
  chardet==3.0.4            requires -
  pyyaml==3.12              requires -
  beautifulsoup4==4.6.0     requires -
  pyopenssl==17.3.0         requires cryptography>=1.9, six>=1.5.2
  simplejson==3.11.1        requires -
  certifi==2017.7.27.1      requires -
  psycopg2==2.7.3.1         requires -
  six==1.11.0               requires -
  lxml==4.0.0               requires -
  numpy==1.13.2             requires -

New dependencies found in this round:
  adding [u'pycparser', '', '[]']
Removed dependencies in this round:
Unsafe dependencies in this round:
------------------------------------------------------------
Result of round 4: not stable

                          ROUND 5
Current constraints:
  asn1crypto>=0.21.0
  beautifulsoup4>=4.4.0
  certifi>=2017.4.17
  cffi>=1.7
  chardet<3.1.0,>=3.0.2
  cryptography>=1.3.4,>=1.9
  elasticsearch<2.0.0,>=1.3.0
  enum34
  future
  idna<2.7,>=2.1,>=2.5
  lxml>=3.3.5
  mypackage==0.0.1 from file:///app
  numpy>=1.9.0
  psycopg2>=2.6.1
  pycparser
  pyelasticsearch>=1.4
  pyOpenSSL>=0.14
  PyYAML>=3.11
  requests[security]
  simplejson>=3.0
  six<2.0,>=1.4.0,>=1.4.1,>=1.5.2
  SQLAlchemy>=1.0.8
  unicodecsv
  urllib3<1.23,<2.0,>=1.21.1,>=1.8

Finding the best candidates:
  found candidate asn1crypto==0.23.0 (constraint was >=0.21.0)
  found candidate beautifulsoup4==4.6.0 (constraint was >=4.4.0)
  found candidate certifi==2017.7.27.1 (constraint was >=2017.4.17)
  found candidate cffi==1.11.0 (constraint was >=1.7)
  found candidate chardet==3.0.4 (constraint was >=3.0.2,<3.1.0)
  found candidate cryptography==2.0.3 (constraint was >=1.3.4,>=1.9)
  found candidate elasticsearch==1.9.0 (constraint was >=1.3.0,<2.0.0)
  found candidate enum34==1.1.6 (constraint was <any>)
  found candidate future==0.16.0 (constraint was <any>)
  found candidate idna==2.6 (constraint was >=2.1,>=2.5,<2.7)
  found candidate lxml==4.0.0 (constraint was >=3.3.5)
  found candidate -e file:///app (constraint was ==0.0.1)
  found candidate numpy==1.13.2 (constraint was >=1.9.0)
  found candidate psycopg2==2.7.3.1 (constraint was >=2.6.1)
  found candidate pycparser==2.18 (constraint was <any>)
  found candidate pyelasticsearch==1.4 (constraint was >=1.4)
  found candidate pyopenssl==17.3.0 (constraint was >=0.14)
  found candidate pyyaml==3.12 (constraint was >=3.11)
  found candidate requests[security]==2.18.4 (constraint was <any>)
  found candidate simplejson==3.11.1 (constraint was >=3.0)
  found candidate six==1.11.0 (constraint was >=1.4.0,>=1.4.1,>=1.5.2,<2.0)
  found candidate sqlalchemy==1.1.14 (constraint was >=1.0.8)
  found candidate unicodecsv==0.14.1 (constraint was <any>)
  found candidate urllib3==1.22 (constraint was >=1.21.1,<1.23,>=1.8,<2.0)

Finding secondary dependencies:
  cryptography==2.0.3       requires asn1crypto>=0.21.0, cffi>=1.7, idna>=2.1, six>=1.4.1
  pyelasticsearch==1.4      requires certifi, elasticsearch<2.0.0,>=1.3.0, simplejson>=3.0, six<2.0,>=1.4.0, urllib3<2.0,>=1.8
  sqlalchemy==1.1.14        requires -
  requests[security]==2.18.4 requires certifi>=2017.4.17, chardet<3.1.0,>=3.0.2, cryptography>=1.3.4; extra == "security", idna<2.7,>=2.5, pyOpenSSL>=0.14; extra == "security", urllib3<1.23,>=1.21.1
  chardet==3.0.4            requires -
  cffi==1.11.0              requires pycparser
  urllib3==1.22             requires -
  simplejson==3.11.1        requires -
  elasticsearch==1.9.0      requires urllib3<2.0,>=1.8
  unicodecsv==0.14.1        requires -
  pyopenssl==17.3.0         requires cryptography>=1.9, six>=1.5.2
  psycopg2==2.7.3.1         requires -
  idna==2.6                 requires -
  future==0.16.0            requires -
  beautifulsoup4==4.6.0     requires -
  certifi==2017.7.27.1      requires -
  lxml==4.0.0               requires -
  enum34==1.1.6             requires -
  six==1.11.0               requires -
  pyyaml==3.12              requires -
  numpy==1.13.2             requires -
  asn1crypto==0.23.0        requires -
  pycparser==2.18           requires -
------------------------------------------------------------
Result of round 5: stable, done
Updated Pipfile.lock!

@kennethreitz
Copy link
Contributor

well that sheds some light on it, doesn't it? :)

@kennethreitz
Copy link
Contributor

what dependency does ipaddress come from? I want to look at it's setup.py.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

ah, sorry I don't entirely follow. seems like it should be a dependency of cryptography 2.0.3?

https://github.com/pyca/cryptography/blob/ba61c2738e5a79480d135c280316e29080a4a777/setup.py#L285

@kennethreitz
Copy link
Contributor

aha!

@kennethreitz
Copy link
Contributor

well i think it's safe to say we don't fully support that feature.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

haha, well I'm glad we figured it out!

@kennethreitz
Copy link
Contributor

it's normally working, though...

@kennethreitz
Copy link
Contributor

try making your pipenv create step seperate.

e.g. from this

RUN pipenv install --python 2.7 --dev

to this

RUN pipenv --python 2.7
RUN pipenv install --dev

@kennethreitz
Copy link
Contributor

okay, try the master branch now.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

tried master and split the pipenv command together - didn't seem to work

diff --git a/Dockerfile b/Dockerfile
index 31b9bf2..521c2f1 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,9 @@
 FROM python:2.7
-RUN pip install --upgrade pipenv
+RUN pip install --upgrade git+https://github.com/kennethreitz/pipenv
 RUN mkdir /app
 WORKDIR /app
 COPY . /app
 RUN rm -f Pipfile.lock
-RUN pipenv install --python 2.7 --dev
+# RUN pipenv install --python 2.7 --dev
+RUN pipenv --python 2.7
+RUN pipenv install --dev

@kennethreitz
Copy link
Contributor

well the resolution from this is — dont do this.

@kennethreitz
Copy link
Contributor

e.g. lock from your dev machine

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

hmm? I'm locking inside of docker and deleting the Pipfile too RUN rm -f Pipfile.lock, not locking from my dev machine. doesn't seem like we came to a resolution?

@kennethreitz
Copy link
Contributor

i'm telling you to lock from your dev machine.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

oh, okay let me try that

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

after updating the dockerfile to use the Pipfile.lock from the dev machine, still didn't seem to work:

$ pipenv --rm
$ pipenv lock --python 2.7
$ docker-compose build --no-cache app && docker-compose run app sh -c "cat Pipfile.lock | grep ipaddress"

diff:

diff --git a/Dockerfile b/Dockerfile
index 521c2f1..810e4da 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,8 +2,9 @@ FROM python:2.7
 RUN pip install --upgrade git+https://github.com/kennethreitz/pipenv
 RUN mkdir /app
 WORKDIR /app
+COPY Pipfile Pipfile
+COPY Pipfile.lock Pipfile.lock
 COPY . /app
-RUN rm -f Pipfile.lock
 # RUN pipenv install --python 2.7 --dev
 RUN pipenv --python 2.7
 RUN pipenv install --dev
diff --git a/Pipfile.lock b/Pipfile.lock
new file mode 100644
index 0000000..7b5f24d
--- /dev/null
+++ b/Pipfile.lock
@@ -0,0 +1,354 @@
+{
+    "_meta": {
+        "hash": {
+            "sha256": "0a6b374908a321bedf03e9c2fa3320b04d48d957548499ca4ef7f622f9e159fa"
+        },
+        "host-environment-markers": {
+            "implementation_name": "cpython",
+            "implementation_version": "0",
+            "os_name": "posix",
+            "platform_machine": "x86_64",
+            "platform_python_implementation": "CPython",
+            "platform_release": "17.0.0",
+            "platform_system": "Darwin",
+            "platform_version": "Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RELEASE_X86_64",
+            "python_full_version": "2.7.13",
+            "python_version": "2.7",
+            "sys_platform": "darwin"
+        },
+        "pipfile-spec": 6,
+        "requires": {},
+        "sources": [
+            {
+                "url": "https://pypi.python.org/simple",
+                "verify_ssl": true
+            }
+        ]
+    },
+    "default": {
+        "asn1crypto": {
+            "hashes": [
+                "sha256:654b7db3b120e23474e9a1e5e38d268c77e58a9e17d2cb595456c37309846494",
+                "sha256:0874981329cfebb366d6584c3d16e913f2a0eb026c9463efcc4aaf42a9d94d70"
+            ],
+            "version": "==0.23.0"
+        },
+        "beautifulsoup4": {
+            "hashes": [
+                "sha256:7015e76bf32f1f574636c4288399a6de66ce08fb7b2457f628a8d70c0fbabb11",
+                "sha256:11a9a27b7d3bddc6d86f59fb76afb70e921a25ac2d6cc55b40d072bd68435a76",
+                "sha256:808b6ac932dccb0a4126558f7dfdcf41710dd44a4ef497a0bb59a77f9f078e89"
+            ],
+            "version": "==4.6.0"
+        },
+        "certifi": {
+            "hashes": [
+                "sha256:54a07c09c586b0e4c619f02a5e94e36619da8e2b053e20f594348c0611803704",
+                "sha256:40523d2efb60523e113b44602298f0960e900388cf3bb6043f645cf57ea9e3f5"
+            ],
+            "version": "==2017.7.27.1"
+        },
+        "cffi": {
+            "hashes": [
+                "sha256:eddf6bd95b100f34c56a226847be92bde416d028213e87fd700bc593cbf3e9da",
+                "sha256:929d206ecfefadcec0b0e13956131eec7442829d240da020d67274fefb9e61a4",
+                "sha256:040e0b5462c65a39b7112ad9e951f3f57b487d0db053ea510dcf8fc53931ab4b",
+                "sha256:d361e8c504bae02f665fad8d5ba4b74a6c1fab7862eec39cddcc21e4479fa275",
+                "sha256:56a8c39e6e7225474b36c16a03240fcbbfc5c8cb016645793e0dec2d2f9bdf67",
+                "sha256:4d2e388ce51e6a4efae8d4533ca15503ea957c41233bad165f8ccec354edca67",
+                "sha256:c091a1ac521dac2770632f499c124762ddf978d23ced0472f19a8830e006eab8",
+                "sha256:5c20f34a6858cd8c59eac23f80bc80bb5fd294bd9b22b264255a3eec0ab459f5",
+                "sha256:b45efc8d81640a8e9122c1ba1817da2a998ca0168c40de7bbfc47b960771ca94",
+                "sha256:f2ffdfd930bc4bcd4900def32fbb2a16a91656d9caafff573a25934327140431",
+                "sha256:bd93a0df4dc72893ba604c05d487ea4d47a799e54172b89e414953685b0b08fb",
+                "sha256:45233398f5e7114e719d0b83ffd0642af7fbf05136195f500fb6b72133c8e998",
+                "sha256:47853d133f0de32697b55e0c2ee377d88e3143bc8645a3b93d38be2f5387b0a2",
+                "sha256:6f1a2f85510c675b068e29625ff534f02567f24839cbd7d61cda6b7df62da2b1",
+                "sha256:6153b26756de2f34f80ca4e8b1e79011ad62bb670539dc3df71e62909a112fdf",
+                "sha256:5152bbde6ee514a11e2cd1b76a7ccab5af1043356ec3df9efe0112d97b20dae3",
+                "sha256:42b38cd48e55b2a4c5f038f80137c2cb4393fd4e4d1c3dbeeb7aea9475b68ea1",
+                "sha256:f6202eab19fd2c44d7d7af2bb8d286cf18b7b3d67b0e5bf1f2f113c99303ff87",
+                "sha256:ec1112466a924ba69df5a90f31d26d323e3b91ce21f94b10fa0b77f44a07df48",
+                "sha256:7a55f044dd78fdca379d455550c581b9455af022b8f8b5d97f585a25f4da63f6",
+                "sha256:fd3c49d7d22ba75382e19c4877e1d4dca232ef48137442f8582c2259b0cdf612",
+                "sha256:a76b89adecd46138aafdbd348563df1deb714962b5b3659ee1b6b0c5cf6ae0e5",
+                "sha256:dd9577197fff563e4784ef4ace7da28c7da96a81895b69c008cdb82f1e82853c",
+                "sha256:2217d22cb001386947693bd93ca4370224989468daf2939f3bf717956fb0a119",
+                "sha256:59fc30a6f7331fe69cfc67ef151fd03a33491d25430ae0c4597e69c4235fa87e",
+                "sha256:8a5632592b2752375b6d9e81da022896ece235713129fcc33703b3e10c639ef9",
+                "sha256:48d6589fda4ec0ccb7d973807890a733381f828d29167177eb7d97892255a769",
+                "sha256:f14c53dc624529eef175c993ceb886f37ecece09825bf47bf3230aacbc3b7acc",
+                "sha256:d8930a719781987a876d6de8cf33ce937191c383158daafcb9db804bf3421adf",
+                "sha256:765cf591a2f790b012075c7f54344a02b622a8561708ec27b3042c8c1699a465",
+                "sha256:5f4ff33371c6969b39b293d9771ee91e81d26f9129be093ca1b7be357fcefd15"
+            ],
+            "version": "==1.11.0"
+        },
+        "chardet": {
+            "hashes": [
+                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691",
+                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"
+            ],
+            "version": "==3.0.4"
+        },
+        "cryptography": {
+            "hashes": [
+                "sha256:b17e4244212c9ec6526b6ad47534a12e0378387ad86228141053c112e759769d",
+                "sha256:1fb7dbf630daba53494da88de1e87429f2740e6ffdc92bbdcb385ddb9ff67b32",
+                "sha256:369e4669cac8296e320f86d0a3c9f489b7593d2a144e7b0504b884bed56fd5d7",
+                "sha256:15d655434cf6f350462c6c97f24cbf42ee0e6270886a7937eaaa52fd09e474ce",
+                "sha256:b25d97585f1d2b2f16560737aba6257a10ca18aa3a2a70407c05fe8b64b375f9",
+                "sha256:59d2b285fb24d30deaf4143c2d048fcefdd7e560f30cd1745da881705ca965c6",
+                "sha256:fe6d56a4ff08875d70cc9b336fcd6e938db5808cb47cbc33c6927affb659aded",
+                "sha256:d32dad8448ea88fe8eb02dc943d46db658cf9e618386761e498802c79e97c937",
+                "sha256:d44db8e4435a10dcbf22fbc03072d18b31e6c1100084a2010239efd359f2f162",
+                "sha256:a972eb37b6409a2d67ddd956e6bf74f2e9315105083d1fdaa8bbe6eb520dc367",
+                "sha256:fb7dfc4b3a79ca4b9233803b80617fd302374e57771c9a28e32ee6c1296cdea3",
+                "sha256:795af466e52daf404d783877157b106bc79e0cffa55f8d6360fa9f9fd03148bd",
+                "sha256:4ffc706fbe4c12146050d432250896f2fcad8b77c6fd89d3c3bd456884dbf421",
+                "sha256:317127295b14f5c943ed789ab60ade0d7d39041f8975d58a214af19dd1148705",
+                "sha256:5c9e46b219e2b65ab9192e10407d7698589794407f15f11f39abbf3b04d16890",
+                "sha256:27b7b005debcf4c0562299d5ceeaea151120eaad7bd84ef91fb22c204a958f03",
+                "sha256:8bbff1de3002db5c7146b88fea392526260becc153adc8810103fc750c3eb333",
+                "sha256:bb715b0d8d5c9111e9656eabe58ee7b95842a797c04608aef7f52439ab73d5f3",
+                "sha256:bc86d3de2c7d63f3c73dff24fa43c55c00c7b8ea8102ed638c903c939b85e6a6",
+                "sha256:2f0b681e89530750e4c0adf98701cafd0384ac160ceafe39c9d10be6034d2cc7",
+                "sha256:5544d9433f9c25d55d609e2b014d47c390288bb98ae84e35b8cf93e9f6a6c832",
+                "sha256:55cc98c93323efcf6f3300b6e9a7d435146a9d451ffd27aa14074f576f275786",
+                "sha256:4ef205496c518aae7e699731dfff4b630c046ea9dbbe34e8ec8ce77bb399c1c7",
+                "sha256:886759453c5b93b1e8953e92abee65ee09fdf78bf655c95d0a206d6387adbfed",
+                "sha256:0f3dcdd06c5491cad2ed283ebc802805e3ac77ffe4789ad1b44ff0f0f891f59b",
+                "sha256:8067fce92ec98cb52fabe2e10205ff27dba5755d9ffc1f521be9c504f9a6d5fc",
+                "sha256:5a266ff306683cd82b2f19203f469b7580aee115f1818d2b2d1e12f1ee7fd12b",
+                "sha256:d5341dac22e8ab080e637c632d1b1e92acaa8e66a02d139c0c795c1797531384",
+                "sha256:a83318144a0037f264891ddfcbae9b75303949bb0efaece9713df5e04388b7ef",
+                "sha256:d04bb2425086c3fe86f7bc48915290b13e798497839fbb18ab7f6dffcf98cc3a"
+            ],
+            "version": "==2.0.3"
+        },
+        "e1839a8": {
+            "editable": true,
+            "path": "."
+        },
+        "elasticsearch": {
+            "hashes": [
+                "sha256:cbee23c29f9947b1b78be5c0f741c1f8b504d3c53163b1355ea08f69cbd0fc0c",
+                "sha256:eb0d4b5b20a4ccf9e49bd20498b6215d5e960d8a63a0eae44cd4431e3f303a24"
+            ],
+            "version": "==1.9.0"
+        },
+        "enum34": {
+            "hashes": [
+                "sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
+                "sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
+                "sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
+                "sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850"
+            ],
+            "version": "==1.1.6"
+        },
+        "future": {
+            "hashes": [
+                "sha256:e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"
+            ],
+            "version": "==0.16.0"
+        },
+        "idna": {
+            "hashes": [
+                "sha256:8c7309c718f94b3a625cb648ace320157ad16ff131ae0af362c9f21b80ef6ec4",
+                "sha256:2c6a5de3089009e3da7c5dde64a141dbc8551d5b7f6cf4ed7c2568d0cc520a8f"
+            ],
+            "version": "==2.6"
+        },
+        "lxml": {
+            "hashes": [
+                "sha256:3593f49858fc6229cd93326be06b099ae477fd65d8f4a981320a6d0bb7fc7a5a",
+                "sha256:8996df6b0f205b00b89bbd04d88f1fa1e04139a025fd291aa4ddd05dc86836f4",
+                "sha256:9f399c37b8e61c3989ef12ecf0abd9c10a5075f0fc9ad1ecd67ce6f9c72a7211",
+                "sha256:550a51dee73c14e5863bdbbbe5836b2b8092a3f92631b5a908b9c41e72f123a5",
+                "sha256:e37eda3d05519918403084b43eb7324df21a0daf45c8ae8172a860710dd0fa78",
+                "sha256:48ab0e79175fd16f9478edc679ee14c79524c64b26f665f92cbecff81312d04d",
+                "sha256:52e18dd86f153c4383bb4c4ef62f81f9b7e44809d068848a5a183b2285496faf",
+                "sha256:0b8f3d6e669ea26849a6184f04c7802dbef6fd418a8b90e6c026e237db07af31",
+                "sha256:567b76f291a8d02aa8b4d3f8295ae749ac4d532570d8a8c7176f0556c7d95891",
+                "sha256:61825daaf2d80dc3da7635ee108720b0739962db008343822753bbf343cbfd14",
+                "sha256:b7f6ef610680709be11cb7662e46e254bc561dafe0de3b4848be2cf3924bd300",
+                "sha256:824664493a012f5b70396e841a4b4049bdaf445a70307e60f82fe35619f72cc7",
+                "sha256:e908d685800626f10cd6ae01a013fc42094be167fb2a683eb920dfddfaa0ee76",
+                "sha256:10c86b2248043f4428be33ed10202764b02b281eaa4550f16f0fbbc6ccaae9ac",
+                "sha256:d9ec728caddb161405e7c33ed9d176e96309893481370163bbf4b00e43008795",
+                "sha256:b2ecb3fd5470b740dfc21b064bbc1337be4b7b805994a868488145d36f35f517",
+                "sha256:a211288459c9115ddb255ff88e8ac12dc2063e70bddc15e3c65136477a358bb5",
+                "sha256:1f81074e77c25f9b787fa3854f400ca924d3d798cb7ae910c0e7920be7138c90",
+                "sha256:99b7eabfb46663ed5918eca4ed12420613ba24196964a741ccd962d09296c0b2",
+                "sha256:a8ad0adeedbbb7b85916214fcd4f5d02829d0e7b3c32abc298789218b6c3d699",
+                "sha256:88d137e440b5de35df2e0616da8e28a88d0119abdaa84520ad1ba815ee9da732",
+                "sha256:c4e02657e629f02ab8712471d77d6896c2cf6f09f8ffa6a0f23b1b1ef0318474",
+                "sha256:9581b438e5d0d0a6fa3937fac2abffd95380bd513bcd39f6952bfcf20cf0b9a7",
+                "sha256:c446fde3284c363cd2085ad1ce5a07c18f15f6766d72684622bc14b0a9ddfd29",
+                "sha256:d4507916c408feec2ea8cee3f0d1380e49ea431f6e07b0dd927388bd6e92d6eb",
+                "sha256:7030f44b758e930fd09ade87d770f5a231a19a8c561a3acc54e5122b5ec09e29",
+                "sha256:d78c0a114cf127a41a526aef99aef539c0b2537e57f04a2cc7a49e2c94a44ab8",
+                "sha256:f7bc9f702500e205b1560d620f14015fec76dcd6f9e889a946a2ddcc3c344fd0"
+            ],
+            "version": "==4.0.0"
+        },
+        "numpy": {
+            "hashes": [
+                "sha256:a51b0788f098b76b5750d0b2352709fbe3fb4736ed93ab60028513ea2bf10259",
+                "sha256:077dfc6c05fec867a9caaffbce22b0581894f885931111b0749eb95e3ad390be",
+                "sha256:cf7a17d41027551bcb198e2de061ebbe1fee1affc332b4d3add650bc21794ec2",
+                "sha256:6eeb63d026ba8e0bf177b50819a8a9a5a808ea82d3477001eb35a9ca3e4c698c",
+                "sha256:4f9dd034b88604d0f67454e879a1d07d54794650fea51186b5199bb780530a07",
+                "sha256:1b21a68ed1aa9e0d9eb4b72729f7e6bf6ad7a48d902a7ae2b7252926ed4616fd",
+                "sha256:e9a2ebff47bf737e0e04e2c7545e843aab637716ab1b732e1ac0a8e1956444a9",
+                "sha256:90eed22ffb0001e8330737b3323bd712eee7af898e726a0e8cb4c4d435f72d00",
+                "sha256:9f3b213396ad52beba7b70b1bd9cbab11bd422ba756935aff9858af26ba98d35",
+                "sha256:4bdce25f2aa0cc0f83c599cf2a57dc6c44d1e71264879da6ca411fafa4a6380e",
+                "sha256:d01d6c03422d5a6663aba0022a552fb77c2e503f19a79ca4418d7da6a6165fee",
+                "sha256:46f4da749206ca75def0eae3ce4d0985d9555c57e5121257eec56e3c351cd3c2",
+                "sha256:8a8e5a848e362a864d40a0b99fcc4eccfc6618cd5f8c3587d74bc8c9796ee015",
+                "sha256:6fc660f6713250307f340b3dae1811ff08a55697e4ee8393ede52f757d39c3e1",
+                "sha256:5c159ac450569594c1f10c118e221c234a481f9fcfa157a736c80f52c6e698ec",
+                "sha256:6930af9a8252454dc6ce037845c7d6c007671f6a156e64b1d8ff973ff42569a0",
+                "sha256:2f10c7042587044e9791df60c3733d9b03b4a5d5f5bf3793c9c30ac7c376cfce",
+                "sha256:2e80e8904636ce1f01d59c019f128161ae472171710b5541f6a535b3ab7f11e4",
+                "sha256:1847a3dd54240b523b383e95635c5305b785c3fe932a2b6ac0a379c5788f1401",
+                "sha256:9725d3cb40dccee76df0ce7816c8d80464b2ebf3d1c68a0620c9633d1b7ffc10",
+                "sha256:da025523172dc61dab586d31e326bc3517004dfeb8e0337d2b556d76bb5217df",
+                "sha256:4cecc6c842762154649fd1c976d40b5903c75076924464b46645af101019e1ad",
+                "sha256:90ceeb683d69ef86cb424818d0bff7597b2a8d05f459679cf43d243c4442b8ba"
+            ],
+            "version": "==1.13.2"
+        },
+        "psycopg2": {
+            "hashes": [
+                "sha256:3ab693b907b2c7a34c1dca198cfc454516cfd75440fd913bb372da6f70d6db55",
+                "sha256:3c99c88216e0fc62113a1177aae9db18a533274370e99a4537b433b87b319360",
+                "sha256:df70e0a387b0145a7a80de67d43d84e1c5a24a33bbfaedb96271876d573e5fb6",
+                "sha256:8d2003d23d8fc59f0f0a2e73c13baa41581006b8227a9d82bbdc1aa233285ba4",
+                "sha256:face605eea5826fa36600c04447b61674992bbd5eb177f66f86f61a04436dbd9",
+                "sha256:ebee4f59803eda1ed4035649469a713818dbf5b6de2e12396edd9fa228727c20",
+                "sha256:4d7c872d9c85745964cf8efabba3fb1a6010b345c18d0e2b620509f0444aa729",
+                "sha256:99a298b9030f8fd36f885c5d0661e4d5a059136a541bb6c4d7d1100e38da3cd1",
+                "sha256:b7646f7bdb42ba3cf7ef9f500f6514b5e413d25c5b3093d70e6ba52df417a83c",
+                "sha256:39369e40bc3e062da5da93ce5f1e7f9bed95e9a60cb6f003d316f2a834722e2d",
+                "sha256:c939b238cbc18e786909d20277c9f051241696ebb03ca9e3490094f526ce69a7",
+                "sha256:9a0a74a6f20d82c389095c88d4d281e66eb3ffbc09adf543dcec4bec22436569",
+                "sha256:16482d050db68503abbb693795d75e9fca287a00f662376759825404533ca87c",
+                "sha256:f74e50341f45fb9bcd3598c11b5774c3e4349ee38cf15c342cc7075c73ef1f95",
+                "sha256:e80a1ae04218e854a5d71085f9498c8c979033ca855cedeed3afc5d976c348ce",
+                "sha256:f07791ee5793621bfaaa844f731529cd72321280f94e8dc3bd4ef524d20f58f2",
+                "sha256:0bd0b1cf81eb6d74a77199570d5ce097fb3c6b8e57acc1edd328cef5c552f98a",
+                "sha256:4db0de7d6236acbf7d020926489b6c4b98e845ba98df11057f22d54866e26b20",
+                "sha256:604c49bf196c654c417ade1dc765bd23fe9bc3392d9a8c7184a7077142d621b3",
+                "sha256:6194e81d8839b636118f5275c53be3c70eb3c3abcf836de675c34b20c06025ea",
+                "sha256:e26aca5eb272869fdf8e55111f36026517c1c0799eb7ef1ddf67d4412affe1ef",
+                "sha256:35d1fec112337c2607c8ca17dee3c2f8455e07dd69d140ff8e86ef1240dace3d",
+                "sha256:891a70235c202158780fc0ab98d7ca2a7ed1625c26725b15119d47b2d852a5c6",
+                "sha256:4cca242df228364b4de6241c54553301856bc253d7f21e15009b11c812eb7b5c",
+                "sha256:3fbba0dd7f3ac458f355dcfc4d7d9cd082c19748e453bcd81bf9d8bc14260c01",
+                "sha256:04a5b2805c620ddecdff33e015631cc8d7ea8dd01e1fcc930bfe002fdc26b9e0",
+                "sha256:4fbe2c29f6d4c8d9eac5fc3c42c42036e7cc58e225036130b7713afa72489aac",
+                "sha256:471e3140e1cb241ecb53602cdc98fe305b82c854cfa53c3e343d642683dc96c7",
+                "sha256:279dbf220c94c9f73aefac719ea3b9550ca791389bc9184c15e835516bc8428d",
+                "sha256:a4d7134058e8869d785c0be386cd702fe2a4be14b678d7571a51045e1bbad862",
+                "sha256:9b7b16e26448b43cf167f785d8b5345007731ebf153a510e12dae826800caa65"
+            ],
+            "version": "==2.7.3.1"
+        },
+        "pycparser": {
+            "hashes": [
+                "sha256:99a8ca03e29851d96616ad0404b4aad7d9ee16f25c9f9708a11faf2810f7b226"
+            ],
+            "version": "==2.18"
+        },
+        "pyelasticsearch": {
+            "hashes": [
+                "sha256:277733776ed538bb2fef4ee3c80d71b9309e6a43d1b891a1dfd06ce9283597a3"
+            ],
+            "version": "==1.4"
+        },
+        "pyopenssl": {
+            "hashes": [
+                "sha256:aade9985b93eaec51b0c0a2a60d14bb8dcff1ff8e36fe542e3c22812ec07315e",
+                "sha256:29630b9064a82e04d8242ea01d7c93d70ec320f5e3ed48e95fcabc6b1d0f6c76"
+            ],
+            "version": "==17.3.0"
+        },
+        "pyyaml": {
+            "hashes": [
+                "sha256:3262c96a1ca437e7e4763e2843746588a965426550f3797a79fca9c6199c431f",
+                "sha256:16b20e970597e051997d90dc2cddc713a2876c47e3d92d59ee198700c5427736",
+                "sha256:e863072cdf4c72eebf179342c94e6989c67185842d9997960b3e69290b2fa269",
+                "sha256:bc6bced57f826ca7cb5125a10b23fd0f2fff3b7c4701d64c439a300ce665fff8",
+                "sha256:c01b880ec30b5a6e6aa67b09a2fe3fb30473008c85cd6a67359a1b15ed6d83a4",
+                "sha256:827dc04b8fa7d07c44de11fabbc888e627fa8293b695e0f99cb544fdfa1bf0d1",
+                "sha256:592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab",
+                "sha256:5f84523c076ad14ff5e6c037fe1c89a7f73a3e04cf0377cb4d017014976433f3",
+                "sha256:0c507b7f74b3d2dd4d1322ec8a94794927305ab4cebbe89cc47fe5e81541e6e8",
+                "sha256:b4c423ab23291d3945ac61346feeb9a0dc4184999ede5e7c43e1ffb975130ae6",
+                "sha256:ca233c64c6e40eaa6c66ef97058cdc80e8d0157a443655baa1b2966e812807ca",
+                "sha256:4474f8ea030b5127225b8894d626bb66c01cda098d47a2b0d3429b6700af9fd8",
+                "sha256:326420cbb492172dec84b0f65c80942de6cedb5233c413dd824483989c000608",
+                "sha256:5ac82e411044fb129bae5cfbeb3ba626acb2af31a8d17d175004b70862a741a7"
+            ],
+            "version": "==3.12"
+        },
+        "requests": {
+            "hashes": [
+                "sha256:6a1b267aa90cac58ac3a765d067950e7dbbf75b1da07e895d1f594193a40a38b",
+                "sha256:9c443e7324ba5b85070c4a818ade28bfabedf16ea10206da1132edaa6dda237e"
+            ],
+            "version": "==2.18.4"
+        },
+        "simplejson": {
+            "hashes": [
+                "sha256:38c2b563cd03363e7cb2bbba6c20ae4eaafd853a83954c8c8dd345ee391787bf",
+                "sha256:8d73b96a6ee7c81fd49dac7225e3846fd60b54a0b5b93a0aaea04c5a5d2e7bf2",
+                "sha256:7f53ab6a675594f237ce7372c1edf742a6acb158149ed3259c5fffc5b613dc94",
+                "sha256:86aa9fd492230c4b8b6814fcf089b36ffba2cec4d0635c8c642135b9067ebbd7",
+                "sha256:7df76ae6cac4a62ad5295f9a9131857077d84cb15fad2011acb2ce7410476009",
+                "sha256:a6939199c30b78ae31e62e6913f0e12cb71a4a5ad67c259e0a98688df027a5de",
+                "sha256:11d91b88cc1e9645c79f0f6fd2961684249af963e2bbff5a00061ed4bbf55379",
+                "sha256:36b0de42e3a8a51086c339cc803f6ac7a9d1d5254066d680956a195ca12cf0d8",
+                "sha256:01a22d49ddd9a168b136f26cac87d9a335660ce07aa5c630b8e3607d6f4325e7",
+                "sha256:ebbd52b59948350ad66205e66b299fcca0e0821ed275c21262c522f4a6cea9d2",
+                "sha256:2dc7fb8c0c0ff9483ce31b93b700b1fa60aca9d099e6aca9813f28ff131ccf59",
+                "sha256:97cc43ef4cb18a2725f6e26d22b96f8ca50872a195bde32707dcb284f89c1d4d",
+                "sha256:c76d55d78dc8b06c96fd08c6cc5e2b0b650799627d3f9ca4ad23f40db72d5f6d",
+                "sha256:1975e6b621fe1c2b9321c56476e8ebe1b851006517c1d67041b378950374694c",
+                "sha256:f60f01b16215568a08611eb6a4d61d76c4173c3d69aac9cad593777056c284d5",
+                "sha256:6be48181337ac5f5d9f48c9c504f317e245519318992122a05c40e482a721d59",
+                "sha256:8ae8cdcbe49e29ddfdae0ab81c1f6c070706d18fcee86371352d0d54b47ad8ec"
+            ],
+            "version": "==3.11.1"
+        },
+        "six": {
+            "hashes": [
+                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
+                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
+            ],
+            "version": "==1.11.0"
+        },
+        "sqlalchemy": {
+            "hashes": [
+                "sha256:f1191e29e35b6fe1aef7175a09b1707ebb7bd08d0b17cb0feada76c49e5a2d1e"
+            ],
+            "version": "==1.1.14"
+        },
+        "unicodecsv": {
+            "hashes": [
+                "sha256:018c08037d48649a0412063ff4eda26eaa81eff1546dbffa51fa5293276ff7fc"
+            ],
+            "version": "==0.14.1"
+        },
+        "urllib3": {
+            "hashes": [
+                "sha256:06330f386d6e4b195fbfc736b297f58c5a892e4440e54d294d7004e3a9bbea1b",
+                "sha256:cc44da8e1145637334317feebd728bd869a35285b93cbb4cca2577da7e62db4f"
+            ],
+            "version": "==1.22"
+        }
+    },
+    "develop": {}
+}

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

just wanted to say, happy to drop this if you don't think its a big issue! just not entirely sure what's going on. why would locking be different between the dev machine and docker?

@kennethreitz
Copy link
Contributor

it works for me.

@AlJohri
Copy link
Contributor Author

AlJohri commented Sep 28, 2017

okay. I'd appreciate it if you get a chance to try it out in docker tomorrow. I reverted back to the version where Pipfile.lock is generated in the container since that seems more reproducible for now.

either way, thanks for the debug sesh and good night!

@kennethreitz
Copy link
Contributor

this is a bug in pip-tools

@vphilippon
Copy link
Member

jazzband/pip-tools#571 should fix this once it merges.
I'll try to ping once it's done to update the patched version here.

@kennethreitz
Copy link
Contributor

this is a bug in pip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants