<div markdown="1" class="custom-badge-table">
| | |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Testing** | [![Code testing status](https://github.com/tektronix/tm_devices/actions/workflows/test-code.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/test-code.yml) [![Docs testing status](https://github.com/tektronix/tm_devices/actions/workflows/test-docs.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/test-docs.yml) [![Coverage status](https://codecov.io/gh/tektronix/tm_devices/branch/main/graph/badge.svg)](https://codecov.io/gh/tektronix/tm_devices) |
| **Code Quality** | [![CodeQL status](https://github.com/tektronix/tm_devices/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/codeql-analysis.yml) [![CodeFactor grade](https://www.codefactor.io/repository/github/tektronix/tm_devices/badge)](https://www.codefactor.io/repository/github/tektronix/tm_devices) [![pre-commit status](https://results.pre-commit.ci/badge/github/tektronix/tm_devices/main.svg)](https://results.pre-commit.ci/latest/github/tektronix/tm_devices/main) |
| **Package** | [![PyPI: Package status](https://img.shields.io/pypi/status/tm_devices?logo=pypi)](https://pypi.org/project/tm_devices/) [![PyPI: Latest release version](https://img.shields.io/pypi/v/tm_devices?logo=pypi)](https://pypi.org/project/tm_devices/) [![PyPI: Supported Python versions](https://img.shields.io/pypi/pyversions/tm_devices?logo=python)](https://pypi.org/project/tm_devices/) [![PyPI: Downloads](https://pepy.tech/badge/tm-devices)](https://pepy.tech/project/tm_devices) [![License: Apache 2.0](https://img.shields.io/pypi/l/tm_devices)](https://github.com/tektronix/tm_devices/blob/main/LICENSE.md) [![Package build status](https://github.com/tektronix/tm_devices/actions/workflows/package-build.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/package-build.yml) [![PyPI upload status](https://github.com/tektronix/tm_devices/actions/workflows/package-release.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/package-release.yml) |
| **Documentation** | [![ReadtheDocs Status](https://img.shields.io/readthedocs/tm-devices/stable?logo=readthedocs)](https://tm-devices.readthedocs.io/stable) |
| **Code Style** | [![Test style: pytest](https://img.shields.io/badge/test%20style-pytest-blue)](https://github.com/pytest-dev/pytest) [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-black)](https://docs.astral.sh/ruff/formatter/) [![Docstring style: google](https://img.shields.io/badge/docstring%20style-google-tan)](https://google.github.io/styleguide/pyguide.html) |
| **Linting** | [![pre-commit enabled](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![Docstring formatter: docformatter](https://img.shields.io/badge/docstring%20formatter-docformatter-tan)](https://github.com/PyCQA/docformatter) [![Type Checker: pyright](https://img.shields.io/badge/type%20checker-pyright-yellowgreen)](https://github.com/RobertCraigie/pyright-python) [![Linter: pylint](https://img.shields.io/badge/linter-pylint-purple)](https://github.com/pylint-dev/pylint) [![Linter: Ruff](https://img.shields.io/badge/linter-ruff-purple)](https://github.com/charliermarsh/ruff) |
</div>
---
# tm_devices: Test & Measurement Device Management
`tm_devices` is a device management package which allows for better
control and usage of Test & Measurement devices in python scripts. This
is accomplished by using the
[PyVISA](https://pyvisa.readthedocs.io/en/latest/) package to manage
connections and communication with devices. `tm_devices` gives users
access to a much higher level abstraction of device control by providing
access to device drivers with a complete Python API.
## Dependencies
`tm_devices` can be used without any external (non-python) dependencies
on any operating system thanks to the
[PyVISA-py](https://pyvisa.readthedocs.io/projects/pyvisa-py/en/latest/)
VISA backend. However, in order to use any VISA functionality that
PyVISA-py does not implement, a third-party VISA backend such as
[TekVISA](https://www.tek.com/en/search?keywords=tekvisa&facets=_templatename%3dsoftware%26parsedsoftwaretype%3dDriver&sort=desc)
(>=4.2.0) or
[NI-VISA](https://www.ni.com/en-us/support/downloads/drivers/download.ni-visa.html)
can be installed. `tm_devices` will use an available VISA backend if one
is found and will fall back to using PyVISA-py if no other VISA backends
are installed.
## Installation
```shell
pip install tm_devices
```
## Basic Usage
### Print Available VISA Devices
```console
$ list-visa-resources
[
"TCPIP0::192.168.0.100::inst0::INSTR",
"ASRL4::INSTR"
]
```
### Basic Script
```python
from tm_devices import DeviceManager
with DeviceManager() as device_manager:
scope = device_manager.add_scope("192.168.0.100")
scope.query("*IDN?")
print(scope)
```
### Supported Devices & Software Solutions
> [!TIP]
> Visit the [Glossary](https://github.com/tektronix/tm_devices/blob/main/docs/glossary.md) to see definitions for all symbols and abbreviations.
<div markdown="1" class="custom-table-center-cells device-support-table">
<div markdown="1" class="custom-table-title">
_Device Support Levels_
</div>
| Type | Series/Model | Command<br>Type | Basic<br>Control | Python API<br>Validation<br>Status |
| ------ | ------------------------ | --------------- | ---------------- | ---------------------------------- |
| AFGs | **AFG3000** | PI | ✅ | |
| | **AFG31xxx** | PI | ✅ | |
| AWGs | **AWG5000** | PI | ✅ | |
| | **AWG5200** | PI | ✅ | |
| | **AWG7000** | PI | ✅ | ✅ |
| | **AWG70000** | PI | ✅ | ✅ |
| Scopes | **2 Series MSO** | PI | ✅ | ✅ |
| | **3 Series MDO** | PI | ✅ | |
| | **4 Series MSO** | PI | ✅ | ✅ |
| | **4 Series B MSO** | PI | ✅ | ✅ |
| | **5 Series MSO** | PI | ✅ | ✅ |
| | **5 Series B MSO** | PI | ✅ | ✅ |
| | **5 Series MSO (LP)** | PI | ✅ | ✅ |
| | **6 Series MSO** | PI | ✅ | ✅ |
| | **6 Series B MSO** | PI | ✅ | ✅ |
| | **6 Series LPD** | PI | ✅ | ✅ |
| | **MSO2000/B** | PI | ✅ | |
| | **DPO2000/B** | PI | ✅ | |
| | **MDO3000** | PI | ✅ | ✅ |
| | **MDO4000/B/C** | PI | ✅ | ✅ |
| | **MSO4000/B** | PI | ✅ | ✅ |
| | **DPO4000/B** | PI | ✅ | ✅ |
| | **MSO5000/B** | PI | ✅ | ✅ |
| | **DPO5000/B** | PI | ✅ | ✅ |
| | **DPO7000/C** | PI | ✅ | ✅ |
| | **DPO70000/C/D/DX/SX** | PI | ✅ | ✅ |
| | **DSA70000/C/D** | PI | ✅ | ✅ |
| | **MSO70000/C/DX** | PI | ✅ | ✅ |
| | **TSOVu** | PI | ✅ | |
| | **TekScope** | PI | ✅ | ✅ |
| PSUs | **2200** | PI | ✅ | |
| | **2220** | PI | ✅ | |
| | **2230** | PI | ✅ | |
| | **2231** | PI | ✅ | |
| | **2280S** | PI | ✅ | |
| | **2281S** | PI | ✅ | |
| SMUs | **24xx Standard** | PI | ✅ | |
| | **24xx Interactive** | TSP | ✅ | ✅ |
| | **26xxB** | TSP | ✅ | 🚧 |
| | **2636B** | TSP | ✅ | ✅ |
| | **Model 2601B-PULSE** | TSP | ✅ | |
| | **Model 2606B** | TSP | ✅ | 🚧 |
| | **2651A** | TSP | ✅ | ✅ |
| | **2657A** | TSP | ✅ | |
| | **6430 (electrometer)** | PI | ✅ | |
| | **6514 (electrometer)** | PI | ✅ | |
| | **6517B (electrometer)** | PI | ✅ | |
| MTs | **TMT4** | API | ✅ | |
| DMMs | **DMM6500** | TSP | ✅ | |
| | **DMM7510** | TSP | ✅ | |
| | **DMM7512** | TSP | ✅ | |
| DAQs | **DAQ6510** | TSP | ✅ | |
| SSs | **3706A** | TSP | ✅ | |
</div>
<div markdown="1" class="custom-table-center-cells device-support-table">
<div markdown="1" class="custom-table-title">
_Software Solution Support Levels_
</div>
| Software<br>Solution | Command<br>Type | Basic<br>Control | Python API<br>Validation<br>Status |
| -------------------- | --------------- | ---------------- | ---------------------------------- |
| DPOJET | PI | ✅ | ✅ |
| SourceXpress | PI | ✅ | ✅ |
</div>
### Supported Connections
- REST API
- VISA *(TekVISA, NI-VISA and PyVISA-py)*
- TCPIP
- ASRL / Serial / RS-232 / RS-485
- SOCKET
- USBTMC *(no PyVISA-py support)*
- GPIB *(no PyVISA-py support)*
## Documentation
See the full documentation at <https://tm-devices.readthedocs.io/stable/>
## Maintainers
Before reaching out to any maintainers directly, please first check if
your issue or question is already covered by any [open
issues](https://github.com/tektronix/tm_devices/issues). If the issue or
question you have is not already covered, please [file a new
issue](https://github.com/tektronix/tm_devices/issues/new/choose) or
start a
[discussion](https://github.com/tektronix/tm_devices/discussions) and
the maintainers will review and respond there.
- <tmdevicessupport@tektronix.com> - For technical support and
questions.
- <opensource@tektronix.com> - For open-source policy and license
questions.
## Contributing
Interested in contributing? Check out the [contributing guidelines](https://github.com/tektronix/tm_devices/blob/main/CONTRIBUTING.md). Please
note that this project is released with a [Code of Conduct](https://github.com/tektronix/tm_devices/blob/main/CODE_OF_CONDUCT.md). By
contributing to this project, you agree to abide by its terms.
## License
`tm_devices` was created by Tektronix. It is licensed under the terms of
the [Apache License 2.0](https://github.com/tektronix/tm_devices/blob/main/LICENSE.md).
## Security
The signatures of the files uploaded to [PyPI](https://pypi.org/project/tm-devices/) and each
[GitHub Release](https://github.com/tektronix/tm_devices/releases) can be verified using
the [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify).
The artifact attestations can also be directly downloaded from the
[GitHub repo attestations page](https://github.com/tektronix/tm_devices/attestations) if desired.
```shell
gh attestation verify --owner tektronix <file>
```
## Credits
`tm_devices` was created with
[cookiecutter](https://cookiecutter.readthedocs.io/en/latest/README.html)
and the `py-pkgs-cookiecutter`
[template](https://py-pkgs-cookiecutter.readthedocs.io/en/latest/).
Raw data
{
"_id": null,
"home_page": "https://pypi.org/project/tm_devices/",
"name": "tm-devices",
"maintainer": "Tektronix",
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": "opensource@tektronix.com",
"keywords": "REST API, SCPI, TSP, Tektronix, Test & Measurement, VISA",
"author": "Tektronix",
"author_email": "opensource@tektronix.com",
"download_url": "https://files.pythonhosted.org/packages/c8/0c/797a10043b718b23f8ad076bb54d5769df0b0ef388a3850da82253e4fb04/tm_devices-2.5.0.tar.gz",
"platform": null,
"description": "<div markdown=\"1\" class=\"custom-badge-table\">\n\n| | |\n| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **Testing** | [![Code testing status](https://github.com/tektronix/tm_devices/actions/workflows/test-code.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/test-code.yml) [![Docs testing status](https://github.com/tektronix/tm_devices/actions/workflows/test-docs.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/test-docs.yml) [![Coverage status](https://codecov.io/gh/tektronix/tm_devices/branch/main/graph/badge.svg)](https://codecov.io/gh/tektronix/tm_devices) |\n| **Code Quality** | [![CodeQL status](https://github.com/tektronix/tm_devices/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/codeql-analysis.yml) [![CodeFactor grade](https://www.codefactor.io/repository/github/tektronix/tm_devices/badge)](https://www.codefactor.io/repository/github/tektronix/tm_devices) [![pre-commit status](https://results.pre-commit.ci/badge/github/tektronix/tm_devices/main.svg)](https://results.pre-commit.ci/latest/github/tektronix/tm_devices/main) |\n| **Package** | [![PyPI: Package status](https://img.shields.io/pypi/status/tm_devices?logo=pypi)](https://pypi.org/project/tm_devices/) [![PyPI: Latest release version](https://img.shields.io/pypi/v/tm_devices?logo=pypi)](https://pypi.org/project/tm_devices/) [![PyPI: Supported Python versions](https://img.shields.io/pypi/pyversions/tm_devices?logo=python)](https://pypi.org/project/tm_devices/) [![PyPI: Downloads](https://pepy.tech/badge/tm-devices)](https://pepy.tech/project/tm_devices) [![License: Apache 2.0](https://img.shields.io/pypi/l/tm_devices)](https://github.com/tektronix/tm_devices/blob/main/LICENSE.md) [![Package build status](https://github.com/tektronix/tm_devices/actions/workflows/package-build.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/package-build.yml) [![PyPI upload status](https://github.com/tektronix/tm_devices/actions/workflows/package-release.yml/badge.svg?branch=main)](https://github.com/tektronix/tm_devices/actions/workflows/package-release.yml) |\n| **Documentation** | [![ReadtheDocs Status](https://img.shields.io/readthedocs/tm-devices/stable?logo=readthedocs)](https://tm-devices.readthedocs.io/stable) |\n| **Code Style** | [![Test style: pytest](https://img.shields.io/badge/test%20style-pytest-blue)](https://github.com/pytest-dev/pytest) [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-black)](https://docs.astral.sh/ruff/formatter/) [![Docstring style: google](https://img.shields.io/badge/docstring%20style-google-tan)](https://google.github.io/styleguide/pyguide.html) |\n| **Linting** | [![pre-commit enabled](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) [![Docstring formatter: docformatter](https://img.shields.io/badge/docstring%20formatter-docformatter-tan)](https://github.com/PyCQA/docformatter) [![Type Checker: pyright](https://img.shields.io/badge/type%20checker-pyright-yellowgreen)](https://github.com/RobertCraigie/pyright-python) [![Linter: pylint](https://img.shields.io/badge/linter-pylint-purple)](https://github.com/pylint-dev/pylint) [![Linter: Ruff](https://img.shields.io/badge/linter-ruff-purple)](https://github.com/charliermarsh/ruff) |\n\n</div>\n\n---\n\n# tm_devices: Test & Measurement Device Management\n\n`tm_devices` is a device management package which allows for better\ncontrol and usage of Test & Measurement devices in python scripts. This\nis accomplished by using the\n[PyVISA](https://pyvisa.readthedocs.io/en/latest/) package to manage\nconnections and communication with devices. `tm_devices` gives users\naccess to a much higher level abstraction of device control by providing\naccess to device drivers with a complete Python API.\n\n## Dependencies\n\n`tm_devices` can be used without any external (non-python) dependencies\non any operating system thanks to the\n[PyVISA-py](https://pyvisa.readthedocs.io/projects/pyvisa-py/en/latest/)\nVISA backend. However, in order to use any VISA functionality that\nPyVISA-py does not implement, a third-party VISA backend such as\n[TekVISA](https://www.tek.com/en/search?keywords=tekvisa&facets=_templatename%3dsoftware%26parsedsoftwaretype%3dDriver&sort=desc)\n(>=4.2.0) or\n[NI-VISA](https://www.ni.com/en-us/support/downloads/drivers/download.ni-visa.html)\ncan be installed. `tm_devices` will use an available VISA backend if one\nis found and will fall back to using PyVISA-py if no other VISA backends\nare installed.\n\n## Installation\n\n```shell\npip install tm_devices\n```\n\n## Basic Usage\n\n### Print Available VISA Devices\n\n```console\n$ list-visa-resources\n[\n \"TCPIP0::192.168.0.100::inst0::INSTR\",\n \"ASRL4::INSTR\"\n]\n```\n\n### Basic Script\n\n```python\nfrom tm_devices import DeviceManager\n\nwith DeviceManager() as device_manager:\n scope = device_manager.add_scope(\"192.168.0.100\")\n scope.query(\"*IDN?\")\n print(scope)\n```\n\n### Supported Devices & Software Solutions\n\n> [!TIP]\n> Visit the [Glossary](https://github.com/tektronix/tm_devices/blob/main/docs/glossary.md) to see definitions for all symbols and abbreviations.\n\n<div markdown=\"1\" class=\"custom-table-center-cells device-support-table\">\n\n<div markdown=\"1\" class=\"custom-table-title\">\n\n_Device Support Levels_\n\n</div>\n\n| Type | Series/Model | Command<br>Type | Basic<br>Control | Python API<br>Validation<br>Status |\n| ------ | ------------------------ | --------------- | ---------------- | ---------------------------------- |\n| AFGs | **AFG3000** | PI | \u2705 | |\n| | **AFG31xxx** | PI | \u2705 | |\n| AWGs | **AWG5000** | PI | \u2705 | |\n| | **AWG5200** | PI | \u2705 | |\n| | **AWG7000** | PI | \u2705 | \u2705 |\n| | **AWG70000** | PI | \u2705 | \u2705 |\n| Scopes | **2 Series MSO** | PI | \u2705 | \u2705 |\n| | **3 Series MDO** | PI | \u2705 | |\n| | **4 Series MSO** | PI | \u2705 | \u2705 |\n| | **4 Series B MSO** | PI | \u2705 | \u2705 |\n| | **5 Series MSO** | PI | \u2705 | \u2705 |\n| | **5 Series B MSO** | PI | \u2705 | \u2705 |\n| | **5 Series MSO (LP)** | PI | \u2705 | \u2705 |\n| | **6 Series MSO** | PI | \u2705 | \u2705 |\n| | **6 Series B MSO** | PI | \u2705 | \u2705 |\n| | **6 Series LPD** | PI | \u2705 | \u2705 |\n| | **MSO2000/B** | PI | \u2705 | |\n| | **DPO2000/B** | PI | \u2705 | |\n| | **MDO3000** | PI | \u2705 | \u2705 |\n| | **MDO4000/B/C** | PI | \u2705 | \u2705 |\n| | **MSO4000/B** | PI | \u2705 | \u2705 |\n| | **DPO4000/B** | PI | \u2705 | \u2705 |\n| | **MSO5000/B** | PI | \u2705 | \u2705 |\n| | **DPO5000/B** | PI | \u2705 | \u2705 |\n| | **DPO7000/C** | PI | \u2705 | \u2705 |\n| | **DPO70000/C/D/DX/SX** | PI | \u2705 | \u2705 |\n| | **DSA70000/C/D** | PI | \u2705 | \u2705 |\n| | **MSO70000/C/DX** | PI | \u2705 | \u2705 |\n| | **TSOVu** | PI | \u2705 | |\n| | **TekScope** | PI | \u2705 | \u2705 |\n| PSUs | **2200** | PI | \u2705 | |\n| | **2220** | PI | \u2705 | |\n| | **2230** | PI | \u2705 | |\n| | **2231** | PI | \u2705 | |\n| | **2280S** | PI | \u2705 | |\n| | **2281S** | PI | \u2705 | |\n| SMUs | **24xx Standard** | PI | \u2705 | |\n| | **24xx Interactive** | TSP | \u2705 | \u2705 |\n| | **26xxB** | TSP | \u2705 | \ud83d\udea7 |\n| | **2636B** | TSP | \u2705 | \u2705 |\n| | **Model 2601B-PULSE** | TSP | \u2705 | |\n| | **Model 2606B** | TSP | \u2705 | \ud83d\udea7 |\n| | **2651A** | TSP | \u2705 | \u2705 |\n| | **2657A** | TSP | \u2705 | |\n| | **6430 (electrometer)** | PI | \u2705 | |\n| | **6514 (electrometer)** | PI | \u2705 | |\n| | **6517B (electrometer)** | PI | \u2705 | |\n| MTs | **TMT4** | API | \u2705 | |\n| DMMs | **DMM6500** | TSP | \u2705 | |\n| | **DMM7510** | TSP | \u2705 | |\n| | **DMM7512** | TSP | \u2705 | |\n| DAQs | **DAQ6510** | TSP | \u2705 | |\n| SSs | **3706A** | TSP | \u2705 | |\n\n</div>\n\n<div markdown=\"1\" class=\"custom-table-center-cells device-support-table\">\n\n<div markdown=\"1\" class=\"custom-table-title\">\n\n_Software Solution Support Levels_\n\n</div>\n\n| Software<br>Solution | Command<br>Type | Basic<br>Control | Python API<br>Validation<br>Status |\n| -------------------- | --------------- | ---------------- | ---------------------------------- |\n| DPOJET | PI | \u2705 | \u2705 |\n| SourceXpress | PI | \u2705 | \u2705 |\n\n</div>\n\n### Supported Connections\n\n- REST API\n- VISA *(TekVISA, NI-VISA and PyVISA-py)*\n - TCPIP\n - ASRL / Serial / RS-232 / RS-485\n - SOCKET\n - USBTMC *(no PyVISA-py support)*\n - GPIB *(no PyVISA-py support)*\n\n## Documentation\n\nSee the full documentation at <https://tm-devices.readthedocs.io/stable/>\n\n## Maintainers\n\nBefore reaching out to any maintainers directly, please first check if\nyour issue or question is already covered by any [open\nissues](https://github.com/tektronix/tm_devices/issues). If the issue or\nquestion you have is not already covered, please [file a new\nissue](https://github.com/tektronix/tm_devices/issues/new/choose) or\nstart a\n[discussion](https://github.com/tektronix/tm_devices/discussions) and\nthe maintainers will review and respond there.\n\n- <tmdevicessupport@tektronix.com> - For technical support and\n questions.\n- <opensource@tektronix.com> - For open-source policy and license\n questions.\n\n## Contributing\n\nInterested in contributing? Check out the [contributing guidelines](https://github.com/tektronix/tm_devices/blob/main/CONTRIBUTING.md). Please\nnote that this project is released with a [Code of Conduct](https://github.com/tektronix/tm_devices/blob/main/CODE_OF_CONDUCT.md). By\ncontributing to this project, you agree to abide by its terms.\n\n## License\n\n`tm_devices` was created by Tektronix. It is licensed under the terms of\nthe [Apache License 2.0](https://github.com/tektronix/tm_devices/blob/main/LICENSE.md).\n\n## Security\n\nThe signatures of the files uploaded to [PyPI](https://pypi.org/project/tm-devices/) and each\n[GitHub Release](https://github.com/tektronix/tm_devices/releases) can be verified using\nthe [GitHub CLI `attestation verify` command](https://cli.github.com/manual/gh_attestation_verify).\nThe artifact attestations can also be directly downloaded from the\n[GitHub repo attestations page](https://github.com/tektronix/tm_devices/attestations) if desired.\n\n```shell\ngh attestation verify --owner tektronix <file>\n```\n\n## Credits\n\n`tm_devices` was created with\n[cookiecutter](https://cookiecutter.readthedocs.io/en/latest/README.html)\nand the `py-pkgs-cookiecutter`\n[template](https://py-pkgs-cookiecutter.readthedocs.io/en/latest/).\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Manage connections and interactions with Test & Measurement devices.",
"version": "2.5.0",
"project_urls": {
"Bug Tracker": "https://github.com/tektronix/tm_devices/issues",
"Changelog": "https://github.com/tektronix/tm_devices/blob/main/CHANGELOG.md",
"Documentation": "https://tm-devices.readthedocs.io/stable/",
"Homepage": "https://pypi.org/project/tm_devices/",
"Repository": "https://github.com/tektronix/tm_devices"
},
"split_keywords": [
"rest api",
" scpi",
" tsp",
" tektronix",
" test & measurement",
" visa"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "97b9deb21548fbe04459fed8044556baa01efef4380e5113c9eafa9d914d2c8f",
"md5": "e0319849ce5ac2d16f2c37d0411441f3",
"sha256": "dd724de1d30005d3c2a28f097b0a6182f1565473751eea64a4aa1c89ebfe6d05"
},
"downloads": -1,
"filename": "tm_devices-2.5.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e0319849ce5ac2d16f2c37d0411441f3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 7843026,
"upload_time": "2024-10-30T19:23:06",
"upload_time_iso_8601": "2024-10-30T19:23:06.933107Z",
"url": "https://files.pythonhosted.org/packages/97/b9/deb21548fbe04459fed8044556baa01efef4380e5113c9eafa9d914d2c8f/tm_devices-2.5.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c80c797a10043b718b23f8ad076bb54d5769df0b0ef388a3850da82253e4fb04",
"md5": "ae2037989950a6be7fdeadb03b4e595f",
"sha256": "2855124a43e3702e39e5b6b3cb262df5ef8c51776eaae3e9b0e5f61f2f0ed164"
},
"downloads": -1,
"filename": "tm_devices-2.5.0.tar.gz",
"has_sig": false,
"md5_digest": "ae2037989950a6be7fdeadb03b4e595f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 6989177,
"upload_time": "2024-10-30T19:23:09",
"upload_time_iso_8601": "2024-10-30T19:23:09.208735Z",
"url": "https://files.pythonhosted.org/packages/c8/0c/797a10043b718b23f8ad076bb54d5769df0b0ef388a3850da82253e4fb04/tm_devices-2.5.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-30 19:23:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tektronix",
"github_project": "tm_devices",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "tm-devices"
}