fusaware-instruments 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. fusaware_instruments-0.1.0/.github/workflows/ci.yaml +114 -0
  2. fusaware_instruments-0.1.0/.github/workflows/release.yaml +51 -0
  3. fusaware_instruments-0.1.0/.gitignore +9 -0
  4. fusaware_instruments-0.1.0/.idea/.gitignore +10 -0
  5. fusaware_instruments-0.1.0/.idea/fusaware-instruments.iml +13 -0
  6. fusaware_instruments-0.1.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  7. fusaware_instruments-0.1.0/.idea/misc.xml +7 -0
  8. fusaware_instruments-0.1.0/.idea/modules.xml +8 -0
  9. fusaware_instruments-0.1.0/.idea/vcs.xml +6 -0
  10. fusaware_instruments-0.1.0/LICENSE +1 -0
  11. fusaware_instruments-0.1.0/PKG-INFO +42 -0
  12. fusaware_instruments-0.1.0/README.md +22 -0
  13. fusaware_instruments-0.1.0/experiments.py +614 -0
  14. fusaware_instruments-0.1.0/pyproject.toml +39 -0
  15. fusaware_instruments-0.1.0/src/._visa_instrument_drivers +0 -0
  16. fusaware_instruments-0.1.0/src/fusaware_instruments/__init__.py +0 -0
  17. fusaware_instruments-0.1.0/src/fusaware_instruments/utils.py +108 -0
  18. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/__init__.py +0 -0
  19. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/analog_probe.py +441 -0
  20. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/analog_probe_rigol_mso5000.py +44 -0
  21. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/dc_voltage_dmm.py +75 -0
  22. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/dc_voltage_supply.py +205 -0
  23. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/dc_voltage_supply_rigol_dp800.py +38 -0
  24. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/dc_voltage_supply_simulator.py +165 -0
  25. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_configuration/oscilloscope.py +408 -0
  26. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/__init__.py +3 -0
  27. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_dc_power_supply_simulator.py +151 -0
  28. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_keysight_e36150.py +183 -0
  29. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_lecroy_wavejet.py +41 -0
  30. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_rigol_dm3000.py +134 -0
  31. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_rigol_dp_base.py +192 -0
  32. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_rigol_mso_base.py +256 -0
  33. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_drivers/driver_tektronix_mdo_3_series.py +1209 -0
  34. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/__init__.py +0 -0
  35. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dc_power_supply.py +113 -0
  36. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dc_power_supply_rigol_dp.py +260 -0
  37. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dc_power_supply_simulator.py +203 -0
  38. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dmm.py +151 -0
  39. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dmm_keithley_dmm_6500.py +226 -0
  40. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dmm_rigol_dm3000.py +290 -0
  41. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_dmm_rigol_dm3000_v2.py +112 -0
  42. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_oscilloscope.py +344 -0
  43. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_oscilloscope_rigol_mso.py +653 -0
  44. fusaware_instruments-0.1.0/src/fusaware_instruments/visa_instrument_hal/hal_oscilloscope_tektronix_mdo_3_series.py +907 -0
  45. fusaware_instruments-0.1.0/tests/__init__.py +0 -0
  46. fusaware_instruments-0.1.0/tests/drivers/__init__.py +0 -0
  47. fusaware_instruments-0.1.0/tests/test_evergreen.py +2 -0
  48. fusaware_instruments-0.1.0/tests/visa/__init__.py +20 -0
  49. fusaware_instruments-0.1.0/tests/visa/tektronix_mdo_3_series/__init__.py +16 -0
  50. fusaware_instruments-0.1.0/tests/visa/tektronix_mdo_3_series/mock_mdo_3_series.yaml +488 -0
  51. fusaware_instruments-0.1.0/tests/visa/tektronix_mdo_3_series/test_configuration.py +194 -0
  52. fusaware_instruments-0.1.0/tests/visa/tektronix_mdo_3_series/test_driver.py +405 -0
  53. fusaware_instruments-0.1.0/tests/visa/tektronix_mdo_3_series/test_hal.py +198 -0
  54. fusaware_instruments-0.1.0/uv.lock +381 -0
