Skip to content

Commit 4fde9f2

Browse files
author
Kazuki Suzuki Przyborowski
committed
Update pycatfile.py
1 parent 4235c29 commit 4fde9f2

1 file changed

Lines changed: 0 additions & 217 deletions

File tree

pycatfile.py

Lines changed: 0 additions & 217 deletions
Original file line numberDiff line numberDiff line change
@@ -1591,223 +1591,6 @@ def __exit__(self, exc_type, exc_value, traceback):
15911591
self.close()
15921592

15931593

1594-
'''
1595-
class BloscFile:
1596-
def __init__(self, file_path=None, fileobj=None, mode='rb', level=9, encoding=None, errors=None, newline=None):
1597-
if file_path is None and fileobj is None:
1598-
raise ValueError("Either file_path or fileobj must be provided");
1599-
if file_path is not None and fileobj is not None:
1600-
raise ValueError("Only one of file_path or fileobj should be provided");
1601-
1602-
self.file_path = file_path;
1603-
self.fileobj = fileobj;
1604-
self.mode = mode;
1605-
self.level = level;
1606-
self.encoding = encoding;
1607-
self.errors = errors;
1608-
self.newline = newline;
1609-
self._compressed_data = b'';
1610-
self._decompressed_data = b'';
1611-
self._position = 0;
1612-
self._text_mode = 't' in mode;
1613-
1614-
# Force binary mode for internal handling
1615-
internal_mode = mode.replace('t', 'b');
1616-
1617-
if 'w' in mode or 'a' in mode or 'x' in mode:
1618-
self.file = open(file_path, internal_mode) if file_path else fileobj;
1619-
self._compressor = blosc.Blosc(level);
1620-
elif 'r' in mode:
1621-
if file_path:
1622-
if os.path.exists(file_path):
1623-
self.file = open(file_path, internal_mode);
1624-
self._load_file();
1625-
else:
1626-
raise FileNotFoundError("No such file: '{}'".format(file_path));
1627-
elif fileobj:
1628-
self.file = fileobj;
1629-
self._load_file();
1630-
else:
1631-
raise ValueError("Mode should be 'rb' or 'wb'");
1632-
1633-
def _load_file(self):
1634-
self.file.seek(0);
1635-
self._compressed_data = self.file.read();
1636-
if not self._compressed_data:
1637-
raise ValueError("Invalid blosc file header");
1638-
self._decompressed_data = blosc.decompress(self._compressed_data);
1639-
if self._text_mode:
1640-
self._decompressed_data = self._decompressed_data.decode(self.encoding or 'UTF-8', self.errors or 'strict');
1641-
1642-
def write(self, data):
1643-
if self._text_mode:
1644-
data = data.encode(self.encoding or 'UTF-8', self.errors or 'strict');
1645-
compressed_data = blosc.compress(data, cname='blosclz', clevel=self.level);
1646-
self.file.write(compressed_data);
1647-
self.file.flush();
1648-
1649-
def read(self, size=-1):
1650-
if size == -1:
1651-
size = len(self._decompressed_data) - self._position;
1652-
data = self._decompressed_data[self._position:self._position + size];
1653-
self._position += size;
1654-
return data;
1655-
1656-
def seek(self, offset, whence=0):
1657-
if whence == 0: # absolute file positioning
1658-
self._position = offset;
1659-
elif whence == 1: # seek relative to the current position
1660-
self._position += offset;
1661-
elif whence == 2: # seek relative to the file's end
1662-
self._position = len(self._decompressed_data) + offset;
1663-
else:
1664-
raise ValueError("Invalid value for whence");
1665-
1666-
# Ensure the position is within bounds
1667-
self._position = max(0, min(self._position, len(self._decompressed_data)));
1668-
1669-
def tell(self):
1670-
return self._position;
1671-
1672-
def flush(self):
1673-
self.file.flush();
1674-
1675-
def fileno(self):
1676-
if hasattr(self.file, 'fileno'):
1677-
return self.file.fileno();
1678-
raise OSError("The underlying file object does not support fileno()");
1679-
1680-
def isatty(self):
1681-
if hasattr(self.file, 'isatty'):
1682-
return self.file.isatty();
1683-
return False;
1684-
1685-
def truncate(self, size=None):
1686-
if hasattr(self.file, 'truncate'):
1687-
return self.file.truncate(size);
1688-
raise OSError("The underlying file object does not support truncate()");
1689-
1690-
def close(self):
1691-
if 'w' in self.mode or 'a' in self.mode or 'x' in self.mode:
1692-
self.file.write(blosc.compress(self._compressor.flush(), cname='blosclz', clevel=self.level));
1693-
if self.file_path:
1694-
self.file.close();
1695-
1696-
def __enter__(self):
1697-
return self;
1698-
1699-
def __exit__(self, exc_type, exc_value, traceback):
1700-
self.close();
1701-
1702-
class BrotliFile:
1703-
def __init__(self, file_path=None, fileobj=None, mode='rb', level=11, encoding=None, errors=None, newline=None):
1704-
if file_path is None and fileobj is None:
1705-
raise ValueError("Either file_path or fileobj must be provided");
1706-
if file_path is not None and fileobj is not None:
1707-
raise ValueError("Only one of file_path or fileobj should be provided");
1708-
1709-
self.file_path = file_path;
1710-
self.fileobj = fileobj;
1711-
self.mode = mode;
1712-
self.level = level;
1713-
self.encoding = encoding;
1714-
self.errors = errors;
1715-
self.newline = newline;
1716-
self._compressed_data = b'';
1717-
self._decompressed_data = b'';
1718-
self._position = 0;
1719-
self._text_mode = 't' in mode;
1720-
1721-
# Force binary mode for internal handling
1722-
internal_mode = mode.replace('t', 'b');
1723-
1724-
if 'w' in mode or 'a' in mode or 'x' in mode:
1725-
self.file = open(file_path, internal_mode) if file_path else fileobj;
1726-
self._compressor = brotli.Compressor(quality=self.level);
1727-
elif 'r' in mode:
1728-
if file_path:
1729-
if os.path.exists(file_path):
1730-
self.file = open(file_path, internal_mode);
1731-
self._load_file();
1732-
else:
1733-
raise FileNotFoundError("No such file: '{}'".format(file_path));
1734-
elif fileobj:
1735-
self.file = fileobj;
1736-
self._load_file();
1737-
else:
1738-
raise ValueError("Mode should be 'rb' or 'wb'");
1739-
1740-
def _load_file(self):
1741-
self.file.seek(0);
1742-
self._compressed_data = self.file.read();
1743-
if not self._compressed_data:
1744-
raise ValueError("Invalid brotli file header");
1745-
self._decompressed_data = brotli.decompress(self._compressed_data);
1746-
if self._text_mode:
1747-
self._decompressed_data = self._decompressed_data.decode(self.encoding or 'UTF-8', self.errors or 'strict');
1748-
1749-
def write(self, data):
1750-
if self._text_mode:
1751-
data = data.encode(self.encoding or 'UTF-8', self.errors or 'strict');
1752-
compressed_data = self._compressor.process(data);
1753-
self.file.write(compressed_data);
1754-
self.file.flush();
1755-
1756-
def read(self, size=-1):
1757-
if size == -1:
1758-
size = len(self._decompressed_data) - self._position;
1759-
data = self._decompressed_data[self._position:self._position + size];
1760-
self._position += size;
1761-
return data;
1762-
1763-
def seek(self, offset, whence=0):
1764-
if whence == 0: # absolute file positioning
1765-
self._position = offset;
1766-
elif whence == 1: # seek relative to the current position
1767-
self._position += offset;
1768-
elif whence == 2: # seek relative to the file's end
1769-
self._position = len(self._decompressed_data) + offset;
1770-
else:
1771-
raise ValueError("Invalid value for whence");
1772-
1773-
# Ensure the position is within bounds
1774-
self._position = max(0, min(self._position, len(self._decompressed_data)));
1775-
1776-
def tell(self):
1777-
return self._position;
1778-
1779-
def flush(self):
1780-
self.file.flush();
1781-
1782-
def fileno(self):
1783-
if hasattr(self.file, 'fileno'):
1784-
return self.file.fileno();
1785-
raise OSError("The underlying file object does not support fileno()");
1786-
1787-
def isatty(self):
1788-
if hasattr(self.file, 'isatty'):
1789-
return self.file.isatty();
1790-
return False;
1791-
1792-
def truncate(self, size=None):
1793-
if hasattr(self.file, 'truncate'):
1794-
return self.file.truncate(size);
1795-
raise OSError("The underlying file object does not support truncate()");
1796-
1797-
def close(self):
1798-
if 'w' in self.mode or 'a' in self.mode or 'x' in self.mode:
1799-
self.file.write(self._compressor.finish());
1800-
if self.file_path:
1801-
self.file.close();
1802-
1803-
def __enter__(self):
1804-
return self;
1805-
1806-
def __exit__(self, exc_type, exc_value, traceback):
1807-
self.close();
1808-
'''
1809-
1810-
18111594
def TarFileCheck(infile):
18121595
try:
18131596
if is_tarfile(infile):

0 commit comments

Comments
 (0)