Giter Club home page Giter Club logo

pip-upgrader's People

Contributors

dependabot[bot] avatar djailla avatar djsutherland avatar elbati avatar jhermann avatar ldsink avatar marcoffee avatar pierre-sassoulas avatar simion avatar umeboshi2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pip-upgrader's Issues

UI: traceback on invalid choice

…
Please choose which packages should be upgraded. Choices: "all" or "1 2 3"
Choice: q
Traceback (most recent call last):
…
  File "…/pip_upgrader/packages_interactive_selector.py", line 84, in ask_for_packages
    selected = list(self._select_packages([int(index.strip()) for index in choice.split(' ')]))
ValueError: invalid literal for int() with base 10: 'q'

Should be caught with a nice message. And "q(uit)" plus maybe "x/exit" supported as an answer.

Python3.7.4 problem

Traceback (most recent call last):
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/packages_status_detector.py", line 15, in
from pip.locations import site_config_files
ModuleNotFoundError: No module named 'pip.locations'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/fulgerulnegru/.virtualenvs/cyber7/bin/pip-upgrade", line 6, in
from pip_upgrader.cli import main
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/cli.py", line 37, in
from pip_upgrader.packages_status_detector import PackagesStatusDetector
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/packages_status_detector.py", line 17, in
from pip._internal.locations import site_config_files
ImportError: cannot import name 'site_config_files' from 'pip._internal.locations' (/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip/_internal/locations.py)
(cyber7) 192-168-0-240:cyber fulgerulnegru$ pip-upgrade
Traceback (most recent call last):
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/packages_status_detector.py", line 15, in
from pip.locations import site_config_files
ModuleNotFoundError: No module named 'pip.locations'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/fulgerulnegru/.virtualenvs/cyber7/bin/pip-upgrade", line 6, in
from pip_upgrader.cli import main
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/cli.py", line 37, in
from pip_upgrader.packages_status_detector import PackagesStatusDetector
File "/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip_upgrader/packages_status_detector.py", line 17, in
from pip._internal.locations import site_config_files
ImportError: cannot import name 'site_config_files' from 'pip._internal.locations' (/Users/fulgerulnegru/.virtualenvs/cyber7/lib/python3.7/site-packages/pip/_internal/locations.py)
pip freeze
activecampaign-python==0.1.1
amqp==2.5.1
asn1crypto==0.24.0
attrs==19.1.0
Automat==0.7.0
Babel==2.7.0
backports.csv==1.0.7
beautifulsoup4==4.8.0
billiard==3.5.0.5
cairocffi==1.0.2
CairoSVG==2.4.1
celery==4.2.1
certifi==2019.6.16
cffi==1.12.3
chardet==3.0.4
colorclass==2.2.0
constantly==15.1.0
crochet==1.10.0
cryptography==2.7
cssselect==1.1.0
cssselect2==0.2.1
defusedxml==0.6.0
dicttoxml==1.7.4
diff-match-patch==20181111
Django==2.1.7
django-allauth==0.39.1
django-appconf==1.0.3
django-celery==3.2.2
django-celery-beat==1.4.0
django-ckeditor==5.6.1
django-compressor==2.2
django-environ==0.4.5
django-filter==2.1.0
django-import-export==1.2.0
django-js-asset==1.2.2
django-pipeline==1.6.14
django-rest-auth==0.9.3
django-select2==6.3.1
django-settings-export==1.2.1
django-simple-history==2.4.0
django-sslserver==0.20
django-suit==0.2.26
django-suit-daterange-filter==0.0.6
django-suit-redactor==0.0.4
django-suit-sortable==0.1.0
django-test-plus==1.1.1
django-timezone-field==3.0
djangorestframework==3.9.1
docopt==0.6.2
entrypoints==0.3
et-xmlfile==1.0.1
fake-useragent==0.1.11
flake8==3.7.7
flower==0.9.2
gunicorn==19.9.0
html5lib==1.0.1
hyperlink==19.0.0
idna==2.8
incremental==17.5.0
jdcal==1.4.1
kombu==4.3.0
lxml==4.4.1
mailchimp3==3.0.6
Markdown==3.0.1
mccabe==0.6.1
oauthlib==3.1.0
odfpy==1.4.0
openpyxl==2.6.3
packaging==19.1
parsel==1.5.2
paypalrestsdk==1.13.1
Pillow==5.4.1
pip-upgrader==1.4.6
progressbar2==3.39.2
psycopg2==2.7.7
psycopg2-binary==2.7.7
pyasn1==0.4.6
pyasn1-modules==0.2.6
pycodestyle==2.5.0
pycparser==2.19
PyDispatcher==2.0.5
pyflakes==2.1.1
Pygments==2.4.2
PyHamcrest==1.9.0
pyOpenSSL==19.0.0
pyparsing==2.4.2
Pyphen==0.9.5
python-crontab==2.3.8
python-dateutil==2.8.0
python-memcached==1.59
python-utils==2.3.0
python3-openid==3.1.0
pytz==2019.2
PyYAML==5.1.2
queuelib==1.5.0
raven==6.10.0
rcssmin==1.0.6
requests==2.21.0
requests-oauthlib==1.2.0
rjsmin==1.0.12
Scrapy==1.4.0
scrapy-amazon-robot-middleware3==0.2.2
scrapy-splash==0.7.2
scrapydo==0.2.2
selenium==3.141.0
service-identity==18.1.0
simplejson==3.16.0
six==1.12.0
smartbill-sdk==0.2.6
soupsieve==1.9.3
tablib==0.13.0
terminaltables==3.1.0
tinycss2==1.0.2
tornado==5.1.1
Twisted==18.9.0
urllib3==1.24.3
vine==1.3.0
w3lib==1.21.0
WeasyPrint==45
webencodings==0.5.1
wrapt==1.11.2
xlrd==1.2.0
xlwt==1.3.0
zope.interface==4.6.0

