Browse Source

Update Beautiful Soup 4.8.2 (r559) → 4.9.2 (r590).

Fix update Soupsieve (05086ef) broke MC and TVC browse cards.
Change update rarfile type file.
tags/release_0.25.1
Prinz23 5 years ago
committed by JackDandy
parent
commit
69e07d2950
  1. 4
      CHANGES.md
  2. 10
      lib/bs4_py2/__init__.py
  3. 5
      lib/bs4_py2/element.py
  4. 10
      lib/bs4_py3/__init__.py
  5. 5
      lib/bs4_py3/element.py
  6. 128
      lib/rarfile/rarfile.pyi
  7. 2
      lib/soupsieve_py2/css_match.py
  8. 2
      lib/soupsieve_py3/css_match.py

4
CHANGES.md

@ -6,7 +6,7 @@
* Change remind user when testing Notifications config / Discord to update URL * Change remind user when testing Notifications config / Discord to update URL
* Fix incorrect text for some drop down list items in the apiBuilder view that affected some browsers * Fix incorrect text for some drop down list items in the apiBuilder view that affected some browsers
* Update attr 20.1.0.dev0 (4bd6827) to 20.2.0 (4f74fba) * Update attr 20.1.0.dev0 (4bd6827) to 20.2.0 (4f74fba)
* Update Beautiful Soup 4.8.2 (r559) to 4.9.1 (r585) * Update Beautiful Soup 4.8.2 (r559) to 4.9.2 (r590)
* Update dateutil 2.8.1 (43b7838) to 2.8.1 (c496b4f) * Update dateutil 2.8.1 (43b7838) to 2.8.1 (c496b4f)
* Change add diskcache_py3 5.0.1 (9670fbb) * Change add diskcache_py3 5.0.1 (9670fbb)
* Change add diskcache_py2 4.1.0 (b0451e0) * Change add diskcache_py2 4.1.0 (b0451e0)
@ -25,6 +25,8 @@
[develop changelog] [develop changelog]
* Update Beautiful Soup 4.8.2 (r559) to 4.9.1 (r585)
* Fix update Soupsieve (05086ef) broke MC and TVC browse cards
### 0.22.2 (2020-09-25 09:00:00 UTC) ### 0.22.2 (2020-09-25 09:00:00 UTC)

10
lib/bs4_py2/__init__.py

@ -15,7 +15,7 @@ documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/
""" """
__author__ = "Leonard Richardson (leonardr@segfault.org)" __author__ = "Leonard Richardson (leonardr@segfault.org)"
__version__ = "4.9.1" __version__ = "4.9.2"
__copyright__ = "Copyright (c) 2004-2020 Leonard Richardson" __copyright__ = "Copyright (c) 2004-2020 Leonard Richardson"
# Use of this source code is governed by the MIT license. # Use of this source code is governed by the MIT license.
__license__ = "MIT" __license__ = "MIT"
@ -253,7 +253,9 @@ class BeautifulSoup(Tag):
if not original_builder and not ( if not original_builder and not (
original_features == builder.NAME or original_features == builder.NAME or
original_features in builder.ALTERNATE_NAMES original_features in builder.ALTERNATE_NAMES
): ) and markup:
# The user did not tell us which TreeBuilder to use,
# and we had to guess. Issue a warning.
if builder.is_xml: if builder.is_xml:
markup_type = "XML" markup_type = "XML"
else: else:
@ -496,13 +498,13 @@ class BeautifulSoup(Tag):
container = self.string_container(subclass) container = self.string_container(subclass)
return container(s) return container(s)
def insert_before(self, successor): def insert_before(self, *args):
"""This method is part of the PageElement API, but `BeautifulSoup` doesn't implement """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
it because there is nothing before or after it in the parse tree. it because there is nothing before or after it in the parse tree.
""" """
raise NotImplementedError("BeautifulSoup objects don't support insert_before().") raise NotImplementedError("BeautifulSoup objects don't support insert_before().")
def insert_after(self, successor): def insert_after(self, *args):
"""This method is part of the PageElement API, but `BeautifulSoup` doesn't implement """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
it because there is nothing before or after it in the parse tree. it because there is nothing before or after it in the parse tree.
""" """

5
lib/bs4_py2/element.py

@ -457,6 +457,11 @@ class PageElement(object):
:param tags: A list of PageElements. :param tags: A list of PageElements.
""" """
if isinstance(tags, Tag):
# Calling self.append() on another tag's contents will change
# the list we're iterating over. Make a list that won't
# change.
tags = list(tags.contents)
for tag in tags: for tag in tags:
self.append(tag) self.append(tag)

