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

"extras" are brought into the extra package's lockfile entry as "markers" #3026

Closed
kavdev opened this issue Oct 14, 2018 · 33 comments · Fixed by #3070
Closed

"extras" are brought into the extra package's lockfile entry as "markers" #3026

kavdev opened this issue Oct 14, 2018 · 33 comments · Fixed by #3070
Labels
Category: Dependency Resolution Issue relates to dependency resolution. good first issue Issues suitable as a newcomer to get familiar with Pipenv! Type: Bug 🐛 This issue is a bug. Type: Regression This issue is a regression of a previous behavior. Type: Release Blocker Must be resolved before the next release can be cut.

Comments

@kavdev
Copy link

kavdev commented Oct 14, 2018

Issue description

The title is a bit confusing, so I'll just get straight into the setup. Here's my pipfile:

[[source]]

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


[packages]

babel = "==2.6.0"
boto3 = "==1.9.23"
celery = "==4.2.1"
colorama = "==0.4.0"
coreapi = "==2.3.3"
dj-database-url = "==0.5.0"
djangorestframework = "==3.8.2"
django = "==2.1.2"
django-axes = "==4.4.0"
django-celery-results = "==1.0.1"
django-clever-selects = "==0.8.2"
django-crispy-forms = "==1.7.2"
django-choices = "==1.6.1"
django-extra-views = "==0.11.0"
django-filter = "==2.0.0"
django-hijack = "==2.1.10"
django-hijack-admin = "==2.1.10"
django-js-reverse = "==0.8.2"
django-model-utils = "==3.1.2"
django-phonenumber-field = "==2.0.1"
django-polymorphic = "==2.0.3"
django-redis-cache = "==1.7.1"
django-role-permissions = "==2.2.0"
django-s3direct = "==1.0.4"
django-storages = "==1.7.1"
django-tables2 = "==1.21.2"
django-tagulous = "==0.13.2"
django-webpack-loader = "==0.6.0"
django-widget-tweaks = "==1.4.3"
facebook_business = "==3.1.9"
googleads = "==14.1.0"
markdown = "==3.0.1"
pillow = "==5.3.0"
psycopg2-binary = "==2.7.5"
pygments = "==2.2.0"
pyssim = "==0.4"
python-dotenv = "==0.9.1"
pytz = "==2018.5"
raven = "==6.9.0"
sendgrid-django = "==4.2.0"
slacker = "==0.9.65"
termcolor = "==1.1.0"
tqdm = "==4.26.0"
twitter-ads = "==3.0.0"
waitress = "==1.1.0"


[dev-packages]

coverage = "==4.5.1"
selenium = "==3.14.1"
tblib = "==1.3.2"
flake8 = "==3.5.0"
django-debug-toolbar = "==1.10.1"
django-extensions = "==2.1.3"
unittest-xml-reporting = "==2.2.0"


[requires]

python_version = "3.6"


[packages.django-static-precompiler]

extras = [ "libsass",]
version = "==1.8.2"


[packages.whitenoise]

extras = [ "brotli",]
version = "==4.0"

Notice the packages syntax. This is put in automatically by pyup.io -- a service we use to keep our dependencies up to date. If that's causing this issue, let me know and I'll file a bug with the maintainer.

Behavior

As of the latest updates (assuming 2018-10-09), the lockfile entries for libsass and brotli contain markers for the extra args. Example:

        "libsass": {
            "hashes": [
                "sha256:2313f0e82de034eea59443c8f69420c60c55f7c07fd3b59ea7e7a108b36e9d86",
                "sha256:81d63f915d12bbff9931beac3eb6e20c17c40a0da06c3f0173bbacd6568c302c",
                "sha256:8731fb9b4d3151b82d46a4495c8e2b322705cacbcb963c4bfe51d8a5a0c016e7",
                "sha256:938518d827905c83d774a190cc6257b8183edea577485c20de7d49af5ccbeea6",
                "sha256:95109c996ea5cf598344971e7c50847930f1d5dc110b4fc989c047d3b63c0c92",
                "sha256:99d952ac9315af4494eedb1c38e13a16c7c49a6ca056262353e9433f086a1fe3",
                "sha256:9c87df48b541276cc8b03316ab558b4019f16e158786923950926a6ce756124a",
                "sha256:9f740659ec137cafbfd2298e77f21ceb1e40d30c578bd047e55e09da9220048e",
                "sha256:a1315327c134d5ec8f90b4185e1ff2369be0108733f1be0c2ae8ba629c514ef1",
                "sha256:bcbbb4fdd3117e00dc43594fe7e3b10fe17ada8932734287b2680fca18e118c9",
                "sha256:daa7ea2b3b24585cff907320d071992ffea3ba36c4523f90798f27d1c4a9ef66",
                "sha256:e0046d841469df8f578d7bbeb6859502cd4b09b9d559451a35392256423559ea",
                "sha256:e39800d946b9b11d956f02e158eeb85b86ae5b801e63c335f83609d2811b643a"
            ],
            "markers": "extra == 'libsass'",
            "version": "==0.15.1"
        },

This causes the following errors when installing dependencies:

Ignoring brotli: markers 'extra == "brotli"' don't match your environment                                                                                                                                         Looking in indexes: https://pypi.python.org/simple                                                                                                                                                                Ignoring libsass: markers 'extra == "libsass"' don't match your environment                                                                                                                                       Looking in indexes: https://pypi.python.org/simple

Note also that the entries that specify extras are totally fine in the lockfile:

        "django-static-precompiler": {
            "extras": [
                "libsass"
            ],
            "hashes": [
                "sha256:e4880e9bec5e64ea17f68f0787dc636e7c33a9dd68f497c5dd3733ca3e390bb2"
            ],
            "index": "pypi",
            "version": "==1.8.2"
        },

I'm happy to submit a PR if I get some pointers on where to begin. If it would be helpful for me to condense my pipfile to only relevant packages for reproduction, let me know.

@frostming
Copy link
Contributor

Similar issues: #3039 #3043

@uranusjr
Copy link
Member

Obscure trivia: Python packaging does treat extras as a marker internally, so it is probably not doing the wrong thing here. The problem is we need to evaluate that extra marker correctly.

@techalchemy
Copy link
Member

Thanks for the report, even more interesting trivia is that we are evaluating it correctly.

The real trivia is that the current tooling dictates that the correct behavior is to not evaluate it...

We used to do this but I removed some of the marker cleaning code during a bit of a cleanup in the last few releases, but forgot to add it back when I reverted some things: 4a8086d

@techalchemy
Copy link
Member

@kavdev if you'd like to PR the fix, this being hacktoberfest and all, I'm happy to hold off -- Essentially since we are now using translate_markers as the primary marker cleaning call, we just need to do a check to see if any of the markers are secretly extras, and discard those while we build the pipfile. That really only should be necessary here: https://github.com/pypa/pipenv/blob/master/pipenv/utils.py#L1185

Because the other logic is for pipfiles formatted as marker_key = "== 'value'" e.g. os_name = "=='posix'", and extra doesn't show up in the default marker keys listing, they will only ever be formatted as markers = "extra == ..."

So basically what we need to do is just ignore anything that starts that way. I'm happy to fix this if you prefer, but it's actually a pretty good one to tackle if you haven't worked on the codebase before

@techalchemy techalchemy added Type: Bug 🐛 This issue is a bug. Category: Dependency Resolution Issue relates to dependency resolution. Type: Regression This issue is a regression of a previous behavior. good first issue Issues suitable as a newcomer to get familiar with Pipenv! Type: Release Blocker Must be resolved before the next release can be cut. labels Oct 16, 2018
@kavdev
Copy link
Author

kavdev commented Oct 16, 2018

@techalchemy sounds fun! I'll spend some time on it now

@kavdev
Copy link
Author

kavdev commented Oct 16, 2018

image
This could take a while... office internet 🙄

@kavdev
Copy link
Author

kavdev commented Oct 16, 2018

@techalchemy I cloned the repo, ran python setup.py develop, and then attempted to install a package.

This came up:

  File "...pipenv/utils.py", line 16, in <module>
    from six.moves import Mapping
ImportError: cannot import name 'Mapping'

Is master stable to develop on? Am I missing something? I'm running python 3.6.5

@techalchemy
Copy link
Member

Ah sorry I missed this, it should be, but your best bet for development is actually to just pip install -e . --upgrade To make sure dependencies are all met

@kavdev
Copy link
Author

kavdev commented Oct 17, 2018

@techalchemy still no dice. any thoughts?
image

@kavdev
Copy link
Author

kavdev commented Oct 19, 2018

@techalchemy it'll be quicker for you to push a fix. We can figure out dev setup stuff in another issue

@techalchemy
Copy link
Member

@kavdev the screenshot you showed has like nothing installed, that's kinda odd... do we not have six as a direct dependency? you can just pip install it into the environment for now

@vmalloc
Copy link

vmalloc commented Oct 24, 2018

Any idea when a version is expected to be released with a fix for this?

ngrippa added a commit to dainst/cilantro that referenced this issue Oct 29, 2018
This is a workaround for the issue described in pypa/pipenv#3026 (comment). It can be reverted as soon as the fix is released.
@henadzit
Copy link

2018.10.13 still has the bug.

@henadzit
Copy link

