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

Unified Diff: tools/telemetry/telemetry/core/discover.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/telemetry/core/discover.py
diff --git a/tools/telemetry/telemetry/core/discover.py b/tools/telemetry/telemetry/core/discover.py
deleted file mode 100644
index 976bfc8093cf376316fb341c4c23c357d888dee7..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/core/discover.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import fnmatch
-import inspect
-import os
-import re
-
-from telemetry import decorators
-from telemetry.internal.util import camel_case
-from telemetry.internal.util import classes as classes_module
-
-
-@decorators.Cache
-def DiscoverModules(start_dir, top_level_dir, pattern='*'):
- """Discover all modules in |start_dir| which match |pattern|.
-
- Args:
- start_dir: The directory to recursively search.
- top_level_dir: The top level of the package, for importing.
- pattern: Unix shell-style pattern for filtering the filenames to import.
-
- Returns:
- list of modules.
- """
- # start_dir and top_level_dir must be consistent with each other.
- start_dir = os.path.realpath(start_dir)
- top_level_dir = os.path.realpath(top_level_dir)
-
- modules = []
- for dir_path, _, filenames in os.walk(start_dir):
- for filename in filenames:
- # Filter out unwanted filenames.
- if filename.startswith('.') or filename.startswith('_'):
- continue
- if os.path.splitext(filename)[1] != '.py':
- continue
- if not fnmatch.fnmatch(filename, pattern):
- continue
-
- # Find the module.
- module_rel_path = os.path.relpath(
- os.path.join(dir_path, filename), top_level_dir)
- module_name = re.sub(r'[/\\]', '.', os.path.splitext(module_rel_path)[0])
-
- # Import the module.
- module = __import__(module_name, fromlist=[True])
- modules.append(module)
- return modules
-
-
-# TODO(dtu): Normalize all discoverable classes to have corresponding module
-# and class names, then always index by class name.
-@decorators.Cache
-def DiscoverClasses(start_dir,
- top_level_dir,
- base_class,
- pattern='*',
- index_by_class_name=True,
- directly_constructable=False):
- """Discover all classes in |start_dir| which subclass |base_class|.
-
- Base classes that contain subclasses are ignored by default.
-
- Args:
- start_dir: The directory to recursively search.
- top_level_dir: The top level of the package, for importing.
- base_class: The base class to search for.
- pattern: Unix shell-style pattern for filtering the filenames to import.
- index_by_class_name: If True, use class name converted to
- lowercase_with_underscores instead of module name in return dict keys.
- directly_constructable: If True, will only return classes that can be
- constructed without arguments
-
- Returns:
- dict of {module_name: class} or {underscored_class_name: class}
- """
- modules = DiscoverModules(start_dir, top_level_dir, pattern)
- classes = {}
- for module in modules:
- new_classes = DiscoverClassesInModule(
- module, base_class, index_by_class_name, directly_constructable)
- classes = dict(classes.items() + new_classes.items())
- return classes
-
-
-@decorators.Cache
-def DiscoverClassesInModule(module,
- base_class,
- index_by_class_name=False,
- directly_constructable=False):
- """Discover all classes in |module| which subclass |base_class|.
-
- Base classes that contain subclasses are ignored by default.
-
- Args:
- module: The module to search.
- base_class: The base class to search for.
- index_by_class_name: If True, use class name converted to
- lowercase_with_underscores instead of module name in return dict keys.
-
- Returns:
- dict of {module_name: class} or {underscored_class_name: class}
- """
- classes = {}
- for _, obj in inspect.getmembers(module):
- # Ensure object is a class.
- if not inspect.isclass(obj):
- continue
- # Include only subclasses of base_class.
- if not issubclass(obj, base_class):
- continue
- # Exclude the base_class itself.
- if obj is base_class:
- continue
- # Exclude protected or private classes.
- if obj.__name__.startswith('_'):
- continue
- # Include only the module in which the class is defined.
- # If a class is imported by another module, exclude those duplicates.
- if obj.__module__ != module.__name__:
- continue
-
- if index_by_class_name:
- key_name = camel_case.ToUnderscore(obj.__name__)
- else:
- key_name = module.__name__.split('.')[-1]
- if (not directly_constructable or
- classes_module.IsDirectlyConstructable(obj)):
- classes[key_name] = obj
-
- return classes
-
-
-_counter = [0]
-
-
-def _GetUniqueModuleName():
- _counter[0] += 1
- return "module_" + str(_counter[0])
« no previous file with comments | « tools/telemetry/telemetry/core/cros_interface_unittest.py ('k') | tools/telemetry/telemetry/core/discover_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698