MCPcopy Create free account
hub / github.com/pyathena-dev/PyAthena / commit

Method commit

pyathena/filesystem/s3.py:2126–2160  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2124 return not final
2125
2126 def commit(self) -> None:
2127 if self.tell() == 0:
2128 if self.buffer is not None:
2129 self.discard()
2130 self.fs.touch(self.path, **self.s3_additional_kwargs)
2131 elif not self.multipart_upload_parts:
2132 if self.buffer is not None:
2133 # Upload files smaller than block size.
2134 self.buffer.seek(0)
2135 data = self.buffer.read()
2136 self.fs._put_object(
2137 bucket=self.bucket,
2138 key=self.key,
2139 body=data,
2140 **self.s3_additional_kwargs,
2141 )
2142 else:
2143 if not self.multipart_upload:
2144 raise RuntimeError("Multipart upload is not initialized.")
2145
2146 try:
2147 self.fs._finish_multipart_upload(
2148 bucket=self.bucket,
2149 key=self.key,
2150 upload_id=cast(str, self.multipart_upload.upload_id),
2151 futures=self.multipart_upload_parts,
2152 )
2153 except Exception:
2154 # The multipart upload has been aborted by the helper;
2155 # prevent discard() from aborting it again.
2156 self.multipart_upload = None
2157 self.multipart_upload_parts = []
2158 raise
2159
2160 self.fs.invalidate_cache(self.path)
2161
2162 def discard(self) -> None:
2163 if self.multipart_upload:

Callers 4

_upload_chunkMethod · 0.95
test_no_opsMethod · 0.45

Calls 5

discardMethod · 0.95
touchMethod · 0.80
_put_objectMethod · 0.80
invalidate_cacheMethod · 0.45

Tested by 3

test_no_opsMethod · 0.36