@techalchemy why is this closed if the issue is still present in the most latest version? It gives false impression that it's resolved.

@jxltom
Copy link
Contributor

jxltom commented Oct 30, 2018

Because it is fixed in master branch though it is not released yet.

@slint
Copy link

slint commented Oct 30, 2018

Until the new version is released you can remove the "extra" markers manually from the Pipfile.lock before commiting it, e.g. via sed:

$ sed -i "/\"markers\": \"extra == /d" Pipfile.lock

@Kilo59
Copy link

Kilo59 commented Dec 1, 2018

This is still not working for me as of release 11-26

@jxltom
Copy link
Contributor

jxltom commented Dec 1, 2018

@Kilo59 Really, could you please show the output of pipenv install as well as pipenv --support?

I think I've already fixed it in #3070

@Kilo59
Copy link

Kilo59 commented Dec 1, 2018

@jxltom The tool that I need the "extra" for is prospector.

prospector

Cannot run tool pyroma as support was not installed.
Please install by running 'pip install prospector[with_pyroma]'

pipenv install --dev

ubdev1@W1070 /m/c/U/m/c/lifelines> pipenv install --dev
Creating a virtualenv for this project…
Pipfile: /mnt/c/Users/moonb/code/lifelines/Pipfile
Using /usr/bin/python3.7 (3.7.0) to create virtualenv…
⠋ Creating virtual environment...Already using interpreter /usr/bin/python3.7
Using base prefix '/usr'
New python executable in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/bin/python3.7
Also creating executable in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/bin/python
Installing setuptools, pip, wheel...done.
✔ Successfully created virtual environment!
Virtualenv location: /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC
Installing dependencies from Pipfile.lock (328b85)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 51/51 — 00:01:18
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

pipenv --support

$ pipenv --support

Pipenv version: '2018.11.26'

Pipenv location: '/home/ubdev1/.local/lib/python3.7/site-packages/pipenv'

Python location: '/usr/bin/python3.7'

Python installations found:

  • 3.7.1: /mnt/c/Users/moonb/AppData/Local/Programs/Python/Python37/python.exe
  • 3.7.1: /mnt/c/Users/moonb/AppData/Local/Programs/Python/Python37/pythonw.exe
  • 3.7.0: /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/bin/python
  • 3.7.0: /usr/bin/python3.7
  • 3.7.0: /usr/bin/python3.7m
  • 3.7.0: /mnt/c/Users/moonb/Miniconda3/python.exe
  • 3.7.0: /mnt/c/Users/moonb/Miniconda3/pythonw.exe
  • 3.6.5: /usr/bin/python3
  • 3.6.5: /usr/bin/python3.6m
  • 2.7.15rc1: /usr/bin/python

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.7.0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '4.4.0-17134-Microsoft',
 'platform_system': 'Linux',
 'platform_version': '#345-Microsoft Wed Sep 19 17:47:00 PST 2018',
 'python_full_version': '3.7.0',
 'python_version': '3.7',
 'sys_platform': 'linux'}

System environment variables:

  • HOME
  • HOSTTYPE
  • LANG
  • LESSCLOSE
  • LESSOPEN
  • LOGNAME
  • LS_COLORS
  • NAME
  • PATH
  • PIPENV_ACTIVE
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PIP_PYTHON_PATH
  • PWD
  • PYTHONDONTWRITEBYTECODE
  • SHELL
  • SHLVL
  • TERM
  • USER
  • VIRTUAL_ENV
  • XDG_DATA_DIRS
  • _FISH_WARNED_config
  • _OLD_FISH_PROMPT_OVERRIDE
  • _OLD_VIRTUAL_PATH
  • PIP_SHIMS_BASE_MODULE
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

  • PIPENV_ACTIVE: 1

Debug–specific environment variables:

  • PATH: /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/Oculus/Support/oculus-runtime:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files (x86)/NVIDIA Corporation/PhysX/Common:/mnt/c/Windows/System32:/mnt/c/Windows:/mnt/c/Windows/System32/wbem:/mnt/c/Windows/System32/WindowsPowerShell/v1.0:/mnt/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn:/mnt/c/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn:/mnt/c/Program Files/Microsoft SQL Server/130/Tools/Binn:/mnt/c/Program Files/Microsoft SQL Server/130/DTS/Binn:/mnt/c/Program Files/PuTTY:/mnt/c/Users/moonb/AppData/Local/Programs/MiKTeX 2.9/miktex/bin/x64:/mnt/c/Windows/System32/OpenSSH:/mnt/c/Program Files/Git/cmd:/mnt/c/Program Files/nodejs:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/ProgramData/chocolatey/bin:/mnt/c/Go/bin:/mnt/c/HashiCorp/Vagrant/bin:/mnt/c/tools/ruby25/bin:/mnt/c/Users/moonb/AppData/Local/Programs/Python/Python37/Scripts:/mnt/c/Users/moonb/AppData/Local/Programs/Python/Python37:/mnt/c/Users/moonb/.poetry/bin:/mnt/c/Users/moonb/Miniconda3:/mnt/c/Users/moonb/Miniconda3/Scripts:/mnt/c/Users/moonb/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/moonb/AppData/Local/atom/bin:/mnt/c/Users/moonb/AppData/Local/Microsoft/WindowsApps:/mnt/c/Users/moonb/AppData/Local/GitHub/PortableGit_f02737a78695063deace08e96d5042710d3e32db/cmd:/mnt/c/Program Files/Microsoft VS Code/bin:/mnt/c/Users/moonb/AppData/Local/Pandoc:/mnt/c/Users/moonb/AppData/Local/Programs/MiKTeX 2.9/miktex/bin/x64:/mnt/c/Users/moonb/AppData/Roaming/npm:/mnt/c/Users/moonb/.poetry/bin:/mnt/c/Users/moonb/go/bin:/mnt/c/Users/moonb/AppData/Local/hyper/app-2.0.0/resources/bin:/mnt/c/tools/ruby25/bin:/mnt/c/Program Files/Oracle/VirtualBox:/snap/bin
  • SHELL: /bin/bash
  • LANG: C.UTF-8
  • PWD: /mnt/c/Users/moonb/code/lifelines
  • VIRTUAL_ENV: /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC

Contents of Pipfile ('/mnt/c/Users/moonb/code/lifelines/Pipfile'):

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

[packages]
numpy = "*"
scipy = ">=1.0"
pandas = ">=0.18"
matplotlib = ">=2.0"

[dev-packages]
lifelines = {editable = true,path = "."}
coverage = ">=4.4"
pytest = "*"
pytest-cov = "*"
coveralls = "*"
seaborn = "*"
prospector = {extras = ["with_pyorama"],version = "*"}
black = {version = ">=stable",markers = "python_version >= '3.6'"}

Contents of Pipfile.lock ('/mnt/c/Users/moonb/code/lifelines/Pipfile.lock'):

