Change History#
The project milestones describe the future plans.
1.6.17#
release expected by 2023-07-31
New Features#
Add ophyd device support for APS Data Management workflows.
1.6.16#
released 2023-05-23
Enhancements#
Add
fb_epid
database support from the optics module.Add guide How to interrupt/stop/abort a running plan & recover to safe settings.
Add
close_pv
&open_pv
kwargs toApsPssShutter
Add
ensure_AD_plugin_primed()
convenience function.Made
listdevice()
more tolerant of unconnectable signals.
Fixes#
APS cycle set to
APSU
during this dark year.Resolve AD ERROR reports “capture not supported in Single mode”.
Maintenance#
Add unit tests for shutters.
Apply consistent code style (black) throughout.
Set
kind
attribute to add plugin to ad.read_attrs list.Clear
PVPositionerSoftDone
’s setpoint & readback subscriptions at exit.
1.6.15#
released 2023-03-27
Maintenance#
add
log_path=None
kwarg toapstools.utils.stream_log_handler()
Fixes#
resolved
AttributeError
for certain logging configurations
1.6.14#
released 2023-03-12
Breaking Changes#
listobjects()
printing
keyword argument is deprecated.ListRuns.to_dataframe()’ method is deprecated.
ListRuns.to_table() method is deprecated.
listruns()
printing
keyword argument is deprecated.listruns()
tablefmt
keyword argument is deprecated. Usetable_style
instead.listruns() now returns pyRestTable.Table or pandas.DataFrame
New Features#
MeasCompTc32: Measurement Computing TC-32 Thermocouple reader
Enhancements#
Add guide What are the objects to control?
Fixes#
labels_to_streams(): do not plot items in the labeled stream
labels_to_streams(): failed when no motor label assigned
Maintenance#
add more unit tests for
apstools.plans
addDeviceDataAsStream() renamed to write_stream()
FileWriterCallbackBase.file_name now a property, uses pathlib
listobjects() now returns pyRestTable (by default)
listdevice() now returns pyRestTable (by default)
listplans() now returns pyRestTable (by default)
listruns() now returns pyRestTable (by default)
NXWriter: unit tests added for proper NXdata@axes structure.
1.6.13#
released 2023-02-16
Maintenance#
Release process updated on the wiki.
1.6.12#
released 2023-02-16
Maintenance#
NXWriter: add wait_writer_plan_stub() method for use in a plan.
Release process documented on the wiki.
1.6.11#
released 2023-02-15
New Features#
Support to record all motor (or other ophyd-labeled devices) positions at start (or end) of run.
SpecWriterCallback: write
#O
and#P
lines from motor positions recorded at start of run.
Fixes#
NXWriter: scans with area detectors did not have image data. Fixed. Clients must wait for writer to finish.
PVPositionerSoftDone: computation of ‘done’ signal and ‘inposition’ deconvoluted.
Struck3820: changed (typo)
do_readl_all
todo_read_all
Tests involving PVPositionerSoftDone call ‘.cb_readback()’ method to upate ‘done’ signal.
Maintenance#
Added github/super-linter workflow, adds mypy, isort, and other tests.
Apply isort code style.
Known Problems#
Observing random occurrence of unit test failures involving PVPositionerSoftDone.
1.6.10#
released 2023-01-11
New Features#
Add
apstools.utils.plotxy()
utility function.Add tag-based documentation selection via PyData switcher.
Enhancements#
In listruns(), also search the hints for keys.
Fixes#
CI failed to build documentation when creating pip installation.
ScalerMotorFlyer default fly_time_pad increased to 10 s.
ScalerMotorFlyer now sets scaler to “OneShot” mode.
ScalerMotorFlyer in-position comparison now based on motor’s precision.
Version number was not reported correctly in certain situations (issue #771).
Maintenance#
“Custom HDF5 File Name” example updated to latest advice.
Pin Sphinx to <6 due to problems with PyData and Sphinx v6.
Conda channel “nsls2forge” no longer needed.
Remove
nsls2forge
channel from conda environment.
New Contributors#
@jwkim-anl (Jong Woo Kim, ANL) for the
plotxy()
idea.
1.6.9#
released 2022-11-30
New Features#
Add
ScalerMotorFlyer()
device.Add functions to support reporting of logging messages.
Add
restorable_stage_sigs()
decorator.Add support for Python 3.11.
Add
utils.analysis_1D()
&utils.analysis_2D()
functions for peaks statistics.
Enhancements#
Add example notebook Fly Scans with EPICS motor and scaler.
Add guide How to Search in Databroker.
Add guide How to setup logging.
Maintenance#
Add convenience import:
from apstools.devices import AD_EpicsFileNameMixin
.Enable:
from apstools.devices import AD_EpicsFileNameMixin
.Resolve intermittent, random CI failures.
Resolve problems reporting unit test coverage statistics.
Unit tests now support Python version 3.8, 3.9, 3.10, & 3.11.
1.6.8#
released 2022-10-16
Fixes#
[again] Make sure that YML (and other) files are packaged for pip and conda.
1.6.7#
skipped
1.6.6#
released 2022-10-13
New Features#
Add
request_input()
plan stub, per user request.Add fly scan for scaler v. continuous motor.
Maintenance#
Rename:
devices.make_dict_device()
is nowdevices.dict_device_factory()
.
Fixes#
Make sure that YML (and other) files are packaged for pip and conda.
PVPositioner got stuck if target position was the same as current position.
Deprecations#
Removed all snapshot support.
1.6.5#
released 2022-10-04
Maintenance#
Pip requirements updated.
1.6.4#
released 2022-10-03
New Features and/or Enhancements#
Example of imaging with AreaDetector in Single mode writing HDF5 files.
lineup()
: user can choose which feature (max, min, cen, com), additional API changes.devices.make_dict_device()
to make a recordable Device from a dictionary.Only publish documentation on demand by executing GitHub workflow.
Switch HTML documentation to use PyData theme.
Maintenance#
Re-arranged the documentation. Some examples renamed. Content unchanged.
Update the APS cycle dates file through 2023-04-30.
1.6.3#
released 2022-08-15
New Features and/or Enhancements#
Add devices.CamMixin_V3_1_1
Add devices.CamMixin_V34
Add devices.SingleTrigger_V34
Add EpicsScanIdSignal (scan_id from EPICS PV).
Add run_blocking_function() plan to run blocking functions in the RunEngine.
Published on conda-forge
conda install -c conda-forge apstools
.replay() can now take a run, [run], header, or [header]
Switch HTML documentation to use furo theme.
Maintenance#
Combine install steps, workflows in CI
Describe how to use the NXWriter callback.
Refactor AD test with EPICS-controlled image file names.
Refactor test_move_to_zero().
Unit tests now support Python version 3.8, 3.9, & 3.10.
Deprecations#
bluesky_snapshot_viewer
and underlying GUI code will be dropped by 2022-12-31.Drop support for Python 3.7 per NEP29.
Stop publishing on channel
-c aps-anl-tag
(use-c conda-forge
instead).
1.6.2#
released 2022-07-06
Notice#
Confirmed: databroker finds HDF5 image files with custom names.
Still not ready for databroker 2.0+.
New Features#
Documentation website: https://bcda-aps.github.io/apstools/
New example: user-controlled HDF5 image file names.
Using Jupyter notebooks directly (via
nbsphinx
extension).User-controlled HDF5, JPEG, TIFF image file names.
Fixes#
Fix timeout problem in utils.connect_pvlist().
Fix unexpected key in datum kwargs.
Fix
utils.listdevice()
mixing dot and underline name separators.
Maintenance#
Applied custom project badge for APS software License.
Use micromamba in testing workflows.
Deprecations#
Drop LGTM.com static code analysis service.
Drop RTD (readthedocs) documentation publishing service.
Contributors#
Harry Zhou
1.6.1#
released 2022-01-26
Fixes#
Move
enable
Component out from synApps Record devices.Renew the unit tests for PVPositionerSoftDoneWithStop.
1.6.0#
released 2022-01-20
Breaking Changes#
Moved
apsbss
support to newapsbss
package (install with eitherpip
orconda
). See https://bcda-aps.github.io/apsbss/ for details.Can use Python 3.7 - 3.9. Cannot use Python 3.10 yet due to upstream limitation from databroker and intake packages.
Moved
command_list_as_table()
from utils intoplans/command_list
.Removed
BusyStatus
from apstools.synApps.busycallbacks/
:DocumentCollectorCallback
,document_contents_callback
, andSnapshotReport
moved intocallbacks/
.devices/
: Reorganized all devices, includingsynApps/
, intodevices/
subpackage.devices/
:SynPseudoVoigt()
moved fromsignals/
todevices/
.plans/
: Reorganizedplans.py
and_plans/
intoplans/
subpackage.snapshot/
: Movedsnapshot
application and related files to a subdirectory.utils/
: Reorganizedutils.py
and_utils/
intoutils/
subpackage.
New Features and/or Enhancements#
Add support for Eurotherm 2216e temperature controller
Add support for Lakeshore 336 temperature controller
Add support for Lakeshore 340 temperature controller
Add support for synApps calc
scalcout
record.Add support for synApps calc
sseq
record.Add support for EPICS base
sub
record.Add support for synApps calc
userAve
database.Add support for synApps calc
userStringSeq
database.Add support for synApps calc
userStringCalc
database.Add support for synApps optics
2slit
database.
Fixes#
Convert
None
to"null"
when savingPeakStats
to stream.
Maintenance#
Now testing with Python versions 3.7 - 3.9. (Can’t use with Py3.10 yet due to upstream requirements.)
Update notebooks:
demo_specfile_example
demo_tuneaxis
Remove notebooks:
demo_specfile_databroker
Deprecations#
Applications
apstools_plan_catalog application and related support.
Devices
ApsCycleComputedRO
move_energy()
method inKohzuSeqCtl_Monochromator
classProcessController
Utilities
device_read2table
json_export
json_import
listdevice_1_5_2
listruns_v1_4
object_explorer
Contributors#
Gilberto Fabbris
Jan Ilavsky
Qingteng Zhang
1.5.4#
released 2021-11-25
NOTE: The apsbss
component will be moved out of apstools
into its
own package with the next release (1.6.0, ~Feb 2022) of apstools
.
Notice#
The Python version is limited to 3.7 due to aps-dm-api package. Expect this limitation to be relaxed, allowing any Python 3.7 and higher with the 1.6.0 release.
Fixes#
Added table of APS run cycle dates. Use that if aps-dm-api not available.
Restricted python version to 3.7 due to upstream aps_dm_api package.
Rename name uid to token to avoid LGTM security false alert.
Deprecations#
This support was marked as deprecated in release 1.5.4:
apstools.devices.ApsCycleComputedRO
1.5.3#
released 2021-10-15
Notice#
The apstools.beamtime
module and related content (includes apsbss
)
will be moved to a new repository for release 1.6.0. This will
remove the requirement that the APS data management tools (package aps-dm,
which only works on the APS computing network) be included. With this
change, users will be able to conda install apstools -c aps-anl-tag
on
computers outside of the APS computing network.
Breaking Changes#
apstools.utils.listdevice
has a new API (old version renamed tolistdevice_1_5_2
)
New Features and/or Enhancements#
Kohzu monochromator
energy
,wavelength
, andtheta
each are now aPVPositioner
(subclass).Linkam temperature controller CI94
Linkam temperature controller T96
Stanford Research Systems 570 current preamplifier
Stanford Research Systems PTC10 temperature controller
XIA PF4 filter now supports multiple PF4 units.
Generalize that amplifiers will have a
gain
Component attribute.Generalize that temperature controllers will have a
temperature
Component attribute that is a positioner (subclass ofophyd.PVPositioner
).Enhanced positioners for EPICS Devices: *
apstools.devices.PVPositionerSoftDone
*apstools.devices.PVPositionerSoftDoneWithStop
Fixes#
Fixed bug in
devices.ApsCycleComputedRO
anddevices.ApsCycleDM
involvingdatetime
.
Maintenance#
Moved all device support into individual modules under apstools._devices because apstools.devices module was getting too big. Will refactor all with release 1.6.0.
Add unit tests for
devices.ApsCycle*
Devices.Add EPICS IOCs (ADSimDetector and synApps xxx) to continuous integration for use in unit testing.
Unit tests now use pytest package.
Suppress certain warnings during unit testing.
Deprecations#
This support will be removed in release 1.6.0:
apstools.beamtime
module and related content (includesapsbss
) will be moved to a new repositoryapstools.devices.ProcessController
apstools.utils.device_read2table
apstools.utils.listdevice_1_5_2
apstools.utils.object_explorer
Contributors#
Fanny Rodolakis
Gilberto Fabbris
Jan Ilavsky
Qingteng Zhang
4-ID-C Polar
8-ID-I XPCS
9-ID-C USAXS
1.5.2 (and previous)#
See this table for release change histories, highlighted by version control reference (pull request or issue):
- 1.5.2:
released 2021-09-29
Drop Codacy (https://app.codacy.com/gh/BCDA-APS/apstools) as no longer needed.
- #540
Add
apstools.utils.listplans()
function.
- #534
Add
apstools.utils.OverrideParameters
class. Hoisted from APS USAXS instrument.
- #537
Enhancements to
apstools.utils.listruns()
:Add search by list of
scan_id
oruid
values.Optimize search speed.
- #534
Add
apstools.plans.documentation_run()
plan. Hoisted from APS USAXS instrument.
- #528
Add
kind=
kwarg to synApps Devices.
- #539
Break
devices
into submodule_devices
.
- 1.5.1:
released 2021-07-22
- #522
Deprecate apstools.devices.ProcessController. Suggest ophyd.PVPositioner instead.
- #521
Enhancement: new functions: getRunData(), getRunDataValue(), getStreamValues() & listRunKeys()
- #518
Bug fixed: TypeError from summary() of CalcoutRecord
- #517
Added support for python 3.9.
- #514
Refactor ‘SIGNAL.value’ to ‘SIGNAL.get()’
- 1.5.0:
released 2021-04-02
- #504 comment
Dropped support for python 3.6.
- #495
Dropped diffractometer support code.
- #506
spec2ophyd
can now read SPEC config files from APS 17BM
- #504
Overhaul of listruns() using pandas. Previous code renamed to listruns_v1_4().
- #503
Unit tests with data now used msgpack-backed databroker.
- #495
remove hklpy requirement since all diffractometer support code will be moved to [hklpy](bluesky/hklpy) package.
- 1.4.1:
released: 2021-01-23
- 1.4.0:
released: 2021-01-15
- #483
Python code style must pass
flake8
test.
- #482
specwriter: Fix bug when plan_args structure includes a numpy ndarray.
- #474
apstools.utils.listruns()
now defaults to the current catalog in use.New functions:
apstools.utils.getDatabase()
apstools.utils.getDefaultDatabase()
- #470
Area Detector plugin preparation & detection.
apstools.devices.AD_plugin_primed()
re-written completely
apstools.devices.AD_prime_plugin()
replaced by
apstools.devices.AD_prime_plugin2()
- #463
Remove deprecated features.
apstools.suspenders.SuspendWhenChanged()
apstools.utils.plot_prune_fifo()
apstools.utils.show_ophyd_symbols()
apstools.synapps.asyn.AsynRecord.binary_output_maxlength()
apstools.devices.AD_warmed_up()
- #451
Undulator and Kohzu monochromator functionalities
apstools.devices.ApsUndulator()
Adds some
Signal
components (such as setting kind kwarg) that are helpful in moving the undulator
- 1.3.9:
released 2020-11-30
- 1.3.8:
released: 2020-10-23
- #449
diffractometer wh() shows extra positioners
- #446
utils: device_read2table() renamed to listdevice()
- #445
synApps: add Device for iocStats
- #437
diffractometer add pa() report
- #426
diffractometer add simulated diffractometers
- #425
BUG fixed: listruns() when no stop document
- #423
BUG fixed: apsbss IOC starter script
- 1.3.7:
released: 2020-09-18
- 1.3.6:
released 2020-09-04
- 1.3.5:
released 2020-08-25
- 1.3.4:
released 2020-08-14
- #400
resolve warnings and example documentation inconsistency
- #399
parse iso8601 date for py36
- #398
DiffractometerMixin: add wh() method
- #396
provide spec2ophyd application
- #394
add utils.copy_filtered_catalog()
- #392
RTD make parameter lists clearer
- #390
improve formatting of parameter list in RTD
- #388
add utils.quantify_md_key_use()
- #385
spec2ophyd: make entry point
- 1.3.3:
released 2020-07-22
- 1.3.2:
released 2020-07-20
- #380
apsbss: fix object references
- 1.3.1:
released 2020-07-18
- #378
apsbss_ioc.sh: add checkup (keep-alive feature for the IOC)
- #376
apsbss: example beam line-specific shell scripts
- #375
apsbss: add PVs for numbers of users
- #374
apsbss_ophyd: addDeviceDataAsStream() from USAXS
- #373
account for time zone when testing datetime-based file name
- #371
update & simplify the travis-ci setup
- #369
spec2ophyd: handle NONE in SPEC counters
- #368
spec2ophyd: config file as command-line argument
- #367
apsbss: move ophyd import from main
- #364
apsbss: add PVs for ioc_host and ioc_user
- #363
Handle when mailInFlag not provided
- #360
prefer logging to print
- 1.3.0:
release expected by 2020-07-15
add NeXus writer callback
add
apsbss
: APS experiment metadata support- #351
apsbss: put raw info into PV
- #350
apsbss: clarify meaning of reported dates
- #349
apsbss: add “next” subcommand
- #347
some apbss files not published
- #346
publish fails to push conda packages
- #344
listruns() uses databroker v2 API
- #343
review and update requirements
- #342
summarize runs in databroker by plan_name and frequency
- #341
tools to summarize activity
- #340
update copyright year
- #339
resolve Codacy code review issues
- #338
unit tests are leaving directories undeleted
- #337
Document new filewriter callbacks
- #336
add NeXus file writer from USAXS
- #335
update requirements
- #334
support APS proposal & ESAF systems to provide useful metadata
- #333
access APS proposal and ESAF information
- #332
listruns(): use databroker v2 API
- #329
add NeXus writer base class from USAXS
- 1.2.6:
released 2020-06-26
- #331
listruns succeeds even when number of existing runs is less than requested
- #330
BUG: listruns: less than 20 runs in catalog
- #328
epid: add final_value (.VAL field)
- #327
epid: remove clock_ticks (.CT field)
- #326
BUG: epid failed to connect to .CT field
- #325
BUG: epid final_value signal not found
- #324
BUG: epid controlled_value signal name
- 1.2.5:
released 2020-06-05
- 1.2.3:
released 2020-05-07
- 1.2.2:
released 2020-05-06
- DEPRECATION #306
apstools.plans.show_ophyd_symbols() will be removed by 2020-07-01. Use apstools.plans.listobjects() instead.
- #311
adapt to databroker v1
- #310
enhance listruns() search capabilities
- #308
manage diffractometer constraints
- #307
add diffractometer emhancements
- #306
rename show_ophyd_objects() as listobjects()
- #305
add utils.safe_ophyd_name()
- #299
set_lim() does not set low limit
- 1.2.1:
released 2020-02-18 - bug fix
- #297
fix import error
- 1.2.0:
released 2020-02-18 - remove deprecated functions
- 1.1.19:
released 2020-02-15
- 1.1.18:
released 2020-02-09
PyPI would not accept the 1.1.17 version: filename has already been used
see release notes for 1.1.17
- 1.1.17:
released 2020-02-09 - hot fixes
- 1.1.16:
released 2019-12-05
- #269
bug: shutter does not move when expected
- #268
add redefine_motor_position() plan
- #267
remove lineup() plan for now
- #266
bug fix for #265
- #265
refactor of #264
- #264
Limit number of traces shown on a plot - use a FIFO
- #263
device_read2table() should print unless optioned False
- #262
add lineup() plan (from APS 8-ID-I XPCS)
- 1.1.15:
released 2019-11-21 : bug fixes, adds asyn record support
- 1.1.14:
released 2019-09-03 : bug fixes, more synApps support
- #246
synApps: shorten name from synApps_ophyd
- #245
swait & calcout: change from EpicsMotor to any EpicsSignal
- #240
swait: refactor swait record & userCalc support
- #239
transform: add support for transform record
- #238
calcout: add support for calcout record & userCalcOuts
- #237
epid: add support for epid record
- #234
utils: replicate the unix() command
- #230
signals: resolve TypeError
- 1.1.13:
released 2019-08-15 : enhancements, bug fix, rename
- 1.1.12:
released 2019-08-05 : bug fixes & updates
- 1.1.11:
released 2019-07-31 : updates & new utility
- 1.1.10:
released 2019-07-30 : updates & bug fix
- 1.1.9:
released 2019-07-28 : updates & bug fix
- 1.1.8:
released 2019-07-25 : updates
- #196
spec2ophyd handle MOTPAR:read_misc_1
- #194
new
show_ophyd_symbols
shows table of global ophydSignal
andDevice
instances
- #193
spec2ophyd ignore None items in SPEC config file
- #192
spec2ophyd handles VM_EPICS_PV in SPEC config file
- #191
spec2ophyd handles PSE_MAC_MOT in SPEC config file
- #190
spec2ophyd handles MOTPAR in SPEC config file
- 1.1.7:
released 2019-07-04
- DEPRECATION
apstools.plans.run_blocker_in_plan() will be removed by 2019-12-31. Do not write blocking code in bluesky plans.
Dropped python 3.5 from supported versions
- #175
move plans.run_in_thread() to utils.run_in_thread()
- #168
new spec2ophyd migrates SPEC config file to ophyd setup
- #166
device_read2table(): format device.read() results in a pyRestTable.Table
- #161
addDeviceDataAsStream(): add Device as named document stream event
- #159
convert xlrd.XLRDError into apstools.utils.ExcelReadError
- #158
new
run_command_file()
runs a command list from text file or Excel spreadsheet
- 1.1.6:
released 2019-05-26
- 1.1.5:
released 2019-05-14
- #135
add refresh button to snapshot GUI
- 1.1.4:
released 2019-05-14
- 1.1.3:
released 2019-05-10
adds packaging dependence on event-model
- #137
adds utils.json_export() and utils.json_import()
- 1.1.1:
released 2019-05-09
adds packaging dependence on spec2nexus
- #136
get json document stream(s)
- #134
add build on travis-ci with py3.7
- #130
fix conda recipe and pip dependencies (thanks to Maksim Rakitin!)
- #128
SpecWriterCallback.newfile() problem with scan_id = 0
- #127
fixed: KeyError from SPEC filewriter
- #126
add uid to metadata
- #125
SPEC filewriter scan numbering when “new” data file exists
- #124
fixed: utils.trim_string_for_EPICS() trimmed string too long
- #100
fixed: SPEC file data columns in wrong places
- 1.1.0:
released 2019.04.16
change release numbering to Semantic Versioning (remove all previous tags and releases)
batch scans using Excel spreadsheets
bluesky_snapshot_viewer and bluesky_snapshot
conda package available