urllib3 2.2.2 incompatibility (AttributeError: 'bool' object has no attribute 'history')#27
Using tumblr-backup 1.0.3, installed this morning with `[video,notes,jq]` optional dependencies, I just attempted to run the following command: ```bash tumblr-backup -j --save-video --save-audio --tag-index --posts-per-page=0 moonlit-tulip ``` Rather than backing up successfully, it threw a pair of exceptions, with the following console output: ``` moonlit-tulip: Backup complete: Found empty set of posts Caught exception while saving post 57632338982: Traceback (most recent call last): File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1928, in save_post f.write(self.get_post()) ^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1806, in get_post content = self.get_content() ^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1541, in get_content append_try('caption') File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1512, in append_try elt = re.sub(r"""(?i)(<img\s(?:[^>]*\s)?src\s*=\s*["'])(.*?)(["'][^>]*>)""", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/re/__init__.py", line 186, in sub return _compile(pattern, flags).sub(repl, string, count) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1697, in get_inline_image saved_name = self.download_media(image_url, filename=image_filename) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1785, in download_media return self._download_media_inner(url, get_path, path_parts, media_path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1958, in _download_media_inner wget_retrieve(url, dstpath, post_id=self.ident, post_timestamp=self.post['timestamp']) File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 848, in __call__ _retrieve_loop( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 687, in _retrieve_loop err, doctype = gethttp(url, hstat, doctype, logger, retry_counter, use_dns_check) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 297, in gethttp resp = urlopen(url, use_dns_check, request_headers, preload_content=False, enforce_content_length=False) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 831, in urlopen return poolman.request('GET', url, headers=req_headers, retries=HTTP_RETRY, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 136, in request return self.request_encode_url( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 183, in request_encode_url return self.urlopen(method, url, **extra_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 231, in urlopen return super().urlopen(method, url, redirect, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen response = conn.urlopen(method, u.request_uri, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 789, in urlopen response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 173, in getresponse return WGHTTPResponse( ^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 104, in __init__ super().__init__( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 593, in __init__ super().__init__( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 338, in __init__ self.retries = retries ^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 406, in retries if retries is not None and retries.history: ^^^^^^^^^^^^^^^ AttributeError: 'bool' object has no attribute 'history' Unable to download video in post #170435533203 Traceback (most recent call last):style File "/home/alyssa/.local/bin/tumblr-backup", line 8, in <module> sys.exit(main()) ^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 2394, in main tb.backup(account, options.prev_archives[i] if options.prev_archives else None) File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1441, in backup build_index() File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 1233, in build_index get_avatar(prev_archive, no_get=self.options.no_get) File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/main.py", line 679, in get_avatar wget_retrieve(url, avatar_dest, adjust_basename=adj_bn) File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 848, in __call__ _retrieve_loop( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 687, in _retrieve_loop err, doctype = gethttp(url, hstat, doctype, logger, retry_counter, use_dns_check) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 297, in gethttp resp = urlopen(url, use_dns_check, request_headers, preload_content=False, enforce_content_length=False) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 831, in urlopen return poolman.request('GET', url, headers=req_headers, retries=HTTP_RETRY, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 136, in request return self.request_encode_url( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/_request_methods.py", line 183, in request_encode_url return self.urlopen(method, url, **extra_kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 231, in urlopen return super().urlopen(method, url, redirect, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen response = conn.urlopen(method, u.request_uri, **kw) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 789, in urlopen response = self._make_request( ^^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request response = conn.getresponse() ^^^^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 173, in getresponse return WGHTTPResponse( ^^^^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/tumblr_backup/wget.py", line 104, in __init__ super().__init__( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 593, in __init__ super().__init__( File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 338, in __init__ self.retries = retries ^^^^^^^^^^^^ File "/home/alyssa/.local/share/pipx/venvs/tumblr-backup/lib/python3.12/site-packages/urllib3/response.py", line 406, in retries if retries is not None and retries.history: ^^^^^^^^^^^^^^^ AttributeError: 'bool' object has no attribute 'history' ``` The two exception-raising posts, for reference, are [here](https://moonlit-tulip.tumblr.com/post/57632338982/5000-followers-sbahj-pinkie-pie-poster-giveaway) and [here](https://moonlit-tulip.tumblr.com/post/170435533203/arthurian-mythology-never-really-pulled-me-in). The former strikes me as particularly interesting, since, to my perception when viewing the page as opposed to the source code, it doesn't seem to contain a video at all.
This issue appears to be discussing a feature request or bug report related to the repository. Based on the content, it seems to be resolved. The issue was opened by twilight-flower and has received 3 comments.