10
lib/bs4_py3/__init__.py

@ -15,7 +15,7 @@ documentation: http://www.crummy.com/software/BeautifulSoup/bs4/doc/
""" """
__author__ = "Leonard Richardson (leonardr@segfault.org)" __author__ = "Leonard Richardson (leonardr@segfault.org)"
__version__ = "4.9.1" __version__ = "4.9.2"
__copyright__ = "Copyright (c) 2004-2020 Leonard Richardson" __copyright__ = "Copyright (c) 2004-2020 Leonard Richardson"
# Use of this source code is governed by the MIT license. # Use of this source code is governed by the MIT license.
__license__ = "MIT" __license__ = "MIT"
@ -253,7 +253,9 @@ class BeautifulSoup(Tag):
if not original_builder and not ( if not original_builder and not (
original_features == builder.NAME or original_features == builder.NAME or
original_features in builder.ALTERNATE_NAMES original_features in builder.ALTERNATE_NAMES
): ) and markup:
# The user did not tell us which TreeBuilder to use,
# and we had to guess. Issue a warning.
if builder.is_xml: if builder.is_xml:
markup_type = "XML" markup_type = "XML"
else: else:
@ -496,13 +498,13 @@ class BeautifulSoup(Tag):
container = self.string_container(subclass) container = self.string_container(subclass)
return container(s) return container(s)
def insert_before(self, successor): def insert_before(self, *args):
"""This method is part of the PageElement API, but `BeautifulSoup` doesn't implement """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
it because there is nothing before or after it in the parse tree. it because there is nothing before or after it in the parse tree.
""" """
raise NotImplementedError("BeautifulSoup objects don't support insert_before().") raise NotImplementedError("BeautifulSoup objects don't support insert_before().")
def insert_after(self, successor): def insert_after(self, *args):
"""This method is part of the PageElement API, but `BeautifulSoup` doesn't implement """This method is part of the PageElement API, but `BeautifulSoup` doesn't implement
it because there is nothing before or after it in the parse tree. it because there is nothing before or after it in the parse tree.
""" """

5
lib/bs4_py3/element.py

@ -457,6 +457,11 @@ class PageElement(object):
:param tags: A list of PageElements. :param tags: A list of PageElements.
""" """
if isinstance(tags, Tag):
# Calling self.append() on another tag's contents will change
# the list we're iterating over. Make a list that won't
# change.
tags = list(tags.contents)
for tag in tags: for tag in tags:
self.append(tag) self.append(tag)

128
lib/rarfile/rarfile.pyi

