| Index: tools/telemetry/telemetry/util/classes.py
|
| diff --git a/tools/telemetry/telemetry/util/classes.py b/tools/telemetry/telemetry/util/classes.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0f90a06895fd572c4437f6bc58f7f768ba0a6e9b
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/util/classes.py
|
| @@ -0,0 +1,22 @@
|
| +# Copyright 2014 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 inspect
|
| +
|
| +
|
| +def IsDirectlyConstructable(cls):
|
| + """Returns True if instance of |cls| can be construct without arguments."""
|
| + assert inspect.isclass(cls)
|
| + if not hasattr(cls, '__init__'):
|
| + # Case |class A: pass|.
|
| + return True
|
| + if cls.__init__ is object.__init__:
|
| + # Case |class A(object): pass|.
|
| + return True
|
| + # Case |class (object):| with |__init__| other than |object.__init__|.
|
| + args, _, _, defaults = inspect.getargspec(cls.__init__)
|
| + if defaults is None:
|
| + defaults = ()
|
| + # Return true if |self| is only arg without a default.
|
| + return len(args) == len(defaults) + 1
|
|
|