Parsing setup.cfg files

Hello,

Setuptools supports configuring libraries using only the setup.cfg nowadays., see:

https://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files

It would be nice if pip-upgrader could parse that aswell. I think that it should limit itself for dependencies are pinned e.g.:

[options.extras_require]
tests =
    flake8==3.7.8
    isort==4.3.21
    mypy==0.711
    pytest==5.0.1
    pytest-cov==2.7.1
    black==19.3b0
    pre-commit==1.17.0
    bump2version==0.5.10

And not so much for the version ranges.

Let me know if this is a welcome addition, I could maybe contribute to the project myself 😁

Thanks!

Some version formats cannot be parsed

Problem

For example Black autoformatter version could not be parsed by pip-upgrader.

krystofrehacek@Krystof-MacBook-Pro:retino/src ‹1213-update-npm-and-pip*›$ pip-upgrade

Found valid requirements file(s):
requirements.txt
black==19.10b0 error while parsing version
2/47: coreapi ... up to date: 2.3.3
3/47: dicttoxml ... up to date: 1.7.4
4/47: Django ... upgrade available: 3.0.2 ==> 3.0.5 (uploaded on 2020-04-01 07:59:15)
... output continues ...

Proposed solution

Support for this kind of versioning (e. g. 19.10b0) should be added, since pip accepts it.

Add requirements.in to valid requirements files

Add requirements.in to valid requirements files, not just requirements.txt

I keep the requirements in a requirements.in file and "compile" a requirements.txt through pip-compile (https://github.com/jazzband/pip-tools).

The workflow could be more simple than executing:

cp requirements.in requirements.in.txt
pip-upgrader requirements.in.txt
mv requirements.in.txt requirements.in
pip-compile requirements.in > requirements.txt

--skip-package-installation

Thanks for making this tool! I never knew it existed until I scroll deeply down a stack overflow page.

I was wondering if the --skip-package-installation option could be set from a config file, or environment variable, since that would be my normal default usage. I have been using tjunnone/npm-check-updates to keep my package.json files up to date, and this tool only manipulates the file and instructs the user to npm install after running ncu -u.

If an environment variable is preferable, tell me the preferred name and I'll make a PR.

Support for 'compatible release' specs (tilde equals)

Specs like foo~=1.2.3 should be supported, with the newest compatible version as a replacement. In this case that means any 1.2.* that is newer then 1.2.3 found would be offered as an update, but not 2.* or 1.3.*.

In essence, bumping the minimum required version up, within the specified version range.

Choice prompt displaying incorrect characters on Windows 7

First off, this utility is very handy, thank you!

I'm stuck on Windows 7 for a little while longer and noticed the "Choice:" prompt is displaying incorrect characters, as you can see below.

image

A little googling shows that a few other projects have had this issue (Git Bash, Babel) and it's related to ANSI color codes and incompatibility with Windows 7. Any chance you could disable the colors in Windows 7?

Problem with paramiko package

It throws a invalid version message.

$ cd fresh-directory
$ echo 'paramiko==2.12.0' > requirements.txt
$ pip-upgrade requirements.txt --skip-virtualenv-check
Found valid requirements file(s):
requirements.txt
Error while parsing package paramiko==2.12.0 (skipping).
Exception:  Invalid version: '0.1-bulbasaur'
All packages are up-to-date.

Upgrade interrupted.

Add support for -r inclusion

"dev" requirements typically also load the install requirements via -r requirements.txt – load and expand those lines as-if the inclusion appeared at that place. This has to work recursively.

Best implemented as a pre-processor that resolves any "-r" line until none are there any more, and THEN parses the list of requirements.

No check for pip version results in failed command

pipupgrade
Checking...
Traceback (most recent call last):
File "/Users/cocoonkid/.pyenv/versions/3.7.1/bin/pipupgrade", line 10, in
sys.exit(main())
File "/Users/cocoonkid/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pipupgrade/cli/init.py", line 14, in wrapper
return fn(**params)
File "/Users/cocoonkid/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pipupgrade/commands/init.py", line 178, in command
format = "json", pip_exec = pip_)
File "/Users/cocoonkid/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pipupgrade/_pip.py", line 69, in call
return popen(*params, output = True)
File "/Users/cocoonkid/.pyenv/versions/3.7.1/lib/python3.7/site-packages/pipupgrade/util/system.py", line 70, in popen
raise sp.CalledProcessError(code, command)
subprocess.CalledProcessError: Command '/Users/cocoonkid/.pyenv/shims/pip2 list --outdated --format json' returned non-zero exit status 127.

The command should run pip3 list --outdated --format json

Thank you for this great tool!

Support pyproject.toml

It would be great to have support for pyproject.toml files. This is the new official way to specify PyPI packages as described in PEP-621, recommended over setup.py and setup.cfg files.

Being a simple TOML file, it should be pretty straightforward to parse and write with the toml package. It could also be easily extended to other metadata formats.

For PEP-621 pyproject.toml

  • [project.dependencies]
  • [project.optional-dependencies]

For Poetry pyproject.toml

  • [tool.poetry.dependencies]
  • [tool.flit.metadata.requires-extra]

For setup.cfg file

  • [tool.flit.metadata.requires]
  • [tool.flit.metadata.requires-extra]

For old style Flit flit.ini file

  • [tool.flit.metadata.requires]
  • [tool.flit.metadata.requires-extra]

NameError: global name 'NoSectionError' is not defined under Python 2.7

I get this exception being raised when I call pip-upgrade with Python2.7. The problem is in pip_upgrader/packages_status_detector.py", line 80:

try:
    from configparser import ConfigParser, NoOptionError, NoSectionError
except ImportError:   # pragma: nocover
    from ConfigParser import ConfigParser, NoOptionError

[…]

except (NoOptionError, NoSectionError):  # pragma: nocover

If you have ConfigParser then the NoSectionError exception is not imported thus the above error.

Support for --user option

Would like to see if pip-upgrade can add support for local user install (e.g. pip --user equivalent) for non-virtualenv environment?

All packages are up-to-date.

Not sure what i'm doing wrong here but pip-upgrade keeps failing and saying that all packages are up to date. Below is an example when i was trying to upgrade scikit-learn. You can see that pip-upgrade gives up but then I immediately run pip install -U scikit-learn and it upgrades.

Any ideas?

Thanks for building such a great and necessary package!

