Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(368)

Unified Diff: third_party/gsutil/gslib/file_part.py

Issue 1377933002: [catapult] - Copy Telemetry's gsutilz over to third_party. (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Rename to gsutil. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/gsutil/gslib/exception.py ('k') | third_party/gsutil/gslib/gcs_json_api.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/gsutil/gslib/file_part.py
diff --git a/third_party/gsutil/gslib/file_part.py b/third_party/gsutil/gslib/file_part.py
new file mode 100644
index 0000000000000000000000000000000000000000..d3c0ddceec01b7b01f9da14683a384522aff7cd5
--- /dev/null
+++ b/third_party/gsutil/gslib/file_part.py
@@ -0,0 +1,102 @@
+# -*- coding: utf-8 -*-
+# Copyright 2013 Google Inc. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""FilePart implementation for representing part of a file."""
+
+from __future__ import absolute_import
+
+import os
+
+
+class FilePart(file):
+ """Subclass of the file API for representing part of a file.
+
+ This class behaves as a contiguous subset of a given file (e.g., this object
+ will behave as though the desired part of the file was written to another
+ file, and the second file was opened).
+ """
+
+ # pylint: disable=super-init-not-called
+ def __init__(self, filename, offset, length):
+ """Initializes the FilePart.
+
+ Args:
+ filename: The name of the existing file, of which this object represents
+ a part.
+ offset: The position (in bytes) in the original file that corresponds to
+ the first byte of the FilePart.
+ length: The total number of bytes in the FilePart.
+ """
+ self._fp = open(filename, 'rb')
+ self.length = length
+ self._start = offset
+ self._end = self._start + self.length
+ self._fp.seek(self._start)
+
+ def __enter__(self):
+ pass
+
+ # pylint: disable=redefined-builtin
+ def __exit__(self, type, value, traceback):
+ self.close()
+
+ def tell(self):
+ return self._fp.tell() - self._start
+
+ def read(self, size=-1):
+ if size < 0:
+ size = self.length
+ size = min(size, self._end - self._fp.tell()) # Only read to our EOF
+ return self._fp.read(max(0, size))
+
+ def seek(self, offset, whence=os.SEEK_SET):
+ if whence == os.SEEK_END:
+ return self._fp.seek(offset + self._end)
+ elif whence == os.SEEK_CUR:
+ return self._fp.seek(offset, whence)
+ else:
+ return self._fp.seek(self._start + offset)
+
+ def close(self):
+ self._fp.close()
+
+ def flush(self, size=None):
+ raise NotImplementedError('flush is not implemented in FilePart.')
+
+ def fileno(self, size=None):
+ raise NotImplementedError('fileno is not implemented in FilePart.')
+
+ def isatty(self, size=None):
+ raise NotImplementedError('isatty is not implemented in FilePart.')
+
+ def next(self, size=None):
+ raise NotImplementedError('next is not implemented in FilePart.')
+
+ def readline(self, size=None):
+ raise NotImplementedError('readline is not implemented in FilePart.')
+
+ def readlines(self, size=None):
+ raise NotImplementedError('readlines is not implemented in FilePart.')
+
+ def xreadlines(self, size=None):
+ raise NotImplementedError('xreadlines is not implemented in FilePart.')
+
+ def truncate(self, size=None):
+ raise NotImplementedError('truncate is not implemented in FilePart.')
+
+ def write(self, size=None):
+ raise NotImplementedError('write is not implemented in FilePart.')
+
+ def writelines(self, size=None):
+ raise NotImplementedError('writelines is not implemented in FilePart.')
« no previous file with comments | « third_party/gsutil/gslib/exception.py ('k') | third_party/gsutil/gslib/gcs_json_api.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698