<commit_before>**DISCLAIMER:** This is not an official Google product.

# OpenHTF
The open-source hardware testing framework.

[![Build Status](https://travis-ci.org/google/openhtf.svg?branch=master)](https://travis-ci.org/google/openhtf)
[![Coverage Status](https://coveralls.io/repos/google/openhtf/badge.svg?branch=master&service=github)](https://coveralls.io/github/google/openhtf?branch=master)

[![Issue Stats](http://issuestats.com/github/google/openhtf/badge/pr)](http://issuestats.com/github/google/openhtf)
[![Issue Stats](http://issuestats.com/github/google/openhtf/badge/issue)](http://issuestats.com/github/google/openhtf)


## Overview
OpenHTF is a Python library that provides a set of convenient abstractions
designed to remove as much boilerplate as possible from hardware test setup and
execution, so test engineers can focus primarily on test logic. It aspires to
do so in a lightweight and minimalistic fashion. It is general enough to be
useful in a variety of hardware testing scenarios, from the lab bench to the
manufacturing floor.


## Installing OpenHTF
There are two ways to install OpenHTF into your Python environment.

**NOTE:** We recommend using [virtualenv](https://virtualenv.pypa.io) to create
a isolated Python environments for your projects, so as to protect system-wide
Python packages the OS depends upon.


Once you've downloaded [the source code](https://github.com/google/openhtf)
via [git](https://git-scm.com/) or other means:
```bash
python setup.py install
```


## Using OpenHTF
The fastest way to get started is to take a look in the `examples/` directory,
where you'll find sample test scripts and plugs. In addition, many of OpenHTF's
modules are fairly well documented inline through the use of docstrings.


## Nomenclature
OpenHTF uses certain nomenclature internally for several of its core concepts.
Some of the more important terms are listed here for clarity.


### DUT (Device Under Test)
DUT refers to an individual piece of hardware being evaluated, exercised, or
tested.


### Test
The top-level abstraction that OpenHTF deals with is the test. A test is just
a series of steps performed on/with a DUT, usually along with some
data-gathering or measurement steps. In the OpenHTF paradigm, tests are
expressed as regular Python programs (.py files) that import and instantiate the
'Test' class from the openhtf module. That way test code is as straightforward
as possible to read and write. This also provides for the flexibility to do
anything in a test that can normally be done in Python. Superficially, what
distinguishes an OpenHTF test from any other Python program is that the OpenHTF
test imports the openhtf package, instantiates the ```Test``` class, and calls<commit_msg>More small .md file fixes.<commit_after>**DISCLAIMER:** This is not an official Google product.

# OpenHTF
The open-source hardware testing framework.

[![Build Status](https://travis-ci.org/google/openhtf.svg?branch=master)](https://travis-ci.org/google/openhtf)
[![Coverage Status](https://coveralls.io/repos/google/openhtf/badge.svg?branch=master&service=github)](https://coveralls.io/github/google/openhtf?branch=master)

[![Issue Stats](http://issuestats.com/github/google/openhtf/badge/pr)](http://issuestats.com/github/google/openhtf)
[![Issue Stats](http://issuestats.com/github/google/openhtf/badge/issue)](http://issuestats.com/github/google/openhtf)


## Overview
OpenHTF is a Python library that provides a set of convenient abstractions
designed to remove as much boilerplate as possible from hardware test setup and
execution, so test engineers can focus primarily on test logic. It aspires to
do so in a lightweight and minimalistic fashion. It is general enough to be
useful in a variety of hardware testing scenarios, from the lab bench to the
manufacturing floor.


## Installing OpenHTF
**NOTE:** We recommend using [virtualenv](https://virtualenv.pypa.io) to create
a isolated Python environments for your projects, so as to protect system-wide
Python packages the OS depends upon. The installation instructions assume you've
_already_ created a virtualenv and activated it if you wish to do so.


Once you've downloaded [the source code](https://github.com/google/openhtf)
via [git](https://git-scm.com/) or other means, install it into your Python
environment using the standard `setup.py` script.
```bash
python setup.py install
```


## Using OpenHTF
The fastest way to get started is to take a look in the `examples/` directory,
where you'll find sample test scripts and plugs. In addition, many of OpenHTF's
modules are fairly well documented inline through the use of docstrings.


## Nomenclature
OpenHTF uses certain nomenclature internally for several of its core concepts.
Some of the more important terms are listed here for clarity.


### DUT (Device Under Test)
DUT refers to an individual piece of hardware being evaluated, exercised, or
tested.


### Test
The top-level abstraction that OpenHTF deals with is the test. A test is just
a series of steps performed on/with a DUT, usually along with some
data-gathering or measurement steps. In the OpenHTF paradigm, tests are
expressed as regular Python programs (.py files) that import and instantiate the
'Test' class from the openhtf module. That way test code is as straightforward
as possible to read and write. This also provides for the flexibility to do
anything in a test that can normally be done in Python. Superficially, what
distinguishes an OpenHTF test from any other Python program is that the OpenHTF
test imports the openhtf package, instantiates the ```Test``` class, and calls
{'fraction_non_alphanumeric': 0.08128779793667734, 'fraction_numerical': 0.0, 'mean_word_length': 4.981914893617021, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 14, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6754681', 'n_tokens_mistral': 1596, 'n_tokens_neox': 1492, 'n_words': 697}