`(.venv) Pauls-Mac-mini:my_dir Paul$ pip-upgrade requirements.txt
Found valid requirements file(s):
requirements.txt
All packages are up-to-date.

Upgrade interrupted.
(.venv) Pauls-Mac-mini:my_dir Paul$ pip install -U scikit-learn
Collecting scikit-learn
Using cached scikit_learn-0.22.2.post1-cp37-cp37m-macosx_10_9_x86_64.whl (7.1 MB)
Requirement already satisfied, skipping upgrade: scipy>=0.17.0 in ./.venv/lib/python3.7/site-packages (from scikit-learn) (1.4.1)
Requirement already satisfied, skipping upgrade: numpy>=1.11.0 in ./.venv/lib/python3.7/site-packages (from scikit-learn) (1.18.1)
Requirement already satisfied, skipping upgrade: joblib>=0.11 in ./.venv/lib/python3.7/site-packages (from scikit-learn) (0.14.1)
Installing collected packages: scikit-learn
Attempting uninstall: scikit-learn
Found existing installation: scikit-learn 0.21.3
Uninstalling scikit-learn-0.21.3:
Successfully uninstalled scikit-learn-0.21.3
Successfully installed scikit-learn-0.22.2.post1`

Does pip-upgrader honor package requirements?

For example, nicegui package currently requires justpy<0.3. If I run pip-upgrader, will it upgrade justpy to currently available 0.9.0, or hold the upgrade until nicegui allows?

Only upgrade packages withing major version ranges

It would be nice to have default behaviour of pip-upgrader to only upgrade within major version ranges to avoid introducing backwards incompatible changes.

I would suggest implementing a --latest flag to overriding this behaviour mimicing yarn

The upgrade --latest command upgrades packages the same as the upgrade command but
ignores the version range specified in package.json. Instead, the version specified by the 
latest tag will be used (potentially upgrading the packages across major versions).

https://yarnpkg.com/lang/en/docs/cli/upgrade/#toc-yarn-upgrade-package-latest-l-caret-tilde-exact-pattern

Thoughts?

--prerelease raises "error while parsing version" with some packages

$ virtualenv venv
$ source bin/activate
$ pip install pip-upgrader

Create a requirements.txt with the following content

simplejson==3.10.0

Run

$ pip-upgrade --prerelease
Found valid requirements file(s): 
requirements.txt
simplejson==3.10.0 error while parsing version
All packages are up-to-date.

Upgrade interrupted.

Skipping Requirements files(s)

If no requirements are given, the command attempts to detect the requirements file(s) in the current directory.

How do I skip this? Let's say I just sourced my environment from my home directory.

$ pip-upgrade 
No requirements files found in current directory. CD into your project or manually specify requirements files as arguments.

Thanks.

Python 3.12 removed pkgutil.ImpImporter

After upgrade to Python 3.12, pip-upgrade fails as follows:

pip-upgrade
Traceback (most recent call last):
  File "./.venv/bin/pip-upgrade", line 5, in <module>
    from pip_upgrader.cli import main
  File "./.venv/lib/python3.12/site-packages/pip_upgrader/__init__.py", line 1, in <module>
    import pkg_resources
  File "./.venv/lib/python3.12/site-packages/pkg_resources/__init__.py", line 2191, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
                    ^^^^^^^^^^^^^^^^^^^

From Python 3.11 doc:

class pkgutil.ImpImporter(dirname=None)

    [PEP 302](https://peps.python.org/pep-0302/) Finder that wraps Python’s “classic” import algorithm.

    If dirname is a string, a [PEP 302](https://peps.python.org/pep-0302/) finder is created that searches
that directory. If dirname is None, a [PEP 302](https://peps.python.org/pep-0302/) finder is created that
searches the current [sys.path] (https://docs.python.org/3.11/library/sys.html#sys.path),
plus any modules that are frozen or built-in.

    Note that [ImpImporter](https://docs.python.org/3.11/library/pkgutil.html#pkgutil.ImpImporter) does
not currently support being used by placement on
[sys.meta_path](https://docs.python.org/3.11/library/sys.html#sys.meta_path).

    Deprecated since version 3.3: This emulation is no longer needed, as the standard import mechanism
is now fully [PEP 302](https://peps.python.org/pep-0302/) compliant and available in
[importlib](https://docs.python.org/3.11/library/importlib.html#module-importlib).

Apparently the deprecation has now become a removal.

Crashes if pip-upgrader exists in requirements.txt

% pip-upgrader
<snip>
Traceback (most recent call last):
  File "/home/username/.virtualenvs/venv/bin/pip-upgrade", line 11, in <module>
    sys.exit(main())
  File "/home/username/.virtualenvs/venv/lib/python3.5/site-packages/pip_upgrader/cli.py", line 70, in main
    packages, options.get('--use-default-index')).detect_available_upgrades(options)
  File "/home/username/.virtualenvs/venv/lib/python3.5/site-packages/pip_upgrader/packages_status_detector.py", line 126, in detect_available_upgrades
    package_status, reason = self._fetch_index_package_info(package_name, current_version)
  File "/home/username/.virtualenvs/venv/lib/python3.5/site-packages/pip_upgrader/packages_status_detector.py", line 167, in _fetch_index_package_info
    return self._parse_simple_html_package_info(package_name, current_version, response)
  File "/home/username/.virtualenvs/venv/lib/python3.5/site-packages/pip_upgrader/packages_status_detector.py", line 228, in _parse_simple_html_package_info
    latest_version = max([vers for vers in all_versions if not vers.is_prerelease and not vers.is_postrelease])
ValueError: max() arg is an empty sequence
% pip-upgrade --version
1.4.0
% python --version
Python 3.5.3

You might not want to support running pip-upgrader on itself, but I don't think the app should crash because someone has put it in requirements.txt.

NOTE: Installing pip 10 compatibility fix

pip-upgrader imports internal modules of pip, and pip 10 changes things.

If you're used to self-apply pip-upgrader, this time it is:

pip install -U pip-upgrader

to get v1.4.6+. Just leaving this as a note to other people getting tangled up in dependency hell.

ba8613d

No section: 'global'

Getting an issue with what appears to be config-parser. Wondering if anyone else has seen this, its only popping up with pip-upgrade since installing into an existing porject 2 mins ago:

pip-upgrade

Found valid requirements file(s):
requirements.txt
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/configparser.py", line 1138, in _unify_values
sectiondict = self._sections[section]
KeyError: 'global'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/pfiddes/PythonProjects/gcloud/bin/pip-upgrade", line 11, in
sys.exit(main())
File "/Users/pfiddes/PythonProjects/gcloud/lib/python3.6/site-packages/pip_upgrader/cli.py", line 70, in main
packages, options.get('--use-default-index')).detect_available_upgrades(options)
File "/Users/pfiddes/PythonProjects/gcloud/lib/python3.6/site-packages/pip_upgrader/packages_status_detector.py", line 47, in init
self._update_index_url_from_configs()
File "/Users/pfiddes/PythonProjects/gcloud/lib/python3.6/site-packages/pip_upgrader/packages_status_detector.py", line 77, in _update_index_url_from_configs
index_url = config.get('global', 'index-url')
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/configparser.py", line 781, in get
d = self._unify_values(section, vars)
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/configparser.py", line 1141, in _unify_values
raise NoSectionError(section)
configparser.NoSectionError: No section: 'global'

Contents of requirements.txt

appnope==0.1.0
astroid==1.5.3
cachetools==2.0.1
certifi==2017.7.27.1
chardet==3.0.4
decorator==4.1.2
dill==0.2.7.1
future==0.16.0
gapic-google-cloud-datastore-v1==0.15.3
gapic-google-cloud-error-reporting-v1beta1==0.15.3
gapic-google-cloud-logging-v2==0.91.3
gapic-google-cloud-pubsub-v1==0.15.4
gapic-google-cloud-spanner-admin-database-v1==0.15.3
gapic-google-cloud-spanner-admin-instance-v1==0.15.3
gapic-google-cloud-spanner-v1==0.15.3
gapic-google-cloud-speech-v1==0.15.3
google-auth==1.0.2
google-auth-httplib2==0.0.2
google-cloud==0.27.0
google-cloud-bigquery==0.26.0
google-cloud-bigtable==0.26.0
google-cloud-core==0.26.0
google-cloud-datastore==1.2.0
google-cloud-dns==0.26.0
google-cloud-error-reporting==0.26.0
google-cloud-language==0.27.0
google-cloud-logging==1.2.0
google-cloud-monitoring==0.26.0
google-cloud-pubsub==0.27.0
google-cloud-resource-manager==0.26.0
google-cloud-runtimeconfig==0.26.0
google-cloud-spanner==0.26.0
google-cloud-speech==0.28.0
google-cloud-storage==1.3.1
google-cloud-translate==1.1.0
google-cloud-videointelligence==0.25.0
google-cloud-vision==0.26.0
google-gax==0.15.14
google-resumable-media==0.2.3
googleapis-common-protos==1.5.2
grpc-google-iam-v1==0.11.1
grpcio==1.4.0
httplib2==0.10.3
idna==2.6
ipython==6.1.0
ipython-genutils==0.2.0
isort==4.2.15
jedi==0.10.2
lazy-object-proxy==1.3.1
mccabe==0.6.1
monotonic==1.3
oauth2client==4.1.2
pexpect==4.2.1
pickleshare==0.7.4
plumbum==1.6.3
ply==3.10
pprint==0.1
prompt-toolkit==1.0.15
proto-google-cloud-datastore-v1==0.90.4
proto-google-cloud-error-reporting-v1beta1==0.15.3
proto-google-cloud-logging-v2==0.91.3
proto-google-cloud-pubsub-v1==0.15.4
proto-google-cloud-spanner-admin-database-v1==0.15.3
proto-google-cloud-spanner-admin-instance-v1==0.15.3
proto-google-cloud-spanner-v1==0.15.3
proto-google-cloud-speech-v1==0.15.3
protobuf==3.3.0
psutil==5.2.2
ptyprocess==0.5.2
pyasn1==0.3.2
pyasn1-modules==0.0.11
Pygments==2.2.0
pylint==1.7.2
PyYAML==3.12
requests==2.18.4
rsa==3.4.2
simplegeneric==0.8.1
six==1.10.0
tenacity==4.4.0
traitlets==4.3.2
urllib3==1.22
wcwidth==0.1.7
wrapt==1.10.11

Using python3 in a virtual env:
Python 3.6.2

Any clues?

Would it be possible to disable Choices?

Would it be possible to disable Choices question or auto populate Choices answer?

Please choose which packages should be upgraded. Choices: "all", "q" (quit), "x" (exit) or "1 2 3"

Errors with environment markers

Great tool but seems it does not work with environment markers in requirements files:

Found valid requirements file(s):
requirements.txt
1/22: Appium-Python-Client ... upgrade available: 0.50 ==> 0.51 (uploaded on 2020-04-12 03:16:19)
2/22: colorama ... up to date: 0.4.3
3/22: grpcio ... upgrade available: 1.27.2 ==> 1.28.1 (uploaded on 2020-04-03 18:11:34)
4/22: grpcio-tools ... upgrade available: 1.27.2 ==> 1.28.1 (uploaded on 2020-04-03 18:12:52)
5/22: numpy ... up to date: 1.18.2
6/22: matplotlib ... up to date: 3.2.1
7/22: mido ... up to date: 1.2.9
Error while parsing package osascript==2019.4.13; sys_platform == 'darwin' (skipping).
Exception:  too many values to unpack (expected 2)
9/22: python-rtmidi ... up to date: 1.4.0
10/22: paramiko ... up to date: 2.7.1
11/22: protobuf ... up to date: 3.11.3
12/22: PyAudio ... up to date: 0.2.11
13/22: PyAutoGUI ... up to date: 0.9.50
Error while parsing package pyobjc-core==6.2; sys_platform == 'darwin' (skipping).
Exception:  too many values to unpack (expected 2)
Error while parsing package pyobjc==6.2; sys_platform == 'darwin' (skipping).
Exception:  too many values to unpack (expected 2)
16/22: pyscreenshot ... up to date: 1.0
17/22: requests ... up to date: 2.23.0

Any chance to get support for this pip feature?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.