mirror of
https://github.com/ARM-software/workload-automation.git
synced 2025-01-19 12:24:32 +00:00
75 lines
3.0 KiB
ReStructuredText
75 lines
3.0 KiB
ReStructuredText
|
===========
|
||
|
Conventions
|
||
|
===========
|
||
|
|
||
|
Interface Definitions
|
||
|
=====================
|
||
|
|
||
|
Throughout this documentation a number of stubbed-out class definitions will be
|
||
|
presented showing an interface defined by a base class that needs to be
|
||
|
implemented by the deriving classes. The following conventions will be used when
|
||
|
presenting such an interface:
|
||
|
|
||
|
- Methods shown raising :class:`NotImplementedError` are abstract and *must*
|
||
|
be overridden by subclasses.
|
||
|
- Methods with ``pass`` in their body *may* be (but do not need to be) overridden
|
||
|
by subclasses. If not overridden, these methods will default to the base
|
||
|
class implementation, which may or may not be a no-op (the ``pass`` in the
|
||
|
interface specification does not necessarily mean that the method does not have an
|
||
|
actual implementation in the base class).
|
||
|
|
||
|
.. note:: If you *do* override these methods you must remember to call the
|
||
|
base class' version inside your implementation as well.
|
||
|
|
||
|
- Attributes who's value is shown as ``None`` *must* be redefined by the
|
||
|
subclasses with an appropriate value.
|
||
|
- Attributes who's value is shown as something other than ``None`` (including
|
||
|
empty strings/lists/dicts) *may* be (but do not need to be) overridden by
|
||
|
subclasses. If not overridden, they will default to the value shown.
|
||
|
|
||
|
Keep in mind that the above convention applies only when showing interface
|
||
|
definitions and may not apply elsewhere in the documentation. Also, in the
|
||
|
interest of clarity, only the relevant parts of the base class definitions will
|
||
|
be shown some members (such as internal methods) may be omitted.
|
||
|
|
||
|
|
||
|
Code Snippets
|
||
|
=============
|
||
|
|
||
|
Code snippets provided are intended to be valid Python code, and to be complete.
|
||
|
However, for the sake of clarity, in some cases only the relevant parts will be
|
||
|
shown with some details omitted (details that may necessary to validity of the code
|
||
|
but not to understanding of the concept being illustrated). In such cases, a
|
||
|
commented ellipsis will be used to indicate that parts of the code have been
|
||
|
dropped. E.g. ::
|
||
|
|
||
|
# ...
|
||
|
|
||
|
def update_result(self, context):
|
||
|
# ...
|
||
|
context.result.add_metric('energy', 23.6, 'Joules', lower_is_better=True)
|
||
|
|
||
|
# ...
|
||
|
|
||
|
|
||
|
Core Class Names
|
||
|
================
|
||
|
|
||
|
When core classes are referenced throughout the documentation, usually their
|
||
|
fully-qualified names are given e.g. :class:`wlauto.core.workload.Workload`.
|
||
|
This is done so that Sphinx_ can resolve them and provide a link. While
|
||
|
implementing extensions, however, you should *not* be importing anything
|
||
|
directly form under :mod:`wlauto.core`. Instead, classes you are meant to
|
||
|
instantiate or subclass have been aliased in the root :mod:`wlauto` package,
|
||
|
and should be imported from there, e.g. ::
|
||
|
|
||
|
from wlauto import Workload
|
||
|
|
||
|
All examples given in the documentation follow this convention. Please note that
|
||
|
this only applies to the :mod:`wlauto.core` subpackage; all other classes
|
||
|
should be imported for their corresponding subpackages.
|
||
|
|
||
|
.. _Sphinx: http://sphinx-doc.org/
|
||
|
|
||
|
|