@@ -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-
18111594def TarFileCheck (infile ):
18121595 try :
18131596 if is_tarfile (infile ):
0 commit comments