Remaining driver issues found while adding parameter value types
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 25/100
調査の方向性
The issue lists affected driver behaviors, validators, helper annotations, and tests, but does not name their source file paths. Start by locating the named drivers and tests, then compare each validator or command with the manuals cited in the issue. Done means resolving the listed items with the needed compatibility or hardware checks; the issue spans many instruments and includes behavior changes that require domain knowledge.
索引モデルが issue の本文から書いたものです。
説明
While adding Parameter[<value type>, Self] annotations to the instrument drivers in #8658, a
number of driver bugs were found and fixed (see the PR and its newsfragments). The issues below
were found at the same time but are not fixed yet, mostly because they change behaviour or
validator ranges that we cannot verify without the instrument.
Missing parameter annotations are tracked separately and are not listed here.
Bugs
- Rigol DS1074Z:
trigger_levelin pattern mode does not send a channel. The
MSO1000Z/DS1000Z Programming Guide (Dec. 2015) gives the pattern trigger level per channel:
:TRIGger:PATTern:LEVel <chan>,<level>and:TRIGger:PATTern:LEVel? <chan>, e.g.
:TRIGger:PATTern:LEVel CHANnel2,0.16._get_trigger_leveland_set_trigger_levelbuild
:TRIGger:<mode>:LEVel?/:TRIGger:<mode>:LEVel <value>fromtrigger_mode()for every
mode, so no channel is sent in pattern mode. The other trigger modes (edge, pulse, video) are
fine. A fix needs a way to choose the channel, e.g. a per-channel parameter. - Lake Shore 325: wrong
output_rangelabel for loop 2. The Model 325 User's Manual
(rev. 1.8) says the loop 2RANGEis0 = Off, 1 = On(single range voltage output, up to
2 W), but the driver maps1to"Low (2.5W)", the loop 1 label. Renaming the value to
"On"would break code that uses the old label, so this needs a deprecation path.
Non-integer values accepted for integer settings
These parameters read back an int but validate with Numbers, so a float passes validation.
Switching to Ints (as done for the Keysight PNA averages, points and active_trace in
#8658) would reject it, but is a behaviour change.
- CopperMountain M5xxx
averages:Numbers(1, 999)withset_parser=int, so
averages(2.5)silently sets 2. - AimTTi PL-P
curr_range:Numbers(1, 2), socurr_range(1.5)sendsIRANGE<n> 1.5. - Rigol DG1062 burst
ncycles:Numbers(1, 500000), so a non-integer number of cycles is
sent to the instrument. - Keithley 7510
average_count:Numbers(1, 100), so a non-integer count is sent to the
instrument. - Lake Shore 372 channel
dwell,pause,curve_numberandexcitation_range_number:
validated withNumbers, so non-integer values are sent in theINSET/INTYPEcommands.
Validator ranges that do not match the manuals
Not changed in #8658 since there was no instrument to test against.
- Agilent E8267C
pulse_width: allows 10 to 20 ns. The Keysight E8257D/67D SCPI Command
Reference (D model) gives 10 ns to (pulse period - 20 ns), and the*RSTvalue of 1 us is
outside the validator. - R&S RTO1000 channel
impedance:Ints(1, 100000), while the R&S RTO User Manual gives a
real value from 0.1 to 100E+3 Ohm, so fractional values are rejected. - Keithley 2450
nplc: allows 0.001 to 10, while the 2450 Reference Manual gives 0.01 to
10. - Rigol DG1062 (checked against the DG1000Z Programming Guide):
- Burst
ncyclesstops at 500 000, the limit for internal trigger. With external or manual
trigger the guide allows up to 1 000 000. - Burst
time_delayhas no upper limit, while the guide gives at most 100 s. - Burst
idleaccepts any number, while a user-defined idle level is an integer from 0 to
16383. - Burst
periodstarts at 3 us, while the guide's minimum is just over 2 us. duty_cycleallows 1 to 99 %, while the guide gives 0.001 to 99.999 % for pulse waveforms
and a frequency-dependent range for square waveforms.
- Burst
- R&S ZNB
bandwidth: theEnumstops at 1 MHz, but option R&S ZNB-K17 allows IF
bandwidths up to 10 MHz. - Keysight B1517A sweep:
power_complianceallows up to 80 W andcurrent_complianceup to 40 A (the widest limits
of all module types), while the B1500 Programming Guide gives Pcomp 0.001 to 2 W for the
HRSMU (B1517A).sweep_stepsusesInts(1, 1001), whileWVallows 1 to 10001 steps.
- Lake Shore 325:
- PID allows 0 to 1000 for P, I and D, while the manual gives 0.1 to 1000 for P and I and 0 to
200 for D. CRVHDRcan only be set for user curves 21 to 35, but the driver allows setting the header of
any curve.
- PID allows 0 to 1000 for P, I and D, while the manual gives 0.1 to 1000 for P and I and 0 to
Wrong type hints on helper functions
- Galil DMC-41x3:
_set_relative_position,_set_speed,_set_accelerationand
_set_decelerationare annotatedval: strbut receiveint. - QDev QDac:
_getsyncis annotated-> floatbut returns theintsync output number,
which also prevents annotatingsyncasParameter[int, Self].
Smaller issues
- Rigol DS1074Z
trigger_modehasunit="V". - Keysight 34980A: for a module without a driver, the fallback submodule name
slot_<n>_<model>_no_driverincludes the model string reported by the instrument. Model names
containing-are not valid identifiers, which triggers a renamingUserWarning. - Rigol DS4000 and Tektronix TPS2012 have no
default_terminator, unlike most other VISA
drivers. The tests passterminator="\n"; whether the drivers should default to it needs
checking on hardware.
Tests
-
tests/drivers/test_agilent_e8257d.py: the hardware-onlyTestAgilentE8257D
(DriverTestCase) uses astatusparameter that the driver no longer has (it is now
output_enabled), so it would fail if run against an instrument. It is always skipped in CI. -
tests/test_channels.py: the helpers_verify_multiparam_dataand_verify_array_dataare
unused.
- 主要言語
- Python
- スター
- 466
- フォーク
- 368
- 平均マージ
- 10時間 1分
- マージ済み PR(30日)
- 106
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
microsoft/Qcodes のほかの issue
-
難易度 1/5 1時間未満 初心者へのやさしさ 75/100
microsoft/Qcodes#1087 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
メンテナーはふだん 1 日以内に返信
-
Export to xarray dataset fails when two data variables do not share same setpoints再び着手できるかも @jenshnielsen が 129 日前に担当しましたが、オープン中のプルリクエストはありません。 オープン
microsoft/Qcodes#8232 · リアクション 1 件 · 担当者 2 名 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
メンテナーはふだん 1 日以内に返信
microsoft/Qcodes の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
namespace operations
難易度 1/5 1時間未満 初心者へのやさしさ 65/100
EclipseFdn/open-vsx.org#15057 ·
メンテナーはふだん 1 日以内に返信
-
Mission statement: why this is free, in the README, Why This Exists and the wiki Home対応中かも @ChiefGyk3D が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
ChiefGyk3D/Clouds-Against-Humanity#348 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
vllm-project/vime#508 ·
メンテナーはふだん 4 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信