Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

TooManyRedirects when trying to add aioauth2 #728

Closed
3 tasks done
rominf opened this issue Dec 11, 2018 · 63 comments
Closed
3 tasks done

TooManyRedirects when trying to add aioauth2 #728

rominf opened this issue Dec 11, 2018 · 63 comments
Labels
kind/bug Something isn't working as expected

Comments

@rominf
Copy link

rominf commented Dec 11, 2018

  • I am on the latest Poetry version.
  • I have searched the issues of this repo and believe that this is not a duplicate.
  • If an exception occurs when executing a command, I executed it again in debug mode (-vvv option).
  • OS version and name: GNU/Linux 4.18.7-1-default, openSUSE Tumbleweed
  • Poetry version: 0.12.10
  • Link of a Gist with the contents of your pyproject.toml file: Irrelevant

Issue

I run poetry add and get this:

$ poetry -vvv add aioauth2
                                   
[TooManyRedirects]  
Exceeded 30 redirects.           
                                   
Exception trace:
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cleo/application.py in run() at line 94
   status_code = self.do_run(input_, output_)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/console/application.py in do_run() at line 88
   return super(Application, self).do_run(i, o)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cleo/application.py in do_run() at line 197
   status_code = command.run(input_, output_)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/console/commands/command.py in run() at line 77
   return super(BaseCommand, self).run(i, o)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cleo/commands/base_command.py in run() at line 146
   status_code = self.execute(input_, output_)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cleo/commands/command.py in execute() at line 107
   return self.handle()
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/console/commands/add.py in handle() at line 69
   packages, allow_prereleases=self.option("allow-prereleases")
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/console/commands/init.py in _determine_requirements() at line 230
   requirement["name"], allow_prereleases=allow_prereleases
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/console/commands/init.py in _find_best_version_for_package() at line 260
   name, required_version, allow_prereleases=allow_prereleases
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/version/version_selector.py in find_best_candidate() at line 29
   package_name, constraint, allow_prereleases=allow_prereleases
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pool.py in find_packages() at line 65
   name, constraint, extras=extras, allow_prereleases=allow_prereleases
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pypi_repository.py in find_packages() at line 104
   info = self.get_package_info(name)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pypi_repository.py in get_package_info() at line 228
   name, lambda: self._get_package_info(name)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cachy/repository.py in remember_forever() at line 174
   val = value(callback)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/cachy/helpers.py in value() at line 6
   return val()
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pypi_repository.py in <lambda>() at line 228
   name, lambda: self._get_package_info(name)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pypi_repository.py in _get_package_info() at line 232
   data = self._get("pypi/{}/json".format(name))
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/poetry/repositories/pypi_repository.py in _get() at line 381
   json_response = self._session.get(self._url + endpoint)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/requests/sessions.py in get() at line 546
   return self.request('GET', url, **kwargs)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/requests/sessions.py in request() at line 533
   resp = self.send(prep, **send_kwargs)
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/requests/sessions.py in send() at line 668
   history = [resp for resp in gen] if allow_redirects else []
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/requests/sessions.py in <listcomp>() at line 668
   history = [resp for resp in gen] if allow_redirects else []
 /home/rominf/.pyenv/versions/3.6.7/envs/jira-oauth/lib/python3.6/site-packages/requests/sessions.py in resolve_redirects() at line 165
   raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp)

add [-D|--dev] [--git GIT] [--path PATH] [-E|--extras EXTRAS] [--optional] [--python PYTHON] [--platform PLATFORM] [--allow-prereleases] [--dry-run] [--] <name> (<name>)...
@sdispater
Copy link
Member

I cannot reproduce.

Does it happen only with this package or with others as well?

@rominf
Copy link
Author

rominf commented Dec 12, 2018

Only with this package. It also happens if I add it manually and run update.

@sdispater
Copy link
Member

I honestly don't know why this happens and the debugging will be difficult since I cannot reproduce it on my end.

If you try to access https://pypi.org/pypi/aioauth2/json directly does this happen as well?

@rominf
Copy link
Author

rominf commented Dec 13, 2018

If you try to access https://pypi.org/pypi/aioauth2/json directly does this happen as well?

Everything is fine. I can install the package with pip too.

@sdispater
Copy link
Member

I have no idea then. Poetry does not do anything funny to access this url. It's using requests with the cachecontrol package.

The only thing "odd" here that I see is that you have Poetry installed in the same virtualenv as your project's. If you use an external poetry installation does this still happen?

@rominf
Copy link
Author

rominf commented Dec 14, 2018

I've installed poetry system-wide - the same result.

@sfermigier
Copy link

sfermigier commented Dec 19, 2018

I have had a similar issue when running poetry -vvv add py-mini-racer.

I see there is a redirect loop https://pypi.org/pypi/py_mini_racer/json -> https://pypi.org/pypi/py-mini-racer/json -> https://pypi.org/pypi/py_mini_racer/json -> ...

Eventually, I "fixed" the issue by clearing the cache.

@rominf
Copy link
Author

rominf commented Dec 20, 2018

@sfermigier, how did you clear the cache?

@sfermigier
Copy link

I tried poetry cache:clear but it asks for the name of a cache, and I have no idea what this means.

So I used rm -rf ~/Library/Caches/pypoetry/ (specific to MacOS, caches locations vary from OS to OS).

@rominf
Copy link
Author

rominf commented Dec 20, 2018

OK, thank you for info, @sfermigier!

@metasyn
Copy link

metasyn commented Jan 2, 2019

@sfermigier / @rominf when it asks for the name of a cache, its referring to any additional repositories that you might've added. One name that is reserved is pypi

❯ poetry cache:clear --all pypi

Delete 169 entries? (yes/no) [no] yes

If you had added some other repository, you could clear that repository's cache the same way.

@sobolevn
Copy link
Contributor

@itsthejoker
Copy link

I just ran into this issue with trying to install cherrypy -- in my case, I had 674 entries in my cache and running @metasyn's suggestion fixed the problem. 🎉

@neighthan
Copy link

I suspected clearing the cache might help (and it did), but, like others, I didn't know how to. Would it make sense for the error message when running poetry cache:clear --all to list the available caches? That would have saved me, and perhaps others, a trip to the internet to solve this. Currently the error message is

[MissingArguments]
Not enough arguments

cache:clear [--all] [--] <cache>

I was thinking something along the lines of

[MissingArguments]
Specify which cache to clear. Available caches are: pypi.

cache:clear [--all] [--] <cache>

@jpweytjens
Copy link

I suspected clearing the cache might help (and it did), but, like others, I didn't know how to. Would it make sense for the error message when running poetry cache:clear --all to list the available caches? That would have saved me, and perhaps others, a trip to the internet to solve this. Currently the error message is

[MissingArguments]
Not enough arguments

cache:clear [--all] [--] <cache>

I was thinking something along the lines of

[MissingArguments]
Specify which cache to clear. Available caches are: pypi.

cache:clear [--all] [--] <cache>

@sdispater Are the available caches listed somewhere in the documentation?

@sybrenstuvel
Copy link

sybrenstuvel commented May 10, 2019

I just had the same error when performing a poetry update. One of the problems in diagnosing what's the cause, is that the error message does not mention which URL causes the redirects.

Clearing the cache with poetry cache:clear --all pypi fixed the TooManyRedirects error though.

@ciarancourtney
Copy link

ciarancourtney commented May 27, 2019

Clearing cache didn't work for me on windows, neither did deleting ~/.cache/pip

My pyproject.toml:

[tool.poetry.dependencies]
python = "^3.6"
django = "2.1.8"
djangorestframework = "~3.9.1"
mysqlclient = "1.4.1"
sqlalchemy = "~1.3.3"
pandas = "~0.24.1"
gunicorn = "~19.9.0"
gevent = "~1.4.0"
python-dateutil = "^2.7"
requests = "^2.20"
celery = "4.3.0"
django-celery-beat = "~1.4.0"
django-celery-results = "~1.0.4"
numpy = "~1.16.1"
django-otp = "0.5.2"
qrcode = "6.1"
schema = "0.7.0"
django-import-export = "1.2.0"
elastic-apm = "^4.2"
celery_once = "2.1.0"
supervisor = "~4.0.2"

[tool.poetry.dev-dependencies]
pytest-django = "^3.4"
pytest-cov = "^2.6"

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
poetry.lock
[[package]]
category = "main"
description = "Low-level AMQP client for Python (fork of amqplib)."
name = "amqp"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.4.2"

[package.dependencies]
vine = ">=1.1.3"

[[package]]
category = "dev"
description = "Atomic file writes."
name = "atomicwrites"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.3.0"

[[package]]
category = "dev"
description = "Classes Without Boilerplate"
name = "attrs"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "19.1.0"

[[package]]
category = "main"
description = "Backport of Python 3 csv module"
name = "backports.csv"
optional = false
python-versions = "*"
version = "1.0.7"

[[package]]
category = "main"
description = "Python multiprocessing fork with improvements and bugfixes"
name = "billiard"
optional = false
python-versions = "*"
version = "3.6.0.0"

[[package]]
category = "main"
description = "Distributed Task Queue."
name = "celery"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "4.3.0"

[package.dependencies]
billiard = ">=3.6.0,<4.0"
kombu = ">=4.4.0,<5.0"
pytz = ">0.0-dev"
vine = ">=1.3.0"

[[package]]
category = "main"
description = "Allows you to prevent multiple execution and queuing of celery tasks."
name = "celery-once"
optional = false
python-versions = "*"
version = "2.1.0"

[package.dependencies]
celery = "*"
redis = ">=2.10.2"

[[package]]
category = "main"
description = "Python package for providing Mozilla's CA Bundle."
name = "certifi"
optional = false
python-versions = "*"
version = "2019.3.9"

[[package]]
category = "main"
description = "Foreign Function Interface for Python calling C code."
marker = "sys_platform == \"win32\" and platform_python_implementation == \"CPython\""
name = "cffi"
optional = false
python-versions = "*"
version = "1.12.2"

[package.dependencies]
pycparser = "*"

[[package]]
category = "main"
description = "Universal encoding detector for Python 2 and 3"
name = "chardet"
optional = false
python-versions = "*"
version = "3.0.4"

[[package]]
category = "main"
description = "Cross-platform colored terminal text."
marker = "platform_system == \"Windows\" or sys_platform == \"win32\""
name = "colorama"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.4.1"

[[package]]
category = "main"
description = "Backports and enhancements for the contextlib module"
name = "contextlib2"
optional = false
python-versions = "*"
version = "0.5.5"

[[package]]
category = "dev"
description = "Code coverage measurement for Python"
name = "coverage"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4"
version = "4.5.3"

[[package]]
category = "main"
description = "XML bomb protection for Python stdlib modules"
name = "defusedxml"
optional = false
python-versions = "*"
version = "0.5.0"

[[package]]
category = "main"
description = "Repackaging of Google's Diff Match and Patch libraries. Offers robust algorithms to perform the operations required for synchronizing plain text."
name = "diff-match-patch"
optional = false
python-versions = "*"
version = "20181111"

[[package]]
category = "main"
description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design."
name = "django"
optional = false
python-versions = ">=3.5"
version = "2.1.8"

[package.dependencies]
pytz = "*"

[[package]]
category = "main"
description = "Database-backed Periodic Tasks."
name = "django-celery-beat"
optional = false
python-versions = "*"
version = "1.4.0"

[package.dependencies]
celery = ">=4.0,<5.0"
django-timezone-field = ">=2.0"
python-crontab = ">=2.3.4"

[[package]]
category = "main"
description = "Celery result backends for Django."
name = "django-celery-results"
optional = false
python-versions = "*"
version = "1.0.4"

[package.dependencies]
celery = ">=4.0,<5.0"

[[package]]
category = "main"
description = "Django application and library for importing and exportingdata with included admin integration."
name = "django-import-export"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
version = "1.2.0"

[package.dependencies]
diff-match-patch = "*"
django = ">=1.8"
tablib = "*"

[[package]]
category = "main"
description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords."
name = "django-otp"
optional = false
python-versions = "*"
version = "0.5.2"

[package.dependencies]
django = ">=1.11"

[[package]]
category = "main"
description = "A Django app providing database and form fields for pytz timezone objects."
name = "django-timezone-field"
optional = false
python-versions = "*"
version = "3.0"

[package.dependencies]
django = ">=1.8"
pytz = "*"

[[package]]
category = "main"
description = "Web APIs for Django, made easy."
name = "djangorestframework"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "3.9.2"

[[package]]
category = "main"
description = "The official Python module for Elastic APM"
name = "elastic-apm"
optional = false
python-versions = "*"
version = "4.2.2"

[package.dependencies]
certifi = "*"
urllib3 = "*"

[[package]]
category = "main"
description = "An implementation of lxml.xmlfile for the standard library"
name = "et-xmlfile"
optional = false
python-versions = "*"
version = "1.0.1"

[[package]]
category = "main"
description = "Coroutine-based network library"
name = "gevent"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
version = "1.4.0"

[package.dependencies]
cffi = ">=1.11.5"
greenlet = ">=0.4.14"

[[package]]
category = "main"
description = "Lightweight in-process concurrent programming"
marker = "platform_python_implementation == \"CPython\""
name = "greenlet"
optional = false
python-versions = "*"
version = "0.4.15"

[[package]]
category = "main"
description = "WSGI HTTP Server for UNIX"
name = "gunicorn"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
version = "19.9.0"

[[package]]
category = "main"
description = "Internationalized Domain Names in Applications (IDNA)"
name = "idna"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.8"

[[package]]
category = "main"
description = "Julian dates from proleptic Gregorian and Julian calendars."
name = "jdcal"
optional = false
python-versions = "*"
version = "1.4"

[[package]]
category = "main"
description = "Messaging library for Python."
name = "kombu"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "4.5.0"

[package.dependencies]
amqp = ">=2.4.0,<3.0"

[[package]]
category = "main"
description = "meld3 is an HTML/XML templating engine."
name = "meld3"
optional = false
python-versions = "*"
version = "1.0.2"

[[package]]
category = "dev"
description = "More routines for operating on iterables, beyond itertools"
marker = "python_version > \"2.7\""
name = "more-itertools"
optional = false
python-versions = ">=3.4"
version = "7.0.0"

[[package]]
category = "main"
description = "Python interface to MySQL"
name = "mysqlclient"
optional = false
python-versions = "*"
version = "1.4.1"

[[package]]
category = "main"
description = "NumPy is the fundamental package for array computing with Python."
name = "numpy"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
version = "1.16.2"

[[package]]
category = "main"
description = "Python API and tools to manipulate OpenDocument files"
name = "odfpy"
optional = false
python-versions = "*"
version = "1.4.0"

[package.dependencies]
defusedxml = "*"

[[package]]
category = "main"
description = "A Python library to read/write Excel 2010 xlsx/xlsm files"
name = "openpyxl"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
version = "2.6.2"

[package.dependencies]
et_xmlfile = "*"
jdcal = "*"

[[package]]
category = "main"
description = "Powerful data structures for data analysis, time series, and statistics"
name = "pandas"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
version = "0.24.2"

[package.dependencies]
numpy = ">=1.12.0"
python-dateutil = ">=2.5.0"
pytz = ">=2011k"

[[package]]
category = "dev"
description = "plugin and hook calling mechanisms for python"
name = "pluggy"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "0.9.0"

[[package]]
category = "dev"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
name = "py"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.8.0"

[[package]]
category = "main"
description = "C parser in Python"
marker = "sys_platform == \"win32\" and platform_python_implementation == \"CPython\""
name = "pycparser"
optional = false
python-versions = "*"
version = "2.19"

[[package]]
category = "dev"
description = "pytest: simple powerful testing with Python"
name = "pytest"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "4.4.1"

[package.dependencies]
atomicwrites = ">=1.0"
attrs = ">=17.4.0"
colorama = "*"
pluggy = ">=0.9"
py = ">=1.5.0"
setuptools = "*"
six = ">=1.10.0"

[package.dependencies.more-itertools]
python = ">=2.8"
version = ">=4.0.0"

[[package]]
category = "dev"
description = "Pytest plugin for measuring coverage."
name = "pytest-cov"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.6.1"

[package.dependencies]
coverage = ">=4.4"
pytest = ">=3.6"

[[package]]
category = "dev"
description = "A Django plugin for pytest."
name = "pytest-django"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "3.4.8"

[package.dependencies]
pytest = ">=3.6"

[[package]]
category = "main"
description = "Python Crontab API"
name = "python-crontab"
optional = false
python-versions = "*"
version = "2.3.6"

[package.dependencies]
python-dateutil = "*"

[[package]]
category = "main"
description = "Extensions to the standard Python datetime module"
name = "python-dateutil"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
version = "2.8.0"

[package.dependencies]
six = ">=1.5"

[[package]]
category = "main"
description = "World timezone definitions, modern and historical"
name = "pytz"
optional = false
python-versions = "*"
version = "2019.1"

[[package]]
category = "main"
description = "YAML parser and emitter for Python"
name = "pyyaml"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "5.1"

[[package]]
category = "main"
description = "QR Code image generator"
name = "qrcode"
optional = false
python-versions = "*"
version = "6.1"

[package.dependencies]
colorama = "*"
six = "*"

[[package]]
category = "main"
description = "Python client for Redis key-value store"
name = "redis"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "3.2.1"

[[package]]
category = "main"
description = "Python HTTP for Humans."
name = "requests"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "2.21.0"

[package.dependencies]
certifi = ">=2017.4.17"
chardet = ">=3.0.2,<3.1.0"
idna = ">=2.5,<2.9"
urllib3 = ">=1.21.1,<1.25"

[[package]]
category = "main"
description = "Simple data validation library"
name = "schema"
optional = false
python-versions = "*"
version = "0.7.0"

[package.dependencies]
contextlib2 = "0.5.5"

[[package]]
category = "main"
description = "Python 2 and 3 compatibility utilities"
name = "six"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*"
version = "1.12.0"

[[package]]
category = "main"
description = "Database Abstraction Library"
name = "sqlalchemy"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.3.3"

[[package]]
category = "main"
description = "A system for controlling process state under UNIX"
name = "supervisor"
optional = false
python-versions = "*"
version = "4.0.2"

[package.dependencies]
meld3 = ">=1.0.0"

[[package]]
category = "main"
description = "Format agnostic tabular data library (XLS, JSON, YAML, CSV)"
name = "tablib"
optional = false
python-versions = "*"
version = "0.13.0"

[package.dependencies]
"backports.csv" = "*"
odfpy = "*"
openpyxl = ">=2.4.0"
pyyaml = "*"
xlrd = "*"
xlwt = "*"

[[package]]
category = "main"
description = "HTTP library with thread-safe connection pooling, file post, and more."
name = "urllib3"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4"
version = "1.24.1"

[[package]]
category = "main"
description = "Promises, promises, promises."
name = "vine"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.3.0"

[[package]]
category = "main"
description = "Library for developers to extract data from Microsoft Excel (tm) spreadsheet files"
name = "xlrd"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
version = "1.2.0"

[[package]]
category = "main"
description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+"
name = "xlwt"
optional = false
python-versions = "*"
version = "1.3.0"

[metadata]
content-hash = "3198e35c8761b2b09c92df97d488c788ababb5247694d82aaa8e8a0a6685a4cd"
python-versions = "^3.6"