{
    "_meta": {
        "hash": {
            "sha256": "0c414f448bbdd9d139f988c745f48658a1b01b88489bf932bcf6122895328b85"
        },
        "pipfile-spec": 6,
        "requires": {},
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "cycler": {
            "hashes": [
                "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d",
                "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
            ],
            "version": "==0.10.0"
        },
        "kiwisolver": {
            "hashes": [
                "sha256:0ee4ed8b3ae8f5f712b0aa9ebd2858b5b232f1b9a96b0943dceb34df2a223bc3",
                "sha256:0f7f532f3c94e99545a29f4c3f05637f4d2713e7fd91b4dd8abfc18340b86cd5",
                "sha256:1a078f5dd7e99317098f0e0d490257fd0349d79363e8c923d5bb76428f318421",
                "sha256:1aa0b55a0eb1bd3fa82e704f44fb8f16e26702af1a073cc5030eea399e617b56",
                "sha256:2874060b91e131ceeff00574b7c2140749c9355817a4ed498e82a4ffa308ecbc",
                "sha256:379d97783ba8d2934d52221c833407f20ca287b36d949b4bba6c75274bcf6363",
                "sha256:3b791ddf2aefc56382aadc26ea5b352e86a2921e4e85c31c1f770f527eb06ce4",
                "sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
                "sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
                "sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
                "sha256:574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5",
                "sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
                "sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
                "sha256:83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653",
                "sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
                "sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
                "sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
                "sha256:a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde",
                "sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
                "sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
                "sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
                "sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
                "sha256:c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694",
                "sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
                "sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
                "sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
                "sha256:efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5",
                "sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
            ],
            "version": "==1.0.1"
        },
        "matplotlib": {
            "hashes": [
                "sha256:16aa61846efddf91df623bbb4598e63be1068a6b6a2e6361cc802b41c7a286eb",
                "sha256:1975b71a33ac986bb39b6d5cfbc15c7b1f218f1134efb4eb3881839d6ae69984",
                "sha256:2b222744bd54781e6cc0b717fa35a54e5f176ba2ced337f27c5b435b334ef854",
                "sha256:317643c0e88fad55414347216362b2e229c130edd5655fea5f8159a803098468",
                "sha256:4269ce3d1b897d46fc3cc2273a0cc2a730345bb47e4456af662e6fca85c89dd7",
                "sha256:65214fd668975077cdf8d408ccf2b2d6bdf73b4e6895a79f8e99ce4f0b43fcdb",
                "sha256:74bc213ab8a92d86a0b304d9359d1e1d14168d4c6121b83862c9d8a88b89a738",
                "sha256:88949be0db54755995dfb0210d0099a8712a3c696c860441971354c3debfc4af",
                "sha256:8e1223d868be89423ec95ada5f37aa408ee64fe76ccb8e4d5f533699ba4c0e4a",
                "sha256:9fa00f2d7a552a95fa6016e498fdeb6d74df537853dda79a9055c53dfc8b6e1a",
                "sha256:c27fd46cab905097ba4bc28d5ba5289930f313fb1970c9d41092c9975b80e9b4",
                "sha256:c94b792af431f6adb6859eb218137acd9a35f4f7442cea57e4a59c54751c36af",
                "sha256:f4c12a01eb2dc16693887a874ba948b18c92f425c4d329639ece6d3bb8e631bb"
            ],
            "index": "pypi",
            "version": "==3.0.2"
        },
        "numpy": {
            "hashes": [
                "sha256:0df89ca13c25eaa1621a3f09af4c8ba20da849692dcae184cb55e80952c453fb",
                "sha256:154c35f195fd3e1fad2569930ca51907057ae35e03938f89a8aedae91dd1b7c7",
                "sha256:18e84323cdb8de3325e741a7a8dd4a82db74fde363dce32b625324c7b32aa6d7",
                "sha256:1e8956c37fc138d65ded2d96ab3949bd49038cc6e8a4494b1515b0ba88c91565",
                "sha256:23557bdbca3ccbde3abaa12a6e82299bc92d2b9139011f8c16ca1bb8c75d1e95",
                "sha256:24fd645a5e5d224aa6e39d93e4a722fafa9160154f296fd5ef9580191c755053",
                "sha256:36e36b6868e4440760d4b9b44587ea1dc1f06532858d10abba98e851e154ca70",
                "sha256:3d734559db35aa3697dadcea492a423118c5c55d176da2f3be9c98d4803fc2a7",
                "sha256:416a2070acf3a2b5d586f9a6507bb97e33574df5bd7508ea970bbf4fc563fa52",
                "sha256:4a22dc3f5221a644dfe4a63bf990052cc674ef12a157b1056969079985c92816",
                "sha256:4d8d3e5aa6087490912c14a3c10fbdd380b40b421c13920ff468163bc50e016f",
                "sha256:4f41fd159fba1245e1958a99d349df49c616b133636e0cf668f169bce2aeac2d",
                "sha256:561ef098c50f91fbac2cc9305b68c915e9eb915a74d9038ecf8af274d748f76f",
                "sha256:56994e14b386b5c0a9b875a76d22d707b315fa037affc7819cda08b6d0489756",
                "sha256:73a1f2a529604c50c262179fcca59c87a05ff4614fe8a15c186934d84d09d9a5",
                "sha256:7da99445fd890206bfcc7419f79871ba8e73d9d9e6b82fe09980bc5bb4efc35f",
                "sha256:99d59e0bcadac4aa3280616591fb7bcd560e2218f5e31d5223a2e12a1425d495",
                "sha256:a4cc09489843c70b22e8373ca3dfa52b3fab778b57cf81462f1203b0852e95e3",
                "sha256:a61dc29cfca9831a03442a21d4b5fd77e3067beca4b5f81f1a89a04a71cf93fa",
                "sha256:b1853df739b32fa913cc59ad9137caa9cc3d97ff871e2bbd89c2a2a1d4a69451",
                "sha256:b1f44c335532c0581b77491b7715a871d0dd72e97487ac0f57337ccf3ab3469b",
                "sha256:b261e0cb0d6faa8fd6863af26d30351fd2ffdb15b82e51e81e96b9e9e2e7ba16",
                "sha256:c857ae5dba375ea26a6228f98c195fec0898a0fd91bcf0e8a0cae6d9faf3eca7",
                "sha256:cf5bb4a7d53a71bb6a0144d31df784a973b36d8687d615ef6a7e9b1809917a9b",
                "sha256:db9814ff0457b46f2e1d494c1efa4111ca089e08c8b983635ebffb9c1573361f",
                "sha256:df04f4bad8a359daa2ff74f8108ea051670cafbca533bb2636c58b16e962989e",
                "sha256:ecf81720934a0e18526177e645cbd6a8a21bb0ddc887ff9738de07a1df5c6b61",
                "sha256:edfa6fba9157e0e3be0f40168eb142511012683ac3dc82420bee4a3f3981b30e"
            ],
            "index": "pypi",
            "version": "==1.15.4"
        },
        "pandas": {
            "hashes": [
                "sha256:11975fad9edbdb55f1a560d96f91830e83e29bed6ad5ebf506abda09818eaf60",
                "sha256:12e13d127ca1b585dd6f6840d3fe3fa6e46c36a6afe2dbc5cb0b57032c902e31",
                "sha256:1c87fcb201e1e06f66e23a61a5fea9eeebfe7204a66d99df24600e3f05168051",
                "sha256:242e9900de758e137304ad4b5663c2eff0d798c2c3b891250bd0bd97144579da",
                "sha256:26c903d0ae1542890cb9abadb4adcb18f356b14c2df46e4ff657ae640e3ac9e7",
                "sha256:2e1e88f9d3e5f107b65b59cd29f141995597b035d17cc5537e58142038942e1a",
                "sha256:31b7a48b344c14691a8e92765d4023f88902ba3e96e2e4d0364d3453cdfd50db",
                "sha256:4fd07a932b4352f8a8973761ab4e84f965bf81cc750fb38e04f01088ab901cb8",
                "sha256:5b24ca47acf69222e82530e89111dd9d14f9b970ab2cd3a1c2c78f0c4fbba4f4",
                "sha256:647b3b916cc8f6aeba240c8171be3ab799c3c1b2ea179a3be0bd2712c4237553",
                "sha256:66b060946046ca27c0e03e9bec9bba3e0b918bafff84c425ca2cc2e157ce121e",
                "sha256:6efa9fa6e1434141df8872d0fa4226fc301b17aacf37429193f9d70b426ea28f",
                "sha256:be4715c9d8367e51dbe6bc6d05e205b1ae234f0dc5465931014aa1c4af44c1ba",
                "sha256:bea90da782d8e945fccfc958585210d23de374fa9294a9481ed2abcef637ebfc",
                "sha256:d318d77ab96f66a59e792a481e2701fba879e1a453aefeebdb17444fe204d1ed",
                "sha256:d785fc08d6f4207437e900ffead930a61e634c5e4f980ba6d3dc03c9581748c7",
                "sha256:de9559287c4fe8da56e8c3878d2374abc19d1ba2b807bfa7553e912a8e5ba87c",
                "sha256:f4f98b190bb918ac0bc0e3dd2ab74ff3573da9f43106f6dba6385406912ec00f",
                "sha256:f71f1a7e2d03758f6e957896ed696254e2bc83110ddbc6942018f1a232dd9dad",
                "sha256:fb944c8f0b0ab5c1f7846c686bc4cdf8cde7224655c12edcd59d5212cd57bec0"
            ],
            "index": "pypi",
            "version": "==0.23.4"
        },
        "pyparsing": {
            "hashes": [
                "sha256:40856e74d4987de5d01761a22d1621ae1c7f8774585acae358aa5c5936c6c90b",
                "sha256:f353aab21fd474459d97b709e527b5571314ee5f067441dc9f88e33eecd96592"
            ],
            "version": "==2.3.0"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:063df5763652e21de43de7d9e00ccf239f953a832941e37be541614732cdfc93",
                "sha256:88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02"
            ],
            "version": "==2.7.5"
        },
        "pytz": {
            "hashes": [
                "sha256:31cb35c89bd7d333cd32c5f278fca91b523b0834369e757f4c5641ea252236ca",
                "sha256:8e0f8568c118d3077b46be7d654cc8167fa916092e28320cde048e54bfc9f1e6"
            ],
            "version": "==2018.7"
        },
        "scipy": {
            "hashes": [
                "sha256:0611ee97296265af4a21164a5323f8c1b4e8e15c582d3dfa7610825900136bb7",
                "sha256:08237eda23fd8e4e54838258b124f1cd141379a5f281b0a234ca99b38918c07a",
                "sha256:0e645dbfc03f279e1946cf07c9c754c2a1859cb4a41c5f70b25f6b3a586b6dbd",
                "sha256:0e9bb7efe5f051ea7212555b290e784b82f21ffd0f655405ac4f87e288b730b3",
                "sha256:108c16640849e5827e7d51023efb3bd79244098c3f21e4897a1007720cb7ce37",
                "sha256:340ef70f5b0f4e2b4b43c8c8061165911bc6b2ad16f8de85d9774545e2c47463",
                "sha256:3ad73dfc6f82e494195144bd3a129c7241e761179b7cb5c07b9a0ede99c686f3",
                "sha256:3b243c77a822cd034dad53058d7c2abf80062aa6f4a32e9799c95d6391558631",
                "sha256:404a00314e85eca9d46b80929571b938e97a143b4f2ddc2b2b3c91a4c4ead9c5",
                "sha256:423b3ff76957d29d1cce1bc0d62ebaf9a3fdfaf62344e3fdec14619bb7b5ad3a",
                "sha256:42d9149a2fff7affdd352d157fa5717033767857c11bd55aa4a519a44343dfef",
                "sha256:625f25a6b7d795e8830cb70439453c9f163e6870e710ec99eba5722775b318f3",
                "sha256:698c6409da58686f2df3d6f815491fd5b4c2de6817a45379517c92366eea208f",
                "sha256:729f8f8363d32cebcb946de278324ab43d28096f36593be6281ca1ee86ce6559",
                "sha256:8190770146a4c8ed5d330d5b5ad1c76251c63349d25c96b3094875b930c44692",
                "sha256:878352408424dffaa695ffedf2f9f92844e116686923ed9aa8626fc30d32cfd1",
                "sha256:8b984f0821577d889f3c7ca8445564175fb4ac7c7f9659b7c60bef95b2b70e76",
                "sha256:8f841bbc21d3dad2111a94c490fb0a591b8612ffea86b8e5571746ae76a3deac",
                "sha256:c22b27371b3866c92796e5d7907e914f0e58a36d3222c5d436ddd3f0e354227a",
                "sha256:d0cdd5658b49a722783b8b4f61a6f1f9c75042d0e29a30ccb6cacc9b25f6d9e2",
                "sha256:d40dc7f494b06dcee0d303e51a00451b2da6119acbeaccf8369f2d29e28917ac",
                "sha256:d8491d4784aceb1f100ddb8e31239c54e4afab8d607928a9f7ef2469ec35ae01",
                "sha256:dfc5080c38dde3f43d8fbb9c0539a7839683475226cf83e4b24363b227dfe552",
                "sha256:e24e22c8d98d3c704bb3410bce9b69e122a8de487ad3dbfe9985d154e5c03a40",
                "sha256:e7a01e53163818d56eabddcafdc2090e9daba178aad05516b20c6591c4811020",
                "sha256:ee677635393414930541a096fc8e61634304bb0153e4e02b75685b11eba14cae",
                "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40",
                "sha256:f25c281f12c0da726c6ed00535ca5d1622ec755c30a3f8eafef26cf43fede694"
            ],
            "index": "pypi",
            "version": "==1.1.0"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        }
    },
    "develop": {
        "appdirs": {
            "hashes": [
                "sha256:9e5896d1372858f8dd3344faf4e5014d21849c756c8d5701f78f8a103b372d92",
                "sha256:d8b24664561d0d34ddfaec54636d502d7cea6e29c3eaf68f3df6180863e2166e"
            ],
            "version": "==1.4.3"
        },
        "astroid": {
            "hashes": [
                "sha256:292fa429e69d60e4161e7612cb7cc8fa3609e2e309f80c224d93a76d5e7b58be",
                "sha256:c7013d119ec95eb626f7a2011f0b63d0c9a095df9ad06d8507b37084eada1a8d"
            ],
            "version": "==2.0.4"
        },
        "atomicwrites": {
            "hashes": [
                "sha256:0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0",
                "sha256:ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee"
            ],
            "version": "==1.2.1"
        },
        "attrs": {
            "hashes": [
                "sha256:10cbf6e27dbce8c30807caf056c8eb50917e0eaafe86347671b57254006c3e69",
                "sha256:ca4be454458f9dec299268d472aaa5a11f67a4ff70093396e1ceae9c76cf4bbb"
            ],
            "version": "==18.2.0"
        },
        "black": {
            "hashes": [
                "sha256:817243426042db1d36617910df579a54f1afd659adb96fc5032fcf4b36209739",
                "sha256:e030a9a28f542debc08acceb273f228ac422798e5215ba2a791a6ddeaaca22a5"
            ],
            "index": "pypi",
            "markers": "python_version >= '3.6'",
            "version": "==18.9b0"
        },
        "certifi": {
            "hashes": [
                "sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7",
                "sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
            ],
            "version": "==2018.11.29"
        },
        "chardet": {
            "hashes": [
                "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
                "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
            ],
            "version": "==3.0.4"
        },
        "click": {
            "hashes": [
                "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
                "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
            ],
            "version": "==7.0"
        },
        "coverage": {
            "hashes": [
                "sha256:09e47c529ff77bf042ecfe858fb55c3e3eb97aac2c87f0349ab5a7efd6b3939f",
                "sha256:0a1f9b0eb3aa15c990c328535655847b3420231af299386cfe5efc98f9c250fe",
                "sha256:0cc941b37b8c2ececfed341444a456912e740ecf515d560de58b9a76562d966d",
                "sha256:10e8af18d1315de936d67775d3a814cc81d0747a1a0312d84e27ae5610e313b0",
                "sha256:1b4276550b86caa60606bd3572b52769860a81a70754a54acc8ba789ce74d607",
                "sha256:1e8a2627c48266c7b813975335cfdea58c706fe36f607c97d9392e61502dc79d",
                "sha256:2b224052bfd801beb7478b03e8a66f3f25ea56ea488922e98903914ac9ac930b",
                "sha256:447c450a093766744ab53bf1e7063ec82866f27bcb4f4c907da25ad293bba7e3",
                "sha256:46101fc20c6f6568561cdd15a54018bb42980954b79aa46da8ae6f008066a30e",
                "sha256:4710dc676bb4b779c4361b54eb308bc84d64a2fa3d78e5f7228921eccce5d815",
                "sha256:510986f9a280cd05189b42eee2b69fecdf5bf9651d4cd315ea21d24a964a3c36",
                "sha256:5535dda5739257effef56e49a1c51c71f1d37a6e5607bb25a5eee507c59580d1",
                "sha256:5a7524042014642b39b1fcae85fb37556c200e64ec90824ae9ecf7b667ccfc14",
                "sha256:5f55028169ef85e1fa8e4b8b1b91c0b3b0fa3297c4fb22990d46ff01d22c2d6c",
                "sha256:6694d5573e7790a0e8d3d177d7a416ca5f5c150742ee703f3c18df76260de794",
                "sha256:6831e1ac20ac52634da606b658b0b2712d26984999c9d93f0c6e59fe62ca741b",
                "sha256:77f0d9fa5e10d03aa4528436e33423bfa3718b86c646615f04616294c935f840",
                "sha256:828ad813c7cdc2e71dcf141912c685bfe4b548c0e6d9540db6418b807c345ddd",
                "sha256:85a06c61598b14b015d4df233d249cd5abfa61084ef5b9f64a48e997fd829a82",
                "sha256:8cb4febad0f0b26c6f62e1628f2053954ad2c555d67660f28dfb1b0496711952",
                "sha256:a5c58664b23b248b16b96253880b2868fb34358911400a7ba39d7f6399935389",
                "sha256:aaa0f296e503cda4bc07566f592cd7a28779d433f3a23c48082af425d6d5a78f",
                "sha256:ab235d9fe64833f12d1334d29b558aacedfbca2356dfb9691f2d0d38a8a7bfb4",
                "sha256:b3b0c8f660fae65eac74fbf003f3103769b90012ae7a460863010539bb7a80da",
                "sha256:bab8e6d510d2ea0f1d14f12642e3f35cefa47a9b2e4c7cea1852b52bc9c49647",
                "sha256:c45297bbdbc8bb79b02cf41417d63352b70bcb76f1bbb1ee7d47b3e89e42f95d",
                "sha256:d19bca47c8a01b92640c614a9147b081a1974f69168ecd494687c827109e8f42",
                "sha256:d64b4340a0c488a9e79b66ec9f9d77d02b99b772c8b8afd46c1294c1d39ca478",
                "sha256:da969da069a82bbb5300b59161d8d7c8d423bc4ccd3b410a9b4d8932aeefc14b",
                "sha256:ed02c7539705696ecb7dc9d476d861f3904a8d2b7e894bd418994920935d36bb",
                "sha256:ee5b8abc35b549012e03a7b1e86c09491457dba6c94112a2482b18589cc2bdb9"
            ],
            "index": "pypi",
            "version": "==4.5.2"
        },
        "coveralls": {
            "hashes": [
                "sha256:ab638e88d38916a6cedbf80a9cd8992d5fa55c77ab755e262e00b36792b7cd6d",
                "sha256:b2388747e2529fa4c669fb1e3e2756e4e07b6ee56c7d9fce05f35ccccc913aa0"
            ],
            "index": "pypi",
            "version": "==1.5.1"
        },
        "cycler": {
            "hashes": [
                "sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d",
                "sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8"
            ],
            "version": "==0.10.0"
        },
        "docopt": {
            "hashes": [
                "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"
            ],
            "version": "==0.6.2"
        },
        "dodgy": {
            "hashes": [
                "sha256:65e13cf878d7aff129f1461c13cb5fd1bb6dfe66bb5327e09379c3877763280c"
            ],
            "version": "==0.1.9"
        },
        "idna": {
            "hashes": [
                "sha256:156a6814fb5ac1fc6850fb002e0852d56c0c8d2531923a51032d1b70760e186e",
                "sha256:684a38a6f903c1d71d6d5fac066b58d7768af4de2b832e426ec79c30daa94a16"
            ],
            "version": "==2.7"
        },
        "isort": {
            "hashes": [
                "sha256:1153601da39a25b14ddc54955dbbacbb6b2d19135386699e2ad58517953b34af",
                "sha256:b9c40e9750f3d77e6e4d441d8b0266cf555e7cdabdcff33c4fd06366ca761ef8",
                "sha256:ec9ef8f4a9bc6f71eec99e1806bfa2de401650d996c59330782b89a5555c1497"
            ],
            "version": "==4.3.4"
        },
        "kiwisolver": {
            "hashes": [
                "sha256:0ee4ed8b3ae8f5f712b0aa9ebd2858b5b232f1b9a96b0943dceb34df2a223bc3",
                "sha256:0f7f532f3c94e99545a29f4c3f05637f4d2713e7fd91b4dd8abfc18340b86cd5",
                "sha256:1a078f5dd7e99317098f0e0d490257fd0349d79363e8c923d5bb76428f318421",
                "sha256:1aa0b55a0eb1bd3fa82e704f44fb8f16e26702af1a073cc5030eea399e617b56",
                "sha256:2874060b91e131ceeff00574b7c2140749c9355817a4ed498e82a4ffa308ecbc",
                "sha256:379d97783ba8d2934d52221c833407f20ca287b36d949b4bba6c75274bcf6363",
                "sha256:3b791ddf2aefc56382aadc26ea5b352e86a2921e4e85c31c1f770f527eb06ce4",
                "sha256:4329008a167fac233e398e8a600d1b91539dc33c5a3eadee84c0d4b04d4494fa",
                "sha256:45813e0873bbb679334a161b28cb9606d9665e70561fd6caa8863e279b5e464b",
                "sha256:53a5b27e6b5717bdc0125338a822605084054c80f382051fb945d2c0e6899a20",
                "sha256:574f24b9805cb1c72d02b9f7749aa0cc0b81aa82571be5201aa1453190390ae5",
                "sha256:66f82819ff47fa67a11540da96966fb9245504b7f496034f534b81cacf333861",
                "sha256:79e5fe3ccd5144ae80777e12973027bd2f4f5e3ae8eb286cabe787bed9780138",
                "sha256:83410258eb886f3456714eea4d4304db3a1fc8624623fc3f38a487ab36c0f653",
                "sha256:8b6a7b596ce1d2a6d93c3562f1178ebd3b7bb445b3b0dd33b09f9255e312a965",
                "sha256:9576cb63897fbfa69df60f994082c3f4b8e6adb49cccb60efb2a80a208e6f996",
                "sha256:95a25d9f3449046ecbe9065be8f8380c03c56081bc5d41fe0fb964aaa30b2195",
                "sha256:a424f048bebc4476620e77f3e4d1f282920cef9bc376ba16d0b8fe97eec87cde",
                "sha256:aaec1cfd94f4f3e9a25e144d5b0ed1eb8a9596ec36d7318a504d813412563a85",
                "sha256:acb673eecbae089ea3be3dcf75bfe45fc8d4dcdc951e27d8691887963cf421c7",
                "sha256:b15bc8d2c2848a4a7c04f76c9b3dc3561e95d4dabc6b4f24bfabe5fd81a0b14f",
                "sha256:b1c240d565e977d80c0083404c01e4d59c5772c977fae2c483f100567f50847b",
                "sha256:c595693de998461bcd49b8d20568c8870b3209b8ea323b2a7b0ea86d85864694",
                "sha256:ce3be5d520b4d2c3e5eeb4cd2ef62b9b9ab8ac6b6fedbaa0e39cdb6f50644278",
                "sha256:e0f910f84b35c36a3513b96d816e6442ae138862257ae18a0019d2fc67b041dc",
                "sha256:ea36e19ac0a483eea239320aef0bd40702404ff8c7e42179a2d9d36c5afcb55c",
                "sha256:efabbcd4f406b532206b8801058c8bab9e79645b9880329253ae3322b7b02cd5",
                "sha256:f923406e6b32c86309261b8195e24e18b6a8801df0cfc7814ac44017bfcb3939"
            ],
            "version": "==1.0.1"
        },
        "lazy-object-proxy": {
            "hashes": [
                "sha256:0ce34342b419bd8f018e6666bfef729aec3edf62345a53b537a4dcc115746a33",
                "sha256:1b668120716eb7ee21d8a38815e5eb3bb8211117d9a90b0f8e21722c0758cc39",
                "sha256:209615b0fe4624d79e50220ce3310ca1a9445fd8e6d3572a896e7f9146bbf019",
                "sha256:27bf62cb2b1a2068d443ff7097ee33393f8483b570b475db8ebf7e1cba64f088",
                "sha256:27ea6fd1c02dcc78172a82fc37fcc0992a94e4cecf53cb6d73f11749825bd98b",
                "sha256:2c1b21b44ac9beb0fc848d3993924147ba45c4ebc24be19825e57aabbe74a99e",
                "sha256:2df72ab12046a3496a92476020a1a0abf78b2a7db9ff4dc2036b8dd980203ae6",
                "sha256:320ffd3de9699d3892048baee45ebfbbf9388a7d65d832d7e580243ade426d2b",
                "sha256:50e3b9a464d5d08cc5227413db0d1c4707b6172e4d4d915c1c70e4de0bbff1f5",
                "sha256:5276db7ff62bb7b52f77f1f51ed58850e315154249aceb42e7f4c611f0f847ff",
                "sha256:61a6cf00dcb1a7f0c773ed4acc509cb636af2d6337a08f362413c76b2b47a8dd",
                "sha256:6ae6c4cb59f199d8827c5a07546b2ab7e85d262acaccaacd49b62f53f7c456f7",
                "sha256:7661d401d60d8bf15bb5da39e4dd72f5d764c5aff5a86ef52a042506e3e970ff",
                "sha256:7bd527f36a605c914efca5d3d014170b2cb184723e423d26b1fb2fd9108e264d",
                "sha256:7cb54db3535c8686ea12e9535eb087d32421184eacc6939ef15ef50f83a5e7e2",
                "sha256:7f3a2d740291f7f2c111d86a1c4851b70fb000a6c8883a59660d95ad57b9df35",
                "sha256:81304b7d8e9c824d058087dcb89144842c8e0dea6d281c031f59f0acf66963d4",
                "sha256:933947e8b4fbe617a51528b09851685138b49d511af0b6c0da2539115d6d4514",
                "sha256:94223d7f060301b3a8c09c9b3bc3294b56b2188e7d8179c762a1cda72c979252",
                "sha256:ab3ca49afcb47058393b0122428358d2fbe0408cf99f1b58b295cfeb4ed39109",
                "sha256:bd6292f565ca46dee4e737ebcc20742e3b5be2b01556dafe169f6c65d088875f",
                "sha256:cb924aa3e4a3fb644d0c463cad5bc2572649a6a3f68a7f8e4fbe44aaa6d77e4c",
                "sha256:d0fc7a286feac9077ec52a927fc9fe8fe2fabab95426722be4c953c9a8bede92",
                "sha256:ddc34786490a6e4ec0a855d401034cbd1242ef186c20d79d2166d6a4bd449577",
                "sha256:e34b155e36fa9da7e1b7c738ed7767fc9491a62ec6af70fe9da4a057759edc2d",
                "sha256:e5b9e8f6bda48460b7b143c3821b21b452cb3a835e6bbd5dd33aa0c8d3f5137d",
                "sha256:e81ebf6c5ee9684be8f2c87563880f93eedd56dd2b6146d8a725b50b7e5adb0f",
                "sha256:eb91be369f945f10d3a49f5f9be8b3d0b93a4c2be8f8a5b83b0571b8123e0a7a",
                "sha256:f460d1ceb0e4a5dcb2a652db0904224f367c9b3c1470d5a7683c0480e582468b"
            ],
            "version": "==1.3.1"
        },
        "lifelines": {
            "editable": true,
            "path": "."
        },
        "matplotlib": {
            "hashes": [
                "sha256:16aa61846efddf91df623bbb4598e63be1068a6b6a2e6361cc802b41c7a286eb",
                "sha256:1975b71a33ac986bb39b6d5cfbc15c7b1f218f1134efb4eb3881839d6ae69984",
                "sha256:2b222744bd54781e6cc0b717fa35a54e5f176ba2ced337f27c5b435b334ef854",
                "sha256:317643c0e88fad55414347216362b2e229c130edd5655fea5f8159a803098468",
                "sha256:4269ce3d1b897d46fc3cc2273a0cc2a730345bb47e4456af662e6fca85c89dd7",
                "sha256:65214fd668975077cdf8d408ccf2b2d6bdf73b4e6895a79f8e99ce4f0b43fcdb",
                "sha256:74bc213ab8a92d86a0b304d9359d1e1d14168d4c6121b83862c9d8a88b89a738",
                "sha256:88949be0db54755995dfb0210d0099a8712a3c696c860441971354c3debfc4af",
                "sha256:8e1223d868be89423ec95ada5f37aa408ee64fe76ccb8e4d5f533699ba4c0e4a",
                "sha256:9fa00f2d7a552a95fa6016e498fdeb6d74df537853dda79a9055c53dfc8b6e1a",
                "sha256:c27fd46cab905097ba4bc28d5ba5289930f313fb1970c9d41092c9975b80e9b4",
                "sha256:c94b792af431f6adb6859eb218137acd9a35f4f7442cea57e4a59c54751c36af",
                "sha256:f4c12a01eb2dc16693887a874ba948b18c92f425c4d329639ece6d3bb8e631bb"
            ],
            "index": "pypi",
            "version": "==3.0.2"
        },
        "mccabe": {
            "hashes": [
                "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
                "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
            ],
            "version": "==0.6.1"
        },
        "more-itertools": {
            "hashes": [
                "sha256:c187a73da93e7a8acc0001572aebc7e3c69daf7bf6881a2cea10650bd4420092",
                "sha256:c476b5d3a34e12d40130bc2f935028b5f636df8f372dc2c1c01dc19681b2039e",
                "sha256:fcbfeaea0be121980e15bc97b3817b5202ca73d0eae185b4550cbfce2a3ebb3d"
            ],
            "version": "==4.3.0"
        },
        "numpy": {
            "hashes": [
                "sha256:0df89ca13c25eaa1621a3f09af4c8ba20da849692dcae184cb55e80952c453fb",
                "sha256:154c35f195fd3e1fad2569930ca51907057ae35e03938f89a8aedae91dd1b7c7",
                "sha256:18e84323cdb8de3325e741a7a8dd4a82db74fde363dce32b625324c7b32aa6d7",
                "sha256:1e8956c37fc138d65ded2d96ab3949bd49038cc6e8a4494b1515b0ba88c91565",
                "sha256:23557bdbca3ccbde3abaa12a6e82299bc92d2b9139011f8c16ca1bb8c75d1e95",
                "sha256:24fd645a5e5d224aa6e39d93e4a722fafa9160154f296fd5ef9580191c755053",
                "sha256:36e36b6868e4440760d4b9b44587ea1dc1f06532858d10abba98e851e154ca70",
                "sha256:3d734559db35aa3697dadcea492a423118c5c55d176da2f3be9c98d4803fc2a7",
                "sha256:416a2070acf3a2b5d586f9a6507bb97e33574df5bd7508ea970bbf4fc563fa52",
                "sha256:4a22dc3f5221a644dfe4a63bf990052cc674ef12a157b1056969079985c92816",
                "sha256:4d8d3e5aa6087490912c14a3c10fbdd380b40b421c13920ff468163bc50e016f",
                "sha256:4f41fd159fba1245e1958a99d349df49c616b133636e0cf668f169bce2aeac2d",
                "sha256:561ef098c50f91fbac2cc9305b68c915e9eb915a74d9038ecf8af274d748f76f",
                "sha256:56994e14b386b5c0a9b875a76d22d707b315fa037affc7819cda08b6d0489756",
                "sha256:73a1f2a529604c50c262179fcca59c87a05ff4614fe8a15c186934d84d09d9a5",
                "sha256:7da99445fd890206bfcc7419f79871ba8e73d9d9e6b82fe09980bc5bb4efc35f",
                "sha256:99d59e0bcadac4aa3280616591fb7bcd560e2218f5e31d5223a2e12a1425d495",
                "sha256:a4cc09489843c70b22e8373ca3dfa52b3fab778b57cf81462f1203b0852e95e3",
                "sha256:a61dc29cfca9831a03442a21d4b5fd77e3067beca4b5f81f1a89a04a71cf93fa",
                "sha256:b1853df739b32fa913cc59ad9137caa9cc3d97ff871e2bbd89c2a2a1d4a69451",
                "sha256:b1f44c335532c0581b77491b7715a871d0dd72e97487ac0f57337ccf3ab3469b",
                "sha256:b261e0cb0d6faa8fd6863af26d30351fd2ffdb15b82e51e81e96b9e9e2e7ba16",
                "sha256:c857ae5dba375ea26a6228f98c195fec0898a0fd91bcf0e8a0cae6d9faf3eca7",
                "sha256:cf5bb4a7d53a71bb6a0144d31df784a973b36d8687d615ef6a7e9b1809917a9b",
                "sha256:db9814ff0457b46f2e1d494c1efa4111ca089e08c8b983635ebffb9c1573361f",
                "sha256:df04f4bad8a359daa2ff74f8108ea051670cafbca533bb2636c58b16e962989e",
                "sha256:ecf81720934a0e18526177e645cbd6a8a21bb0ddc887ff9738de07a1df5c6b61",
                "sha256:edfa6fba9157e0e3be0f40168eb142511012683ac3dc82420bee4a3f3981b30e"
            ],
            "index": "pypi",
            "version": "==1.15.4"
        },
        "pandas": {
            "hashes": [
                "sha256:11975fad9edbdb55f1a560d96f91830e83e29bed6ad5ebf506abda09818eaf60",
                "sha256:12e13d127ca1b585dd6f6840d3fe3fa6e46c36a6afe2dbc5cb0b57032c902e31",
                "sha256:1c87fcb201e1e06f66e23a61a5fea9eeebfe7204a66d99df24600e3f05168051",
                "sha256:242e9900de758e137304ad4b5663c2eff0d798c2c3b891250bd0bd97144579da",
                "sha256:26c903d0ae1542890cb9abadb4adcb18f356b14c2df46e4ff657ae640e3ac9e7",
                "sha256:2e1e88f9d3e5f107b65b59cd29f141995597b035d17cc5537e58142038942e1a",
                "sha256:31b7a48b344c14691a8e92765d4023f88902ba3e96e2e4d0364d3453cdfd50db",
                "sha256:4fd07a932b4352f8a8973761ab4e84f965bf81cc750fb38e04f01088ab901cb8",
                "sha256:5b24ca47acf69222e82530e89111dd9d14f9b970ab2cd3a1c2c78f0c4fbba4f4",
                "sha256:647b3b916cc8f6aeba240c8171be3ab799c3c1b2ea179a3be0bd2712c4237553",
                "sha256:66b060946046ca27c0e03e9bec9bba3e0b918bafff84c425ca2cc2e157ce121e",
                "sha256:6efa9fa6e1434141df8872d0fa4226fc301b17aacf37429193f9d70b426ea28f",
                "sha256:be4715c9d8367e51dbe6bc6d05e205b1ae234f0dc5465931014aa1c4af44c1ba",
                "sha256:bea90da782d8e945fccfc958585210d23de374fa9294a9481ed2abcef637ebfc",
                "sha256:d318d77ab96f66a59e792a481e2701fba879e1a453aefeebdb17444fe204d1ed",
                "sha256:d785fc08d6f4207437e900ffead930a61e634c5e4f980ba6d3dc03c9581748c7",
                "sha256:de9559287c4fe8da56e8c3878d2374abc19d1ba2b807bfa7553e912a8e5ba87c",
                "sha256:f4f98b190bb918ac0bc0e3dd2ab74ff3573da9f43106f6dba6385406912ec00f",
                "sha256:f71f1a7e2d03758f6e957896ed696254e2bc83110ddbc6942018f1a232dd9dad",
                "sha256:fb944c8f0b0ab5c1f7846c686bc4cdf8cde7224655c12edcd59d5212cd57bec0"
            ],
            "index": "pypi",
            "version": "==0.23.4"
        },
        "pep8-naming": {
            "hashes": [
                "sha256:1b419fa45b68b61cd8c5daf4e0c96d28915ad14d3d5f35fcc1e7e95324a33a2e",
                "sha256:4eedfd4c4b05e48796f74f5d8628c068ff788b9c2b08471ad408007fc6450e5a"
            ],
            "version": "==0.4.1"
        },
        "pluggy": {
            "hashes": [
                "sha256:447ba94990e8014ee25ec853339faf7b0fc8050cdc3289d4d71f7f410fb90095",
                "sha256:bde19360a8ec4dfd8a20dcb811780a30998101f078fc7ded6162f0076f50508f"
            ],
            "version": "==0.8.0"
        },
        "prospector": {
            "extras": [
                "with_pyorama"
            ],
            "hashes": [
                "sha256:877d8d361a5c0e04c8587718c22c5d671afcf814945c96b3e592836d772943fd"
            ],
            "index": "pypi",
            "version": "==1.1.6.2"
        },
        "py": {
            "hashes": [
                "sha256:bf92637198836372b520efcba9e020c330123be8ce527e535d185ed4b6f45694",
                "sha256:e76826342cefe3c3d5f7e8ee4316b80d1dd8a300781612ddbc765c17ba25a6c6"
            ],
            "version": "==1.7.0"
        },
        "pycodestyle": {
            "hashes": [
                "sha256:cbc619d09254895b0d12c2c691e237b2e91e9b2ecf5e84c26b35400f93dcfb83",
                "sha256:cbfca99bd594a10f674d0cd97a3d802a1fdef635d4361e1a2658de47ed261e3a"
            ],
            "version": "==2.4.0"
        },
        "pydocstyle": {
            "hashes": [
                "sha256:2258f9b0df68b97bf3a6c29003edc5238ff8879f1efb6f1999988d934e432bd8",
                "sha256:5741c85e408f9e0ddf873611085e819b809fca90b619f5fd7f34bd4959da3dd4",
                "sha256:ed79d4ec5e92655eccc21eb0c6cf512e69512b4a97d215ace46d17e4990f2039"
            ],
            "version": "==3.0.0"
        },
        "pyflakes": {
            "hashes": [
                "sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
                "sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
            ],
            "version": "==1.6.0"
        },
        "pylint": {
            "hashes": [
                "sha256:1d6d3622c94b4887115fe5204982eee66fdd8a951cf98635ee5caee6ec98c3ec",
                "sha256:31142f764d2a7cd41df5196f9933b12b7ee55e73ef12204b648ad7e556c119fb"
            ],
            "version": "==2.1.1"
        },
        "pylint-celery": {
            "hashes": [
                "sha256:41e32094e7408d15c044178ea828dd524beedbdbe6f83f712c5e35bde1de4beb"
            ],
            "version": "==0.3"
        },
        "pylint-django": {
            "hashes": [
                "sha256:5dc5f85caef2c5f9e61622b9cbd89d94edd3dcf546939b2974d18de4fa90d676",
                "sha256:bf313f10b68ed915a34f0f475cc9ff8c7f574a95302beb48b79c5993f7efd84c"
            ],
            "version": "==2.0.2"
        },
        "pylint-flask": {
            "hashes": [
                "sha256:8fcdbb7cbf13d8c2ac1f2230b2aa1c1b83bb3ca2bd8b76f95561cb8757a305ec"
            ],
            "version": "==0.5"
        },
        "pylint-plugin-utils": {
            "hashes": [
                "sha256:8ad25a82bcce390d1d6b7c006c123e0cb18051839c9df7b8bdb7823c53fe676e"
            ],
            "version": "==0.4"
        },
        "pyparsing": {
            "hashes": [
                "sha256:40856e74d4987de5d01761a22d1621ae1c7f8774585acae358aa5c5936c6c90b",
                "sha256:f353aab21fd474459d97b709e527b5571314ee5f067441dc9f88e33eecd96592"
            ],
            "version": "==2.3.0"
        },
        "pytest": {
            "hashes": [
                "sha256:1d131cc532be0023ef8ae265e2a779938d0619bb6c2510f52987ffcba7fa1ee4",
                "sha256:ca4761407f1acc85ffd1609f464ca20bb71a767803505bd4127d0e45c5a50e23"
            ],
            "index": "pypi",
            "version": "==4.0.1"
        },
        "pytest-cov": {
            "hashes": [
                "sha256:513c425e931a0344944f84ea47f3956be0e416d95acbd897a44970c8d926d5d7",
                "sha256:e360f048b7dae3f2f2a9a4d067b2dd6b6a015d384d1577c994a43f3f7cbad762"
            ],
            "index": "pypi",
            "version": "==2.6.0"
        },
        "python-dateutil": {
            "hashes": [
                "sha256:063df5763652e21de43de7d9e00ccf239f953a832941e37be541614732cdfc93",
                "sha256:88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02"
            ],
            "version": "==2.7.5"
        },
        "pytz": {
            "hashes": [
                "sha256:31cb35c89bd7d333cd32c5f278fca91b523b0834369e757f4c5641ea252236ca",
                "sha256:8e0f8568c118d3077b46be7d654cc8167fa916092e28320cde048e54bfc9f1e6"
            ],
            "version": "==2018.7"
        },
        "pyyaml": {
            "hashes": [
                "sha256:3d7da3009c0f3e783b2c873687652d83b1bbfd5c88e9813fb7e5b03c0dd3108b",
                "sha256:3ef3092145e9b70e3ddd2c7ad59bdd0252a94dfe3949721633e41344de00a6bf",
                "sha256:40c71b8e076d0550b2e6380bada1f1cd1017b882f7e16f09a65be98e017f211a",
                "sha256:558dd60b890ba8fd982e05941927a3911dc409a63dcb8b634feaa0cda69330d3",
                "sha256:a7c28b45d9f99102fa092bb213aa12e0aaf9a6a1f5e395d36166639c1f96c3a1",
                "sha256:aa7dd4a6a427aed7df6fb7f08a580d68d9b118d90310374716ae90b710280af1",
                "sha256:bc558586e6045763782014934bfaf39d48b8ae85a2713117d16c39864085c613",
                "sha256:d46d7982b62e0729ad0175a9bc7e10a566fc07b224d2c79fafb5e032727eaa04",
                "sha256:d5eef459e30b09f5a098b9cea68bebfeb268697f78d647bd255a085371ac7f3f",
                "sha256:e01d3203230e1786cd91ccfdc8f8454c8069c91bee3962ad93b87a4b2860f537",
                "sha256:e170a9e6fcfd19021dd29845af83bb79236068bf5fd4df3327c1be18182b2531"
            ],
            "version": "==3.13"
        },
        "requests": {
            "hashes": [
                "sha256:65b3a120e4329e33c9889db89c80976c5272f56ea92d3e74da8a463992e3ff54",
                "sha256:ea881206e59f41dbd0bd445437d792e43906703fff75ca8ff43ccdb11f33f263"
            ],
            "version": "==2.20.1"
        },
        "requirements-detector": {
            "hashes": [
                "sha256:9fbc4b24e8b7c3663aff32e3eba34596848c6b91bd425079b386973bd8d08931"
            ],
            "version": "==0.6"
        },
        "scipy": {
            "hashes": [
                "sha256:0611ee97296265af4a21164a5323f8c1b4e8e15c582d3dfa7610825900136bb7",
                "sha256:08237eda23fd8e4e54838258b124f1cd141379a5f281b0a234ca99b38918c07a",
                "sha256:0e645dbfc03f279e1946cf07c9c754c2a1859cb4a41c5f70b25f6b3a586b6dbd",
                "sha256:0e9bb7efe5f051ea7212555b290e784b82f21ffd0f655405ac4f87e288b730b3",
                "sha256:108c16640849e5827e7d51023efb3bd79244098c3f21e4897a1007720cb7ce37",
                "sha256:340ef70f5b0f4e2b4b43c8c8061165911bc6b2ad16f8de85d9774545e2c47463",
                "sha256:3ad73dfc6f82e494195144bd3a129c7241e761179b7cb5c07b9a0ede99c686f3",
                "sha256:3b243c77a822cd034dad53058d7c2abf80062aa6f4a32e9799c95d6391558631",
                "sha256:404a00314e85eca9d46b80929571b938e97a143b4f2ddc2b2b3c91a4c4ead9c5",
                "sha256:423b3ff76957d29d1cce1bc0d62ebaf9a3fdfaf62344e3fdec14619bb7b5ad3a",
                "sha256:42d9149a2fff7affdd352d157fa5717033767857c11bd55aa4a519a44343dfef",
                "sha256:625f25a6b7d795e8830cb70439453c9f163e6870e710ec99eba5722775b318f3",
                "sha256:698c6409da58686f2df3d6f815491fd5b4c2de6817a45379517c92366eea208f",
                "sha256:729f8f8363d32cebcb946de278324ab43d28096f36593be6281ca1ee86ce6559",
                "sha256:8190770146a4c8ed5d330d5b5ad1c76251c63349d25c96b3094875b930c44692",
                "sha256:878352408424dffaa695ffedf2f9f92844e116686923ed9aa8626fc30d32cfd1",
                "sha256:8b984f0821577d889f3c7ca8445564175fb4ac7c7f9659b7c60bef95b2b70e76",
                "sha256:8f841bbc21d3dad2111a94c490fb0a591b8612ffea86b8e5571746ae76a3deac",
                "sha256:c22b27371b3866c92796e5d7907e914f0e58a36d3222c5d436ddd3f0e354227a",
                "sha256:d0cdd5658b49a722783b8b4f61a6f1f9c75042d0e29a30ccb6cacc9b25f6d9e2",
                "sha256:d40dc7f494b06dcee0d303e51a00451b2da6119acbeaccf8369f2d29e28917ac",
                "sha256:d8491d4784aceb1f100ddb8e31239c54e4afab8d607928a9f7ef2469ec35ae01",
                "sha256:dfc5080c38dde3f43d8fbb9c0539a7839683475226cf83e4b24363b227dfe552",
                "sha256:e24e22c8d98d3c704bb3410bce9b69e122a8de487ad3dbfe9985d154e5c03a40",
                "sha256:e7a01e53163818d56eabddcafdc2090e9daba178aad05516b20c6591c4811020",
                "sha256:ee677635393414930541a096fc8e61634304bb0153e4e02b75685b11eba14cae",
                "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40",
                "sha256:f25c281f12c0da726c6ed00535ca5d1622ec755c30a3f8eafef26cf43fede694"
            ],
            "index": "pypi",
            "version": "==1.1.0"
        },
        "seaborn": {
            "hashes": [
                "sha256:42e627b24e849c2d3bbfd059e00005f6afbc4a76e4895baf44ae23fe8a4b09a5",
                "sha256:76c83f794ca320fb6b23a7c6192d5e185a5fcf4758966a0c0a54baee46d41e2f"
            ],
            "index": "pypi",
            "version": "==0.9.0"
        },
        "setoptconf": {
            "hashes": [
                "sha256:5b0b5d8e0077713f5d5152d4f63be6f048d9a1bb66be15d089a11c898c3cf49c"
            ],
            "version": "==0.2.0"
        },
        "six": {
            "hashes": [
                "sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9",
                "sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb"
            ],
            "version": "==1.11.0"
        },
        "snowballstemmer": {
            "hashes": [
                "sha256:919f26a68b2c17a7634da993d91339e288964f93c274f1343e3bbbe2096e1128",
                "sha256:9f3bcd3c401c3e862ec0ebe6d2c069ebc012ce142cce209c098ccb5b09136e89"
            ],
            "version": "==1.2.1"
        },
        "toml": {
            "hashes": [
                "sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c",
                "sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e"
            ],
            "version": "==0.10.0"
        },
        "urllib3": {
            "hashes": [
                "sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39",
                "sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
            ],
            "version": "==1.24.1"
        },
        "wrapt": {
            "hashes": [
                "sha256:d4d560d479f2c21e1b5443bbd15fe7ec4b37fe7e53d335d3b9b0a7b1226fe3c6"
            ],
            "version": "==1.10.11"
        }
    }
}

