Skip to content

Release/0.3.0rc1 - #55

Open
Gnpd wants to merge 54 commits into
mainfrom
release/0.3.0rc1
Open

Release/0.3.0rc1#55
Gnpd wants to merge 54 commits into
mainfrom
release/0.3.0rc1

Conversation

@Gnpd

@Gnpd Gnpd commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Release 0.3.0rc1

Release candidate for 0.3.0. Bundles four stacked feature branches (feat/instance-scoped-api → feat/instance-manager → channel-manager → sqlite-tools), plus the IviumSoft 4.1242 DLL update and its follow-on fixes — none of which were previously published. See CHANGELOG.md for the full notes.

What's included

Thread-safe instance scoping

  • Pyvium.on_instance(n) and Pyvium.instance(n) (PyviumInstance) select an IviumSoft instance and run commands against it atomically under the driver lock, so concurrent calls never land on the wrong instance.

Multichannel (Ivium-n-Soft) control

  • Pyvium.on_channel(m), Pyvium.instance(n).channel(m) (PyviumChannel), select_channel, get_channel_statuses, and connect_device_to_channel for driving channel tabs within an instance. Adds ChannelStatus and a CoreBase selected-channel shadow (the DLL has no getter for the active channel).

IviumSoft instance lifecycle manager

  • IviumsoftInstanceManager (launch, close, adopt, discover, close_orphans, list_instances) maps each IviumSoft process to its driver instance number, with native Win32 process helpers. Adds cold-start Pyvium.open_driver(verify_iviumsoft=False).

Read-only SQLite measurement readers

  • MeasurementReader reads a DataServer_*.idf.sqlite file read-only and WAL-safe, so it can tail a measurement IviumSoft is still writing (incremental via after_point_id/latest_point_id), with to_csv/to_dataframe export.
  • MeasurementIndex reads the index.sqlite catalog. Pure file I/O, no DLL.

IviumSoft 4.1242 DLL update (DLL v203)

  • Bundled remote-driver DLLs/headers updated to IviumSoft 4.1242.
  • IV_selectdevicesetvalue was removed upstream; set_device_current / set_device_potential now use the dedicated IV_selectdevice_setcurrent / IV_selectdevice_setpotential (public signatures unchanged).
  • The high-speed trace calls (get_current_trace, get_current_we2_trace, get_potential_trace) no longer crash the host and now return the sample list.

Full IV_selectdevice_* Core bindings

  • Every scoped one-call function from 4.1242 (39 in total, across generic/direct/WE32/ method-mode) is bound on Core for raw-DLL consumers. No Pyvium counterpart (the high-level API scopes via on_instance). A coverage test guards that Core binds every function declared in the bundled header.

Public device-status labels

  • DEVICE_STATUS_LABELS (read-only code → label map) and device_status_label(code) are now exported from pyvium, so consumers no longer reach into the private _STATUS_LABELS.

Other changes

  • Fixed: CSV export no longer writes blank lines between rows on Windows.
  • Fixed: tools.column_labels() now defaults to the hardware-confirmed mapping (y=potential, z=current); it previously shipped the opposite provisional labels (the raw x/y/z/q columns on DataPoint are unaffected).
  • Changed: device handle renamed to an instance handle (PyviumInstance) to match the DLL's actual semantics.
  • Compatibility: now supports Python 3.13, cffi 2.x, pylint 3.x.
  • Docs: new docs/terminology.md glossary; documented the SQLite readers and the scoped/lifecycle APIs in docs/method_list.md.

Notebooks

  • Expanded 02_device_and_instance_management with thread-safe scoping and multichannel management.
  • New 10_instance_lifecycle_management (the IviumsoftInstanceManager) and 11_sqlite_measurement_readers (reads your real DataServer files; guarded to read safely with no hardware).
  • All new/updated notebooks translated to Spanish (notebooks/es/) and Chinese (notebooks/zh/), with matching README.es.md / README.zh.md updates.

Gnpd added 30 commits June 11, 2026 10:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant