Metadata-Version: 2.1
Name: hardware-control
Version: 3.1.0
Author-email: Arun Persaud <apersaud@lbl.gov>, Ariel Amsellem <ajamsellem@lbl.gov>, Brian Mak <brianmak@lbl.gov>, Mauricio Ayllon Unzueta <mayllonu@lbl.gov>, Brian Wynne <bwynne@lbl.gov>, Grant Giesbrecht <ggiesbrecht@lbl.gov>, Timo Bauer <TimoBauer@lbl.gov>, Zhihao Qin <zqin@lbl.gov>, Arfon Smith <arfon.smith@gmail.com>, Sara Matsuo Saib <smsaib@lbl.gov>, Caroline Egan <cegan@lbl.gov>, Schuyler Freeman <skyfreeman@lbl.gov>
License: Copyright (c) 2019, The Regents of the University of California,
        through Lawrence Berkeley National Laboratory (subject to receipt of
        any required approvals from the U.S. Dept. of Energy). All rights
        reserved.
        
        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are
        met:
        
        (1) Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.
        
        (2) Redistributions in binary form must reproduce the above copyright
        notice, this list of conditions and the following disclaimer in the
        documentation and/or other materials provided with the distribution.
        
        (3) Neither the name of the University of California, Lawrence
        Berkeley National Laboratory, U.S. Dept. of Energy, nor the names of
        its contributors may be used to endorse or promote products derived
        from this software without specific prior written permission.
        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
        "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
        LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
        A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
        OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
        SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
        LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        
        You are under no obligation whatsoever to provide any bug fixes,
        patches, or upgrades to the features, functionality or performance of
        the source code ("Enhancements") to anyone; however, if you choose to
        make your Enhancements available either publicly, or directly to
        Lawrence Berkeley National Laboratory, without imposing a separate
        written license agreement for such Enhancements, then you hereby grant
        the following license: a non-exclusive, royalty-free perpetual license
        to install, use, modify, prepare derivative works, incorporate into
        other computer software, distribute, and sublicense such enhancements
        or derivative works thereof, in binary and source code form.
        
Project-URL: documentation, https://hardware-control.readthedocs.io/
Project-URL: homepage, https://bitbucket.org/berkeleylab/hardware-control
Project-URL: issues, https://bitbucket.org/berkeleylab/hardware-control/issues
Project-URL: changelog, https://bitbucket.org/berkeleylab/hardware-control/src/main/CHANGELOG.md
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: BSD License
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: docopt
Requires-Dist: matplotlib
Requires-Dist: nidaqmx >=0.6.4
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: picoscope
Requires-Dist: pymodbus >=3.0.0
Requires-Dist: PyQt6
Requires-Dist: pyqtgraph
Requires-Dist: pytest
Requires-Dist: PyVISA
Requires-Dist: qtconsole >=5.3.2
Requires-Dist: recommonmark
Requires-Dist: scipy
Requires-Dist: setuptools
Requires-Dist: setuptools-scm
Requires-Dist: Sphinx
Requires-Dist: sphinx-rtd-theme
Requires-Dist: pyzmq

[![read-the-docs](https://readthedocs.org/projects/hardware-control/badge/?style=flat)](https://readthedocs.org/projects/hardware-control/)
[![PyPI version](https://badge.fury.io/py/hardware-control.svg)](https://badge.fury.io/py/hardware-control)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.02688/status.svg)](https://doi.org/10.21105/joss.02688)

## What is this repository for?

The goal is to provide reusable code for hardware control using python and Qt.

Documentation can be found at [Read the Docs](https://readthedocs.org/projects/hardware-control/).

## How do I get set up?

The easiest way is to pip install the software:

    pip install hardware-control

## Examples

If you want to have a quick look at some basic functionality, you can
run the demos in the example directory. If you have the same hardware
that is used in the example, you will have to update the connection
address, e.g. ip address. Otherwise, you can still run the examples by
providing the `--dummy` command line argument that will simulate
instrument output. The logging level can also be redirected to the
terminal using `--console` and the log-level changed by providing
`--info` or `--debug` options on the command line.

## Tests

We use `pytest` to provide some simple tests for some of the
functionallity of the package. However, to check if an instrument is
really working, one needs to have the instrument connected, which
makes testing harder. When the instruments are not available some
functionallity, such as the Qt layout, can still be tested using
"--dummy" mode. In this mode instrument parameters can return a
predefined value or the result of a function.

To run the tests use:

    python -m pytest


## Contribution guidelines

Feel free to contribute new drivers for hardware or other changes.

We use black to format the code, so please format your code
accordingly. The easiest way to achieve this is to install pre-commit
and use the config file we provide:

    pip install pre-commit
    # cd into repo
    pre-commit install

## How to cite this package

Please use the following [citation](https://doi.org/10.21105/joss.02688).

```
@article{Giesbrecht2022,
  doi = {10.21105/joss.02688},
  url = {https://doi.org/10.21105/joss.02688},
  year = {2022},
  publisher = {The Open Journal},
  volume = {7},
  number = {72},
  pages = {2688},
  author = {Grant Giesbrecht and Ariel Amsellem and Timo Bauer and Brian Mak and Brian Wynne and Zhihao Qin and Arun Persaud},
  title = {Hardware-Control: Instrument control and automation package},
  journal = {Journal of Open Source Software}
}
```

## Who do I talk to?

If you have questions, please contact Arun at apersaud@lbl.gov.

## Copyright and License

See the files COPYRIGHT and LICENSE in the top level directory
