Browse Source

Merge branch 'feature/UpdateRarfile' into develop

pull/1289/head
JackDandy 5 years ago
parent
commit
1c01f4ef4f
  1. 2
      CHANGES.md
  2. 9
      lib/rarfile/__init__.py
  3. 0
      lib/rarfile/__init__.pyi
  4. 258
      lib/rarfile/rarfile.pyi
  5. 0
      lib/rarfile_py2/__init__.py
  6. 3
      lib/rarfile_py2/rarfile.py
  7. 0
      lib/rarfile_py3/__init__.py
  8. 3054
      lib/rarfile_py3/rarfile.py

2
CHANGES.md

@ -4,6 +4,8 @@
* Change improve Python performance of handling core objects
* Change improve performance for find_show_by_id
* Change episode overview, move pulldown from 'Set/Failed' to 'Override/Failed'
* Change add rarfile_py3 3.1 (a4202ca)
* Change backport rarfile_py2; Fixes for multivolume RAR3 with encrypted headers
* Update Apprise 0.8.0 (6aa52c3) to 0.8.3 (4aee9de)
* Update attr 19.2.0.dev0 (daf2bc8) to 20.1.0.dev0 (9b5e988)
* Update Beautiful Soup 4.8.1 (r540) to 4.8.2 (r554)

9
lib/rarfile/__init__.py

@ -1 +1,10 @@
import sys
name = 'rarfile'
locals()[name] = __import__(name)
if None is not name:
sub_name = name + '_py' + ('3', '2')[2 == sys.version_info[0]]
sys.modules[name] = __import__(sub_name)
package = __import__('%s.%s' % (sub_name, name), globals(), locals(), [], 0)
sys.modules.update({name: package, 'lib.%s' % name: package})

0
lib/rarfile/__init__.pyi

258
lib/rarfile/rarfile.pyi

@ -0,0 +1,258 @@
from io import RawIOBase
from typing import Any, Optional
class AES_CBC_Decrypt:
decrypt: Any = ...
def __init__(self, key: Any, iv: Any) -> None: ...
class AES_CBC_Decrypt:
decrypt: Any = ...
def __init__(self, key: Any, iv: Any) -> None: ...
def is_rarfile(xfile: Any): ...
def is_rarfile_sfx(xfile: Any): ...
class Error(Exception): ...
class BadRarFile(Error): ...
class NotRarFile(Error): ...
class BadRarName(Error): ...
class NoRarEntry(Error): ...
class PasswordRequired(Error): ...
class NeedFirstVolume(Error): ...
class NoCrypto(Error): ...
class RarExecError(Error): ...
class RarWarning(RarExecError): ...
class RarFatalError(RarExecError): ...
class RarCRCError(RarExecError): ...
class RarLockedArchiveError(RarExecError): ...
class RarWriteError(RarExecError): ...
class RarOpenError(RarExecError): ...
class RarUserError(RarExecError): ...
class RarMemoryError(RarExecError): ...
class RarCreateError(RarExecError): ...
class RarNoFilesError(RarExecError): ...
class RarUserBreak(RarExecError): ...
class RarWrongPassword(RarExecError): ...
class RarUnknownError(RarExecError): ...
class RarSignalExit(RarExecError): ...
class RarCannotExec(RarExecError): ...
class RarInfo:
filename: Any = ...
file_size: Any = ...
compress_size: Any = ...
date_time: Any = ...
comment: Any = ...
CRC: Any = ...
volume: Any = ...
orig_filename: Any = ...
mtime: Any = ...
ctime: Any = ...
atime: Any = ...
extract_version: Any = ...
mode: Any = ...
host_os: Any = ...
compress_type: Any = ...
arctime: Any = ...
blake2sp_hash: Any = ...
file_redir: Any = ...
flags: int = ...
type: Any = ...
def isdir(self): ...
def needs_password(self): ...
class RarFile:
comment: Any = ...
def __init__(self, rarfile: Any, mode: str = ..., charset: Optional[Any] = ..., info_callback: Optional[Any] = ..., crc_check: bool = ..., errors: str = ...) -> None: ...
def __enter__(self): ...
def __exit__(self, typ: Any, value: Any, traceback: Any) -> None: ...
def setpassword(self, password: Any) -> None: ...
def needs_password(self): ...
def namelist(self): ...
def infolist(self): ...
def volumelist(self): ...
def getinfo(self, fname: Any): ...
def open(self, fname: Any, mode: str = ..., psw: Optional[Any] = ...): ...
def read(self, fname: Any, psw: Optional[Any] = ...): ...
def close(self) -> None: ...
def printdir(self) -> None: ...
def extract(self, member: Any, path: Optional[Any] = ..., pwd: Optional[Any] = ...) -> None: ...
def extractall(self, path: Optional[Any] = ..., members: Optional[Any] = ..., pwd: Optional[Any] = ...) -> None: ...
def testrar(self) -> None: ...
def strerror(self): ...
class CommonParser:
comment: Any = ...
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 setpassword(self, psw: Any) -> None: ...
def volumelist(self): ...
def needs_password(self): ...
def strerror(self): ...
def infolist(self): ...
def getinfo(self, member: Any): ...
def parse(self) -> None: ...
def process_entry(self, fd: Any, item: Any) -> None: ...
def open(self, inf: Any, psw: Any): ...
class Rar3Info(RarInfo):
extract_version: int = ...
salt: Any = ...
add_size: int = ...
header_crc: Any = ...
header_size: Any = ...
header_offset: Any = ...
data_offset: Any = ...
file_redir: Any = ...
blake2sp_hash: Any = ...
class RAR3Parser(CommonParser):
comment: Any = ...
def process_entry(self, fd: Any, item: Any) -> None: ...
class Rar5Info(RarInfo):
extract_version: int = ...
header_crc: Any = ...
header_size: Any = ...
header_offset: Any = ...
data_offset: Any = ...
block_type: Any = ...
block_flags: Any = ...
add_size: int = ...
block_extra_size: int = ...
volume_number: Any = ...
class Rar5BaseFile(Rar5Info):
type: int = ...
file_flags: Any = ...
file_encryption: Any = ...
file_compress_flags: Any = ...
file_redir: Any = ...
file_owner: Any = ...
file_version: Any = ...
blake2sp_hash: Any = ...
class Rar5FileInfo(Rar5BaseFile):
type: Any = ...
class Rar5ServiceInfo(Rar5BaseFile):
type: Any = ...
class Rar5MainInfo(Rar5Info):
type: Any = ...
main_flags: Any = ...
main_volume_number: Any = ...
class Rar5EncryptionInfo(Rar5Info):
type: Any = ...
encryption_algo: Any = ...
encryption_flags: Any = ...
encryption_kdf_count: Any = ...
encryption_salt: Any = ...
encryption_check_value: Any = ...
def needs_password(self): ...
class Rar5EndArcInfo(Rar5Info):
type: Any = ...
endarc_flags: Any = ...
class RAR5Parser(CommonParser):
def process_entry(self, fd: Any, item: Any) -> None: ...
class UnicodeFilename:
std_name: Any = ...
encdata: Any = ...
pos: int = ...
buf: Any = ...
failed: int = ...
def __init__(self, name: Any, encdata: Any) -> None: ...
def enc_byte(self): ...
def std_byte(self): ...
def put(self, lo: Any, hi: Any) -> None: ...
def decode(self): ...
class RarExtFile(RawIOBase):
name: Any = ...
mode: str = ...
def __init__(self, parser: Any, inf: Any) -> None: ...
def read(self, cnt: Optional[Any] = ...): ...
def close(self) -> None: ...
def __del__(self) -> None: ...
def readinto(self, buf: Any) -> None: ...
def tell(self): ...
def seek(self, ofs: Any, whence: int = ...): ...
def readable(self): ...
def writable(self): ...
def seekable(self): ...
def readall(self): ...
class PipeReader(RarExtFile):
def __init__(self, rf: Any, inf: Any, cmd: Any, tempfile: Optional[Any] = ...) -> None: ...
def close(self) -> None: ...
def readinto(self, buf: Any): ...
class DirectReader(RarExtFile):
def readinto(self, buf: Any): ...
class HeaderDecrypt:
f: Any = ...
ciph: Any = ...
buf: Any = ...
def __init__(self, f: Any, key: Any, iv: Any) -> None: ...
def tell(self): ...
def read(self, cnt: Optional[Any] = ...): ...
class XFile:
def __init__(self, xfile: Any, bufsize: int = ...) -> None: ...
def read(self, n: Optional[Any] = ...): ...
def tell(self): ...
def seek(self, ofs: Any, whence: int = ...): ...
def readinto(self, dst: Any): ...
def close(self) -> None: ...
def __enter__(self): ...
def __exit__(self, typ: Any, val: Any, tb: Any) -> None: ...
class NoHashContext:
def __init__(self, data: Optional[Any] = ...) -> None: ...
def update(self, data: Any) -> None: ...
def digest(self) -> None: ...
def hexdigest(self) -> None: ...
class CRC32Context:
def __init__(self, data: Optional[Any] = ...) -> None: ...
def update(self, data: Any) -> None: ...
def digest(self): ...
def hexdigest(self): ...
class Blake2SP:
digest_size: int = ...
block_size: int = ...
parallelism: int = ...
def __init__(self, data: Optional[Any] = ...) -> None: ...
def update(self, data: Any) -> None: ...
def digest(self): ...
def hexdigest(self): ...
class Rar3Sha1:
digest_size: int = ...
block_size: int = ...
def __init__(self, data: bytes = ..., rarbug: bool = ...) -> None: ...
def update(self, data: Any) -> None: ...
def digest(self): ...
def hexdigest(self): ...
class XTempFile:
def __init__(self, rarfile: Any) -> None: ...
def __enter__(self): ...
def __exit__(self, exc_type: Any, exc_value: Any, tb: Any) -> None: ...
class ToolSetup:
setup: Any = ...
def __init__(self, setup: Any) -> None: ...
def check(self): ...
def open_cmdline(self, psw: Any, rarfn: Any, filefn: Optional[Any] = ...): ...
def test_cmdline(self, psw: Any, rarfn: Any): ...
def extract_cmdline(self, psw: Any, rarfn: Any, fnlist: Any, path: Any): ...
def get_errmap(self): ...
def get_cmdline(self, key: Any, psw: Any, nodash: bool = ...): ...
def add_password_arg(self, cmdline: Any, psw: Any) -> None: ...

0
lib/rarfile_py2/__init__.py

3
lib/rarfile/rarfile.py → lib/rarfile_py2/rarfile.py

@ -1038,6 +1038,7 @@ class CommonParser(object):
more_vols = False
endarc = False
self._vol_list.append(volfile)
self._main = None
continue
break
h.volume = volume
@ -1045,7 +1046,7 @@ class CommonParser(object):
if h.type == RAR_BLOCK_MAIN and not self._main:
self._main = h
if h.flags & RAR_MAIN_NEWNUMBERING:
if volume == 0 and (h.flags & RAR_MAIN_NEWNUMBERING):
# RAR 2.x does not set FIRSTVOLUME,
# so check it only if NEWNUMBERING is used
if (h.flags & RAR_MAIN_FIRSTVOLUME) == 0:

0
lib/rarfile_py3/__init__.py

3054
lib/rarfile_py3/rarfile.py

File diff suppressed because it is too large
Loading…
Cancel
Save