python-poetry / poetry

Python packaging and dependency management made easy
https://python-poetry.org
MIT License
31.68k stars 2.27k forks source link

TooManyRedirects when trying to add aioauth2 #728

Closed rominf closed 4 years ago

rominf commented 5 years ago

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 commented 5 years ago

I cannot reproduce.

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

rominf commented 5 years ago

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

sdispater commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

sfermigier commented 5 years ago

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 commented 5 years ago

@sfermigier, how did you clear the cache?

sfermigier commented 5 years ago

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 commented 5 years ago

OK, thank you for info, @sfermigier!

metasyn commented 5 years ago

@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 commented 5 years ago

I had the same issue with this pyproject.toml: https://github.com/wemake-services/wemake-python-styleguide/blob/c32d3f08909157ef55ff19c9805e4e18734d6fd0/pyproject.toml

Cleaning cache helped.

itsthejoker commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 ```toml [[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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

frafra commented 5 years ago

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

agoose77 commented 5 years ago

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 <goosey15@gmail.com>"]
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 commented 5 years ago

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 commented 5 years ago

i also encountered this with a poetry update.

gabrielfalcao commented 4 years ago

Also encountered with poetry update

pyproject.toml

[tool.poetry]
name = "my-project"
version = "0.9.7"
description = "some description."
authors = ["Foo Bar <foo@test.com>"]

[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"
mudassirkhan19 commented 4 years ago

poetry cache clear --all pypi dint help me. the problem disappeared when I updated poetry to 1.0.0b8.

dmwyatt commented 4 years ago

I haven't looked into it much, but there probably needs to be some logic to try skipping cachecontrol when a TooManyRedirects error is encountered.

sdispater commented 4 years ago

This should be fixed in the latest 1.0.0 release. If a TooManyRedirects error is encountered the cache will now be automatically cleared.

dovahcrow commented 3 years ago

I still got this issue as for Poetry version 1.1.5. Clearing cache helped.

agatti commented 3 years ago

I still get the issue even when clearing the cache. I can trigger this just by adding the airflow package on 1.1.5, and what happens is that one of the dependencies needed to be downloaded is SQLAlchemy that gets requested from pypi as sqlalchemy and then redirected to SQLAlchemy which gets redirected to sqlalchemy and so on.

In other words:

GET https://pypi.org/pypi/sqlalchemy/json
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive

301 Moved Permanently

<html>
 <head>
  <title>301 Moved Permanently</title>
 </head>
 <body>
  <h1>301 Moved Permanently</h1>
  The resource has been moved to /pypi/SQLAlchemy/json; you should be redirected automatically.
 <body>
<html>

GET https://pypi.org/pypi/SQLAlchemy/json
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive

301 Moved Permanently

<html>
 <head>
  <title>301 Moved Permanently</title>
 </head>
 <body>
  <h1>301 Moved Permanently</h1>
  The resource has been moved to /pypi/sqlalchemy/json; you should be redirected automatically.
 <body>
<html>
binary-signal commented 3 years ago

I still got this issue as for Poetry version 1.1.5. Clearing cache helped.

Yes I can confirm after updating poetry to 1.1.5 the issue persists

Computer is on windows 10 and even using the clear cache command the caches aren't properly cleared.

A quick and dirty fix is to remove the cache folder manually from /AppData/Local/pypoetry/Cache

sebathomas commented 3 years ago

Had the same issue today on macOS. Removing ~/Library/Caches/pypoetry/ solved it.

willronchetti commented 3 years ago

Am also having this issue with poetry versions 1.1.4 and 1.1.5 on OSX. poetry cache:clear --all pypi gives the following error on both versions as well:

The command "cache:clear" is not defined.

Removing ~/Library/Caches/pypoetry/cache fixes for me.

agoose77 commented 3 years ago

The command is now cache clear πŸ™‚

On Fri, 26 Mar 2021, 16:23 Will Ronchetti, @.***> wrote:

Am also having this issue with poetry versions 1.1.4 and 1.1.5 on OSX. poetry cache:clear --all pypi gives the following error on both versions as well:

The command "cache:clear" is not defined.

Removing ~/Library/Caches/pypoetry/cache fixes for me as well.

β€” You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/python-poetry/poetry/issues/728#issuecomment-808346685, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJQZHOH2I5G6JOG3ULL4ALTFSYGPANCNFSM4GJVCBCA .

hardbyte commented 3 years ago

To completely clear the pypi cache the command is:

poetry cache clear pypi --all
tedmiston commented 3 years ago

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

This solution https://github.com/python-poetry/poetry/issues/728#issuecomment-451004596 still works for me, just change cache:clear to cache clear.

After clearing the cache, the update worked fine.

sirex commented 3 years ago

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 commented 2 years ago

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 commented 2 years ago

@cpbotha check this: https://github.com/python-poetry/poetry/issues/5802#issuecomment-1149994614

Rjdrenth commented 2 years ago

@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 commented 2 years ago

Clearing the cache didn't work for me. I think in my case could be related to this issue: https://github.com/pypa/warehouse/issues/11535

D3nn3 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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

sebastian-philipp commented 2 years ago

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

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

sobolevbel commented 2 years ago

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

jlogan03 commented 2 years ago

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 commented 2 years ago

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

martolini commented 2 years ago

Using this thread as a sub instead of the pypi tracker πŸ˜„