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

Unified Diff: tools/telemetry/third_party/gsutil/gslib/ls_helper.py

Issue 1260493004: Revert "Add gsutil 4.13 to telemetry/third_party" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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
Index: tools/telemetry/third_party/gsutil/gslib/ls_helper.py
diff --git a/tools/telemetry/third_party/gsutil/gslib/ls_helper.py b/tools/telemetry/third_party/gsutil/gslib/ls_helper.py
deleted file mode 100644
index f424515d1d98e14d3905e4e670f966a44f9a4da6..0000000000000000000000000000000000000000
--- a/tools/telemetry/third_party/gsutil/gslib/ls_helper.py
+++ /dev/null
@@ -1,261 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright 2014 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.
-"""Utility functions and class for listing commands such as ls and du."""
-
-from __future__ import absolute_import
-
-import fnmatch
-
-from gslib.exception import CommandException
-from gslib.plurality_checkable_iterator import PluralityCheckableIterator
-from gslib.util import UTF8
-from gslib.wildcard_iterator import StorageUrlFromString
-
-
-def PrintNewLine():
- """Default function for printing new lines between directories."""
- print
-
-
-def PrintDirHeader(bucket_listing_ref):
- """Default function for printing headers for prefixes.
-
- Header is printed prior to listing the contents of the prefix.
-
- Args:
- bucket_listing_ref: BucketListingRef of type PREFIX.
- """
- print '%s:' % bucket_listing_ref.url_string.encode(UTF8)
-
-
-def PrintBucketHeader(bucket_listing_ref): # pylint: disable=unused-argument
- """Default function for printing headers for buckets.
-
- Header is printed prior to listing the contents of the bucket.
-
- Args:
- bucket_listing_ref: BucketListingRef of type BUCKET.
- """
- pass
-
-
-def PrintDir(bucket_listing_ref):
- """Default function for printing buckets or prefixes.
-
- Args:
- bucket_listing_ref: BucketListingRef of type BUCKET or PREFIX.
- """
- print bucket_listing_ref.url_string.encode(UTF8)
-
-
-# pylint: disable=unused-argument
-def PrintDirSummary(num_bytes, bucket_listing_ref):
- """Off-by-default function for printing buckets or prefix size summaries.
-
- Args:
- num_bytes: Number of bytes contained in the directory.
- bucket_listing_ref: BucketListingRef of type BUCKET or PREFIX.
- """
- pass
-
-
-def PrintObject(bucket_listing_ref):
- """Default printing function for objects.
-
- Args:
- bucket_listing_ref: BucketListingRef of type OBJECT.
-
- Returns:
- (num_objects, num_bytes).
- """
- print bucket_listing_ref.url_string.encode(UTF8)
- return (1, 0)
-
-
-class LsHelper(object):
- """Helper class for ls and du."""
-
- def __init__(self, iterator_func, logger,
- print_object_func=PrintObject,
- print_dir_func=PrintDir,
- print_dir_header_func=PrintDirHeader,
- print_bucket_header_func=PrintBucketHeader,
- print_dir_summary_func=PrintDirSummary,
- print_newline_func=PrintNewLine,
- all_versions=False, should_recurse=False,
- exclude_patterns=None, fields=('name',)):
- """Initializes the helper class to prepare for listing.
-
- Args:
- iterator_func: Function for instantiating iterator.
- Inputs-
- url_string- Url string to iterate on. May include
- wildcards.
- all_versions=False- If true, iterate over all object
- versions.
- logger: Logger for outputting warnings / errors.
- print_object_func: Function for printing objects.
- print_dir_func: Function for printing buckets/prefixes.
- print_dir_header_func: Function for printing header line for buckets
- or prefixes.
- print_bucket_header_func: Function for printing header line for buckets
- or prefixes.
- print_dir_summary_func: Function for printing size summaries about
- buckets/prefixes.
- print_newline_func: Function for printing new lines between dirs.
- all_versions: If true, list all object versions.
- should_recurse: If true, recursively listing buckets/prefixes.
- exclude_patterns: Patterns to exclude when listing.
- fields: Fields to request from bucket listings; this should
- include all fields that need to be populated in
- objects so they can be listed. Can be set to None
- to retrieve all object fields. Defaults to short
- listing fields.
- """
- self._iterator_func = iterator_func
- self.logger = logger
- self._print_object_func = print_object_func
- self._print_dir_func = print_dir_func
- self._print_dir_header_func = print_dir_header_func
- self._print_bucket_header_func = print_bucket_header_func
- self._print_dir_summary_func = print_dir_summary_func
- self._print_newline_func = print_newline_func
- self.all_versions = all_versions
- self.should_recurse = should_recurse
- self.exclude_patterns = exclude_patterns
- self.bucket_listing_fields = fields
-
- def ExpandUrlAndPrint(self, url):
- """Iterates over the given URL and calls print functions.
-
- Args:
- url: StorageUrl to iterate over.
-
- Returns:
- (num_objects, num_bytes) total number of objects and bytes iterated.
- """
- num_objects = 0
- num_dirs = 0
- num_bytes = 0
- print_newline = False
-
- if url.IsBucket() or self.should_recurse:
- # IsBucket() implies a top-level listing.
- if url.IsBucket():
- self._print_bucket_header_func(url)
- return self._RecurseExpandUrlAndPrint(url.url_string,
- print_initial_newline=False)
- else:
- # User provided a prefix or object URL, but it's impossible to tell
- # which until we do a listing and see what matches.
- top_level_iterator = PluralityCheckableIterator(self._iterator_func(
- url.CreatePrefixUrl(wildcard_suffix=None),
- all_versions=self.all_versions).IterAll(
- expand_top_level_buckets=True,
- bucket_listing_fields=self.bucket_listing_fields))
- plurality = top_level_iterator.HasPlurality()
-
- for blr in top_level_iterator:
- if self._MatchesExcludedPattern(blr):
- continue
- if blr.IsObject():
- nd = 0
- no, nb = self._print_object_func(blr)
- print_newline = True
- elif blr.IsPrefix():
- if print_newline:
- self._print_newline_func()
- else:
- print_newline = True
- if plurality:
- self._print_dir_header_func(blr)
- expansion_url_str = StorageUrlFromString(
- blr.url_string).CreatePrefixUrl(wildcard_suffix='*')
- nd, no, nb = self._RecurseExpandUrlAndPrint(expansion_url_str)
- self._print_dir_summary_func(nb, blr)
- else:
- # We handle all buckets at the top level, so this should never happen.
- raise CommandException(
- 'Sub-level iterator returned a CsBucketListingRef of type Bucket')
- num_objects += no
- num_dirs += nd
- num_bytes += nb
- return num_dirs, num_objects, num_bytes
-
- def _RecurseExpandUrlAndPrint(self, url_str, print_initial_newline=True):
- """Iterates over the given URL string and calls print functions.
-
- Args:
- url_str: String describing StorageUrl to iterate over.
- Must be of depth one or higher.
- print_initial_newline: If true, print a newline before recursively
- expanded prefixes.
-
- Returns:
- (num_objects, num_bytes) total number of objects and bytes iterated.
- """
- num_objects = 0
- num_dirs = 0
- num_bytes = 0
- for blr in self._iterator_func(
- '%s' % url_str, all_versions=self.all_versions).IterAll(
- expand_top_level_buckets=True,
- bucket_listing_fields=self.bucket_listing_fields):
- if self._MatchesExcludedPattern(blr):
- continue
-
- if blr.IsObject():
- nd = 0
- no, nb = self._print_object_func(blr)
- elif blr.IsPrefix():
- if self.should_recurse:
- if print_initial_newline:
- self._print_newline_func()
- else:
- print_initial_newline = True
- self._print_dir_header_func(blr)
- expansion_url_str = StorageUrlFromString(
- blr.url_string).CreatePrefixUrl(wildcard_suffix='*')
-
- nd, no, nb = self._RecurseExpandUrlAndPrint(expansion_url_str)
- self._print_dir_summary_func(nb, blr)
- else:
- nd, no, nb = 1, 0, 0
- self._print_dir_func(blr)
- else:
- # We handle all buckets at the top level, so this should never happen.
- raise CommandException(
- 'Sub-level iterator returned a bucketListingRef of type Bucket')
- num_dirs += nd
- num_objects += no
- num_bytes += nb
-
- return num_dirs, num_objects, num_bytes
-
- def _MatchesExcludedPattern(self, blr):
- """Checks bucket listing reference against patterns to exclude.
-
- Args:
- blr: BucketListingRef to check.
-
- Returns:
- True if reference matches a pattern and should be excluded.
- """
- if self.exclude_patterns:
- tomatch = blr.url_string
- for pattern in self.exclude_patterns:
- if fnmatch.fnmatch(tomatch, pattern):
- return True
- return False
« no previous file with comments | « tools/telemetry/third_party/gsutil/gslib/help_provider.py ('k') | tools/telemetry/third_party/gsutil/gslib/name_expansion.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698