@jxltom
Copy link
Contributor

jxltom commented Dec 1, 2018

@Kilo59 Thanks for the info.

But I didn't see anything wrong? with_pyorama is not locked as markers incorrectly.

@Kilo59
Copy link

Kilo59 commented Dec 1, 2018

The problem is, regardless of what the lockfile says. It's not actually installing the extra which becomes apparent when I try to run my linter prospector.

(lifelines) ubdev1@W1070 /m/c/U/m/c/lifelines> prospector
Cannot run tool pyroma as support was not installed.
Please install by running 'pip install prospector[with_pyroma]'
(lifelines) ubdev1@W1070 /m/c/U/m/c/lifelines> pip list
Package               Version    Location
--------------------- ---------- ---------------------------------
appdirs               1.4.3
astroid               2.0.4
atomicwrites          1.2.1
attrs                 18.2.0
black                 18.9b0
certifi               2018.11.29
chardet               3.0.4
Click                 7.0
coverage              4.5.2
coveralls             1.5.1
cycler                0.10.0
docopt                0.6.2
dodgy                 0.1.9
idna                  2.7
isort                 4.3.4
kiwisolver            1.0.1
lazy-object-proxy     1.3.1
lifelines             0.15.1     /mnt/c/Users/moonb/code/lifelines
matplotlib            3.0.2
mccabe                0.6.1
more-itertools        4.3.0
numpy                 1.15.4
pandas                0.23.4
pep8-naming           0.4.1
pip                   18.1
pluggy                0.8.0
prospector            1.1.6.2
py                    1.7.0
pycodestyle           2.4.0
pydocstyle            3.0.0
pyflakes              1.6.0
pylint                2.1.1
pylint-celery         0.3
pylint-django         2.0.2
pylint-flask          0.5
pylint-plugin-utils   0.4
pyparsing             2.3.0
pytest                4.0.1
pytest-cov            2.6.0
python-dateutil       2.7.5
pytz                  2018.7
PyYAML                3.13
requests              2.20.1
requirements-detector 0.6
scipy                 1.1.0
seaborn               0.9.0
setoptconf            0.2.0
setuptools            40.6.2
six                   1.11.0
snowballstemmer       1.2.1
toml                  0.10.0
urllib3               1.24.1
wheel                 0.32.3
wrapt                 1.10.11