@ -1,6 +1,10 @@
from io import RawIOBase from io import RawIOBase
from typing import Any, Optional from typing import Any, Optional
UNRAR_TOOL : str = "unrar"
PATH_SEP : str = '/'
def custom_check(cmd: Any, ignore_retcode : bool = False): ...
class AES_CBC_Decrypt: class AES_CBC_Decrypt:
decrypt: Any = ... decrypt: Any = ...
def __init__(self, key: Any, iv: Any) -> None: ... def __init__(self, key: Any, iv: Any) -> None: ...
@ -63,6 +67,13 @@ class RarInfo:
class RarFile: class RarFile:
comment: Any = ... comment: Any = ...
_rarfile: Any = ...
_charset: Any = ...
_info_callback: Any = ...
_crc_check: Any = ...
_password: Any = ...
_file_parser: Any = ...
_strict: bool = ...
def __init__(self, rarfile: Any, mode: str = ..., charset: Optional[Any] = ..., info_callback: Optional[Any] = ..., crc_check: bool = ..., errors: str = ...) -> None: ... def __init__(self, rarfile: Any, mode: str = ..., charset: Optional[Any] = ..., info_callback: Optional[Any] = ..., crc_check: bool = ..., errors: str = ...) -> None: ...
def __enter__(self): ... def __enter__(self): ...
def __exit__(self, typ: Any, value: Any, traceback: Any) -> None: ... def __exit__(self, typ: Any, value: Any, traceback: Any) -> None: ...
@ -80,9 +91,27 @@ class RarFile:
def extractall(self, path: Optional[Any] = ..., members: Optional[Any] = ..., pwd: Optional[Any] = ...) -> None: ... def extractall(self, path: Optional[Any] = ..., members: Optional[Any] = ..., pwd: Optional[Any] = ...) -> None: ...
def testrar(self) -> None: ... def testrar(self) -> None: ...
def strerror(self): ... def strerror(self): ...
def _parse(self) -> None: ...
def _extract(self, fnlist: Any, path: Optional[Any] = ..., psw: Optional[Any] = ...) -> None: ...
class CommonParser: class CommonParser:
_main: Any = ...
_hdrenc_main: Any = ...
_needs_password: bool = ...
_fd: Any = ...
_expect_sig: Any = ...
_parse_error: Any = ...
_password: Any = ...
comment: Any = ... comment: Any = ...
_rarfile: Any = ...
_crc_check: Any = ...
_charset: Any = ...
_strict: Any = ...
_info_callback: Any = ...
_info_list: Any = ...
_info_map: Any = ...
_vol_list: Any = ...
_sfx_offset: Any = ...
def __init__(self, rarfile: Any, password: Any, crc_check: Any, charset: Any, strict: Any, info_cb: Any, sfx_offset: Any) -> None: ... def __init__(self, rarfile: Any, password: Any, crc_check: Any, charset: Any, strict: Any, info_cb: Any, sfx_offset: Any) -> None: ...
def has_header_encryption(self): ... def has_header_encryption(self): ...
def setpassword(self, psw: Any) -> None: ... def setpassword(self, psw: Any) -> None: ...
@ -92,8 +121,19 @@ class CommonParser:
def infolist(self): ... def infolist(self): ...
def getinfo(self, member: Any): ... def getinfo(self, member: Any): ...
def parse(self) -> None: ... def parse(self) -> None: ...
def _parse_real(self) -> None: ...
def process_entry(self, fd: Any, item: Any) -> None: ... def process_entry(self, fd: Any, item: Any) -> None: ...
def _decrypt_header(self, fd: Any) -> None: ...
def _parse_block_header(self, fd: Any) -> None: ...
def _open_hack(self, inf: Any, psw: Any) -> None: ...
def _parse_header(self, fd: Any): ...
def _next_volname(self, volfile: Any): ...
def _set_error(self, msg: Any, *args: Any) -> None: ...
def open(self, inf: Any, psw: Any): ... def open(self, inf: Any, psw: Any): ...
def _open_clear(self, inf: Any): ...
def _open_hack_core(self, inf: Any, psw: Any, prefix: Any, suffix: Any): ...
def _open_unrar_membuf(self, memfile: Any, inf: Any, psw: Any): ...
def _open_unrar(self, rarfile: Any, inf: Any, psw: Optional[Any] = ..., tmpfile: Optional[Any] = ..., force_file: bool = ...): ...
class Rar3Info(RarInfo): class Rar3Info(RarInfo):
extract_version: int = ... extract_version: int = ...
@ -103,12 +143,26 @@ class Rar3Info(RarInfo):
header_size: Any = ... header_size: Any = ...
header_offset: Any = ... header_offset: Any = ...
data_offset: Any = ... data_offset: Any = ...
_md_class: Any = ...
_md_expect: Any = ...
file_redir: Any = ... file_redir: Any = ...
blake2sp_hash: Any = ... blake2sp_hash: Any = ...
def _must_disable_hack(self): ...
class RAR3Parser(CommonParser): class RAR3Parser(CommonParser):
_expect_sig: Any = ...
_last_aes_key: Any = ...
def _decrypt_header(self, fd: Any): ...
def _parse_block_header(self, fd: Any): ...
def _parse_file_header(self, h: Any, hdata: Any, pos: Any): ...
def _parse_subblocks(self, h: Any, hdata: Any, pos: Any): ...
def _read_comment_v3(self, inf: Any, psw: Optional[Any] = ...): ...
def _decode(self, val: Any): ...
def _decode_comment(self, val: Any): ...
comment: Any = ... comment: Any = ...
_needs_password: bool = ...
def process_entry(self, fd: Any, item: Any) -> None: ... def process_entry(self, fd: Any, item: Any) -> None: ...
def _open_hack(self, inf: Any, psw: Any): ...
class Rar5Info(RarInfo): class Rar5Info(RarInfo):
extract_version: int = ... extract_version: int = ...
@ -121,6 +175,9 @@ class Rar5Info(RarInfo):
add_size: int = ... add_size: int = ...
block_extra_size: int = ... block_extra_size: int = ...
volume_number: Any = ... volume_number: Any = ...
_md_class: Any = ...
_md_expect: Any = ...
def _must_disable_hack(self): ...
class Rar5BaseFile(Rar5Info): class Rar5BaseFile(Rar5Info):
type: int = ... type: int = ...
@ -131,6 +188,7 @@ class Rar5BaseFile(Rar5Info):
file_owner: Any = ... file_owner: Any = ...
file_version: Any = ... file_version: Any = ...
blake2sp_hash: Any = ... blake2sp_hash: Any = ...
def _must_disable_hack(self): ...
class Rar5FileInfo(Rar5BaseFile): class Rar5FileInfo(Rar5BaseFile):
type: Any = ... type: Any = ...
@ -142,6 +200,7 @@ class Rar5MainInfo(Rar5Info):
type: Any = ... type: Any = ...
main_flags: Any = ... main_flags: Any = ...
main_volume_number: Any = ... main_volume_number: Any = ...
def _must_disable_hack(self): ...
class Rar5EncryptionInfo(Rar5Info): class Rar5EncryptionInfo(Rar5Info):
type: Any = ... type: Any = ...
@ -157,7 +216,28 @@ class Rar5EndArcInfo(Rar5Info):
endarc_flags: Any = ... endarc_flags: Any = ...
class RAR5Parser(CommonParser): class RAR5Parser(CommonParser):
_expect_sig: Any = ...
_hdrenc_main: Any = ...
_last_aes256_key: Any = ...
def _gen_key(self, kdf_count: Any, salt: Any): ...
def _decrypt_header(self, fd: Any): ...
def _parse_block_header(self, fd: Any): ...
def _parse_block_common(self, h: Any, hdata: Any): ...
def _parse_main_block(self, h: Any, hdata: Any, pos: Any): ...
def _parse_file_block(self, h: Any, hdata: Any, pos: Any): ...
def _parse_endarc_block(self, h: Any, hdata: Any, pos: Any): ...
def _parse_encryption_block(self, h: Any, hdata: Any, pos: Any): ...
def _process_file_extra(self, h: Any, xdata: Any) -> None: ...
def _parse_file_xtime(self, h: Any, xdata: Any, pos: Any) -> None: ...
def _parse_file_encryption(self, h: Any, xdata: Any, pos: Any) -> None: ...
def _parse_file_hash(self, h: Any, xdata: Any, pos: Any) -> None: ...
def _parse_file_version(self, h: Any, xdata: Any, pos: Any) -> None: ...
def _parse_file_redir(self, h: Any, xdata: Any, pos: Any) -> None: ...
def _parse_file_owner(self, h: Any, xdata: Any, pos: Any) -> None: ...
def process_entry(self, fd: Any, item: Any) -> None: ... def process_entry(self, fd: Any, item: Any) -> None: ...
comment: Any = ...
def _load_comment(self, fd: Any, item: Any) -> None: ...
def _open_hack(self, inf: Any, psw: Any): ...
class UnicodeFilename: class UnicodeFilename:
std_name: Any = ... std_name: Any = ...
@ -174,24 +254,50 @@ class UnicodeFilename:
class RarExtFile(RawIOBase): class RarExtFile(RawIOBase):
name: Any = ... name: Any = ...
mode: str = ... mode: str = ...
_parser: Any = ...
_inf: Any = ...
_fd: Any = ...
_remain: int = ...
_returncode: int = ...
_md_context: Any = ...
def __init__(self, parser: Any, inf: Any) -> None: ... def __init__(self, parser: Any, inf: Any) -> None: ...
def _open(self) -> None: ...
def read(self, cnt: Optional[Any] = ...): ... def read(self, cnt: Optional[Any] = ...): ...
def _check(self) -> None: ...
def _read(self, cnt: Any) -> None: ...
def close(self) -> None: ... def close(self) -> None: ...
def __del__(self) -> None: ... def __del__(self) -> None: ...
def readinto(self, buf: Any) -> None: ... def readinto(self, buf: Any) -> None: ...
def tell(self): ... def tell(self): ...
def seek(self, ofs: Any, whence: int = ...): ... def seek(self, ofs: Any, whence: int = ...): ...
def _skip(self, cnt: Any) -> None: ...
def readable(self): ... def readable(self): ...
def writable(self): ... def writable(self): ...
def seekable(self): ... def seekable(self): ...
def readall(self): ... def readall(self): ...
class PipeReader(RarExtFile): class PipeReader(RarExtFile):
_cmd: Any = ...
_proc: Any = ...
_tempfile: Any = ...
def __init__(self, rf: Any, inf: Any, cmd: Any, tempfile: Optional[Any] = ...) -> None: ... def __init__(self, rf: Any, inf: Any, cmd: Any, tempfile: Optional[Any] = ...) -> None: ...
_returncode: Any = ...
def _close_proc(self) -> None: ...
_fd: Any = ...
def _open(self) -> None: ...
def _read(self, cnt: Any): ...
def close(self) -> None: ... def close(self) -> None: ...
def readinto(self, buf: Any): ... def readinto(self, buf: Any): ...
class DirectReader(RarExtFile): class DirectReader(RarExtFile):
_cur: Any = ...
_cur_avail: Any = ...
_volfile: Any = ...
_fd: Any = ...
def _open(self) -> None: ...
def _skip(self, cnt: Any) -> None: ...
def _read(self, cnt: Any): ...
def _open_next(self): ...
def readinto(self, buf: Any): ... def readinto(self, buf: Any): ...
class HeaderDecrypt: class HeaderDecrypt:
@ -203,6 +309,9 @@ class HeaderDecrypt:
def read(self, cnt: Optional[Any] = ...): ... def read(self, cnt: Optional[Any] = ...): ...
class XFile: class XFile:
__slots__: Any = ...
_need_close: bool = ...
_fd: Any = ...
def __init__(self, xfile: Any, bufsize: int = ...) -> None: ... def __init__(self, xfile: Any, bufsize: int = ...) -> None: ...
def read(self, n: Optional[Any] = ...): ... def read(self, n: Optional[Any] = ...): ...
def tell(self): ... def tell(self): ...
@ -219,16 +328,25 @@ class NoHashContext:
def hexdigest(self) -> None: ... def hexdigest(self) -> None: ...
class CRC32Context: class CRC32Context:
__slots__: Any = ...
_crc: int = ...
def __init__(self, data: Optional[Any] = ...) -> None: ... def __init__(self, data: Optional[Any] = ...) -> None: ...
def update(self, data: Any) -> None: ... def update(self, data: Any) -> None: ...
def digest(self): ... def digest(self): ...
def hexdigest(self): ... def hexdigest(self): ...
class Blake2SP: class Blake2SP:
__slots__: Any = ...
digest_size: int = ... digest_size: int = ...
block_size: int = ... block_size: int = ...
parallelism: int = ... parallelism: int = ...
_buf: bytes = ...
_cur: int = ...
_digest: Any = ...
_thread: Any = ...
def __init__(self, data: Optional[Any] = ...) -> None: ... def __init__(self, data: Optional[Any] = ...) -> None: ...
def _blake2s(self, ofs: Any, depth: Any, is_last: Any): ...
def _add_block(self, blk: Any) -> None: ...
def update(self, data: Any) -> None: ... def update(self, data: Any) -> None: ...
def digest(self): ... def digest(self): ...
def hexdigest(self): ... def hexdigest(self): ...
@ -236,12 +354,22 @@ class Blake2SP:
class Rar3Sha1: class Rar3Sha1:
digest_size: int = ... digest_size: int = ...
block_size: int = ... block_size: int = ...
_BLK_BE: Any = ...
_BLK_LE: Any = ...
__slots__: Any = ...
_md: Any = ...
_nbytes: int = ...
_rarbug: Any = ...
def __init__(self, data: bytes = ..., rarbug: bool = ...) -> None: ... def __init__(self, data: bytes = ..., rarbug: bool = ...) -> None: ...
def update(self, data: Any) -> None: ... def update(self, data: Any) -> None: ...
def digest(self): ... def digest(self): ...
def hexdigest(self): ... def hexdigest(self): ...
def _corrupt(self, data: Any, dpos: Any) -> None: ...
class XTempFile: class XTempFile:
__slots__: Any = ...
_tmpfile: Any = ...
_filename: Any = ...
def __init__(self, rarfile: Any) -> None: ... def __init__(self, rarfile: Any) -> None: ...
def __enter__(self): ... def __enter__(self): ...
def __exit__(self, exc_type: Any, exc_value: Any, tb: Any) -> None: ... def __exit__(self, exc_type: Any, exc_value: Any, tb: Any) -> None: ...

2
lib/soupsieve_py2/css_match.py

@ -6,7 +6,7 @@ import re
from .import css_types as ct from .import css_types as ct
import unicodedata import unicodedata
import bs4 import bs4_py2 as bs4
# Empty tag pattern (whitespace okay) # Empty tag pattern (whitespace okay)
RE_NOT_EMPTY = re.compile('[^ \t\r\n\f]') RE_NOT_EMPTY = re.compile('[^ \t\r\n\f]')

2
lib/soupsieve_py3/css_match.py

@ -5,7 +5,7 @@ import re
from .import css_types as ct from .import css_types as ct
import unicodedata import unicodedata
import bs4 import bs4_py3 as bs4
# Empty tag pattern (whitespace okay) # Empty tag pattern (whitespace okay)
RE_NOT_EMPTY = re.compile('[^ \t\r\n\f]') RE_NOT_EMPTY = re.compile('[^ \t\r\n\f]')

Loading…
Cancel
Save