def temp_dockerfile_tgz(fileobject: BinaryIO) -> Generator[IO, None, None]: """ Create a zipped tar archive from a Dockerfile **Remember to close the file object** Args: fileobj: a Dockerfile Returns: a NamedTemporaryFile() object from https://github.com/aio-libs/aiodocker/blob/335acade67eea409bc09a51309123134f3a3c57a/aiodocker/utils.py#L230 """ f = tempfile.NamedTemporaryFile() t = tarfile.open(mode="w:gz", fileobj=f) if isinstance(fileobject, BytesIO): dfinfo = tarfile.TarInfo("Dockerfile") dfinfo.size = len(fileobject.getvalue()) fileobject.seek(0) else: dfinfo = t.gettarinfo(fileobj=fileobject, arcname="Dockerfile") t.addfile(dfinfo, fileobject) t.close() f.seek(0) try: yield f finally: f.close()
def serialise(self, datastructure: dict, filestream: BinaryIO) -> BinaryIO: buffer = BufferedWriter(filestream) kwargs = { "buffer": buffer, "encoding": self._encoding, "write_through": True } with TextIOWrapper(**kwargs) as textstream: self.dump(datastructure, textstream) buffer.flush() filestream.seek(0) return BytesIO(filestream.getvalue())
def encode(self, obj: Union[dict, list, tuple, int, bytes, str], buff: BinaryIO = None) -> Optional[bytes]: """ 把对象bencode编码 :param obj: :param buff: :return: buff为None时, 返回bytes, 否则不返回, 数据写入传入buff """ has_init_buff = buff is not None if not has_init_buff: buff = BytesIO() self.__write_value(buff, obj) if not has_init_buff: bs = buff.getvalue() buff.close() return bs
def __init__( self, file: BinaryIO, video_name: Optional[str] = None, decode_audio: bool = True, ) -> None: self._video_tensor = torch.tensor( np.frombuffer(file.getvalue(), dtype=np.uint8)) self._video_name = video_name self._decode_audio = decode_audio ( self._video, self._video_time_base, self._video_start_pts, video_duration, self._audio, self._audio_time_base, self._audio_start_pts, audio_duration, ) = self._torch_vision_decode_video() # Take the largest duration of either video or duration stream. if audio_duration is not None and video_duration is not None: self._duration = max( pts_to_secs(video_duration, self._video_time_base, self._video_start_pts), pts_to_secs(audio_duration, self._audio_time_base, self._audio_start_pts), ) elif video_duration is not None: self._duration = pts_to_secs(video_duration, self._video_time_base, self._video_start_pts) elif audio_duration is not None: self._duration = pts_to_secs(audio_duration, self._audio_time_base, self._audio_start_pts)
def mktar_from_dockerfile(fileobject: BinaryIO) -> IO: """ Create a zipped tar archive from a Dockerfile **Remember to close the file object** Args: fileobj: a Dockerfile Returns: a NamedTemporaryFile() object """ f = tempfile.NamedTemporaryFile() t = tarfile.open(mode='w:gz', fileobj=f) if isinstance(fileobject, BytesIO): dfinfo = tarfile.TarInfo('Dockerfile') dfinfo.size = len(fileobject.getvalue()) fileobject.seek(0) else: dfinfo = t.gettarinfo(fileobj=fileobject, arcname='Dockerfile') t.addfile(dfinfo, fileobject) t.close() f.seek(0) return f
def mktar_from_dockerfile(fileobject: BinaryIO) -> IO: """ Create a zipped tar archive from a Dockerfile **Remember to close the file object** Args: fileobj: a Dockerfile Returns: a NamedTemporaryFile() object """ f = tempfile.NamedTemporaryFile() t = tarfile.open(mode="w:gz", fileobj=f) if isinstance(fileobject, BytesIO): dfinfo = tarfile.TarInfo("Dockerfile") dfinfo.size = len(fileobject.getvalue()) fileobject.seek(0) else: dfinfo = t.gettarinfo(fileobj=fileobject, arcname="Dockerfile") t.addfile(dfinfo, fileobject) t.close() f.seek(0) return f