[metadata.hashes]
amqp = ["043beb485774ca69718a35602089e524f87168268f0d1ae115f28b88d27f92d7", "35a3b5006ca00b21aaeec8ceea07130f07b902dd61bfe42815039835f962f5f1"]
atomicwrites = ["03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", "75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"]
attrs = ["69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79", "f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399"]
"backports.csv" = ["1277dfff73130b2e106bf3dd347adb3c5f6c4340882289d88f31240da92cbd6d", "21f6e09bab589e6c1f877edbc40277b65e626262a86e69a70137db714eaac5ce"]
billiard = ["756bf323f250db8bf88462cd042c992ba60d8f5e07fc5636c24ba7d6f4261d84"]
celery = ["4c4532aa683f170f40bd76f928b70bc06ff171a959e06e71bf35f2f9d6031ef9", "528e56767ae7e43a16cfef24ee1062491f5754368d38fcfffa861cdb9ef219be"]
celery-once = ["02e464e60e5610c7832d68108550bedc5ccf175ce8d8b087ce9849eed230cfb9"]
certifi = ["59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5", "b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae"]
cffi = ["00b97afa72c233495560a0793cdc86c2571721b4271c0667addc83c417f3d90f", "0ba1b0c90f2124459f6966a10c03794082a2f3985cd699d7d63c4a8dae113e11", "0bffb69da295a4fc3349f2ec7cbe16b8ba057b0a593a92cbe8396e535244ee9d", "21469a2b1082088d11ccd79dd84157ba42d940064abbfa59cf5f024c19cf4891", "2e4812f7fa984bf1ab253a40f1f4391b604f7fc424a3e21f7de542a7f8f7aedf", "2eac2cdd07b9049dd4e68449b90d3ef1adc7c759463af5beb53a84f1db62e36c", "2f9089979d7456c74d21303c7851f158833d48fb265876923edcb2d0194104ed", "3dd13feff00bddb0bd2d650cdb7338f815c1789a91a6f68fdc00e5c5ed40329b", "4065c32b52f4b142f417af6f33a5024edc1336aa845b9d5a8d86071f6fcaac5a", "51a4ba1256e9003a3acf508e3b4f4661bebd015b8180cc31849da222426ef585", "59888faac06403767c0cf8cfb3f4a777b2939b1fbd9f729299b5384f097f05ea", "59c87886640574d8b14910840327f5cd15954e26ed0bbd4e7cef95fa5aef218f", "610fc7d6db6c56a244c2701575f6851461753c60f73f2de89c79bbf1cc807f33", "70aeadeecb281ea901bf4230c6222af0248c41044d6f57401a614ea59d96d145", "71e1296d5e66c59cd2c0f2d72dc476d42afe02aeddc833d8e05630a0551dad7a", "8fc7a49b440ea752cfdf1d51a586fd08d395ff7a5d555dc69e84b1939f7ddee3", "9b5c2afd2d6e3771d516045a6cfa11a8da9a60e3d128746a7fe9ab36dfe7221f", "9c759051ebcb244d9d55ee791259ddd158188d15adee3c152502d3b69005e6bd", "b4d1011fec5ec12aa7cc10c05a2f2f12dfa0adfe958e56ae38dc140614035804", "b4f1d6332339ecc61275bebd1f7b674098a66fea11a00c84d1c58851e618dc0d", "c030cda3dc8e62b814831faa4eb93dd9a46498af8cd1d5c178c2de856972fd92", "c2e1f2012e56d61390c0e668c20c4fb0ae667c44d6f6a2eeea5d7148dcd3df9f", "c37c77d6562074452120fc6c02ad86ec928f5710fbc435a181d69334b4de1d84", "c8149780c60f8fd02752d0429246088c6c04e234b895c4a42e1ea9b4de8d27fb", "cbeeef1dc3c4299bd746b774f019de9e4672f7cc666c777cd5b409f0b746dac7", "e113878a446c6228669144ae8a56e268c91b7f1fafae927adc4879d9849e0ea7", "e21162bf941b85c0cda08224dade5def9360f53b09f9f259adb85fc7dd0e7b35", "fb6934ef4744becbda3143d30c6604718871495a5e36c408431bf33d9c146889"]
chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"]
colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"]
contextlib2 = ["509f9419ee91cdd00ba34443217d5ca51f5a364a404e1dce9e8979cea969ca48", "f5260a6e679d2ff42ec91ec5252f4eeffdcf21053db9113bd0a8e4d953769c00"]
coverage = ["0c5fe441b9cfdab64719f24e9684502a59432df7570521563d7b1aff27ac755f", "2b412abc4c7d6e019ce7c27cbc229783035eef6d5401695dccba80f481be4eb3", "3684fabf6b87a369017756b551cef29e505cb155ddb892a7a29277b978da88b9", "39e088da9b284f1bd17c750ac672103779f7954ce6125fd4382134ac8d152d74", "3c205bc11cc4fcc57b761c2da73b9b72a59f8d5ca89979afb0c1c6f9e53c7390", "42692db854d13c6c5e9541b6ffe0fe921fe16c9c446358d642ccae1462582d3b", "465ce53a8c0f3a7950dfb836438442f833cf6663d407f37d8c52fe7b6e56d7e8", "48020e343fc40f72a442c8a1334284620f81295256a6b6ca6d8aa1350c763bbe", "4ec30ade438d1711562f3786bea33a9da6107414aed60a5daa974d50a8c2c351", "5296fc86ab612ec12394565c500b412a43b328b3907c0d14358950d06fd83baf", "5f61bed2f7d9b6a9ab935150a6b23d7f84b8055524e7be7715b6513f3328138e", "6899797ac384b239ce1926f3cb86ffc19996f6fa3a1efbb23cb49e0c12d8c18c", "68a43a9f9f83693ce0414d17e019daee7ab3f7113a70c79a3dd4c2f704e4d741", "6b8033d47fe22506856fe450470ccb1d8ba1ffb8463494a15cfc96392a288c09", "7ad7536066b28863e5835e8cfeaa794b7fe352d99a8cded9f43d1161be8e9fbd", "7bacb89ccf4bedb30b277e96e4cc68cd1369ca6841bde7b005191b54d3dd1034", "839dc7c36501254e14331bcb98b27002aa415e4af7ea039d9009409b9d2d5420", "8e679d1bde5e2de4a909efb071f14b472a678b788904440779d2c449c0355b27", "8f9a95b66969cdea53ec992ecea5406c5bd99c9221f539bca1e8406b200ae98c", "932c03d2d565f75961ba1d3cec41ddde00e162c5b46d03f7423edcb807734eab", "93f965415cc51604f571e491f280cff0f5be35895b4eb5e55b47ae90c02a497b", "988529edadc49039d205e0aa6ce049c5ccda4acb2d6c3c5c550c17e8c02c05ba", "998d7e73548fe395eeb294495a04d38942edb66d1fa61eb70418871bc621227e", "9de60893fb447d1e797f6bf08fdf0dbcda0c1e34c1b06c92bd3a363c0ea8c609", "9e80d45d0c7fcee54e22771db7f1b0b126fb4a6c0a2e5afa72f66827207ff2f2", "a545a3dfe5082dc8e8c3eb7f8a2cf4f2870902ff1860bd99b6198cfd1f9d1f49", "a5d8f29e5ec661143621a8f4de51adfb300d7a476224156a39a392254f70687b", "a9abc8c480e103dc05d9b332c6cc9fb1586330356fc14f1aa9c0ca5745097d19", "aca06bfba4759bbdb09bf52ebb15ae20268ee1f6747417837926fae990ebc41d", "bb23b7a6fd666e551a3094ab896a57809e010059540ad20acbeec03a154224ce", "bfd1d0ae7e292105f29d7deaa9d8f2916ed8553ab9d5f39ec65bcf5deadff3f9", "c22ab9f96cbaff05c6a84e20ec856383d27eae09e511d3e6ac4479489195861d", "c62ca0a38958f541a73cf86acdab020c2091631c137bd359c4f5bddde7b75fd4", "c709d8bda72cf4cd348ccec2a4881f2c5848fd72903c185f363d361b2737f773", "c968a6aa7e0b56ecbd28531ddf439c2ec103610d3e2bf3b75b813304f8cb7723", "ca58eba39c68010d7e87a823f22a081b5290e3e3c64714aac3c91481d8b34d22", "df785d8cb80539d0b55fd47183264b7002077859028dfe3070cf6359bf8b2d9c", "f406628ca51e0ae90ae76ea8398677a921b36f0bd71aab2099dfed08abd0322f", "f46087bbd95ebae244a0eda01a618aff11ec7a069b15a3ef8f6b520db523dcf1", "f8019c5279eb32360ca03e9fac40a12667715546eed5c5eb59eb381f2f501260", "fc5f4d209733750afd2714e9109816a29500718b32dd9a5db01c0cb3a019b96a"]
defusedxml = ["24d7f2f94f7f3cb6061acb215685e5125fbcdc40a857eff9de22518820b0a4f4", "702a91ade2968a82beb0db1e0766a6a273f33d4616a6ce8cde475d8e09853b20"]
diff-match-patch = ["a809a996d0f09b9bbd59e9bbd0b71eed8c807922512910e05cbd3f9480712ddb"]
django = ["0fd54e4f27bc3e0b7054a11e6b3a18fa53f2373f6b2df8a22e8eadfe018970a5", "f3b28084101d516f56104856761bc247f85a2a5bbd9da39d9f6197ff461b3ee4"]
django-celery-beat = ["3c2c22647455be5503aca7450db64ea53acacee2d0aef3d7ac49aa3ef3845724", "bfc22dad2884524697e1fcdfa63c0555a65151a97902c3045cd2cf7bf63970e4"]
django-celery-results = ["80292a68c8b705c788ff0bca9cacc5a431a4de39d7ff49e2ca8277b700d3d616", "89ae9e32076efc65bcba31bc729870da9b230c63af22b673b79170c4a98039b1"]
django-import-export = ["830824f79aae39e4212bb03aabdd83dc57931420557b757981cf6add8d07e611", "99fae7d963af4ade97af9237a843f250312421fa4ee350a3b735fcc5684c3fb5"]
django-otp = ["1860e72cfcd95fe73117f3543d2e53f7847cf59e894ae0aa9399a10a50fb081f", "5756050ec09ecf8e6ce2b0f9f370ebd26249f326a1010a413b61c6a4c554f25f"]
django-timezone-field = ["7d7a37cfeacec5b1e81cd2f0aa334d46ebaa369cd516028579ed343cbc676c38", "d9fdab77c443b78c362ffaeb50fe7d7b54692c89aaae8ca1cae67848139b82ac"]
djangorestframework = ["8a435df9007c8b7d8e69a21ef06650e3c0cbe0d4b09e55dd1bd74c89a75a9fcd", "f7a266260d656e1cf4ca54d7a7349609dc8af4fe2590edd0ecd7d7643ea94a17"]
elastic-apm = ["3b5bc1646745ae81435c30822de848acf55579215d6fe3ab3b4d110d87297737", "4517116d7d11f2f0b64254b196cc7ca251e92b1ed4fe08b294a575b15953a89c", "7924f4eaa43612a59d094403d007bc701664c219ef2c579b10105780e68f9228", "a968da6b23f5adadcf7f63cdfe0002e4f0c14e249a2bbef374eacfdf55c64bfb", "af24b7b827f181e44a885e0ac8c049e8f7ed2daf22b74128b4161d64e58e397d", "c0df4ee3e5a9bb1694f658f91767ce45cf875164c15d82958d5e48183f1a963f", "c4b084ed7f6da3a6d6dc67a81c54b90afbd31bc556a02fe443fc4c861066415d", "e49f1c6c09acadcb3239964181ca9554969fc78d38a02631ec1eb5d51c8ba631", "e8a9f1a2f51f1afd5a386d28470c134097978d81e81196dee7a228341f6e1502", "ef996617c87280eb6bd15d1e47d122871e83aff4892ae06e84aa5167cb06ec48", "faed83fa367a8aca746537311be38cb6908c0a7890a62cbe95a607319f26c3d3"]
et-xmlfile = ["614d9722d572f6246302c4491846d2c393c199cfa4edc9af593437691683335b"]
gevent = ["0774babec518a24d9a7231d4e689931f31b332c4517a771e532002614e270a64", "0e1e5b73a445fe82d40907322e1e0eec6a6745ca3cea19291c6f9f50117bb7ea", "0ff2b70e8e338cf13bedf146b8c29d475e2a544b5d1fe14045aee827c073842c", "107f4232db2172f7e8429ed7779c10f2ed16616d75ffbe77e0e0c3fcdeb51a51", "14b4d06d19d39a440e72253f77067d27209c67e7611e352f79fe69e0f618f76e", "1b7d3a285978b27b469c0ff5fb5a72bcd69f4306dbbf22d7997d83209a8ba917", "1eb7fa3b9bd9174dfe9c3b59b7a09b768ecd496debfc4976a9530a3e15c990d1", "2711e69788ddb34c059a30186e05c55a6b611cb9e34ac343e69cf3264d42fe1c", "28a0c5417b464562ab9842dd1fb0cc1524e60494641d973206ec24d6ec5f6909", "3249011d13d0c63bea72d91cec23a9cf18c25f91d1f115121e5c9113d753fa12", "44089ed06a962a3a70e96353c981d628b2d4a2f2a75ea5d90f916a62d22af2e8", "4bfa291e3c931ff3c99a349d8857605dca029de61d74c6bb82bd46373959c942", "50024a1ee2cf04645535c5ebaeaa0a60c5ef32e262da981f4be0546b26791950", "53b72385857e04e7faca13c613c07cab411480822ac658d97fd8a4ddbaf715c8", "74b7528f901f39c39cdbb50cdf08f1a2351725d9aebaef212a29abfbb06895ee", "7d0809e2991c9784eceeadef01c27ee6a33ca09ebba6154317a257353e3af922", "896b2b80931d6b13b5d9feba3d4eebc67d5e6ec54f0cf3339d08487d55d93b0e", "8d9ec51cc06580f8c21b41fd3f2b3465197ba5b23c00eb7d422b7ae0380510b0", "9f7a1e96fec45f70ad364e46de32ccacab4d80de238bd3c2edd036867ccd48ad", "ab4dc33ef0e26dc627559786a4fba0c2227f125db85d970abbf85b77506b3f51", "d1e6d1f156e999edab069d79d890859806b555ce4e4da5b6418616322f0a3df1", "d752bcf1b98174780e2317ada12013d612f05116456133a6acf3e17d43b71f05", "e5bcc4270671936349249d26140c267397b7b4b1381f5ec8b13c53c5b53ab6e1"]
greenlet = ["000546ad01e6389e98626c1367be58efa613fa82a1be98b0c6fc24b563acc6d0", "0d48200bc50cbf498716712129eef819b1729339e34c3ae71656964dac907c28", "23d12eacffa9d0f290c0fe0c4e81ba6d5f3a5b7ac3c30a5eaf0126bf4deda5c8", "37c9ba82bd82eb6a23c2e5acc03055c0e45697253b2393c9a50cef76a3985304", "51503524dd6f152ab4ad1fbd168fc6c30b5795e8c70be4410a64940b3abb55c0", "8041e2de00e745c0e05a502d6e6db310db7faa7c979b3a5877123548a4c0b214", "81fcd96a275209ef117e9ec91f75c731fa18dcfd9ffaa1c0adbdaa3616a86043", "853da4f9563d982e4121fed8c92eea1a4594a2299037b3034c3c898cb8e933d6", "8b4572c334593d449113f9dc8d19b93b7b271bdbe90ba7509eb178923327b625", "9416443e219356e3c31f1f918a91badf2e37acf297e2fa13d24d1cc2380f8fbc", "9854f612e1b59ec66804931df5add3b2d5ef0067748ea29dc60f0efdcda9a638", "99a26afdb82ea83a265137a398f570402aa1f2b5dfb4ac3300c026931817b163", "a19bf883b3384957e4a4a13e6bd1ae3d85ae87f4beb5957e35b0be287f12f4e4", "a9f145660588187ff835c55a7d2ddf6abfc570c2651c276d3d4be8a2766db490", "ac57fcdcfb0b73bb3203b58a14501abb7e5ff9ea5e2edfa06bb03035f0cff248", "bcb530089ff24f6458a81ac3fa699e8c00194208a724b644ecc68422e1111939", "beeabe25c3b704f7d56b573f7d2ff88fc99f0138e43480cecdfcaa3b87fe4f87", "d634a7ea1fc3380ff96f9e44d8d22f38418c1c381d5fac680b272d7d90883720", "d97b0661e1aead761f0ded3b769044bb00ed5d33e1ec865e891a8b128bf7c656"]
gunicorn = ["aa8e0b40b4157b36a5df5e599f45c9c76d6af43845ba3b3b0efe2c70473c2471", "fa2662097c66f920f53f70621c6c58ca4a3c4d3434205e608e121b5b3b71f4f3"]
idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"]
jdcal = ["948fb8d079e63b4be7a69dd5f0cd618a0a57e80753de8248fd786a8a20658a07", "ea0a5067c5f0f50ad4c7bdc80abad3d976604f6fb026b0b3a17a9d84bb9046c9"]
kombu = ["389ba09e03b15b55b1a7371a441c894fd8121d174f5583bbbca032b9ea8c9edd", "7b92303af381ef02fad6899fd5f5a9a96031d781356cd8e505fa54ae5ddee181"]
meld3 = ["b28a9bfac342aadb4557aa144bea9f8e6208bfb0596190570d10a892d35ff7dc", "f7b754a0fde7a4429b2ebe49409db240b5699385a572501bb0d5627d299f9558"]
more-itertools = ["2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7", "c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a"]
mysqlclient = ["6883a4dd98903bad375c859ead1a480e1245ea3a8d9b038ea2c091c1865ba673", "a62220410e26ce2d2ff94dd0138c3ecfb91db634464a9afb4c8e6b50f0a67e00", "e1b9f3a8928ddb4985ca3e3c9f2aa81b19e831bbf6fabf5681ee356738dbbbb2"]
numpy = ["1980f8d84548d74921685f68096911585fee393975f53797614b34d4f409b6da", "22752cd809272671b273bb86df0f505f505a12368a3a5fc0aa811c7ece4dfd5c", "23cc40313036cffd5d1873ef3ce2e949bdee0646c5d6f375bf7ee4f368db2511", "2b0b118ff547fecabc247a2668f48f48b3b1f7d63676ebc5be7352a5fd9e85a5", "3a0bd1edf64f6a911427b608a894111f9fcdb25284f724016f34a84c9a3a6ea9", "3f25f6c7b0d000017e5ac55977a3999b0b1a74491eacb3c1aa716f0e01f6dcd1", "4061c79ac2230594a7419151028e808239450e676c39e58302ad296232e3c2e8", "560ceaa24f971ab37dede7ba030fc5d8fa173305d94365f814d9523ffd5d5916", "62be044cd58da2a947b7e7b2252a10b42920df9520fc3d39f5c4c70d5460b8ba", "6c692e3879dde0b67a9dc78f9bfb6f61c666b4562fd8619632d7043fb5b691b0", "6f65e37b5a331df950ef6ff03bd4136b3c0bbcf44d4b8e99135d68a537711b5a", "7a78cc4ddb253a55971115f8320a7ce28fd23a065fc33166d601f51760eecfa9", "80a41edf64a3626e729a62df7dd278474fc1726836552b67a8c6396fd7e86760", "893f4d75255f25a7b8516feb5766c6b63c54780323b9bd4bc51cdd7efc943c73", "972ea92f9c1b54cc1c1a3d8508e326c0114aaf0f34996772a30f3f52b73b942f", "9f1d4865436f794accdabadc57a8395bd3faa755449b4f65b88b7df65ae05f89", "9f4cd7832b35e736b739be03b55875706c8c3e5fe334a06210f1a61e5c2c8ca5", "adab43bf657488300d3aeeb8030d7f024fcc86e3a9b8848741ea2ea903e56610", "bd2834d496ba9b1bdda3a6cf3de4dc0d4a0e7be306335940402ec95132ad063d", "d20c0360940f30003a23c0adae2fe50a0a04f3e48dc05c298493b51fd6280197", "d3b3ed87061d2314ff3659bb73896e622252da52558f2380f12c421fbdee3d89", "dc235bf29a406dfda5790d01b998a1c01d7d37f449128c0b1b7d1c89a84fae8b", "fb3c83554f39f48f3fa3123b9c24aecf681b1c289f9334f8215c1d3c8e2f6e5b"]
odfpy = ["596021f0519623ca8717331951c95e3b8d7b21e86edc7efe8cb650a0d0f59a2b", "863746b87121d9e4017c32b6c318f7229a588f189c122a9613116c55a47e276d"]
openpyxl = ["1d2af392cef8c8227bd2ac3ebe3a28b25aba74fd4fa473ce106065f0b73bfe2e"]
pandas = ["071e42b89b57baa17031af8c6b6bbd2e9a5c68c595bc6bf9adabd7a9ed125d3b", "17450e25ae69e2e6b303817bdf26b2cd57f69595d8550a77c308be0cd0fd58fa", "17916d818592c9ec891cbef2e90f98cc85e0f1e89ed0924c9b5220dc3209c846", "2538f099ab0e9f9c9d09bbcd94b47fd889bad06dc7ae96b1ed583f1dc1a7a822", "366f30710172cb45a6b4f43b66c220653b1ea50303fbbd94e50571637ffb9167", "42e5ad741a0d09232efbc7fc648226ed93306551772fc8aecc6dce9f0e676794", "4e718e7f395ba5bfe8b6f6aaf2ff1c65a09bb77a36af6394621434e7cc813204", "4f919f409c433577a501e023943e582c57355d50a724c589e78bc1d551a535a2", "4fe0d7e6438212e839fc5010c78b822664f1a824c0d263fd858f44131d9166e2", "5149a6db3e74f23dc3f5a216c2c9ae2e12920aa2d4a5b77e44e5b804a5f93248", "627594338d6dd995cfc0bacd8e654cd9e1252d2a7c959449228df6740d737eb8", "83c702615052f2a0a7fb1dd289726e29ec87a27272d775cb77affe749cca28f8", "8c872f7fdf3018b7891e1e3e86c55b190e6c5cee70cab771e8f246c855001296", "90f116086063934afd51e61a802a943826d2aac572b2f7d55caaac51c13db5b5", "a3352bacac12e1fc646213b998bce586f965c9d431773d9e91db27c7c48a1f7d", "bcdd06007cca02d51350f96debe51331dec429ac8f93930a43eb8fb5639e3eb5", "c1bd07ebc15285535f61ddd8c0c75d0d6293e80e1ee6d9a8d73f3f36954342d0", "c9a4b7c55115eb278c19aa14b34fcf5920c8fe7797a09b7b053ddd6195ea89b3", "cc8fc0c7a8d5951dc738f1c1447f71c43734244453616f32b8aa0ef6013a5dfb", "d7b460bc316064540ce0c41c1438c416a40746fd8a4fb2999668bf18f3c4acf1"]
pluggy = ["19ecf9ce9db2fce065a7a0586e07cfb4ac8614fe96edf628a264b1c70116cf8f", "84d306a647cc805219916e62aab89caa97a33a1dd8c342e87a37f91073cd4746"]
py = ["64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", "dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"]
pycparser = ["a988718abfad80b6b157acce7bf130a30876d27603738ac39f140993246b25b3"]
pytest = ["3773f4c235918987d51daf1db66d51c99fac654c81d6f2f709a046ab446d5e5d", "b7802283b70ca24d7119b32915efa7c409982f59913c1a6c0640aacf118b95f5"]
pytest-cov = ["0ab664b25c6aa9716cbf203b17ddb301932383046082c081b9848a0edf5add33", "230ef817450ab0699c6cc3c9c8f7a829c34674456f2ed8df1fe1d39780f7c87f"]
pytest-django = ["30d773f1768e8f214a3106f1090e00300ce6edfcac8c55fd13b675fe1cbd1c85", "4d3283e774fe1d40630ee58bf34929b83875e4751b525eeb07a7506996eb42ee"]
python-crontab = ["91ce4b245ee5e5c117aa0b21b485bc43f2d80df854a36e922b707643f50d7923"]
python-dateutil = ["7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"]
pytz = ["303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", "d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141"]
pyyaml = ["1adecc22f88d38052fb787d959f003811ca858b799590a5eaa70e63dca50308c", "436bc774ecf7c103814098159fbb84c2715d25980175292c648f2da143909f95", "460a5a4248763f6f37ea225d19d5c205677d8d525f6a83357ca622ed541830c2", "5a22a9c84653debfbf198d02fe592c176ea548cccce47553f35f466e15cf2fd4", "7a5d3f26b89d688db27822343dfa25c599627bc92093e788956372285c6298ad", "9372b04a02080752d9e6f990179a4ab840227c6e2ce15b95e1278456664cf2ba", "a5dcbebee834eaddf3fa7366316b880ff4062e4bcc9787b78c7fbb4a26ff2dd1", "aee5bab92a176e7cd034e57f46e9df9a9862a71f8f37cad167c6fc74c65f5b4e", "c51f642898c0bacd335fc119da60baae0824f2cde95b0330b56c0553439f0673", "c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", "e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19"]
qrcode = ["3996ee560fc39532910603704c82980ff6d4d5d629f9c3f25f34174ce8606cf5", "505253854f607f2abf4d16092c61d4e9d511a3b4392e60bff957a68592b04369"]
redis = ["6946b5dca72e86103edc8033019cc3814c031232d339d5f4533b02ea85685175", "8ca418d2ddca1b1a850afa1680a7d2fd1f3322739271de4b704e0d4668449273"]
requests = ["502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e", "7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"]
schema = ["44add3ef9016c85ac4b0291b45286a657d0df309b31528ca8d0a9c6d0aa68186", "5b0e0f47923164190513db2e91b9ab1941162b2dc400cc9b1803c2abab579e62"]
six = ["3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c", "d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73"]
sqlalchemy = ["91c54ca8345008fceaec987e10924bf07dcab36c442925357e5a467b36a38319"]
supervisor = ["5604457da4fb89d850e78c128205fe4938c9277f87301885b33c94c60361e575", "cb16df95144b68f016d652a2311a47d0f8cd8935a524d77b7c490eae77c44989"]
tablib = ["0f88a9cebdaa1a2cc29ae57387082ee81015d1149ecd34e48a8c8d3b4dd21670", "5f33c079b07eb10cf9c4b4696add2ecf32c89db7729240546ecdcd5c92f67e13"]
urllib3 = ["61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39", "de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"]
vine = ["133ee6d7a9016f177ddeaf191c1f58421a1dcc6ee9a42c58b34bed40e1d2cd87", "ea4947cc56d1fd6f2095c8d543ee25dad966f78692528e68b4fada11ba3f98af"]
xlrd = ["546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2", "e551fb498759fa3a5384a94ccd4c3c02eb7c00ea424426e212ac0c57be9dfbde"]
xlwt = ["a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", "c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88"]

