Skip to content

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

Closed

Description

@kavdev

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.

Activity

  1. frostming commented on Oct 16, 2018

    @frostming
    Contributor

    Similar issues: #3039 #3043

  2. uranusjr commented on Oct 16, 2018

    @uranusjr
    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.

  3. techalchemy commented on Oct 16, 2018

    @techalchemy
    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

  4. techalchemy commented on Oct 16, 2018

    @techalchemy
    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

  5. added
    Type: RegressionThis issue is a regression of a previous behavior.
    good first issueIssues suitable as a newcomer to get familiar with Pipenv!
    Type: Release BlockerMust be resolved before the next release can be cut.
    on Oct 16, 2018
  6. kavdev commented on Oct 16, 2018

    @kavdev
    Author

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

  7. kavdev commented on Oct 16, 2018

    @kavdev
    Author

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

  8. kavdev commented on Oct 16, 2018

    @kavdev
    Author

    @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

  9. techalchemy commented on Oct 17, 2018

    @techalchemy
    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

  10. kavdev commented on Oct 17, 2018

    @kavdev
    Author

    @techalchemy still no dice. any thoughts?
    image

  11. kavdev commented on Oct 19, 2018

    @kavdev
    Author

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

  12. 11 remaining items

  13. Kilo59 commented on Dec 1, 2018

    @Kilo59

    @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"
            }
        }
    }
    
  14. jxltom commented on Dec 1, 2018

    @jxltom
    Contributor

    @Kilo59 Thanks for the info.

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

  15. Kilo59 commented on Dec 1, 2018

    @Kilo59

    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
    
  16. Kilo59 commented on Dec 1, 2018

    @Kilo59

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

  17. jxltom commented on Dec 1, 2018

    @jxltom
    Contributor

    @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.

  18. techalchemy commented on Dec 1, 2018

    @techalchemy
    Member

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

  19. Kilo59 commented on Dec 1, 2018

    @Kilo59

    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.

  20. jxltom commented on Dec 1, 2018

    @jxltom
    Contributor

    @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"
            },
    
  21. jxltom commented on Dec 2, 2018

    @jxltom
    Contributor

    @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

  22. Kilo59 commented on Dec 2, 2018

    @Kilo59

    @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

  23. frostming commented on Dec 2, 2018

    @frostming
    Contributor

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

  24. jxltom commented on Dec 2, 2018

    @jxltom
    Contributor

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

  25. uranusjr commented on Dec 2, 2018

    @uranusjr
    Member

    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.

  26. uranusjr commented on Dec 2, 2018

    @uranusjr
    Member

    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.

  27. jxltom commented on Dec 2, 2018

    @jxltom
    Contributor

    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Category: Dependency ResolutionIssue relates to dependency resolution.Type: Bug 🐛This issue is a bug.Type: RegressionThis issue is a regression of a previous behavior.Type: Release BlockerMust be resolved before the next release can be cut.good first issueIssues suitable as a newcomer to get familiar with Pipenv!

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions