forked from pyepics/pyepics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChangelog
232 lines (157 loc) · 7.66 KB
/
Changelog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
2011-03-24 Matt Newville <[email protected]>
* Version 3.1.1:
- changed package name from epics to pyepics (better tarball names)
- changed PV.put() so that:
* a normal ca_put() is the default
* wait=True will hang until completion
* use_complete=True will use a builtin callback that sets
the .put_complete attribute
* a general purpose callback can be specified.
2011-03-23 Matt Newville <[email protected]>
* Version 3.1.0:
- added Angus Gratton's wx enhanced widgets
- added Angus Gratton's autosave module
- move main repository to github.com/pyepics/pyepics
- dynamic subarrays supported.
- upgraded win32 dlls to be 3.14.12, so that dynamic arrays work.
- string arrays now correctly handled.
- several small bug fixes to MotoDetailFrame.py (thanks to Mark Vigder)
- dramatically improved testing framework, with dedicated
epics database (tests/Setup/pydebug.db) that can be loaded
and manipulated for testing
- PV nows have a 'put_complete' field that indicates when
a put() has completed.
- better handling of connection callbacks when a channel or PV
tries to connect several times in rapid succession.
- fixed some bugs related to array values, being stepped on and
corrupted by subsequent calls.
2011-01-11 Matt Newville <[email protected]>
* Version 3.0.11:
- improvements for devices, especially motor, scaler, and struck.
- added wx MiniMotorPanel to wx.MotorPanel to provide a smaller,
simpler motor panel.
- fixed configuration for build on Solaris (from T. Mooney)
- added 'with_ctrlvars' option (default True) to
PV.add_callback(). This will try to make sure that accurate
control information is passed into a callback.
- changed conversion of data from ctypes to numpy to use
numpy.ctypeslib.as_array(data)
for waveforms, including CHAR arrays. The as_string=True
option still works for CHAR arrays.
Since numpy.ctypeslib.as_array() is much faster than numpy.array(),
all array data is now converted to numpy arrays (if numpy is
available and as_numpy is not explicitly set False) without
looking at ca.AUTOMONITOR_LENGTH.
- improved support and performance for getting partial arrays in
ca.py and pv.py, and in caget(), which now has 'count' and
'as_numpy' keyword options.
2010-10-21 Matt Newville <[email protected]>
* Version 3.0.10:
- improved devices to use attributes in addition to get()/put()
methods, so that
a = device('XX:m1', delim='.')
print a.VAL
is equivalent to print a.get('VAL'). Case is preserved, and
device.get(attr, as_string=True) is still the only way to get
the string representation.
- several improvements to Motor and MotorPanel to use this new
device interface.
- synchronous groupns now work.
- epicsPV now works correctly.
- added a 'count=' argument to ca.get() and PV.get() to limit
(really!) the number of array elements fetched for array data.
- fixed bug in handling very large char waveform for images.
- better coverage and testing
2010-10-02 Matt Newville <[email protected]>
* Version 3.0.9:
- many fixes to ca.py to avoid errors on 64-bit linux (no other
64-bit systems available for testing at this time). Two separat
errors were found:
-- incorrect mapping of "DBR_LONG" (should be ctypes.c_int)
-- use of args.chid as a Channel ID in 'connection' and 'get'
callbacks: The issue is that the Python callback receives
args.chid as a Python int, and this must be cast to a
dbr.chid_t (a ctypes.c_long) for use by any ca function.
Oddly, using the Python int worked on 32 bit systems.
- simplified approach to reconnection attempts for un-connected
channels. The "force" keyword has been eliminated (it never
really forced a connection, just retried).
- fixed bug that prevented getting array data on systems without
numpy installed.
- added tests, tested on more systems with more variations.
2010-09-17 Matt Newville <[email protected]>
* Version 3.0.8:
- fixed fetching of ctrl and time variants of array data, due
to a patch from Glen Wright (<[email protected]>)!
- improvement for connections on slow networks:
moved setting of monitor reference to pv.on_connect, and
postponing setting self.connection until pv.on_connect is
complete. This prevents a main thread from seeing
self.connected = True and plowing ahead while the connection
callback is still being run. Connections are now much
more reliable over slow networks (say, over a VPN and DSL
line from home -- it works!)
- set EPICS_CA_MAX_ARRAY_BYTES to 2**24 if not already set.
- many fixes to wx.MotorPanel and related GUI components, so
that scripts/wx_motor.py now works much better.
- small improvements to motor device.
- added replace_printf_hanlder to ca.py: having difficulty with
"fork a daemon process" with ca library.
- doc improvements and updates
2010-08-31 Matt Newville <[email protected]>
* Version 3.0.7:
- improved connection speed when connecting to many PVs
(especially if some are not connected)
- improved reliability of get(as_string=True) actually returning
the "proper" string value of the PV (enum name, doubles formatted
according to precision field, etc).
- added CA Severity Exception, which is then ignored pend_io, so
as to avoid unnecessary crashes.
- added several tests.
- documentation improvements
2010-06-10 Matt Newville <[email protected]>
* Version 3.0.6:
- added working connection callbacks for PVs: users supply
a function that is called on changes to connection status.
2010-05-25 Matt Newville <[email protected]>
* Version 3.0.5:
- set EPICS_CA_MAX_ARRAY_BYTES to 2**31 prior to loading the
libca DLL, if EPICS_CA_MAX_ARRAY_BYTES is not already set.
- use ca.AUTOMONITOR_MAXLENGTH (default = 16384) to improve
performance for large array / waveform data, in two ways:
1. a PV with an element count > ca.AUTOMONITOR_MAXLENGTH will
NOT be automatically monitored, so that explicit get() calls are
needed. To override this, use auto_monitor=True when creating
the PV. Smaller arrays will still be automatically monitored
(which can be turned off with auto_monitor=False). This does not
have a direct impact on the ca interface.
2. PVs and ca channels with element count >
ca.AUTOMONITOR_MAXLENGTH will NOT be implicitly converted to numpy
arrays unless explicitly asked for with get(..., as_numpy=True).
- fixed PV's char_value field in info paragraph, especially for
"fresh" PVs where the precision value may not have been correctly
fetched when info is called.
2010-05-18 Matt Newville <[email protected]>
* Version 3.0.4:
fixed some performance bottlenecks for large arrays, as from
areaDetector.
2010-05-02 Matt Newville <[email protected]>
* Version 3.0.3:
fixed some threading issues
2010-04-20 Matt Newville <[email protected]>
* Version 3.0.2:
- improved method to "locate CA dll" (or .so or .dylib) at run
time, using ctypes.util.find_lib(). On Unix (including linux, Mac
OSX), if the "usual system approach" of finding a DLL is not
successful, the enviroment variables PATH and LD_LIBRARY_PATH (and
DYLD_LIBRARY_PATH on Mac OSX) will be searched for the appropriate
DLL.
- improved functionality for Python Threads. The _cache data in
ca.py now stores Channel IDs with CA "context", so that use of
Python threads (as from threading.Thread) work, allowing, gets(),
puts(), and callbacks in separately running threads.
2010-04-08 Matt Newville <[email protected]>
* Version 3.0.1:
inital release of version 3.0.1
This is a dramatic change from the 2.1 series. Please consult
documentation.