poetry install works for the above, I get TooManyRedirects when I try to update any package or a plain poetry update, maybe a regression in 0.12.16? EDIT Its in 1.0.0a3 too EDIT2 After running the new cache clear cmd in 1.0.0a3 its ok now

@epage
Copy link
Contributor

epage commented May 30, 2019

Just ran into this with p4python.

I put in some traces inside of requests and the redirects were for changing the case in the URL https://pypi.org/pypi/p4python/json between p4python and P4Python

Clearing the cache worked around the problem as well.

@dcramer
Copy link
Contributor

dcramer commented Jun 7, 2019

Just hit with factory-boy. Cache clear did the trick. I tried to debug the issue to find the root cause and came up empty - albeit I didn't spend a lot of time in it.

@red8012
Copy link

red8012 commented Jun 21, 2019

After digging for a while, some clues are found indicating the problem is likely caused by using cachecontrol with requests. Here's what happened:

  1. Poetry tries to fetch metadata of a package, say, jupyter-core.
  2. Requests session.get() method was called with URL https://pypi.org/pypi/jupyter-core/json.
  3. For whatever reason requests got a (cached) result of HTTP 301 redirecting to https://pypi.org/pypi/jupyter_core/json.
  4. Requests followed the redirection and got another redirection back to https://pypi.org/pypi/jupyter-core/json.
  5. Requests stuck in an infinite loop between step 3 and 4 until TooManyRedirects was raised.

Notes:

@richin13
Copy link

I made some debugging while going through #1019 and found out a similar issue with the redirections when a package has an "alias"

@frafra
Copy link

frafra commented Jun 25, 2019

For newer versions of poetry (1.0.0a4):
poetry cache clear --all pypi

@kasteph kasteph added the kind/bug Something isn't working as expected label Jun 26, 2019
@agoose77
Copy link

agoose77 commented Jul 1, 2019

I also had this today, when installing only a few dependencies. I had poetry installed, with version 0.12.16

My pyproject.toml is

[tool.poetry]
name = "some-env-name"
version = "0.1.0"
description = ""
authors = ["Angus Hollands <[email protected]>"]
license = "MIT"

[tool.poetry.dependencies]
python = "^3.7"
jupyter = "^1.0"
jupyterlab = "^0.35.4"
bqplot = {path = "bqplot"}

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

Clearing the cache resolved the error. Given that the bqplot here is a local library, I would expect that this error would have been reproduced if I had omitted it from pyproject.toml

@ekhaydarov
Copy link

How to do poetry cache clear --all pypi without interactions?

the -n flag probably takes the default output of no so cache doesnt get cleared

@funkyfuture
Copy link
Contributor

i also encountered this with a poetry update.

@gabrielfalcao
Copy link

