-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathrelease_history.html
716 lines (695 loc) · 67.1 KB
/
release_history.html
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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Release History — bluesky-queueserver 0.0.21.post7+gb5fc78e documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="_static/plot_directive.css" />
<link rel="stylesheet" type="text/css" href="_static/theme_overrides.css?v=0c24fe83" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=5afba0ad"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Contributing" href="contributing.html" />
<link rel="prev" title="Tutorials" href="tutorials.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
bluesky-queueserver
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorials.html">Tutorials</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Release History</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-21-2024-09-29">v0.0.21 (2024-09-29)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-20-2024-07-25">v0.0.20 (2024-07-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id1">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-19-2023-06-28">v0.0.19 (2023-06-28)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-18-2022-10-31">v0.0.18 (2022-10-31)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id4">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">Added</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-17-2022-10-02">v0.0.17 (2022-10-02)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id6">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#removed">Removed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-16-2022-07-30">v0.0.16 (2022-07-30)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-15-2022-06-24">v0.0.15 (2022-06-24)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-14-2022-04-08">v0.0.14 (2022-04-08)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-13-2022-04-05">v0.0.13 (2022-04-05)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id15">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-12-2022-03-08">v0.0.12 (2022-03-08)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id16">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id17">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-11-2022-02-27">v0.0.11 (2022-02-27)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id18">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-10-2022-02-08">v0.0.10 (2022-02-08)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id21">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">Removed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-9-2022-01-04">v0.0.9 (2022-01-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id25">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id27">Changed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-8-2021-10-15">v0.0.8 (2021-10-15)</a></li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-7-2021-10-06">v0.0.7 (2021-10-06)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id28">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id29">Added</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#v0-0-6-2021-09-16">v0.0.6 (2021-09-16)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id31">Changed</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/bluesky/bluesky-queueserver">Source Code on GitHub</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">User's Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="introduction_for_users.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="using_queue_server.html">Using the Queue Server</a></li>
<li class="toctree-l1"><a class="reference internal" href="features_and_config.html">Features and Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="startup_code.html">Organizing Bluesky Startup Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="item_validation.html">Validation of Queue Items</a></li>
<li class="toctree-l1"><a class="reference internal" href="plan_annotation.html">Annotating Bluesky Plans</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli_tools.html">Command-Line Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="manager_config.html">RE Manager Configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="qserver_quick_ref.html"><em>qserver</em> : Quick Introduction</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Application Developer's Guide</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="interacting_with_qs.html">Interacting with Queue Server</a></li>
<li class="toctree-l1"><a class="reference internal" href="re_manager_api.html">Run Engine Manager API</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Related Projects</span></p>
<ul>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/bluesky-queueserver-api">Bluesky Queue Server API</a></li>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/bluesky-httpserver">Bluesky HTTP Server</a></li>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/bluesky-widgets">Bluesky Widgets</a></li>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/bluesky">Bluesky</a></li>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/ophyd">Ophyd</a></li>
<li class="toctree-l1"><a class="reference external" href="https://blueskyproject.io/databroker">Data Broker</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">bluesky-queueserver</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Release History</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/release_history.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="release-history">
<h1>Release History<a class="headerlink" href="#release-history" title="Link to this heading"></a></h1>
<section id="v0-0-21-2024-09-29">
<h2>v0.0.21 (2024-09-29)<a class="headerlink" href="#v0-0-21-2024-09-29" title="Link to this heading"></a></h2>
<section id="fixed">
<h3>Fixed<a class="headerlink" href="#fixed" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Bluesky builtin plans that use the <code class="docutils literal notranslate"><span class="pre">@plan</span></code> decorator are now correctly identified by queueserver.</p></li>
</ul>
</section>
</section>
<section id="v0-0-20-2024-07-25">
<h2>v0.0.20 (2024-07-25)<a class="headerlink" href="#v0-0-20-2024-07-25" title="Link to this heading"></a></h2>
<section id="added">
<h3>Added<a class="headerlink" href="#added" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Compatibility with Pydantic v2 and Python 3.12.</p></li>
<li><p>New default parameter types: <code class="docutils literal notranslate"><span class="pre">__READABLE__</span></code>, <code class="docutils literal notranslate"><span class="pre">__MOVABLE__</span></code>, <code class="docutils literal notranslate"><span class="pre">__FLYABLE__</span></code> and <code class="docutils literal notranslate"><span class="pre">__CALLABLE__</span></code>.</p></li>
<li><p>Support for <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Readable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Movable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Flyable</span></code>,
<code class="docutils literal notranslate"><span class="pre">collections.abc.Callable</span></code> and <code class="docutils literal notranslate"><span class="pre">typing.Callable</span></code> in plan headers.</p></li>
<li><p>Extemded support of types in plan annotation. New supported types: <code class="docutils literal notranslate"><span class="pre">typing.Iterable</span></code>,
<code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Configurable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Triggerable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Locatable</span></code>,
<code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Stageable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Pausable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Stoppable</span></code>,
<code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Subscribable</span></code>, <code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Checkable</span></code>.</p></li>
<li><p>RE Manager is now adding a prefix to each Redis key name. The default prefix is <code class="docutils literal notranslate"><span class="pre">qs_default</span></code>.
Custom prefix can be passed with <code class="docutils literal notranslate"><span class="pre">--redis-name-prefix</span></code> CLI parameter or set as <code class="docutils literal notranslate"><span class="pre">`network/redis_name_prefix`</span></code>
parameter in YML config file.</p></li>
</ul>
</section>
<section id="changed">
<h3>Changed<a class="headerlink" href="#changed" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>The temporary directory created by RE Manager in demo mode if IPython kernel option is enabled is
renamed from <code class="docutils literal notranslate"><span class="pre">qserver</span></code> to <code class="docutils literal notranslate"><span class="pre">qserver_<username></span></code>, so that each user has individual temporary directory.
The directory is used to create temporary copy of <code class="docutils literal notranslate"><span class="pre">profile_collection_sim</span></code> in demo mode.
It is never used in production.</p></li>
<li><p>By default, RE Manager is adding <code class="docutils literal notranslate"><span class="pre">qs_default</span></code> prefix to each Redis key. To access plan queue and history
created by older versions of RE Manager, pass <code class="docutils literal notranslate"><span class="pre">""</span></code> (empty string) to <code class="docutils literal notranslate"><span class="pre">--redis-name-prefix</span></code> CLI parameter
or <code class="docutils literal notranslate"><span class="pre">network/redis_name_prefix</span></code> parameter in the YML config file.</p></li>
</ul>
</section>
<section id="id1">
<h3>Fixed<a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>The name of temporary directory used by <code class="docutils literal notranslate"><span class="pre">qserver-console</span></code> and <code class="docutils literal notranslate"><span class="pre">qserver-qtconsole</span></code> to store IPython kernel
config file now contains user name (<code class="docutils literal notranslate"><span class="pre">/tmp/qserver_<username>/kernel_files</span></code>).</p></li>
</ul>
</section>
</section>
<section id="v0-0-19-2023-06-28">
<h2>v0.0.19 (2023-06-28)<a class="headerlink" href="#v0-0-19-2023-06-28" title="Link to this heading"></a></h2>
<section id="id2">
<h3>Added<a class="headerlink" href="#id2" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>New CLI parameters for ‘start-re-manager’ (and matching parameters for ‘qserver-list-plans-devices’):
<code class="docutils literal notranslate"><span class="pre">--use-python-kernel</span></code> (values ON/OFF, config file parameter <code class="docutils literal notranslate"><span class="pre">worker/use_ipython_kernel</span></code>, boolean,
env. variable <code class="docutils literal notranslate"><span class="pre">QSERVER_USE_IPYTHON_KERNEL</span></code>, boolean); <code class="docutils literal notranslate"><span class="pre">--ipython-dir</span></code> (IPython directory, overrides default
directory or IPYTHONDIR, config file parameter <code class="docutils literal notranslate"><span class="pre">startup/ipython_dir</span></code>); <code class="docutils literal notranslate"><span class="pre">--ipython-matplotlib</span></code>
(accepts the same values as <code class="docutils literal notranslate"><span class="pre">--matplotlib</span></code> parameter of IPython, config file parameter <code class="docutils literal notranslate"><span class="pre">worker/ipython_matplotlib</span></code>,
used only in the IPython kernel mode); <code class="docutils literal notranslate"><span class="pre">--ignore-invalid-plans</span></code> (values ON/OFF, boolean config file parameter
<code class="docutils literal notranslate"><span class="pre">startup/ignore_invalid_plans</span></code>); <code class="docutils literal notranslate"><span class="pre">--device-max-depth</span></code> (integer, config file parameter <code class="docutils literal notranslate"><span class="pre">startup/device_max_depth</span></code>,
restricts maximum depth for device components included in the list of existing devices).</p></li>
<li><p>An option to start IPython kernel in the worker process. The option is selected by starting RE Manager with
the option <code class="docutils literal notranslate"><span class="pre">--use-ipython-kernel=ON</span></code>, setting config file parameter <code class="docutils literal notranslate"><span class="pre">worker/use_ipython_kernel=True</span></code> or
environment variable <code class="docutils literal notranslate"><span class="pre">QSERVER_USE_IPYTHON_KERNEL=true</span></code>. Users may connect to the kernel directly using
Jupyter console. The mode may be useful when transitioning from the existing IPython workflow or for
debugging purposes.</p></li>
<li><p>New RE Manager status parameters: <code class="docutils literal notranslate"><span class="pre">ip_kernel_state</span></code> (None - environment is closed, <code class="docutils literal notranslate"><span class="pre">disabled</span></code> - IP kernel
is not started or not used in the current mode, <code class="docutils literal notranslate"><span class="pre">starting</span></code> - startup in progress, <code class="docutils literal notranslate"><span class="pre">idle</span></code>, <code class="docutils literal notranslate"><span class="pre">busy</span></code>);
<code class="docutils literal notranslate"><span class="pre">ip_kernel_captured</span></code> (None - environment is closed or the kernel is not used, True/False -
indicates if the kernel is running tasks started by RE Manager, clients may connect to IP kernel
directly and start tasks only when the kernel is not captured);</p></li>
<li><p>New worker environment state (<code class="docutils literal notranslate"><span class="pre">env_state</span></code> status parameter): <code class="docutils literal notranslate"><span class="pre">failed</span></code>. Indicates that the environment
failed to start and will be closed. The state is used internally and is unlikely to be reported.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">is_ipython_mode()</span></code> function may be used in startup code to detect if the code is executed in IPython
environment. The function returns correct result even if the code is running in the Python-based worker
environment with monkeypatched IPython package. The use cases are similar <code class="docutils literal notranslate"><span class="pre">is_re_worker_active()</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">register_plan</span></code> and <code class="docutils literal notranslate"><span class="pre">register_device</span></code> functions for using in startup code. Currently,
<code class="docutils literal notranslate"><span class="pre">register_plan</span></code> allows to explicitly exclude a given plan from processing by Queue Server
(may be useful for problematic plans) and <code class="docutils literal notranslate"><span class="pre">register_device</span></code> allows to exclude a given device or
set maximum depth for the device. This is experimental feature. Functionality may be added in the future.</p></li>
<li><p>RE Manager status returns the new <code class="docutils literal notranslate"><span class="pre">plan_queue_mode/ignore_failures</span></code> boolean parameter, which indicates
if the mode is enabled.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">queue_mode_set</span></code> API now accepts a value for <code class="docutils literal notranslate"><span class="pre">ignore_failures</span></code> mode.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">ignore_failures</span></code> mode may be enabled/disabled using <code class="docutils literal notranslate"><span class="pre">qserver</span></code> CLI tool
(<code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">queue</span> <span class="pre">mode</span> <span class="pre">set</span> <span class="pre">ignore_failures</span> <span class="pre">True</span></code> and <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">queue</span> <span class="pre">mode</span> <span class="pre">set</span> <span class="pre">ignore_failures</span> <span class="pre">False</span></code>).</p></li>
<li><p>New <code class="docutils literal notranslate"><span class="pre">queue_autostart</span></code> API (enable/disable AUTOSTART mode by passing <code class="docutils literal notranslate"><span class="pre">True</span></code>/<code class="docutils literal notranslate"><span class="pre">False</span></code> with the <code class="docutils literal notranslate"><span class="pre">enable</span></code> parameter).</p></li>
<li><p>New <code class="docutils literal notranslate"><span class="pre">queue_autostart_enabled</span></code> status parameter, which indicates if the queue is in the ‘autostart’ mode.</p></li>
<li><p>CLI options to enable/disable autostart: <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">queue</span> <span class="pre">autostart</span> <span class="pre">enable/disable</span></code>.</p></li>
<li><p>Each item in the list of current runs (<code class="docutils literal notranslate"><span class="pre">re_runs</span></code> API) now contains <code class="docutils literal notranslate"><span class="pre">scan_id</span></code> (integer) of the current scan.</p></li>
<li><p>The history items (<code class="docutils literal notranslate"><span class="pre">history_get</span></code> API) now contains a list of scan IDS (<code class="docutils literal notranslate"><span class="pre">scan_ids</span></code>, <code class="docutils literal notranslate"><span class="pre">list(int)</span></code>) in
addition to the list of <code class="docutils literal notranslate"><span class="pre">uids</span></code>.</p></li>
<li><p>New <code class="docutils literal notranslate"><span class="pre">config_get</span></code> API. Currently returns IPython kernel connect info (<code class="docutils literal notranslate"><span class="pre">ip_connect_info</span></code> key).</p></li>
<li><p>New parameter of <code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code>: <code class="docutils literal notranslate"><span class="pre">--ipython-kernel-ip</span></code> sets IP address of the kernel, the respective
config file parameter is <code class="docutils literal notranslate"><span class="pre">worker/ipython_kernel_ip</span></code> and environment variable <code class="docutils literal notranslate"><span class="pre">QSERVER_IPYTHON_KERNEL_IP</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">qserver-console</span></code> CLI tool, which downloads kernel connection info and starts Jupyter Console.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">config</span></code> option for <code class="docutils literal notranslate"><span class="pre">qserver</span></code> CLI tool.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">qserver-qtconsole</span></code> entry point (starts Jupyter Qt Console).</p></li>
<li><p>New CLI parameters for <code class="docutils literal notranslate"><span class="pre">qserver-list-plans-devices</span></code>: <code class="docutils literal notranslate"><span class="pre">--startup-profile</span></code>, <code class="docutils literal notranslate"><span class="pre">--use-ipython-kernel</span></code>
and <code class="docutils literal notranslate"><span class="pre">--ipython-dir</span></code>. If <code class="docutils literal notranslate"><span class="pre">--use-ipython-kernel=ON</span></code>, then the startup code is loaded as part of
initializing IPython kernel. The IPython kernel is created in a separate process and initialized
to load startup code (same as in the worker process of RE Manager), but never started.</p></li>
<li><p>Changed handling of CLI parameters by <code class="docutils literal notranslate"><span class="pre">qserver-list-plans-devices</span></code>. The parameters <code class="docutils literal notranslate"><span class="pre">--startup-dir</span></code>,
<code class="docutils literal notranslate"><span class="pre">--startup-script</span></code>, <code class="docutils literal notranslate"><span class="pre">--startup-module</span></code>, <code class="docutils literal notranslate"><span class="pre">--startup-profile</span></code> and <code class="docutils literal notranslate"><span class="pre">--ipython-dir</span></code> are now
handled identically to <code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code>.</p></li>
<li><p>New API: <code class="docutils literal notranslate"><span class="pre">environment_open</span></code> and <code class="docutils literal notranslate"><span class="pre">kernel_interrupt</span></code>.</p></li>
<li><p>CLI implementation: <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">environment</span> <span class="pre">open</span></code> and <code class="docutils literal notranslate"><span class="pre">kernel_interrupt</span></code>.</p></li>
</ul>
</section>
<section id="id3">
<h3>Changed<a class="headerlink" href="#id3" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">re_pause</span></code> API calls are now accepted whenever Run Engine is in the <code class="docutils literal notranslate"><span class="pre">running</span></code> state. For example,
the API may be used to pause the plan that was started in IPython kernel directly using Jupyter
console and not managed by RE Manager.</p></li>
</ul>
</section>
</section>
<section id="v0-0-18-2022-10-31">
<h2>v0.0.18 (2022-10-31)<a class="headerlink" href="#v0-0-18-2022-10-31" title="Link to this heading"></a></h2>
<section id="id4">
<h3>Fixed<a class="headerlink" href="#id4" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Improved manager and worker stability in case of malfunctioning plans (plans that block
Run Engine event loop).</p></li>
</ul>
</section>
<section id="id5">
<h3>Added<a class="headerlink" href="#id5" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>New <code class="docutils literal notranslate"><span class="pre">timeout</span></code> parameter for <code class="docutils literal notranslate"><span class="pre">ZMQCommSendThreads.send_message()</span></code>, <code class="docutils literal notranslate"><span class="pre">ZMQCommSendAsync.send_message()</span></code>
and <code class="docutils literal notranslate"><span class="pre">zmq_single_request()</span></code> functions. The timeout overrides the default timeout <code class="docutils literal notranslate"><span class="pre">timeout_recv</span></code>
set during instantiation of the respective classes for the particular request.</p></li>
<li><p>Support for managing parameters to RE Manager using configuration YML files.</p></li>
<li><p>New CLI parameter <code class="docutils literal notranslate"><span class="pre">--config</span></code> and environment variable <code class="docutils literal notranslate"><span class="pre">QSERVER_CONFIG</span></code> for passing
the path to config file to RE Manager.</p></li>
</ul>
</section>
</section>
<section id="v0-0-17-2022-10-02">
<h2>v0.0.17 (2022-10-02)<a class="headerlink" href="#v0-0-17-2022-10-02" title="Link to this heading"></a></h2>
<section id="id6">
<h3>Changed<a class="headerlink" href="#id6" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Now requires <code class="docutils literal notranslate"><span class="pre">bluesky>=1.7.0</span></code>.</p></li>
<li><p>Default user group name is changed from <code class="docutils literal notranslate"><span class="pre">admin</span></code> to <code class="docutils literal notranslate"><span class="pre">primary</span></code>. Users of applications
that rely on default user group name should change the group name in <code class="docutils literal notranslate"><span class="pre">user_group_permissions.yaml</span></code> file.</p></li>
</ul>
</section>
<section id="removed">
<h3>Removed<a class="headerlink" href="#removed" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Removed built-in protocol support, now relies on <code class="docutils literal notranslate"><span class="pre">bluesky.protocols</span></code>.</p></li>
</ul>
</section>
</section>
<section id="v0-0-16-2022-07-30">
<h2>v0.0.16 (2022-07-30)<a class="headerlink" href="#v0-0-16-2022-07-30" title="Link to this heading"></a></h2>
<section id="id7">
<h3>Added<a class="headerlink" href="#id7" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>New parameter <code class="docutils literal notranslate"><span class="pre">update_lists</span></code> added to <code class="docutils literal notranslate"><span class="pre">script_upload</span></code> API. The parameter accepts boolean value
(<code class="docutils literal notranslate"><span class="pre">True</span></code> by default) and allows to disable update of lists of existing and allowed plans and
devices after execution of the script. The parameter allows to improve efficiency of execution
of scripts that do not add or modify plans and devices in RE worker namespace. Update of
the lists may be disabled from CLI as <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">script</span> <span class="pre">upload</span> <span class="pre"><path-to-file></span> <span class="pre">keep-lists</span></code>.</p></li>
<li><p>New <code class="docutils literal notranslate"><span class="pre">lock</span></code>, <code class="docutils literal notranslate"><span class="pre">unlock</span></code> and <code class="docutils literal notranslate"><span class="pre">lock_info</span></code> API. The API are accessible from CLI using <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">lock</span></code>
and <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">unlock</span></code> commands.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">qserver-clear-lock</span></code> CLI tool for unlocking RE Manager if the lock key is lost and the emergency
lock key is not set or unknown.</p></li>
</ul>
</section>
<section id="id8">
<h3>Fixed<a class="headerlink" href="#id8" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Support for <code class="docutils literal notranslate"><span class="pre">happi</span> <span class="pre">v1.14.0</span></code>.</p></li>
</ul>
</section>
<section id="id9">
<h3>Changed<a class="headerlink" href="#id9" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Foreground tasks (started using <code class="docutils literal notranslate"><span class="pre">script_upload</span></code> and <code class="docutils literal notranslate"><span class="pre">function_execute</span></code> API) are now executed
in the main thread of RE Worker.</p></li>
</ul>
</section>
</section>
<section id="v0-0-15-2022-06-24">
<h2>v0.0.15 (2022-06-24)<a class="headerlink" href="#v0-0-15-2022-06-24" title="Link to this heading"></a></h2>
<section id="id10">
<h3>Added<a class="headerlink" href="#id10" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Plan results (in plan history) now include error message (<code class="docutils literal notranslate"><span class="pre">msg</span></code> key), which contains error message or
full traceback in case of failing plan.</p></li>
<li><p>Support for <code class="docutils literal notranslate"><span class="pre">environment_destroy</span></code> API in <code class="docutils literal notranslate"><span class="pre">creating_environment</span></code> RE Manager state. Now the requests
to destroy environment are accepted when <code class="docutils literal notranslate"><span class="pre">status["worker_environment_exists"]</span> <span class="pre">is</span> <span class="pre">True</span></code> or
<code class="docutils literal notranslate"><span class="pre">status["manager_state"]</span> <span class="pre">==</span> <span class="pre">"creating_environment"</span></code>.</p></li>
<li><p>API functions <code class="docutils literal notranslate"><span class="pre">generate_zmq_keys</span></code>, <code class="docutils literal notranslate"><span class="pre">generate_zmq_public_key</span></code>, <code class="docutils literal notranslate"><span class="pre">validate_zmq_key</span></code> can now be imported
directly from <code class="docutils literal notranslate"><span class="pre">bluesky_queueserver</span></code></p></li>
<li><p>Patching of IPython-style startup scripts: <code class="docutils literal notranslate"><span class="pre">__file__</span></code> variable now returns the path to the original unpatched script.</p></li>
</ul>
</section>
<section id="id11">
<h3>Fixed<a class="headerlink" href="#id11" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Capturing console output with updating progress bars (Python 3.8, 3.9).</p></li>
<li><p>A bug in the code for management of exceptions that occur during preparation of plans for execution.</p></li>
<li><p>A bug that prevented single character device/plan names to be properly handled by the code that
converts device/plan names to the respective objects.</p></li>
</ul>
</section>
<section id="id12">
<h3>Changed<a class="headerlink" href="#id12" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>The plan <code class="docutils literal notranslate"><span class="pre">exit_status</span></code> (in plan history) now takes values <code class="docutils literal notranslate"><span class="pre">completed</span></code>, <code class="docutils literal notranslate"><span class="pre">failed</span></code>, <code class="docutils literal notranslate"><span class="pre">stopped</span></code>, <code class="docutils literal notranslate"><span class="pre">aborted</span></code>,
<code class="docutils literal notranslate"><span class="pre">halted</span></code>, <code class="docutils literal notranslate"><span class="pre">unknown</span></code>.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">stopped</span></code> plans (<code class="docutils literal notranslate"><span class="pre">re_stop</span></code> API) are considered successful and no longer pushed back in the queue.
The <code class="docutils literal notranslate"><span class="pre">stopped</span></code> plans are inserted in the back of the queue in LOOP mode.</p></li>
<li><p>Standard names for parameters for CLI tools: <code class="docutils literal notranslate"><span class="pre">--zmq-control-addr</span></code> is used to pass address of RE Manager
control socket and <code class="docutils literal notranslate"><span class="pre">--zmq-info-addr</span></code> is used to pass the address of RE Manager information socket
(currently used for publishing console output). Old parameter names are deprecated, but still supported.</p></li>
<li><p>Standard names for environment variables: <code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_CONTROL_ADDRESS_FOR_SERVER</span></code>,
<code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_CONTROL_ADDRESS</span></code>, <code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_INFO_ADDRESS_FOR_SERVER</span></code>, <code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_INFO_ADDRESS</span></code>
are used to pass control and information socket address to the server (<code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code>) and clients
(<code class="docutils literal notranslate"><span class="pre">qserver</span></code>, <code class="docutils literal notranslate"><span class="pre">qserver-console-monitor</span></code>). An address passed as a parameter overrides the address passed as
environment variable. Old environment variable names are deprecated, but still supported.</p></li>
<li><p>Changed name of the environment variable used to pass the private encryption key to <code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code>
to <code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_PRIVATE_KEY_FOR_SERVER</span></code>. (<code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_PRIVATE_KEY</span></code> is still supported, but deprecated.)
Public key is still passed to <code class="docutils literal notranslate"><span class="pre">qserver</span></code> using <code class="docutils literal notranslate"><span class="pre">QSERVER_ZMQ_PUBLIC_KEY</span></code>.</p></li>
<li><p>The components of Area Detectors are no longer included in the list of available devices.</p></li>
<li><p>Improved handling of IPython-style startup scripts.</p></li>
<li><p>Minor change in representation of plan execution results in items of the plan history.
If plan execution fails, the <code class="docutils literal notranslate"><span class="pre">msg</span></code> parameter contains a brief message that identify the error
(may not be helpful) and <code class="docutils literal notranslate"><span class="pre">traceback</span></code> parameter contains full traceback. The parameters are empty strings
in case the plan succeeds.</p></li>
<li><p>Similar change to representation of task execution results returned by <code class="docutils literal notranslate"><span class="pre">task_result</span></code> API. Now <code class="docutils literal notranslate"><span class="pre">return_value</span></code>
is <code class="docutils literal notranslate"><span class="pre">None</span></code> in case the task fails and <code class="docutils literal notranslate"><span class="pre">msg</span></code> and <code class="docutils literal notranslate"><span class="pre">traceback</span></code> contain brief error message and traceback
of the raised exception.</p></li>
<li><p>Improved default handling of strings in the parameter processing code. Now any string (any combination
of characters) can be passed with a parameter, which does not have type annotation. The strings that
match one of the allowed device or plan names are going to be converted to the respective objects.</p></li>
</ul>
</section>
</section>
<section id="v0-0-14-2022-04-08">
<h2>v0.0.14 (2022-04-08)<a class="headerlink" href="#v0-0-14-2022-04-08" title="Link to this heading"></a></h2>
<section id="id13">
<h3>Fixed<a class="headerlink" href="#id13" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Capturing console output with updating progress bars (Python 3.8, 3.9).</p></li>
</ul>
</section>
</section>
<section id="v0-0-13-2022-04-05">
<h2>v0.0.13 (2022-04-05)<a class="headerlink" href="#v0-0-13-2022-04-05" title="Link to this heading"></a></h2>
<section id="id14">
<h3>Added<a class="headerlink" href="#id14" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Implementation of <code class="docutils literal notranslate"><span class="pre">subscribe()</span></code> and <code class="docutils literal notranslate"><span class="pre">unsubscribe()</span></code> methods in <code class="docutils literal notranslate"><span class="pre">ReceiveConsoleOutput</span></code>
and <code class="docutils literal notranslate"><span class="pre">ReceiveConsoleOutputAsync</span></code> classes</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ReceiveConsoleOutputAsync.stop()</span></code> method now accepts an optional <code class="docutils literal notranslate"><span class="pre">unsubscribe</span></code> parameter
that controls if 0MQ socket is unsubscribed when the acquisition is stopped. Default is <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p></li>
<li><p>Timestamps <code class="docutils literal notranslate"><span class="pre">time_start</span></code> and <code class="docutils literal notranslate"><span class="pre">time_stop</span></code> are now added to <code class="docutils literal notranslate"><span class="pre">result</span></code> dictionary of
each item in plan history.</p></li>
</ul>
</section>
<section id="id15">
<h3>Fixed<a class="headerlink" href="#id15" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Implemented proper handling of non-JSON or invalid JSON requests.</p></li>
</ul>
</section>
</section>
<section id="v0-0-12-2022-03-08">
<h2>v0.0.12 (2022-03-08)<a class="headerlink" href="#v0-0-12-2022-03-08" title="Link to this heading"></a></h2>
<section id="id16">
<h3>Fixed<a class="headerlink" href="#id16" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Bug in handling of negative indices by <code class="docutils literal notranslate"><span class="pre">queue_item_move</span></code> and API.</p></li>
<li><p>proper update of <code class="docutils literal notranslate"><span class="pre">plan_queue_uid</span></code> by <code class="docutils literal notranslate"><span class="pre">queue_item_execute</span></code> API.</p></li>
</ul>
</section>
<section id="id17">
<h3>Changed<a class="headerlink" href="#id17" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Renamed parameters of <code class="docutils literal notranslate"><span class="pre">permissions_reload</span></code> API: <code class="docutils literal notranslate"><span class="pre">reload_permissions</span></code> is renamed
to <code class="docutils literal notranslate"><span class="pre">restore_permissions</span></code>, <code class="docutils literal notranslate"><span class="pre">reload_plans_devices</span></code> is renamed to <code class="docutils literal notranslate"><span class="pre">restore_plans_devices</span></code>.</p></li>
<li><p>Default BEC: no longer plot with best effort callback (improves performance).</p></li>
</ul>
</section>
</section>
<section id="v0-0-11-2022-02-27">
<h2>v0.0.11 (2022-02-27)<a class="headerlink" href="#v0-0-11-2022-02-27" title="Link to this heading"></a></h2>
<section id="id18">
<h3>Fixed<a class="headerlink" href="#id18" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Fixed handling of negative item indices by <code class="docutils literal notranslate"><span class="pre">queue_item_add</span></code> API
(<code class="docutils literal notranslate"><span class="pre">pos=-1</span></code> now adds an item to the back of the queue).</p></li>
</ul>
</section>
<section id="id19">
<h3>Added<a class="headerlink" href="#id19" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>New <code class="docutils literal notranslate"><span class="pre">task_status</span></code> API. The API may be called for a single task from CLI as
<code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">task</span> <span class="pre">status</span> <span class="pre"><task-uid></span></code>.</p></li>
</ul>
</section>
<section id="id20">
<h3>Changed<a class="headerlink" href="#id20" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">status</span></code> API is now returning Queue Server version number as part of <code class="docutils literal notranslate"><span class="pre">msg</span></code>,
e.g. <code class="docutils literal notranslate"><span class="pre">"RE</span> <span class="pre">Manager</span> <span class="pre">v0.0.11"</span></code>.</p></li>
<li><p>Extended <code class="docutils literal notranslate"><span class="pre">re_pause</span></code> API. Now the <code class="docutils literal notranslate"><span class="pre">option</span></code> parameter is optional.
The default value is <code class="docutils literal notranslate"><span class="pre">"option":</span> <span class="pre">"deferred"</span></code>.</p></li>
</ul>
</section>
</section>
<section id="v0-0-10-2022-02-08">
<h2>v0.0.10 (2022-02-08)<a class="headerlink" href="#v0-0-10-2022-02-08" title="Link to this heading"></a></h2>
<section id="id21">
<h3>Fixed<a class="headerlink" href="#id21" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>A bug that allowed classes defined in the global scope of the startup script and recognized as
<code class="docutils literal notranslate"><span class="pre">bluesky.protocols.Movable</span></code>, <code class="docutils literal notranslate"><span class="pre">Readable</span></code> or <code class="docutils literal notranslate"><span class="pre">Flyable</span></code> (e.g. <code class="docutils literal notranslate"><span class="pre">ophyd.Device</span></code>) to be
included in the list of existing devices. Only instantiated class objects are currently
included in the list.</p></li>
<li><p>A deficiency in the code that loads Python scripts (not startup scripts from the folder
as in IPython <code class="docutils literal notranslate"><span class="pre">profile_collection</span></code>) into the environment that failed to load scripts containing
definitions of devices with components.</p></li>
</ul>
</section>
<section id="id22">
<h3>Added<a class="headerlink" href="#id22" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Support for passing subdevice names as values of plan parameters.</p></li>
<li><p>Support for regular expressions in the lists of names defined in <code class="docutils literal notranslate"><span class="pre">plans</span></code>
and <code class="docutils literal notranslate"><span class="pre">devices</span></code> sections of <code class="docutils literal notranslate"><span class="pre">parameter_annotation_decorator</span></code>. Keywords <code class="docutils literal notranslate"><span class="pre">__MOTOR__</span></code>,
<code class="docutils literal notranslate"><span class="pre">__DETECTOR__</span></code>, <code class="docutils literal notranslate"><span class="pre">__READABLE__</span></code> or <code class="docutils literal notranslate"><span class="pre">__FLYABLE__</span></code> can be used in conjunction with
regular expression to select device of the respective types.</p></li>
<li><p>New boolean parameters of the plan parameter annotation (<code class="docutils literal notranslate"><span class="pre">convert_plan_names</span></code>
and <code class="docutils literal notranslate"><span class="pre">convert_device_names</span></code>) for explicitly enabling/disabling conversion of names
of plans and/or devices passed as parameter values. Setting those parameters
overrides the default behavior and should be used with caution.</p></li>
<li><p>Support for subdevice names in <strong>‘user_group_permissions.yaml’</strong>.</p></li>
</ul>
</section>
<section id="id23">
<h3>Changed<a class="headerlink" href="#id23" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>The algorithm for processing of user group permissions has changed. The old
<strong>‘user_group_permissions.yaml’</strong> may no longer work as expected. If the stock
<strong>‘user_group_permissions.yaml’</strong> is used for the project, replace it with
the updated file from the repository. Otherwise update the existing file
using following guidelines:</p>
<ul>
<li><p>If the project uses custom <strong>‘user_group_permissions.yaml’</strong>, then insert <code class="docutils literal notranslate"><span class="pre">:</span></code>
before each regular expression in the lists (e.g. change <code class="docutils literal notranslate"><span class="pre">"^count"</span></code> to
<code class="docutils literal notranslate"><span class="pre">":^count"</span></code>, <code class="docutils literal notranslate"><span class="pre">"^det"</span></code> to <code class="docutils literal notranslate"><span class="pre">":^det"</span></code> etc.).</p></li>
<li><p>In previous versions, only the lists with regular expressions were supported.
Now the lists may include explicitly listed plan, device or subdevice names,
such as <code class="docutils literal notranslate"><span class="pre">"count"</span></code>, <code class="docutils literal notranslate"><span class="pre">"det1"</span></code>, <code class="docutils literal notranslate"><span class="pre">"det1.val"</span></code> (there is no need to use regular
expressions such as <code class="docutils literal notranslate"><span class="pre">":^count$"</span></code> to allow the plan <code class="docutils literal notranslate"><span class="pre">count</span></code>).</p></li>
<li><p>The supported patterns allow to control which subdevices are included. For example,
the pattern <code class="docutils literal notranslate"><span class="pre">:^det</span></code> includes all devices with names starting with <code class="docutils literal notranslate"><span class="pre">det</span></code>,
but no subdevices. The pattern <code class="docutils literal notranslate"><span class="pre">":^det:?.*"</span></code> selects all subdevices with
unlimited depth. Patterns may include the parameter <code class="docutils literal notranslate"><span class="pre">depth</span></code> that limits
maximum depth for subdevices, for example <code class="docutils literal notranslate"><span class="pre">":^det:?.*:depth=2"</span></code> adds
subdevices and subdevices of subdevices. See
<a class="reference external" href="https://blueskyproject.io/bluesky-queueserver/features_and_config.html#configuring-user-group-permissions">Configuring User Group Permissions</a>
for more detailed instructions.</p></li>
</ul>
</li>
</ul>
</section>
<section id="id24">
<h3>Removed<a class="headerlink" href="#id24" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Built-in types <code class="docutils literal notranslate"><span class="pre">AllDetectors</span></code>, <code class="docutils literal notranslate"><span class="pre">AllMotors</span></code>, <code class="docutils literal notranslate"><span class="pre">AllFlyers</span></code> and <code class="docutils literal notranslate"><span class="pre">AllPlans</span></code> can no
longer be used in parameter annotations of defined in <code class="docutils literal notranslate"><span class="pre">parameter_annotation_decorator</span></code>.
Use regular expressions in conjunction with keywords <code class="docutils literal notranslate"><span class="pre">__MOTOR__</span></code>, <code class="docutils literal notranslate"><span class="pre">__DETECTOR__</span></code>,
<code class="docutils literal notranslate"><span class="pre">__READABLE__</span></code> or <code class="docutils literal notranslate"><span class="pre">__FLYABLE__</span></code> to create lists of devices of respective types.
Use built-in types <code class="docutils literal notranslate"><span class="pre">__PLAN__</span></code>, <code class="docutils literal notranslate"><span class="pre">__DEVICE__</span></code>, <code class="docutils literal notranslate"><span class="pre">__PLAN_OR_DEVICE__</span></code> in parameter
annotations to selectively enable conversion of names for all plans and/or
devices without creating lists of names. Alternatively, use <code class="docutils literal notranslate"><span class="pre">convert_plan_names</span></code>
or <code class="docutils literal notranslate"><span class="pre">convert_device_names</span></code> parameters of the annotation in order to explicitly
enable/disable conversion of all plan/device names.</p></li>
</ul>
</section>
</section>
<section id="v0-0-9-2022-01-04">
<h2>v0.0.9 (2022-01-04)<a class="headerlink" href="#v0-0-9-2022-01-04" title="Link to this heading"></a></h2>
<section id="id25">
<h3>Fixed<a class="headerlink" href="#id25" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Numerous fixes related to reliability of Queue Server operation.</p></li>
<li><p>Implemented changes to make Queue Server compatible with <code class="docutils literal notranslate"><span class="pre">aioredis</span></code> v2.</p></li>
</ul>
</section>
<section id="id26">
<h3>Added<a class="headerlink" href="#id26" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>The new <code class="docutils literal notranslate"><span class="pre">--update-existing-plans-devices</span></code> CLI parameter of <code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code> was added that
controls when the file that stores existing plans and devices is updated.</p></li>
<li><p>A new parameter of <code class="docutils literal notranslate"><span class="pre">permissions_reload</span></code> 0MQ API: <code class="docutils literal notranslate"><span class="pre">reload_plans_devices</span></code> (boolean, the default
value is <code class="docutils literal notranslate"><span class="pre">False</span></code>). If set <code class="docutils literal notranslate"><span class="pre">True</span></code>, the parameter forces RE Manager to load the list of
existing plans and devices from the disk file. The API may be called with <code class="docutils literal notranslate"><span class="pre">reload_plans_devices=True</span></code>
using <code class="docutils literal notranslate"><span class="pre">qserver</span></code> CLI tool as <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">permissions</span> <span class="pre">reload</span> <span class="pre">lists</span></code>.</p></li>
<li><p>A new parameter of <code class="docutils literal notranslate"><span class="pre">permissions_reload</span></code> 0MQ API: <code class="docutils literal notranslate"><span class="pre">reload_permissions</span></code> (boolean, the default
value is <code class="docutils literal notranslate"><span class="pre">True</span></code>). If <code class="docutils literal notranslate"><span class="pre">True</span></code>, permissions are reloaded from the disk file (if allowed), otherwise
the currently used permissions are used in computations.</p></li>
<li><p>Extended the number of states of worker environment. Currently used states include <code class="docutils literal notranslate"><span class="pre">initializing</span></code>,
<code class="docutils literal notranslate"><span class="pre">idle</span></code>, <code class="docutils literal notranslate"><span class="pre">executing_plan</span></code>, <code class="docutils literal notranslate"><span class="pre">executing_task</span></code>, <code class="docutils literal notranslate"><span class="pre">closing</span></code>, <code class="docutils literal notranslate"><span class="pre">closed</span></code>.</p></li>
<li><p>A new status fields (<code class="docutils literal notranslate"><span class="pre">status</span></code> 0MQ API): <code class="docutils literal notranslate"><span class="pre">worker_environment_state</span></code>, <code class="docutils literal notranslate"><span class="pre">worker_background_tasks</span></code>,
<code class="docutils literal notranslate"><span class="pre">task_results_uid</span></code>, <code class="docutils literal notranslate"><span class="pre">plans_existing_uid</span></code>, <code class="docutils literal notranslate"><span class="pre">devices_existing_uid</span></code>.</p></li>
<li><p>Extended the number of sections in specification of user group permissions (e.g. in
<code class="docutils literal notranslate"><span class="pre">user_group_permissions.yaml</span></code> file). The new sections (<code class="docutils literal notranslate"><span class="pre">allowed_functions</span></code> and <code class="docutils literal notranslate"><span class="pre">forbidden_functions</span></code>)
define conditions for names of functions that are accessible using <code class="docutils literal notranslate"><span class="pre">function_execute</span></code> API by users
from each user groups.</p></li>
<li><p>New 0MQ API: <code class="docutils literal notranslate"><span class="pre">script_upload</span></code>, <code class="docutils literal notranslate"><span class="pre">function_execute</span></code>, <code class="docutils literal notranslate"><span class="pre">task_result</span></code>, <code class="docutils literal notranslate"><span class="pre">plans_existing</span></code>,
<code class="docutils literal notranslate"><span class="pre">devices_existing</span></code>. CLI implementation: <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">script</span> <span class="pre">upload</span></code> (<code class="docutils literal notranslate"><span class="pre">script_upload</span></code> API),
<code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">function</span> <span class="pre">execute</span></code> (<code class="docutils literal notranslate"><span class="pre">function_execute</span></code> API), <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">task</span> <span class="pre">result</span></code> (<code class="docutils literal notranslate"><span class="pre">task_result</span></code> API),
<code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">existing</span> <span class="pre">devices</span></code> (<code class="docutils literal notranslate"><span class="pre">devices_existing</span></code> API), <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">existing</span> <span class="pre">plans</span></code> (<code class="docutils literal notranslate"><span class="pre">plans_existing</span></code> API).</p></li>
<li><p>A new 0MQ API: <code class="docutils literal notranslate"><span class="pre">permissions_set</span></code> and <code class="docutils literal notranslate"><span class="pre">permissions_get</span></code> that allow uploading and downloading
user group permissions. CLI support for the new API: <code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">permissions</span> <span class="pre">set</span> <span class="pre"><fln.yaml></span></code> and
<code class="docutils literal notranslate"><span class="pre">qserver</span> <span class="pre">permissions</span> <span class="pre">get</span></code>.</p></li>
<li><p>A new parameter of <code class="docutils literal notranslate"><span class="pre">start-re-manager</span></code> CLI tool: <code class="docutils literal notranslate"><span class="pre">--user-group-permissions-reload</span></code>. The parameter accepts
values <code class="docutils literal notranslate"><span class="pre">NEVER</span></code>, <code class="docutils literal notranslate"><span class="pre">ON_REQUEST</span></code> and <code class="docutils literal notranslate"><span class="pre">ON_STARTUP</span></code>.</p></li>
<li><p>A new section in documentation on management of user group permissions.</p></li>
</ul>
</section>
<section id="id27">
<h3>Changed<a class="headerlink" href="#id27" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Refactoring of the code for management of user group permissions and lists of existing and
allowed plans and devices to make it more consistent. The identical lists of user permissions
and existing plans and devices are now maintained by worker and manager processes.</p></li>
<li><p>The lists of existing plans and devices used by RE Manager (both manager and worker processes)
is automatically updated each time plans and devices in are changed in RE namespace (currently
RE namespace is changed only when a new worker environment is opened).</p></li>
<li><p>All sections for user group permissions are now optional. The <code class="docutils literal notranslate"><span class="pre">forbidden_plans</span></code>,
<code class="docutils literal notranslate"><span class="pre">forbidden_devices</span></code> and <code class="docutils literal notranslate"><span class="pre">forbidden_functions</span></code> sections could be skipped if there are
no forbidden items that need to be excluded. Skipping <code class="docutils literal notranslate"><span class="pre">allowed_...</span></code> section disables all
items (plans, devices or functions) for the group, e.g. if <code class="docutils literal notranslate"><span class="pre">allowed_plans</span></code> is skipped,
users from this group will not be able to submit or run any plans. Since rules for
the <code class="docutils literal notranslate"><span class="pre">root</span></code> group are applied to the lists accessible by users from all other groups,
skipping <code class="docutils literal notranslate"><span class="pre">allowed_plans</span></code> for <code class="docutils literal notranslate"><span class="pre">root</span></code> disables all plans for all other groups.</p></li>
</ul>
</section>
</section>
<section id="v0-0-8-2021-10-15">
<h2>v0.0.8 (2021-10-15)<a class="headerlink" href="#v0-0-8-2021-10-15" title="Link to this heading"></a></h2>
<p>Maintenance release.</p>
</section>
<section id="v0-0-7-2021-10-06">
<h2>v0.0.7 (2021-10-06)<a class="headerlink" href="#v0-0-7-2021-10-06" title="Link to this heading"></a></h2>
<section id="id28">
<h3>Fixed<a class="headerlink" href="#id28" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Behavior of <code class="docutils literal notranslate"><span class="pre">re_pause</span></code> 0MQ API: if <code class="docutils literal notranslate"><span class="pre">re_pause</span></code> is called past the last checkpoint of the plan,
the plan is considered successfully completed and execution of the queue is stopped.
The stopped queue can be started again using <code class="docutils literal notranslate"><span class="pre">queue_start</span></code> API request.</p></li>
<li><p>JSON schemas and code using validation of JSON schemas was modified for compatibility with
<code class="docutils literal notranslate"><span class="pre">jsonschema</span></code> v4.0.1. Queue server still works with older versions of <code class="docutils literal notranslate"><span class="pre">jsonschema</span></code>.</p></li>
</ul>
</section>
<section id="id29">
<h3>Added<a class="headerlink" href="#id29" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>A new boolean flag (<code class="docutils literal notranslate"><span class="pre">pause_pending</span></code>) added to dictionary returned by <code class="docutils literal notranslate"><span class="pre">status</span></code> API.
The flag is <code class="docutils literal notranslate"><span class="pre">True</span></code> when request to pause a plan (<code class="docutils literal notranslate"><span class="pre">re_pause</span></code> API) was accepted by the Queue Server,
but not processed by the Run Engine. The flag is set in case of immediate and deferred pause request.
The flag is cleared automatically (set to <code class="docutils literal notranslate"><span class="pre">False</span></code>) when the request is processed and the plan is paused
or the queue is stopped (if deferred pause is requested after the last checkpoint of the plan).</p></li>
</ul>
</section>
</section>
<section id="v0-0-6-2021-09-16">
<h2>v0.0.6 (2021-09-16)<a class="headerlink" href="#v0-0-6-2021-09-16" title="Link to this heading"></a></h2>
<section id="id30">
<h3>Added<a class="headerlink" href="#id30" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>New API: <code class="docutils literal notranslate"><span class="pre">ReceiveConsoleOutputAsync</span></code> (async version of <code class="docutils literal notranslate"><span class="pre">ReceiveConsoleOutput</span></code>)
for receiving console output from RE Manager in <cite>asyncio</cite>-based applications (e.g. HTTP Server).</p></li>
</ul>
</section>
<section id="id31">
<h3>Changed<a class="headerlink" href="#id31" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p>Renamed parameters of <cite>start-re-manager</cite>: <code class="docutils literal notranslate"><span class="pre">--zmq-publish</span></code> is renamed to <code class="docutils literal notranslate"><span class="pre">--zmq-publish-console</span></code>,
<code class="docutils literal notranslate"><span class="pre">--zmq-publish-addr</span></code> is renamed to <code class="docutils literal notranslate"><span class="pre">--zmq-publish-console-addr</span></code>.</p></li>
<li><p>Parameters <code class="docutils literal notranslate"><span class="pre">default</span></code>, <code class="docutils literal notranslate"><span class="pre">min</span></code>, <code class="docutils literal notranslate"><span class="pre">max</span></code> and <code class="docutils literal notranslate"><span class="pre">step</span></code> of <code class="docutils literal notranslate"><span class="pre">parameter_annotation_decorator</span></code> now must be
python expressions of supported types (<code class="docutils literal notranslate"><span class="pre">default</span></code>) or <cite>int</cite> or <cite>float</cite> numbers (<code class="docutils literal notranslate"><span class="pre">min</span></code>, <code class="docutils literal notranslate"><span class="pre">max</span></code>
and <code class="docutils literal notranslate"><span class="pre">step</span></code>). In previous versions the parameter values had to be converted to strings in user code.</p></li>
</ul>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="tutorials.html" class="btn btn-neutral float-left" title="Tutorials" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="contributing.html" class="btn btn-neutral float-right" title="Contributing" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 2019-2021, Brookhaven National Laboratory.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>