@@ -0,0 +1,114 @@
1
+ name: CI
2
+
3
+ on: push
4
+
5
+ jobs:
6
+ lint-n-format:
7
+ name: Linting and formatting
8
+ strategy:
9
+ matrix:
10
+ os: [windows-latest, ubuntu-latest]
11
+ runs-on: ${{ matrix.os }}
12
+
13
+ steps:
14
+ - uses: actions/checkout@v6
15
+
16
+ - name: Install uv
17
+ uses: astral-sh/setup-uv@v7
18
+ with:
19
+ enable-cache: true
20
+ version: "0.9.26"
21
+
22
+ - name: Install the project
23
+ run: uv sync --locked --all-extras --dev
24
+
25
+ - name: Format
26
+ run: uv run ruff format --check
27
+
28
+ - name: Lint
29
+ run: uv run ruff check
30
+
31
+ - name: Prune cache
32
+ run: uv cache prune --ci
33
+
34
+ type-check:
35
+ name: Run type checkers
36
+ strategy:
37
+ matrix:
38
+ os: [windows-latest, ubuntu-latest]
39
+ runs-on: ${{ matrix.os }}
40
+
41
+ steps:
42
+ - uses: actions/checkout@v6
43
+
44
+ - name: Install uv
45
+ uses: astral-sh/setup-uv@v7
46
+ with:
47
+ enable-cache: true
48
+ version: "0.9.26"
49
+
50
+ - name: Install the project
51
+ run: uv sync --locked --all-extras --dev
52
+
53
+ - name: Pyright
54
+ run: uv run pyright
55
+
56
+ # TODO run multiple type checkers
57
+ #
58
+ # - name: Pyrefly
59
+ # run: uv run pyrefly check
60
+ # - name: ty
61
+ # run: uv run ty check
62
+
63
+ - name: Prune cache
64
+ run: uv cache prune --ci
65
+
66
+ test:
67
+ name: Run tests
68
+ strategy:
69
+ matrix:
70
+ os: [windows-latest, ubuntu-latest]
71
+ runs-on: ${{ matrix.os }}
72
+
73
+ steps:
74
+ - uses: actions/checkout@v6
75
+
76
+ - name: Install uv
77
+ uses: astral-sh/setup-uv@v7
78
+ with:
79
+ enable-cache: true
80
+ version: "0.9.26"
81
+
82
+ - name: Install the project
83
+ run: uv sync --locked --all-extras --dev
84
+
85
+ - name: Run tests
86
+ run: uv run pytest
87
+
88
+ - name: Prune cache
89
+ run: uv cache prune --ci
90
+
91
+ build:
92
+ name: Build project
93
+ strategy:
94
+ matrix:
95
+ os: [windows-latest, ubuntu-latest]
96
+ runs-on: ${{ matrix.os }}
97
+
98
+ steps:
99
+ - uses: actions/checkout@v6
100
+
101
+ - name: Install uv
102
+ uses: astral-sh/setup-uv@v7
103
+ with:
104
+ enable-cache: true
105
+ version: "0.9.26"
106
+
107
+ - name: Install the project
108
+ run: uv sync --locked --all-extras --dev
109
+
110
+ - name: Build project
111
+ run: uv build
112
+
113
+ - name: Prune cache
114
+ run: uv cache prune --ci
@@ -0,0 +1,51 @@
1
+ name: "Publish"
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - v*
7
+
8
+ jobs:
9
+ run:
10
+ runs-on: ubuntu-latest
11
+ environment:
12
+ name: pypi
13
+ permissions:
14
+ id-token: write
15
+ contents: read
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v6
19
+
20
+ - name: Install uv
21
+ uses: astral-sh/setup-uv@v7
22
+ with:
23
+ enable-cache: true
24
+ version: "0.9.26"
25
+
26
+ - name: Build
27
+ run: uv build
28
+
29
+ # This would be nice to have but it's hard to run things in this library without VISA simulation
30
+ # - name: Smoke test (wheel)
31
+ # run: uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
32
+ #
33
+ # - name: Smoke test (source distribution)
34
+ # run: uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
35
+
36
+ - name: Publish
37
+ run: uv publish
38
+
39
+ - name: Prune cache
40
+ run: uv cache prune --ci
41
+
42
+ # TODO enabled notifications for when this workflow fails
43
+ #
44
+ # - name: Report Status
45
+ # if: ${{ always() && github.ref_name == 'main' }}
46
+ # uses: ravsamhq/notify-slack-action@v2
47
+ # with:
48
+ # status: ${{ job.status }}
49
+ # notify_when: 'failure'
50
+ # env:
51
+ # SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }}
@@ -0,0 +1,9 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .pytest_cache/
4
+ .venv/
5
+ build/
6
+ dist/
7
+ *.egg-info/
8
+
9
+ manuals/
@@ -0,0 +1,10 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Ignored default folder with query files
5
+ /queries/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
9
+ # Editor-based HTTP Client requests
10
+ /httpRequests/
@@ -0,0 +1,13 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
6
+ </content>
7
+ <orderEntry type="jdk" jdkName="Python 3.13" jdkType="Python SDK" />
8
+ <orderEntry type="sourceFolder" forTests="false" />
9
+ </component>
10
+ <component name="TestRunnerService">
11
+ <option name="PROJECT_TEST_RUNNER" value="py.test" />
12
+ </component>
13
+ </module>
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Black">
4
+ <option name="sdkName" value="Python 3.13" />
5
+ </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.13" project-jdk-type="Python SDK" />
7
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/fusaware-instruments.iml" filepath="$PROJECT_DIR$/.idea/fusaware-instruments.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1 @@
1
+ TBD
@@ -0,0 +1,42 @@
1
+ Metadata-Version: 2.4
2
+ Name: fusaware-instruments
3
+ Version: 0.1.0
4
+ Summary: Tiny, pragmatic VISA instrument drivers on top of PyVISA.
5
+ Author-email: Your Name <you@example.com>
6
+ License: MIT
7
+ License-File: LICENSE
8
+ Keywords: PyVISA,SCPI,VISA,automation,instruments,rigol
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Topic :: Scientific/Engineering
14
+ Requires-Python: >=3.12
15
+ Requires-Dist: pydantic>=2.10.6
16
+ Requires-Dist: pyvisa>=1.13
17
+ Provides-Extra: backends
18
+ Requires-Dist: pyvisa-py>=0.7; extra == 'backends'
19
+ Description-Content-Type: text/markdown
20
+
21
+ # visa-instrument-drivers
22
+
23
+ Tiny, pragmatic VISA instrument drivers built on PyVISA.
24
+
25
+ ```python
26
+ from visa_instrument_drivers import RigolDP800
27
+
28
+ psu = RigolDP800("DP832A")
29
+ psu.connect("TCPIP::192.168.0.107::INSTR")
30
+ psu.write_source_voltage(13.5) # CH1
31
+ print(psu.read_source_voltage()) # 13.5 (setpoint)
32
+ psu.disconnect()
33
+
34
+ ```
35
+
36
+ Build and publish
37
+
38
+ ```shell
39
+ python -m pip install --upgrade pip build twine
40
+ python -m build
41
+ python -m twine upload --repository pypi dist/*
42
+ ```
@@ -0,0 +1,22 @@
1
+ # visa-instrument-drivers
2
+
3
+ Tiny, pragmatic VISA instrument drivers built on PyVISA.
4
+
5
+ ```python
6
+ from visa_instrument_drivers import RigolDP800
7
+
8
+ psu = RigolDP800("DP832A")
9
+ psu.connect("TCPIP::192.168.0.107::INSTR")
10
+ psu.write_source_voltage(13.5) # CH1
11
+ print(psu.read_source_voltage()) # 13.5 (setpoint)
12
+ psu.disconnect()
13
+
14
+ ```
15
+
16
+ Build and publish
17
+
18
+ ```shell
19
+ python -m pip install --upgrade pip build twine
20
+ python -m build
21
+ python -m twine upload --repository pypi dist/*
22
+ ```