Also encountered with poetry update

pyproject.toml

[tool.poetry]
name = "my-project"
version = "0.9.7"
description = "some description."
authors = ["Foo Bar <[email protected]>"]

[tool.poetry.dependencies]
python = "^3.6"
pip = "^19.2"

[tool.poetry.dev-dependencies]
coverage = "^4.5"
flake8 = "^3.7"
freezegun = "^0.3.12"
httpretty = "^0.9.6"
ipdb = "^0.12.1"
mccabe = "^0.6.1"
mock = "^3.0"
moto = "^1.3"
nose = "^1.3"
nose-timer = "^0.7.5"
nose-watch = "^0.9.2"
parameterized = "^0.7.0"
rednose = "^1.3"
sphinx = "^2.1"
sphinx-click = "^2.2"
sphinx-rtd-theme = "^0.4.3"
sure = "^1.4"
vcrpy = "^2.0"
pylint = "^2.3"
black = {version = "^18.3-alpha.0", allows-prereleases = true}

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"

@hardbyte
Copy link

To completely clear the pypi cache the command is:

poetry cache clear pypi --all

@tedmiston
Copy link

I am experiencing this issue trying to run a poetry update on Poetry 1.1.5 as well.

This solution #728 (comment) still works for me, just change cache:clear to cache clear.

