Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Remaining driver issues found while adding parameter value types

オープン
#8,669 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
python
領域
testing, tooling

調査の方向性

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_level in 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_level and _set_trigger_level build
    :TRIGger:<mode>:LEVel? / :TRIGger:<mode>:LEVel <value> from trigger_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_range label for loop 2. The Model 325 User's Manual
    (rev. 1.8) says the loop 2 RANGE is 0 = Off, 1 = On (single range voltage output, up to
    2 W), but the driver maps 1 to "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) with set_parser=int, so
    averages(2.5) silently sets 2.
  • AimTTi PL-P curr_range: Numbers(1, 2), so curr_range(1.5) sends IRANGE<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_number and excitation_range_number:
    validated with Numbers, so non-integer values are sent in the INSET / INTYPE commands.
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 *RST value 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 ncycles stops at 500 000, the limit for internal trigger. With external or manual
      trigger the guide allows up to 1 000 000.
    • Burst time_delay has no upper limit, while the guide gives at most 100 s.
    • Burst idle accepts any number, while a user-defined idle level is an integer from 0 to
      16383.
    • Burst period starts at 3 us, while the guide's minimum is just over 2 us.
    • duty_cycle allows 1 to 99 %, while the guide gives 0.001 to 99.999 % for pulse waveforms
      and a frequency-dependent range for square waveforms.
  • R&S ZNB bandwidth: the Enum stops at 1 MHz, but option R&S ZNB-K17 allows IF
    bandwidths up to 10 MHz.
  • Keysight B1517A sweep:
    • power_compliance allows up to 80 W and current_compliance up 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_steps uses Ints(1, 1001), while WV allows 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.
    • CRVHDR can only be set for user curves 21 to 35, but the driver allows setting the header of
      any curve.
Wrong type hints on helper functions
  • Galil DMC-41x3: _set_relative_position, _set_speed, _set_acceleration and
    _set_deceleration are annotated val: str but receive int.
  • QDev QDac: _getsync is annotated -> float but returns the int sync output number,
    which also prevents annotating sync as Parameter[int, Self].
Smaller issues
  • Rigol DS1074Z trigger_mode has unit="V".
  • Keysight 34980A: for a module without a driver, the fallback submodule name
    slot_<n>_<model>_no_driver includes the model string reported by the instrument. Model names
    containing - are not valid identifiers, which triggers a renaming UserWarning.
  • Rigol DS4000 and Tektronix TPS2012 have no default_terminator, unlike most other VISA
    drivers. The tests pass terminator="\n"; whether the drivers should default to it needs
    checking on hardware.
Tests
  • tests/drivers/test_agilent_e8257d.py: the hardware-only TestAgilentE8257D
    (DriverTestCase) uses a status parameter 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_data and _verify_array_data are
    unused.
主要言語
Python
スター
466
フォーク
368
平均マージ
10時間 1分
マージ済み PR(30日)
106

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

microsoft/Qcodes のほかの issue

microsoft/Qcodes の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。