{"action":"created","issue":{"url":"https://api.github.com/repos/pypa/pip/issues/2502","labels_url":"https://api.github.com/repos/pypa/pip/issues/2502/labels{/name}","comments_url":"https://api.github.com/repos/pypa/pip/issues/2502/comments","events_url":"https://api.github.com/repos/pypa/pip/issues/2502/events","html_url":"https://github.com/pypa/pip/issues/2502","id":60227688,"number":2502,"title":"non-downloadable/installed dependencies shouldn't fail upgrades","user":{"login":"qwcode","id":1052224,"avatar_url":"https://avatars.githubusercontent.com/u/1052224?v=3","gravatar_id":"","url":"https://api.github.com/users/qwcode","html_url":"https://github.com/qwcode","followers_url":"https://api.github.com/users/qwcode/followers","following_url":"https://api.github.com/users/qwcode/following{/other_user}","gists_url":"https://api.github.com/users/qwcode/gists{/gist_id}","starred_url":"https://api.github.com/users/qwcode/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qwcode/subscriptions","organizations_url":"https://api.github.com/users/qwcode/orgs","repos_url":"https://api.github.com/users/qwcode/repos","events_url":"https://api.github.com/users/qwcode/events{/privacy}","received_events_url":"https://api.github.com/users/qwcode/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/pypa/pip/labels/bug","name":"bug","color":"e11d21"},{"url":"https://api.github.com/repos/pypa/pip/labels/upgrade","name":"upgrade","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-03-07T22:26:12Z","updated_at":"2015-03-08T19:38:16Z","closed_at":null,"body":"if some pkgb depends on pkga (i.e. has it specified in install_requires), an upgrade of pkgb shouldn't fail if a download isn't found for pkga (e.g. if it's not in PyPI), if pkga is installed locally.\r\n\r\nto recreate, create pkga and pkgb in local directories with setup.py's like so\r\n\r\npkga/setup.py\r\n```\r\nfrom setuptools import setup\r\nsetup(name='pkga',\r\n      version='0.1')\r\n```\r\n\r\npkgb/setup.py\r\n```\r\nfrom setuptools import setup\r\nsetup(name='pkgb',\r\n      version='0.1',\r\n      install_requires=['pkga'])\r\n```\r\n\r\nand run\r\n\r\n```\r\n> pip install -e pkga/\r\n> pip install -U -e pkgb/\r\nCould not find any downloads that satisfy the requirement pkga in ./pkga (from pkgb==0.6.1)\r\nCollecting pkga (from pkgb==0.6.1)\r\n  No distributions at all found for pkga in ./pkga (from pkgb==0.6.1)\r\n```"},"comment":{"url":"https://api.github.com/repos/pypa/pip/issues/comments/77769727","html_url":"https://github.com/pypa/pip/issues/2502#issuecomment-77769727","issue_url":"https://api.github.com/repos/pypa/pip/issues/2502","id":77769727,"user":{"login":"msabramo","id":305268,"avatar_url":"https://avatars.githubusercontent.com/u/305268?v=3","gravatar_id":"","url":"https://api.github.com/users/msabramo","html_url":"https://github.com/msabramo","followers_url":"https://api.github.com/users/msabramo/followers","following_url":"https://api.github.com/users/msabramo/following{/other_user}","gists_url":"https://api.github.com/users/msabramo/gists{/gist_id}","starred_url":"https://api.github.com/users/msabramo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msabramo/subscriptions","organizations_url":"https://api.github.com/users/msabramo/orgs","repos_url":"https://api.github.com/users/msabramo/repos","events_url":"https://api.github.com/users/msabramo/events{/privacy}","received_events_url":"https://api.github.com/users/msabramo/received_events","type":"User","site_admin":false},"created_at":"2015-03-08T19:38:16Z","updated_at":"2015-03-08T19:38:16Z","body":"I feel like there are 2 possible approaches to upgrading. \r\n\r\n1. Download/do the minimal amount required to satisfy the constraints. Be lazy and don't hit the network unless necessary. This is better for speed and greater ability to work offline, but you end up with older versions of packages and maybe more variation in people's environments, which could lead to people having problems that are fixed in later versions. \r\n\r\n2. Try to always upgrade to the latest. This tends to get people to the latest and to have more similar envs to each other and so maybe less bugs because folks are more likely to be on the same page. It does cause more downloads though so it makes pip slower and less likely to work when offline. \r\n\r\nI think pip largely implements #2. \r\n\r\nI wonder if it would be useful to have pip support changing the strategy to #1. But the fear I have is that this would make the code more complex, especially if no refactoring is done before to isolate the strategy from everything else. \r\n\r\nMaybe it's worth documenting pip's overall strategy (if it isn't already) so we can at least point people to a URL to explain why they're seeing the behavior they're seeing?"}}