After clearing the cache, the update worked fine.

@sirex
Copy link

sirex commented Apr 14, 2021

Same here with Poetry 1.1.5 version on Manjaro Linux:

$ poetry lock
Updating dependencies
Resolving dependencies... (3.2s)

  TooManyRedirects

  Exceeded 30 redirects.

  at /usr/lib/python3.9/site-packages/requests/sessions.py:166 in resolve_redirects
      162│             except (ChunkedEncodingError, ContentDecodingError, RuntimeError):
      163│                 resp.raw.read(decode_content=False)
      164│ 
      165│             if len(resp.history) >= self.max_redirects:
    → 166│                 raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)
      167│ 
      168│             # Release the connection back into the pool.
      169│             resp.close()
      170│ 

After running

$ poetry cache clear pypi --all
Delete 691 entries? (yes/no) [no] yes

poetry lock was fixed.

@cpbotha
Copy link

cpbotha commented Jun 8, 2022

I ran into this issue today, but no amount of cache clearing helped, not via poetry commands nor via manually deleting all cache folders.

It turns out that at this moment, pypi redirects infinitely between the json and json/ of a package that is not found. (In our case, we have a private repo as secondary source, where up until recently it would figure out that pypi did not have it, and then try the secondary source).

In other words:

curl --head https://pypi.org/pypi/bleh-bleh-no-exist/1.11.6/json/
HTTP/2 301
location: /pypi/bleh-bleh-no-exist/1.11.6/json

and then:

curl --head https://pypi.org/pypi/bleh-bleh-no-exist/1.11.6/json
HTTP/2 301
location: https://pypi.org/pypi/bleh-bleh-no-exist/1.11.6/json/

Setting bleh-bleh-no-exist's source explicitly in the pyproject.toml:

bleh-bleh-no-exist = {version = "^1.11.6", source = "our-private-source"}

... did not help 100%. On the next poetry add ... it ran into the same redirect with that exact same package. We ended up having to remove the secondary = true from our private repo source.

(To debug this, I added a print() statement right after the self._cache_control_cache.delete(self._base_url + endpoint) line in poetry 1.1.13's pypi_repository.py.).

@mykolasolodukha
Copy link

@cpbotha check this: #5802 (comment)

@Rjdrenth
Copy link

Rjdrenth commented Jun 9, 2022

@cpbotha
So I came across this issue and simply clearing the poetry cache did not work. It might have been an additional factor, but what ultimately solved my problem was deleting the pip cache folder. This folder can with the command:

python -m pip cache dir

Per this stackoverflow answer, that folder defaults to:

# Unix
~/.cache/pip and it respects the XDG_CACHE_HOME directory.

# macOS
~/Library/Caches/pip

# Windows
<CSIDL_LOCAL_APPDATA>\pip\Cache

@HodeiG
Copy link

HodeiG commented Jun 10, 2022

Clearing the cache didn't work for me. I think in my case could be related to this issue: pypi/warehouse#11535

@D3nn3
Copy link

D3nn3 commented Jun 10, 2022

Yes, pypi currently has problems and it's not connected to any issue in poetry as far as I can tell.

https://status.python.org/incidents/lgpr13fy71bk?u=p19pcdp3t62p

@nicolascedilnik
Copy link

Clearing all caches, including pip's did not work for me today, while trying to add "Sphinx" as a dependency, even on a new project:

> poetry --version
Poetry version 1.1.13
> poetry new caca
Created package caca in caca
> cd caca
> poetry add Sphinx  # tried both upper and lowercase 'S' here
Creating virtualenv caca-nrFt8i4o-py3.9 in /home/nicoco/.cache/pypoetry/virtualenvs

  TooManyRedirects

  Exceeded 30 redirects.

  at ~/.poetry/lib/poetry/_vendor/py3.9/requests/sessions.py:166 in resolve_redirects
      162│             except (ChunkedEncodingError, ContentDecodingError, RuntimeError):
      163│                 resp.raw.read(decode_content=False)
      164│ 
      165│             if len(resp.history) >= self.max_redirects:
    → 166│                 raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)
      167│ 
      168│             # Release the connection back into the pool.
      169│             resp.close()
      170│ 

@bpospanov
Copy link

I am also struggling with this issue. i try poetry add django and it gives me TooManyRedirects

@sebastian-philipp
Copy link

I am also struggling with this issue. i try poetry add django and it gives me TooManyRedirects

❗ This is due to an incident with pypi: https://status.python.org/incidents/lgpr13fy71bk?u=p19pcdp3t62p

@sobolevbel
Copy link

I faced with the same issue. Clearing caches didn't help.

@jlogan03
Copy link

jlogan03 commented Jun 10, 2022

Also having this issue, no amount of cache clearing, making new envs, reinstalling poetry, etc. works; happens on multiple machines in different domains; seems to be associated with specific packages, but not just a few - like half of them

@RobertMeissner
Copy link

Same here, apparently it should be done in an hour or so :/

@martolini
Copy link

Using this thread as a sub instead of the pypi tracker 😄

@ebernardino01
Copy link

ebernardino01 commented Jun 10, 2022

I am also struggling with this issue. i try poetry add django and it gives me TooManyRedirects

I just got the same problem. Apparently, the steps mentioned here didn't work like clearing cache.
Using poetry v1.1.13

@jedreky
Copy link

jedreky commented Jun 10, 2022

I started a new repo about 5 hours ago and everything worked fine.
Now, I wanted to start another one, I'm doing exactly the same steps and I'm hitting the too many redirects problem.
I'm using Poetry version 1.1.12.

@gusbakker
Copy link

Also got the some problem. Removing cache folders or clearing the cache didn't work

@humn-kit
Copy link

Seems there is a problem with pypi. It should be fixed soon: https://status.python.org/

@SkyloveQiu
Copy link

is it fixed?

@humn-kit
Copy link

@SkyloveQiu . Not yet, keep checking the link to find out when it has been restored

@semakmillev
Copy link

problem disappeared for me several minutes ago (when status at status.python.org was updated)

@SkyloveQiu
Copy link

problem disappeared for me several minutes ago (when status at status.python.org was updated)

However it is not solved on my end.

@viniciusarbache
Copy link

However it is not solved on my end.

Same here

@bartenra
Copy link

Patience is virtue.

@SkyloveQiu
Copy link

just go home and come back monday xD

@zxzjim
Copy link

zxzjim commented Jun 10, 2022

still not solved yet on the pypi side

Copy link

github-actions bot commented Mar 2, 2024

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
kind/bug Something isn't working as expected
Projects
None yet
Development

No branches or pull requests