But if I use pip directly

(lifelines) ubdev1@W1070 /m/c/U/m/c/lifelines> pip install prospector[with_pyroma]
Requirement already satisfied: prospector[with_pyroma] in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (1.1.6.2)
Requirement already satisfied: pylint-plugin-utils>=0.2.6 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.4)
Requirement already satisfied: pylint-celery==0.3 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.3)
Requirement already satisfied: pycodestyle<=2.4.0,>=2.0.0 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (2.4.0)
Requirement already satisfied: pep8-naming<=0.4.1,>=0.3.3 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.4.1)
Requirement already satisfied: dodgy>=0.1.9 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.1.9)
Requirement already satisfied: mccabe>=0.5.0 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.6.1)
Requirement already satisfied: pylint-django==2.0.2 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (2.0.2)
Requirement already satisfied: setoptconf>=0.2.0 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.2.0)
Requirement already satisfied: pylint==2.1.1 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (2.1.1)
Requirement already satisfied: pyyaml in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (3.13)
Requirement already satisfied: astroid==2.0.4 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (2.0.4)
Requirement already satisfied: requirements-detector>=0.6 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.6)
Requirement already satisfied: pydocstyle>=2.0.0 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (3.0.0)
Requirement already satisfied: pyflakes<2.0.0,>=0.8.1 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (1.6.0)
Requirement already satisfied: pylint-flask==0.5 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from prospector[with_pyroma]) (0.5)
Collecting pyroma>=2.4; extra == "with_pyroma" (from prospector[with_pyroma])
  Downloading https://files.pythonhosted.org/packages/63/26/6a894d85cd510ed59c991d4b64d025308e1ee1294251e88aadbdd5659c0b/pyroma-2.4-py2.py3-none-any.whl (355kB)
    100% |████████████████████████████████| 358kB 4.5MB/s
Requirement already satisfied: isort>=4.2.5 in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from pylint==2.1.1->prospector[with_pyroma]) (4.3.4)
Requirement already satisfied: wrapt in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from
astroid==2.0.4->prospector[with_pyroma]) (1.10.11)
Requirement already satisfied: six in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from astroid==2.0.4->prospector[with_pyroma]) (1.11.0)
Requirement already satisfied: lazy-object-proxy in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from astroid==2.0.4->prospector[with_pyroma]) (1.3.1)
Requirement already satisfied: snowballstemmer in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from pydocstyle>=2.0.0->prospector[with_pyroma]) (1.2.1)
Collecting docutils (from pyroma>=2.4; extra == "with_pyroma"->prospector[with_pyroma])
  Downloading https://files.pythonhosted.org/packages/36/fa/08e9e6e0e3cbd1d362c3bbee8d01d0aedb2155c4ac112b19ef3cae8eed8d/docutils-0.14-py3-none-any.whl (543kB)
    100% |████████████████████████████████| 552kB 8.1MB/s
Requirement already satisfied: setuptools in /home/ubdev1/.local/share/virtualenvs/lifelines-cD4FxiCC/lib/python3.7/site-packages (from pyroma>=2.4; extra == "with_pyroma"->prospector[with_pyroma]) (40.6.2)
Installing collected packages: docutils, pyroma
Successfully installed docutils-0.14 pyroma-2.4

And now when I check pip list

(lifelines) ubdev1@W1070 /m/c/U/m/c/lifelines> pip list | grep pyroma
pyroma                2.4

@Kilo59
Copy link

Kilo59 commented Dec 1, 2018

I'd be happy to write a regression test to check for this.

@jxltom
Copy link
Contributor

jxltom commented Dec 1, 2018

@Kilo59 That will be great. We definitely needs more tests. You could consider requests[socks] for testing this. Here is our current testing https://github.com/pypa/pipenv/blob/master/tests/integration/test_install_basic.py#L157-L171 regarding on extras.

@techalchemy
Copy link
Member

The extra is only in your lockfile, did you try re-locking? I suspect you generated this with pipenv 2018.11.14

@Kilo59
Copy link

Kilo59 commented Dec 1, 2018

The extra is only in your lockfile

I'm not sure what you mean by this, it's also in the Pipfile.

I did re-lock it.
And no it was 2018.11.26.

@jxltom
Copy link
Contributor

jxltom commented Dec 1, 2018

@Kilo59 I think that means this extra is only shown as an extra in the lockfiles as below but not a independent item.

 "prospector": {
            "extras": [
                "with_pyorama"
            ],
            "hashes": [
                "sha256:877d8d361a5c0e04c8587718c22c5d671afcf814945c96b3e592836d772943fd"
            ],
            "index": "pypi",
            "version": "==1.1.6.2"
        },

@jxltom
Copy link
Contributor

jxltom commented Dec 2, 2018

@Kilo59 Oh, I think I catch it. You have a typo in Pipfile. It should be prospector = {extras = ["with_pyroma"], version = "*"} which is defined wrongly as with_pyorama in your Pipfile

@Kilo59
Copy link

Kilo59 commented Dec 2, 2018

@jxltom Wow, yep. Was a typo the whole time. Would have caught it earlier except I actually typed it correctly when I did the raw pip install prospector[with_pyroma] 🙃

Kilo59/lifelines@6ace1b2

@frostming
Copy link
Contributor

I think we should throw the warning message that the extra cannot be provided during installation.

@jxltom
Copy link
Contributor

jxltom commented Dec 2, 2018

@frostming Makes sense to me. If so, it is better to open a new issue for tracking this.

@uranusjr
Copy link
Member

uranusjr commented Dec 2, 2018

Maybe it’d be a good idea to raise this to pip? It seems like a good idea to warn about non-existent extras in general.

Update: pip already does, so it’s a matter of propagating the warning out of the spinner.

Update 2: Actually, pip does not if --no-deps is passed (which pipenv sync does). I’ll open an issue in pip.

@uranusjr
Copy link
Member

uranusjr commented Dec 2, 2018

I thought about this a bit. The extra entry in Pipfile.lock does not actually matter (since extras only affect dependencies, which are already flattened in the lock file). So the warning should be about the Pipfile entry, and occur during locking instead. pip is (sort of) correct to not warn about it in --no-deps mode.

@jxltom
Copy link
Contributor

jxltom commented Dec 2, 2018

I agree. With --no-deps for pip, there is no need to warn user that deps are not required since all the deps are actually ignored in this mode.

Likewise, Pipenv only needs to warn during locking but not syncing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Dependency Resolution Issue relates to dependency resolution. good first issue Issues suitable as a newcomer to get familiar with Pipenv! Type: Bug 🐛 This issue is a bug. Type: Regression This issue is a regression of a previous behavior. Type: Release Blocker Must be resolved before the next release can be cut.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants