Skip to content

Releases: pymeasure/pymeasure

v0.14.0

22 May 08:51
34a7f5f
Compare
Choose a tag to compare

Version 0.14.0 (2024-05-22)

Main items of this new release:

  • Add support for numpy 2.0
  • Add support for python 3.12
  • Improve academic quotability with an up to date Zenodo DOI and with citation information.
  • Add default queue method and a FileInputWidget, allowing to more quickly get started with the PyMeasure user interface (ManagedWindow).
  • Add a SCPIMixin base class for instruments instead of defining includeSCPI=True
  • Instrument manufacturer modules are no longer imported in the pymeasure/instruments/__init__.py file.
    Previously, when importing a single instrument into a procedure, all instruments would be imported into memory through the manufacturer modules in pymeasure/instruments/__init__.py.
    Removing manufacturer modules from that file lowers the memory footprint of pymeasure when importing an instrument.
    Instrument classes will need to be imported from the manufacturer module or explicitly from the instrument driver file.
    For example, from pymeasure.instruments import Extreme5000 will need to change to from pymeasure.instruments.extreme import Extreme5000 or from pymeasure.instruments.extreme.extreme5000 import Extreme5000.
  • 17 new instruments

Deprecated features

  • Remove TelnetAdapter, as its library is deprecated (@BenediktBurger, #1045)
  • Replaced directory_input keyword-argument of ManagedWindowBase by enable_file_input (@CasperSchippers, #964)
  • Make parameter includeSCPI obligatory for all instruments, even those which use SCPI (@BenediktBurger, #1007)
  • Setting includeSCPI=True is deprecated, inherit instead the SCPIMixin class if the device supports SCPI commands.
  • Replaced celcius attribute of LakeShoreTemperatureChannel by celsius (@afuetterer, #1003)
  • Replaced error property of Keithley instruments by next_error.
  • Replaced measurement_time property of Pendulum CNT-91 by gate_time.
  • Replaced sample_rate keyword-argument of buffer_frequency_time_series of Pendulum CNT-91 by gate_time.
  • Replaced MKS937B unit to use instruments/mksinst/mks937b/Unit instead of strings (@dkriegner, @BenediktBurger #1034)

Instruments mechanics

Instruments

GUI

Miscellaneous

New Contributors

@guuskuiper, @OptimisticBeliever, @fwutw, @afuetterer, @poje42, @Rybok, @AlecVercruysse, @ConnorGCarr, @mzen228, @jnnskls, @V0XNIHILI, @pyZerrenner, @JAW90, @driftregion, @jurajjasik, @Konradrundfunk

Full Changelog: v0.13.1...v0.14.0

v0.13.1.post1

29 Apr 07:14
Compare
Choose a tag to compare

What's Changed

Release for Zenodo DOI, no code change.

v0.13.1

06 Oct 05:45
Compare
Choose a tag to compare

Version 0.13.1 (2023-10-05)

Bugfix release to fix ineffective python version restriction in the project metadata. This only affected Python<=3.7 environments installing via pip.

v0.13.0

23 Sep 15:14
Compare
Choose a tag to compare

Version 0.13.0 (2023-09-23)

Main items of this new release:

  • Dropped support for Python 3.7, added support for Python 3.11.
  • Adds a test generator, which observes the communication with an actual device and writes protocol tests accordingly.
  • 2 new instrument drivers have been added.

Deprecated features

  • Attocube ANC300: The stepu and stepd properties are deprecated, use the new move_raw method instead. (@dkriegner, #938)

Instruments

GUI

Miscellaneous

New Contributors

@waveman68, @omahs, @ileu

Full Changelog: v0.12.0...v0.13.0

v0.12.0

05 Jul 19:58
Compare
Choose a tag to compare

Version 0.12.0 (2023-07-05)

Main items of this new release:

  • A Channel base class has been added for easier implementation of instruments with channels.
  • 19 new instrument drivers have been added.
  • Added tests for some commonalities across all instruments.
  • We continue to clean up our API in preparation for a future version 1.0. Deprecations and subsequent removals are listed below.

Deprecated features

  • HP 34401A: voltage_ac, current_dc, current_ac, resistance, resistance_4w properties, use function_ and reading properties instead.
  • Toptica IBeamSmart: channel1_enabled, use ch_1.enabled property instead (equivalent for channel2). Also laser_enabled is deprecated in favor of emission (@bmoneke, #819).
  • TelnetAdapter: use VISAAdapter instead. VISA supports TCPIP connections. Use the resource_name TCPIP[board]::<hostname>::<port>::SOCKET to connect to a server (@Max-Herbold, #835).
  • Attocube ANC300: host argument, pass a resource string or adapter as Adapter passed to Instrument. Now communicates through the VISAAdapter rather than deprecated TelnetAdapter. The initializer now accepts name as its second keyword argument so all previous initialization positional arguments (axisnames, passwd, query_delay) should be switched to keyword arguments.
  • The property creators control, measurement, and setting do not accept arbitrary keyword arguments anymore. Use the v_kwargs parameter for arguments you want to pass on to values method, instead.
  • The property creators control, measurement, and setting do not accept command_process anymore. Use a dynamic property or a Channel instead, as appropriate (@bmoneke, #878).
  • See also the next section.

New adapter and instrument mechanics

  • All instrument constructors are required to accept a name argument.

  • Changed: read_bytes of all Adapters by default does not stop reading on a termination character, unless the new argument break_on_termchar is set to True.

  • Channel class added. Instrument.channels and Instrument.ch_X (X is any channel name) are reserved attributes for channel mechanics.

  • The parameters check_get_errors and check_set_errors enable calling methods of the same name. This enables more systematically dealing with instruments that acknowledge every "set" command.

  • Adds Channel feature to instruments (@bmoneke, mcdo0486, #718, #761, #852, #931)

  • Adds maxsplit parameter to values method (@bmoneke, #793)

  • Adds (deprecated) global preprocess reply for backward compatibility (@bmoneke, #876)

  • Adds fallback version for discarding the read buffer to VISAAdapter (@dkriegner, #836)

  • Adds flush_read_buffer to SerialAdapter (@RobertoRoos, #865)

  • Adds gpib_read_timeout to PrologixAdapter (@neuschs, #927)

  • Adds command line option to pass resource address for instrument tests (@bleykauf, #789)

  • Adds "find all instruments" and channels for testing (@bmoneke, #909, @mcdo0486, #911, #912)

  • Adds test that an instrument hands kwargs to the adapter (@bmoneke, #814)

  • Adds property docstring check (@bmoneke, #895)

  • Improves property factories' docstrings (@bmoneke, #843)

  • Improves property factories: do not allow undefined kwargs (@bmoneke, #856)

  • Improves property factories: check_set/get_errors argument to call methods of the same name (@bmoneke, #883)

  • Improves read_bytes of Adapter (@bmoneke, #839)

  • Improves the ProtocolAdapter with a mock connection (@bmoneke, #782), and enable it to have empty messages in the protocol (@bmoneke, #818)

  • Improves Prologix adapter documentation (@bmoneke, #813) and configurable settings (@bmoneke, #845)

  • Improves behavior of read_bytes(-1) for SerialAdapter (@RobertoRoos, #866)

  • Improves all instruments with name kwarg (@bmoneke, #877)

  • Improves VisaAdapter: close manager only when using pyvisa-sim (@dkriegner, #900)

  • Harmonises instrument name definition pattern, consistently name the instrument connection argument "adapter" (@bmoneke, #659)

  • Fixes ProtocolAdapter has list in signature (@bmoneke, #901)

  • Fixes VISAAdapter's read_bytes (@bmoneke, #867)

  • Fixes query_delay usage in VISAAdapter (@bmoneke, #765)

  • Fixes VisaAdapter: close resource manager only when using pyvisa-sim (@dkriegner, #900)

Instruments

Automation

  • Adds tolerance for opening result files with missing parameters (@msmttchr, #780)
  • Validate DATA_COLUMNS entries earlier, avoid exceptions in a running procedure (@mcdo0486, #796, #934)

GUI

Miscellaneous

  • Adds a collection of solutions for instrument implementation challenges (@bmoneke, #853, #861)
  • Updates Tutorials/Making_a_measurement/ example_codes (@sansanda, #749)

New Contributors

@JCarl-OS, @aruznieto, @scandey, @tomverbeure, @wichers, @Max-Herbold, @RobertoRoos

Full Changelog: v0.11.1...v0.12.0

v0.11.1

31 Dec 16:59
Compare
Choose a tag to compare

Version 0.11.1 (2022-12-31)

Adapter and instrument mechanics

  • Fix broken PrologixAdapter.gpib. Due to a bug in VISAAdapter, you could not get a second adapter with that connection (#765).

Full Changelog: v0.11.0...v0.11.1

v0.11.0

19 Nov 14:48
Compare
Choose a tag to compare

Version 0.11.0 (2022-11-19)

Main items of this new release:

  • 11 new instrument drivers have been added
  • A method for testing instrument communication without hardware present has been added, see the documentation.
  • The separation between Instrument and Adapter has been improved to make future modifications easier. Adapters now focus on the hardware communication, and the communication protocol should be defined in the Instruments. Details in a section below.
  • The GUI is now compatible with Qt6.
  • We have started to clean up our API in preparation for a future version 1.0. There will be deprecations and subsequent removals, which will be prominently listed in the changelog.

Deprecated features

In preparation for a stable 1.0 release and a more consistent API, we have now started formally deprecating some features.
You should get warnings if those features are used.

  • Adapter methods ask, values, binary_values, use Instrument methods of the same name instead.
  • Adapter parameter preprocess_reply, override Instrument.read instead.
  • Adapter.query_delay in favor of Instrument.wait_for().
  • Keithley 2260B: enabled property, use output_enabled instead.

New adapter and instrument mechanics

  • Nothing should have changed for users, this section is mainly interesting for instrument implementors.
  • Documentation in 'Advanced communication protocols' in 'Adding instruments'.
  • Adapter logs written and read messages.
  • Particular adapters (VISAAdapter etc.) implement the actual communication.
  • Instrument.control getter calls Instrument.values.
  • Instrument.values calls Instrument.ask, which calls Instrument.write, wait_for, and read.
  • All protocol quirks of an instrument should be implemented overriding Instrument.write and read.
  • Instrument.wait_until_read implements waiting between writing and reading.
  • reading/writing binary values is in the Adapter class itself.
  • PrologixAdapter is now based on VISAAdapter.
  • SerialAdapter improved to be more similar to VISAAdapter: read/write use strings, read/write_bytes bytes. - Support for termination characters added.

Instruments

Automation

GUI

Miscellaneous

  • Update and extend documentation (@bilderbuchi, #712, @bmoneke, #655)
  • Add PEP517 compatibility & dynamically obtaining a version number (@bilderbuchi, #613)
  • Add an example and documentation regarding using a foreign instrument (@bmoneke, #647)
  • Add black configuration (@bleykauf, #683)
  • Remove VISAAdapter.has_supported_version() as it is not needed anymore.

New Contributors

@jcarbelbide, @mroeleke, @bmoneke, @garzetti, @AsafYagoda, @AidenDawn, @LastStarDust, @sansanda

Full Changelog: v0.10.0...v0.11.0

v0.10.0

09 Apr 14:45
Compare
Choose a tag to compare

Version 0.10.0 (2022-04-09)

Main items of this new release:

  • 23 new instrument drivers have been added
  • New dynamic Instrument properties can change their parameters at runtime
  • Communication settings can now be flexibly defined per protocol
  • Python 3.10 support was added and Python 3.6 support was removed.
  • Many additions, improvements and have been merged

Instruments

  • New Agilent B1500 Data Formats and Documentation (@moritzj29)
  • New Anaheim Automation stepper motor controllers (@samcondon4)
  • New Andeen Hagerling capacitance bridges (@dkriegner)
  • New Anritsu MS9740A Optical Spectrum Analyzer (@md12g12)
  • New BK Precision 9130B Instrument (@dennisfeng2)
  • New Edwards nXDS (10i) Vacuum Pump (@hududed)
  • New Fluke 7341 temperature bath instrument (@msmttchr)
  • New Heidenhain ND287 Position Display Unit Driver (@samcondon4)
  • New HP 3478A (@LongnoseRob)
  • New HP 8116A 50 MHz Pulse/Function Generator (@CodingMarco)
  • New Keithley 2260B DC Power Supply (@bklebel)
  • New Keithley 2306 Dual Channel Battery/Charger Simulator (@mfikes)
  • New Keithley 2600 SourceMeter series (@Daivesd)
  • New Keysight N7776C Swept Laser Source (@maederan201)
  • New Lakeshore 421 (@CasperSchippers)
  • New Oxford IPS120-10 (@CasperSchippers)
  • New Pendulum CNT-91 frequency counter (@bleykauf)
  • New Rohde&Schwarz - SFM TV test transmitter (@LongnoseRob)
  • New Rohde&Schwarz FSL spectrum analyzer (@bleykauf)
  • New SR570 current amplifier driver (@pyMatJ)
  • New Stanford Research Systems SR510 instrument driver (@samcondon4)
  • New Toptica Smart Laser diode (@dkriegner)
  • New Yokogawa GS200 Instrument (@dennisfeng2)
  • Add output low grounded property to Keithley 6221 (@CasperSchippers)
  • Add shutdown function for Keithley 2260B (@bklebel)
  • Add phase control for Agilent 33500 (@corna)
  • Add assigning "ONCE" to auto_zero to Keithley 2400 (@mfikes)
  • Add line frequency controls to Keithley 2400 (@mfikes)
  • Add LIA and ERR status byte read properties to the SRS Sr830 driver (@samcondon4)
  • Add all commands to Oxford Intelligent Temperature Controller 503 (@CasperSchippers)
  • Fix DSP 7265 lockin amplifier (@CasperSchippers)
  • Fix bug in Keithley 6517B Electrometer (@CasperSchippers)
  • Fix Keithley2000 deprecated call to visa.config (@bklebel)
  • Fix bug in the Keithley 2700 (@CasperSchippers)
  • Fix setting of sensor flags for Thorlabs PM100D (@bleykauf)
  • Fix SCPI used for Keithley 2400 voltage NPLC (@mfikes)
  • Fix missing return statements in Tektronix AFG3152C (@bleykauf)
  • Fix DPSeriesMotorController bug (@samcondon4)
  • Fix Keithley2600 error when retrieving error code (@bicarlsen)
  • Fix Attocube ANC300 with new SCPI Instrument properties (@dkriegner)
  • Fix bug in wait_for_trigger of Agilent33220A (neal-kepler)

GUI

Miscellaneous

New Contributors

@LongnoseRob, @Neal, @hududed, @corna, @Daivesd, @samcondon4, @maederan201, @bleykauf, @mfikes, @bicarlsen, @md12g12, @CodingMarco, @jarvas24, @mcdo0486!

Full Changelog: v0.9...v0.10.0

PyMeasure v0.9

07 Feb 20:26
ba4d002
Compare
Choose a tag to compare

This release brings a large number of new instruments, along with improvements to adapters.

Thanks everyone who contributed to this release! Special thanks to @bilderbuchi and @CasperSchippers for maintaining the project!

PyMeasure 0.8

29 Mar 18:09
e48f9d6
Compare
Choose a tag to compare

This release brings a number of new features including live image plotting and measurement sequencing.

  • Python 3.8 is now supported
  • New Measurement Sequencer allows for running over a large parameter space (@CasperSchippers)
  • New image plotting feature for live image measurements (@jmittelstaedt)
  • Improvements to VISA adapter (@moritzj29)
  • Added Tektronix AFG 3000, Keithley 2750 (@StePhanino, @dennisfeng2)
  • Documentation improvements (@mivade)
  • Fix to ScientificInput for float strings (@moritzj29)
  • New validator: strict_discrete_range (@moritzj29)
  • Improvements to Recorder thread joining
  • Migrating the ReadtheDocs configuration to version 2
  • National Instruments Virtual Bench initial support (@moritzj29)

Thanks to everyone who contributed to this release!