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

Not handling pypi redirect loop? #293

Closed
philbudne opened this issue Jun 11, 2022 · 3 comments · Fixed by #294
Closed

Not handling pypi redirect loop? #293

philbudne opened this issue Jun 11, 2022 · 3 comments · Fixed by #294
Assignees
Labels
bug-candidate Might be a bug.

Comments

@philbudne
Copy link

philbudne commented Jun 11, 2022

Bug description

pip-audit dies with "TooManyRedirects" (redirect loop from PyPI?) from requests library. Perhaps handle the error and continue with audit? Installation (nightly audit) worked until yesterday.

Reproduction steps

On FreeBSD 13.1 with Python 3.8.13, mailman3 venv with sources installed from github (not a tagged release), run pip-audit (see logs below).

Expected behavior

Complete audit for other packages.

Screenshots and logs


mail% /usr/local/vmm3/bin/pip list
Package              Version
-------------------- ----------
aiosmtpd             1.4.2
alembic              1.7.7
asgiref              3.5.0
atpublic             3.0.1
attrs                21.2.0
authheaders          0.14.1
authres              1.2.0
backports.zoneinfo   0.2.1
bleach               4.1.0
CacheControl         0.12.10
certifi              2021.10.8
cffi                 1.15.0
charset-normalizer   2.0.12
click                8.0.4
cmarkgfm             0.8.0
cryptography         3.3.2
cyclonedx-python-lib 2.1.0
defusedxml           0.7.1
Django               4.0.4
django-allauth       0.50.0
django-debug-toolbar 3.2.4
django-gravatar2     1.4.4
django-mailman3      1.3.8
dkimpy               1.0.5
dnspython            2.2.1
docutils             0.18.1
falcon               3.1.0
flufl.bounce         4.0
flufl.i18n           3.2
flufl.lock           6.0
greenlet             1.1.2
gunicorn             20.1.0
html5lib             1.1
idna                 3.3
importlib-metadata   4.11.3
importlib-resources  5.6.0
lazr.config          2.2.3
lazr.delegates       2.0.4
lockfile             0.12.2
mailman              3.3.6b1
mailmanclient        3.3.3
Mako                 1.2.0
MarkupSafe           2.1.1
msgpack              1.0.3
nose                 1.3.7
oauthlib             3.2.0
packageurl-python    0.9.9
packaging            21.3
passlib              1.7.4
pip                  22.1.2
pip-api              0.0.29
pip_audit            2.3.1
postorius            1.3.7b1
progress             1.6
psutil               5.9.1
publicsuffix2        2.20191221
pycparser            2.21
Pygments             2.11.2
PyJWT                2.4.0
pyparsing            3.0.7
python-dateutil      2.8.2
python3-openid       3.2.0
pytz                 2022.1
readme-renderer      34.0
requests             2.27.1
requests-oauthlib    1.3.1
resolvelib           0.8.1
setuptools           62.3.2
six                  1.16.0
SQLAlchemy           1.3.24
sqlite3              0.0.0
sqlparse             0.4.2
Tkinter              0.0.0
toml                 0.10.2
types-setuptools     57.4.11
types-toml           0.10.4
urllib3              1.26.9
webencodings         0.5.1
zipp                 3.7.0
zope.component       5.0.1
zope.configuration   4.4.0
zope.event           4.5.0
zope.hookable        5.1.0
zope.i18nmessageid   5.0.1
zope.interface       5.4.0
zope.schema          6.2.0

mail% /usr/local/vmm3/bin/pip-audit --progress-spinner off -v
DEBUG:pip_audit._cli:parsed arguments: Namespace(cache_dir=None, desc=<VulnerabilityDescriptionChoice.Auto: 'auto'>, dry_run=False, extra_index_urls=[], fix=False, format=<OutputFormatChoice.Columns: 'columns'>, ignore_vulns=[], index_url='https://pypi.org/simple', local=False, no_deps=False, output=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, paths=[], progress_spinner=<ProgressSpinnerChoice.Off: 'off'>, project_path=None, require_hashes=False, requirements=None, skip_editable=False, strict=False, timeout=15, verbose=True, vulnerability_service=<VulnerabilityServiceChoice.Pypi: 'pypi'>)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/aiosmtpd/1.4.2/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6437
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): pypi.org:443
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/aiosmtpd/1.4.2/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/alembic/1.7.7/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6437
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/alembic/1.7.7/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/asgiref/3.5.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/asgiref/3.5.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/atpublic/3.0.1/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/atpublic/3.0.1/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/attrs/21.2.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/attrs/21.2.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/authheaders/0.14.1/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/authheaders/0.14.1/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/authres/1.2.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/authres/1.2.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/backports-zoneinfo/0.2.1/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/backports.zoneinfo/0.2.1/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/backports.zoneinfo/0.2.1/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/bleach/4.1.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/bleach/4.1.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/cachecontrol/0.12.10/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/CacheControl/0.12.10/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/CacheControl/0.12.10/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/certifi/2021.10.8/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/certifi/2021.10.8/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/cffi/1.15.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/cffi/1.15.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/charset-normalizer/2.0.12/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/charset-normalizer/2.0.12/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/click/8.0.4/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/click/8.0.4/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/cmarkgfm/0.8.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/cmarkgfm/0.8.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/cryptography/3.3.2/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/cryptography/3.3.2/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/cyclonedx-python-lib/2.1.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/cyclonedx-python-lib/2.1.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/defusedxml/0.7.1/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/defusedxml/0.7.1/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django/4.0.4/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/Django/4.0.4/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/Django/4.0.4/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-allauth/0.50.0/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/django-allauth/0.50.0/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-debug-toolbar/3.2.4/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/django-debug-toolbar/3.2.4/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-gravatar2/1.4.4/json" in the cache
DEBUG:cachecontrol.controller:Current age based on date: 6438
DEBUG:cachecontrol.controller:Freshness lifetime from max-age: 900
DEBUG:urllib3.connectionpool:https://pypi.org:443 "GET /pypi/django-gravatar2/1.4.4/json HTTP/1.1" 304 0
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json/" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
DEBUG:cachecontrol.controller:Looking up "https://pypi.org/pypi/django-mailman3/1.3.8/json" in the cache
DEBUG:cachecontrol.controller:Returning cached permanent redirect response (ignoring date and etag information)
Traceback (most recent call last):
  File "/usr/local/vmm3/bin/pip-audit", line 8, in <module>
    sys.exit(audit())
  File "/usr/local/vmm3/lib/python3.8/site-packages/pip_audit/_cli.py", line 403, in audit
    for (spec, vulns) in auditor.audit(source):
  File "/usr/local/vmm3/lib/python3.8/site-packages/pip_audit/_audit.py", line 66, in audit
    for dep, vulns in self._service.query_all(specs):
  File "/usr/local/vmm3/lib/python3.8/site-packages/pip_audit/_service/interface.py", line 149, in query_all
    yield self.query(spec)
  File "/usr/local/vmm3/lib/python3.8/site-packages/pip_audit/_service/pypi.py", line 58, in query
    response: requests.Response = self.session.get(url=url, timeout=self.timeout)
  File "/usr/local/vmm3/lib/python3.8/site-packages/requests-2.27.1-py3.8.egg/requests/sessions.py", line 542, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/vmm3/lib/python3.8/site-packages/requests-2.27.1-py3.8.egg/requests/sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/vmm3/lib/python3.8/site-packages/requests-2.27.1-py3.8.egg/requests/sessions.py", line 667, in send
    history = [resp for resp in gen]
  File "/usr/local/vmm3/lib/python3.8/site-packages/requests-2.27.1-py3.8.egg/requests/sessions.py", line 667, in <listcomp>
    history = [resp for resp in gen]
  File "/usr/local/vmm3/lib/python3.8/site-packages/requests-2.27.1-py3.8.egg/requests/sessions.py", line 166, in resolve_redirects
    raise TooManyRedirects('Exceeded {} redirects.'.format(self.max_redirects), response=resp)
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

Platform information

  • OS name and version: FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC amd64
  • pip-audit version (pip-audit -V): pip-audit 2.3.1
  • Python version (python -V or python3 -V): Python 3.8.13
  • pip version (pip -V or pip3 -V): pip 22.1.2 from /usr/local/vmm3/lib/python3.8/site-packages/pip (python 3.8)

Additional context

NOTE: mailman components installed from github "master" branches (not tagged releases). Worked until yesterday.

@philbudne philbudne added the bug-candidate Might be a bug. label Jun 11, 2022
@di
Copy link
Member

di commented Jun 12, 2022

PyPI had a recent outage that is the root cause here (https://status.python.org/incidents/lgpr13fy71bk)

This should be resolved now, but I'll leave this open to determine if we should have a better failure case here or if this is sufficient.

@woodruffw
Copy link
Member

Yeah, IMO we can improve the error message here. I'll tackle that today.

woodruffw added a commit that referenced this issue Jun 13, 2022
Closes #293.

Signed-off-by: William Woodruff <[email protected]>
@woodruffw
Copy link
Member

#294 "fixes" this by turning it into a controlled error case.

@woodruffw woodruffw self-assigned this Jun 13, 2022
woodruffw added a commit that referenced this issue Jun 14, 2022
* PyPI: handle redirect loops more gracefully

Closes #293.

Signed-off-by: William Woodruff <[email protected]>

* CHANGELOG: record changes

Signed-off-by: William Woodruff <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug-candidate Might be a bug.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants