a2p2 0.2.15__py3-none-any.whl → 0.7.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- a2p2/__main__.py +39 -0
- a2p2/chara/facility.py +51 -3
- a2p2/chara/gui.py +29 -5
- a2p2/client.py +144 -34
- a2p2/facility.py +11 -1
- a2p2/gui.py +32 -1
- a2p2/jmmc/__init__.py +7 -0
- a2p2/jmmc/catalogs.py +129 -0
- a2p2/jmmc/generated_models.py +191 -0
- a2p2/jmmc/models.py +104 -0
- a2p2/jmmc/services.py +16 -0
- a2p2/jmmc/utils.py +130 -0
- a2p2/jmmc/webservices.py +48 -0
- a2p2/ob.py +95 -9
- a2p2/samp.py +17 -0
- a2p2/version.py +205 -137
- a2p2/vlti/conf/GRAVITY_ditTable.json +21 -19
- a2p2/vlti/conf/GRAVITY_rangeTable.json +200 -28
- a2p2/vlti/conf/MATISSE_rangeTable.json +58 -22
- a2p2/vlti/conf/PIONIER_ditTable.json +1 -1
- a2p2/vlti/conf/PIONIER_rangeTable.json +16 -18
- a2p2/vlti/facility.py +156 -118
- a2p2/vlti/gravity.py +243 -311
- a2p2/vlti/gui.py +162 -40
- a2p2/vlti/instrument.py +264 -49
- a2p2/vlti/matisse.py +61 -147
- a2p2/vlti/pionier.py +34 -157
- {a2p2-0.2.15.dist-info → a2p2-0.7.4.dist-info}/METADATA +34 -20
- a2p2-0.7.4.dist-info/RECORD +39 -0
- {a2p2-0.2.15.dist-info → a2p2-0.7.4.dist-info}/WHEEL +1 -1
- {a2p2-0.2.15.dist-info → a2p2-0.7.4.dist-info}/entry_points.txt +0 -1
- a2p2/vlti/confP104/GRAVITY_ditTable.json +0 -122
- a2p2/vlti/confP104/GRAVITY_rangeTable.json +0 -202
- a2p2/vlti/confP104/MATISSE_ditTable.json +0 -2
- a2p2/vlti/confP104/MATISSE_rangeTable.json +0 -202
- a2p2/vlti/confP104/PIONIER_ditTable.json +0 -77
- a2p2/vlti/confP104/PIONIER_rangeTable.json +0 -118
- a2p2/vlti/confP105/GRAVITY_ditTable.json +0 -37
- a2p2/vlti/confP105/GRAVITY_rangeTable.json +0 -42
- a2p2/vlti/confP105/MATISSE_ditTable.json +0 -2
- a2p2/vlti/confP105/MATISSE_rangeTable.json +0 -44
- a2p2/vlti/confP105/PIONIER_ditTable.json +0 -25
- a2p2/vlti/confP105/PIONIER_rangeTable.json +0 -38
- a2p2-0.2.15.dist-info/RECORD +0 -44
- {a2p2-0.2.15.dist-info → a2p2-0.7.4.dist-info}/LICENSE +0 -0
- {a2p2-0.2.15.dist-info → a2p2-0.7.4.dist-info}/top_level.txt +0 -0
a2p2/ob.py
CHANGED
@@ -6,6 +6,10 @@ import logging
|
|
6
6
|
import json
|
7
7
|
import xml.etree.ElementTree as ET
|
8
8
|
from collections import defaultdict, namedtuple, OrderedDict
|
9
|
+
import re
|
10
|
+
|
11
|
+
import copy
|
12
|
+
|
9
13
|
|
10
14
|
logger = logging.getLogger(__name__)
|
11
15
|
|
@@ -22,8 +26,11 @@ def etree_to_dict(t):
|
|
22
26
|
d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
|
23
27
|
# print("add d=%s"%str(d))
|
24
28
|
if t.attrib:
|
25
|
-
|
26
|
-
|
29
|
+
attrs = {}
|
30
|
+
for k, v in t.attrib.items():
|
31
|
+
if not "{" in k[0]: # ignore elementName with prefix
|
32
|
+
attrs[k]=v
|
33
|
+
d[t.tag].update(attrs)
|
27
34
|
if t.text:
|
28
35
|
text = t.text.strip()
|
29
36
|
if children or t.attrib:
|
@@ -33,6 +40,66 @@ def etree_to_dict(t):
|
|
33
40
|
d[t.tag] = text
|
34
41
|
return d
|
35
42
|
|
43
|
+
def normalizeObj(obj):
|
44
|
+
"""
|
45
|
+
Modify in place the structure if required.
|
46
|
+
Note:
|
47
|
+
dict key must be valid identifier (only tested for EXTRA_INFORMATIONS created fields)
|
48
|
+
"""
|
49
|
+
otype=type(obj)
|
50
|
+
if otype is dict:
|
51
|
+
for k,v in obj.items():
|
52
|
+
|
53
|
+
if k in ['observationConfiguration', 'HAinterval', 'LSTinterval'] and not isinstance(v, list):
|
54
|
+
# always defines observationConfiguration as a list
|
55
|
+
normalizeObj(v)
|
56
|
+
obj[k]=[v]
|
57
|
+
elif k=='EXTRA_INFORMATIONS':
|
58
|
+
#print(f"Updating dict {k} was : {obj[k]}")
|
59
|
+
# normalize input that may have various form on list of dict
|
60
|
+
try:
|
61
|
+
fields=[]
|
62
|
+
funits={}
|
63
|
+
for fk in ["parameter","field"]:
|
64
|
+
if fk in obj[k]:
|
65
|
+
l=obj[k][fk].copy()
|
66
|
+
#print(f"'{fk}' => {l}\n({type(l)})\n")
|
67
|
+
if type(l) is dict:
|
68
|
+
fields.append(l)
|
69
|
+
else:
|
70
|
+
fields+=l
|
71
|
+
|
72
|
+
#print(f"Fields to update: {fields}")
|
73
|
+
#store new fields
|
74
|
+
for vn in fields:
|
75
|
+
fname=vn["name"]
|
76
|
+
# test if we have to normalize field name that will become a python field
|
77
|
+
if not fname.isidentifier():
|
78
|
+
# replace unvalid chars by _ and append F to avoid starting by _
|
79
|
+
fname=re.sub('^_','F_', re.sub('\W|^(?=\d)','_', fname))
|
80
|
+
obj[k][fname]=vn["value"]
|
81
|
+
if "unit" in vn:
|
82
|
+
funits[fname]=vn["unit"]
|
83
|
+
#store units
|
84
|
+
obj[k]["field_units"]=funits
|
85
|
+
# remove old arrays or dicts
|
86
|
+
for fk in ["parameter","field"]:
|
87
|
+
if fk in obj[k]:
|
88
|
+
del obj[k][fk]
|
89
|
+
pass
|
90
|
+
except:
|
91
|
+
import traceback
|
92
|
+
print (traceback.format_exc())
|
93
|
+
print(f"\nCan't read {v}")
|
94
|
+
pass
|
95
|
+
else:
|
96
|
+
normalizeObj(v)
|
97
|
+
return obj
|
98
|
+
elif otype is list:
|
99
|
+
for e in obj:
|
100
|
+
normalizeObj(e)
|
101
|
+
else:
|
102
|
+
pass
|
36
103
|
|
37
104
|
class OB():
|
38
105
|
"""
|
@@ -45,29 +112,40 @@ class OB():
|
|
45
112
|
|
46
113
|
every values are string (must be converted for numeric values).
|
47
114
|
|
115
|
+
Following fields are converted to list even if the list get a single element. The OB code can then handle such multiples values.
|
116
|
+
['observationConfiguration', 'HAinterval', 'LSTinterval']
|
117
|
+
|
48
118
|
"""
|
49
119
|
|
50
120
|
def __init__(self, url):
|
51
121
|
# extract XML in elementTree
|
52
|
-
|
53
122
|
e = ET.parse(url)
|
123
|
+
# convert data to dict structure
|
54
124
|
d = etree_to_dict(e.getroot())
|
55
125
|
# keep only content of subelement to avoid schema version change
|
56
126
|
# '{http://www.jmmc.fr/aspro-ob/0.1}observingBlockDefinition'
|
57
127
|
ds = d[list(d)[0]] # -> version and name are lost
|
58
|
-
|
128
|
+
|
129
|
+
#self.srcDict = copy.deepcopy(ds)
|
130
|
+
normalizeObj(ds)
|
131
|
+
#self.normDict = ds
|
132
|
+
#self.srcObj = toObject(self.srcDict,inputName="OB")
|
133
|
+
#self.normObj = toObject(self.normDict,inputName="OB")
|
134
|
+
|
135
|
+
# store subelements as attributes
|
59
136
|
for e in ds.keys():
|
60
137
|
# parse JSON into an object with attributes corresponding to dict keys.
|
61
138
|
# We should probably avoid json use...
|
62
139
|
o = json.loads(
|
63
140
|
json.dumps(ds[e]), object_hook=lambda d: namedtuple(e, d.keys())(*d.values()))
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
else:
|
68
|
-
setattr(self, e, o)
|
141
|
+
setattr(self, e, o)
|
142
|
+
|
143
|
+
# store normalized source for str repr
|
69
144
|
self.ds = ds
|
70
145
|
|
146
|
+
def as_dict(self):
|
147
|
+
return self.ds
|
148
|
+
|
71
149
|
def getFluxes(self, target):
|
72
150
|
"""
|
73
151
|
Return a flux mesurements as dict (ordered dict by BVRIJHK ).
|
@@ -81,6 +159,14 @@ class OB():
|
|
81
159
|
|
82
160
|
return OrderedDict(sorted(fluxes.items(), key=lambda t: order.find(t[0])))
|
83
161
|
|
162
|
+
def getPeriod(self):
|
163
|
+
"""
|
164
|
+
Return period given by Aspro2 as integer.
|
165
|
+
"""
|
166
|
+
# use re to remove alpha characters from "Period 109" and make.
|
167
|
+
return int(re.sub(r"\D", "", self.interferometerConfiguration.version))
|
168
|
+
|
169
|
+
|
84
170
|
def get(self, obj, fieldname, defaultvalue=None):
|
85
171
|
if fieldname in obj._fields:
|
86
172
|
return getattr(obj, fieldname)
|
a2p2/samp.py
CHANGED
@@ -15,12 +15,14 @@ class Receiver(object):
|
|
15
15
|
self.received = False
|
16
16
|
|
17
17
|
def receive_call(self, private_key, sender_id, msg_id, mtype, params, extra):
|
18
|
+
self.mtype=mtype
|
18
19
|
self.params = params
|
19
20
|
self.received = True
|
20
21
|
self.client.reply(
|
21
22
|
msg_id, {"samp.status": "samp.ok", "samp.result": {}})
|
22
23
|
|
23
24
|
def receive_notification(self, private_key, sender_id, mtype, params, extra):
|
25
|
+
self.mtype=mtype
|
24
26
|
self.params = params
|
25
27
|
self.received = True
|
26
28
|
|
@@ -47,6 +49,7 @@ class A2p2SampClient():
|
|
47
49
|
# an error is thrown here if no hub is present
|
48
50
|
|
49
51
|
# TODO get samp client name and display it in the UI
|
52
|
+
# TODO !! declare mtypes as enum
|
50
53
|
|
51
54
|
# Instantiate the receiver
|
52
55
|
self.r = Receiver(self.sampClient)
|
@@ -54,6 +57,10 @@ class A2p2SampClient():
|
|
54
57
|
self.sampClient.bind_receive_call("ob.load.data", self.r.receive_call)
|
55
58
|
self.sampClient.bind_receive_notification(
|
56
59
|
"ob.load.data", self.r.receive_notification)
|
60
|
+
# Listen for Model related instructions
|
61
|
+
self.sampClient.bind_receive_call("fr.jmmc.litpro.start.setting",self.r.receive_call)
|
62
|
+
self.sampClient.bind_receive_notification(
|
63
|
+
"fr.jmmc.litpro.start.setting",self.r.receive_notification)
|
57
64
|
|
58
65
|
def disconnect(self):
|
59
66
|
self.sampClient.disconnect()
|
@@ -82,6 +89,9 @@ class A2p2SampClient():
|
|
82
89
|
def clear_message(self):
|
83
90
|
return self.r.clear()
|
84
91
|
|
92
|
+
def has_ob_message(self):
|
93
|
+
return "ob.load.data" in self.r.mtype
|
94
|
+
|
85
95
|
def get_ob_url(self):
|
86
96
|
url = self.r.params['url']
|
87
97
|
if url.startswith("file:///"):
|
@@ -92,3 +102,10 @@ class A2p2SampClient():
|
|
92
102
|
elif url.startswith("file:/"): # work arround bugged file urls on *nix
|
93
103
|
return url[5:]
|
94
104
|
return url
|
105
|
+
|
106
|
+
def has_model_message(self):
|
107
|
+
return "fr.jmmc.litpro.start.setting" in self.r.mtype
|
108
|
+
|
109
|
+
def get_model(self):
|
110
|
+
return self.r.params['model']
|
111
|
+
|
a2p2/version.py
CHANGED
@@ -1,132 +1,268 @@
|
|
1
|
-
__version__ = "0.
|
1
|
+
__version__ = "0.7.4"
|
2
2
|
|
3
3
|
__release_notes__ = {
|
4
4
|
# "0.1.6": {
|
5
|
-
# "STATUS":[
|
6
|
-
# "This version get lot of changes and may contain bugs or missing features, please provide any feedback to improve and prepare a better future release !"
|
7
|
-
# ],
|
8
5
|
# "A2P2": [
|
9
|
-
#
|
10
6
|
# ],
|
11
7
|
# "VLTI": [
|
12
|
-
#
|
13
8
|
# ],
|
14
9
|
# "CHARA": [
|
15
|
-
#
|
16
|
-
# ],
|
17
|
-
# "TODO-SCIENCE": [
|
18
|
-
#
|
19
|
-
# ],
|
20
|
-
# "TODO-DEV": [
|
21
|
-
#
|
22
10
|
# ],
|
23
11
|
# },
|
24
|
-
|
25
|
-
|
26
|
-
|
12
|
+
#
|
13
|
+
# "TODO-SCIENCE": [
|
14
|
+
# "Merge AO or GS in a same code section for every instruments",
|
15
|
+
# "Check DIT table from the last template user manuals (especially MATISSE) and remove PIONIER's one",
|
16
|
+
# "flag ~important~ keywords which MUST be set in a2p2 code and not leaved to there default values?",
|
17
|
+
# ],
|
18
|
+
# "TODO-DEV": [
|
19
|
+
# "Support multiple period version (two major at least)",
|
20
|
+
# "Support numlist keyword : eg. SEQ.HWPOFF (done in conf but must be range check compatible)",
|
21
|
+
# "Unify ob name creation in vlti instrument createOB()",
|
22
|
+
# "Complete test suite with more real p2 submissions",
|
23
|
+
# "Try to read OB in P2 and send them back to Aspro2 as a new obs",
|
24
|
+
# ],
|
25
|
+
|
26
|
+
"0.7.4": {
|
27
|
+
"A2P2": [
|
28
|
+
"Use pyproject.toml for python installation",
|
29
|
+
],"VLTI": [
|
30
|
+
"Do not switch PIONIER mode to FREE when the magnitude of the IAS star is too high : an error may be provided by p2"
|
31
|
+
],
|
32
|
+
},"0.7.3": {
|
33
|
+
"CHARA": [
|
34
|
+
"Better reuse of last working queueserver"
|
35
|
+
],
|
36
|
+
},"0.7.2": {
|
37
|
+
"A2P2": [
|
38
|
+
"Auto update chara queueserver preference",
|
39
|
+
"a2p2 -r generates release-notes.md (rendered on a2p2 repository)"
|
40
|
+
],
|
41
|
+
"VLTI": [
|
42
|
+
"Bugfix to support missin preference file"
|
43
|
+
],
|
44
|
+
"CHARA": [
|
45
|
+
"Support and try every queueserver's Urls comma separated from the queuserver user preference"
|
46
|
+
],
|
47
|
+
},"0.7.1": {
|
48
|
+
"A2P2": [
|
49
|
+
"Fix ttk import on MacOS",
|
50
|
+
],
|
51
|
+
"VLTI": [
|
52
|
+
"Add first P112 support using radiobutton to select proper onaxis offaxis or wide GRAVITY templates",
|
53
|
+
"Improve coordinate's checks and computations",
|
54
|
+
"Add FT's propermotions and parallax"
|
55
|
+
],
|
56
|
+
"CHARA": [
|
57
|
+
"Display log of received OB also for calibrators"
|
58
|
+
]
|
59
|
+
},"0.6.9": {
|
60
|
+
"A2P2": [
|
61
|
+
"ctrl-c support improved to qui a2p2 from terminal",
|
62
|
+
],
|
63
|
+
"VLTI": [
|
64
|
+
"OB's tree list selection mode limited to a single selection",
|
65
|
+
"OB are stacked if Aspro2 send an OB without proper tree selection. stacked OB can be submitted after proper container selection or cancelled",
|
66
|
+
"Provide checkboxes of types of interferometric observations to complete full OB"
|
67
|
+
],
|
68
|
+
"CHARA": [
|
69
|
+
],
|
70
|
+
},"0.6.8": {
|
71
|
+
"A2P2": [
|
72
|
+
"increase astropy version to avoid a dependency issue with numy"
|
73
|
+
],
|
74
|
+
},"0.6.7": {
|
75
|
+
"CHARA": [
|
76
|
+
"Enhance information while using OB2 server prototype",
|
77
|
+
]
|
78
|
+
}, "0.6.6": {
|
79
|
+
"CHARA": [
|
80
|
+
"Fix formating of OB supporting array of observability time intervals",
|
81
|
+
],
|
82
|
+
},"0.6.5": {
|
83
|
+
"CHARA": [
|
84
|
+
"Experimental: forward OBs through json payload to the location defined in preference",
|
27
85
|
],
|
86
|
+
},"0.6.4": {
|
28
87
|
"A2P2": [
|
88
|
+
"Fix import that may break run on windows..."
|
29
89
|
],
|
90
|
+
},"0.6.3": {
|
30
91
|
"VLTI": [
|
92
|
+
"Always use GRAVITY acqTSF.SEQ_INS_SOBJ_HMAG after P110",
|
31
93
|
],
|
32
|
-
|
94
|
+
},"0.6.2": {
|
95
|
+
"VLTI": [
|
96
|
+
"Fix GRAVITY gen acq tsf",
|
33
97
|
],
|
34
|
-
|
35
|
-
|
36
|
-
"
|
37
|
-
|
98
|
+
},"0.6.1": {
|
99
|
+
"VLTI": [
|
100
|
+
"Updated configuration for ESO P111",
|
101
|
+
]
|
102
|
+
},"0.6.0": {
|
103
|
+
"A2P2": [
|
104
|
+
"Read Extra_informations from last Aspro2 OBXML"
|
38
105
|
],
|
39
|
-
|
40
|
-
|
41
|
-
"
|
42
|
-
"
|
43
|
-
|
44
|
-
|
45
|
-
|
106
|
+
},"0.5.3": {
|
107
|
+
"VLTI": [
|
108
|
+
"Update DIT tables to last instrument template (version is stored in the table config to report warning)",
|
109
|
+
"Do not stop OB creation if K mag is out of range during DIT calculation but show a warning and ask to proceed or abort",
|
110
|
+
]
|
111
|
+
},"0.4.6": {
|
112
|
+
"A2P2": [
|
113
|
+
"Huge speedup of ESO P2 runs treeview",
|
114
|
+
"Explicit SAMP unregister reduce risk of SAMP ghosts",
|
46
115
|
],
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
"BugFix: ask for container Name only if one is selected"
|
116
|
+
"VLTI": [
|
117
|
+
"Check consistency between Aspro2 inteferometer period and RUN's IP version",
|
118
|
+
"Handle use SEQ.INS.SOBJ.HMAG after P110 instead of SEQ.FI.HMAG",
|
51
119
|
],
|
120
|
+
},"0.4.5": {
|
52
121
|
"A2P2": [
|
122
|
+
"clarify some text in the default generated preference file",
|
53
123
|
],
|
54
124
|
"VLTI": [
|
125
|
+
"Change log message : Run filled -> OB transmitted",
|
126
|
+
"Missing flux error message enhanced : show associated target name",
|
127
|
+
"Handle ALPHA DELTA coordinates of associated guide star",
|
128
|
+
"MATISSE: handle Aspro2's frindge tracker mode : None or GRA4MAT",
|
129
|
+
"MATISSE: define DPR.CATG (always was CALIB)",
|
130
|
+
"MATISSE: use V band for COU.GS.MAG or try G one on ATs.",
|
131
|
+
"GRAVITY: include dual keywords in gravity_rangeTable",
|
132
|
+
],
|
133
|
+
},"0.4.4": {
|
134
|
+
"A2P2": [
|
135
|
+
"add Catalog.piname() to get a pi name for a given jmmc account looking at a given catalog (jmmc.login preference is used without parameter)",
|
136
|
+
"Add new preference to put jmmc account credentials",
|
55
137
|
],
|
56
|
-
|
138
|
+
},"0.4.3": {
|
139
|
+
"A2P2": [
|
140
|
+
"Enhance a2p2.jmmc.models._model so it automagically computes component names >{(())>",
|
57
141
|
],
|
58
|
-
},
|
59
|
-
|
60
|
-
|
142
|
+
},"0.4.2": {
|
143
|
+
"A2P2": [
|
144
|
+
"Add option to select public CatalogAPI server",
|
61
145
|
],
|
146
|
+
},"0.4.1": {
|
62
147
|
"A2P2": [
|
63
|
-
"
|
64
|
-
|
65
|
-
|
66
|
-
|
148
|
+
"Add version alpha of a2p2.fr.webservices.Calliper client",
|
149
|
+
],
|
150
|
+
}, "0.4.0": {
|
151
|
+
"A2P2": [
|
152
|
+
"First basic support of SAMP messages from Aspro for models",
|
153
|
+
"Support model compositions in models module",
|
67
154
|
],
|
155
|
+
}, "0.3.10": {
|
156
|
+
|
157
|
+
"A2P2": [
|
158
|
+
"Fix bug that occurs when user has no preference file",
|
159
|
+
"Add new serialisation of a2p2.jmmc.Models"
|
160
|
+
],
|
161
|
+
}, "0.3.9": {
|
68
162
|
"VLTI": [
|
69
|
-
"
|
70
|
-
"BugFix: OB no more sent to P2 if OB's instrument is not the same than p2 selected container"
|
163
|
+
"Bugfix for single CAL SCI",
|
71
164
|
],
|
72
|
-
|
165
|
+
}, "0.3.8": {
|
166
|
+
"VLTI": [
|
167
|
+
"Enhance CAL SCI sequence : [CAL1] SCI [CAL2 [SCI CAL3 [...] ] ] ",
|
168
|
+
"Fix COU_AG_PMA and COU_AG_PMD for MATISSE acq template",
|
169
|
+
"Do not throw a dialog for every submitted OBs",
|
170
|
+
"Enhance some messages",
|
171
|
+
# "BugFix to create a folder on non tutorial accounts"
|
172
|
+
],
|
173
|
+
|
174
|
+
}, "0.3.7": {
|
175
|
+
"VLTI": [
|
176
|
+
"Revert SEQ.RELOFF.X/Y = 0.0 (same as default) for GRAVITY dual_obs_exp template"
|
177
|
+
],
|
178
|
+
}, "0.3.6": {
|
179
|
+
"VLTI": [
|
180
|
+
"Disable SEQ.RELOFF.X for GRAVITY dual to make OB compliant"
|
181
|
+
],
|
182
|
+
}, "0.3.5": {
|
183
|
+
"VLTI": [
|
184
|
+
"Accept to add calibrator inside a Concatenation container",
|
185
|
+
"Use p2.iss.vltitype preference keys to set supported value of instrument's acquisition templates. ( run 'a2p2 -c' )"
|
73
186
|
],
|
74
187
|
},
|
75
|
-
"0.
|
76
|
-
"
|
188
|
+
"0.3.4": {
|
189
|
+
"VLTI": [
|
190
|
+
"Sync templates with P109",
|
191
|
+
"Create OB in selected folder: do not create anymore a folder but create a concatenation for SM if a Run's root is selected."
|
77
192
|
],
|
193
|
+
},
|
194
|
+
"0.3.3": {
|
78
195
|
"A2P2": [
|
79
|
-
"
|
196
|
+
"Add basic support of Aspro2's model for SAMP interoperability",
|
80
197
|
],
|
81
198
|
"VLTI": [
|
199
|
+
"Fix missing import for p2api module"
|
82
200
|
],
|
83
|
-
|
201
|
+
},
|
202
|
+
"0.3.2": {
|
203
|
+
"A2P2": [
|
204
|
+
"Improve setup.py that now requires python 3+ and a fresh version of astropy",
|
205
|
+
],
|
206
|
+
"VLTI": [
|
207
|
+
# "revert back to p2 requests use which now reuses connections",
|
84
208
|
],
|
85
209
|
},
|
86
|
-
"0.
|
87
|
-
"
|
210
|
+
"0.3.1": {
|
211
|
+
"A2P2": [
|
212
|
+
"Bug fix for authenticated Catalog access",
|
88
213
|
],
|
214
|
+
},
|
215
|
+
"0.3.0": {
|
89
216
|
"A2P2": [
|
90
|
-
"
|
217
|
+
"Give a try to embedd some code to interact with JMMC services",
|
91
218
|
],
|
92
219
|
"VLTI": [
|
220
|
+
# "revert back to p2 requests use which now reuses connections",
|
93
221
|
],
|
94
|
-
|
222
|
+
},
|
223
|
+
"0.2.15": {
|
224
|
+
"VLTI": [
|
225
|
+
# "add a wrapper on p2 to make run's tree faster (~2.5x)",
|
95
226
|
],
|
96
227
|
},
|
97
|
-
"0.2.
|
98
|
-
"
|
228
|
+
"0.2.14": {
|
229
|
+
"A2P2": [
|
230
|
+
"BugFix: ask for container Name only if one is selected"
|
99
231
|
],
|
232
|
+
},
|
233
|
+
"0.2.13": {
|
100
234
|
"A2P2": [
|
101
|
-
"
|
235
|
+
"A2P2 is no longer python2 compatible. Hope it will be ok for everybody ? Send an issue else ;)",
|
236
|
+
"Fix generated release note order according to semver values",
|
237
|
+
"Dry tests done looping on a few OBXML files"
|
238
|
+
"Added -c option to a2p2 so we generated a config file ( helps to automatically fill P2 login info & autologin : )"
|
102
239
|
],
|
103
240
|
"VLTI": [
|
241
|
+
"Conf updated with IPs 106.25",
|
242
|
+
"BugFix: OB no more sent to P2 if OB's instrument is not the same than p2 selected container"
|
104
243
|
],
|
105
|
-
|
244
|
+
},
|
245
|
+
"0.2.12": {
|
246
|
+
"A2P2": [
|
247
|
+
"Fix import in main console script"
|
106
248
|
],
|
107
249
|
},
|
108
|
-
"0.2.
|
109
|
-
"
|
250
|
+
"0.2.11": {
|
251
|
+
"A2P2": [
|
252
|
+
"enhance setup.py so it install Windows special-cases .exe files"
|
110
253
|
],
|
254
|
+
},
|
255
|
+
"0.2.10": {
|
111
256
|
"A2P2": [
|
112
|
-
|
257
|
+
"Patch bad SAMP url handling on Windows"
|
113
258
|
],
|
259
|
+
},
|
260
|
+
"0.2.9": {
|
114
261
|
"VLTI": [
|
115
262
|
"Fix bug that prevent to create any folder or concatenation at RUNS's root"
|
116
263
|
],
|
117
|
-
"CHARA": [
|
118
|
-
|
119
|
-
],
|
120
|
-
"TODO-SCIENCE": [
|
121
|
-
|
122
|
-
],
|
123
|
-
"TODO-DEV": [
|
124
|
-
|
125
|
-
],
|
126
264
|
},
|
127
265
|
"0.2.8": {
|
128
|
-
"STATUS": [
|
129
|
-
],
|
130
266
|
"A2P2": [
|
131
267
|
"Fix release notes order in the GUI",
|
132
268
|
"Handle special jmmc account, kindly set by ESO colleagues to perfom future tests as closed as possible to the real UX"
|
@@ -137,10 +273,6 @@ __release_notes__ = {
|
|
137
273
|
],
|
138
274
|
"CHARA": [
|
139
275
|
],
|
140
|
-
"TODO-SCIENCE": [
|
141
|
-
],
|
142
|
-
"TODO-DEV": [
|
143
|
-
]
|
144
276
|
}, "0.2.7": {
|
145
277
|
"STATUS": [
|
146
278
|
"This version get lot of changes and may contain bugs or missing features, please provide any feedback to improve and prepare a better future release !"
|
@@ -158,96 +290,41 @@ __release_notes__ = {
|
|
158
290
|
"Support Concatenations (also shown in the tree panel)",
|
159
291
|
"Show type in the container chooser instead of containerID"
|
160
292
|
],
|
161
|
-
"CHARA": [
|
162
|
-
],
|
163
|
-
"TODO-SCIENCE": [
|
164
|
-
"Complete/fix GRAVITY DIT table with P105 changes that will come in the next template user manual",
|
165
|
-
"Use a calibrator template for MATISSE (instead of default hyb_obs)",
|
166
|
-
"flag ~important~ keyword that MUST be set in a2p2 code to avoid default"
|
167
|
-
],
|
168
|
-
"TODO-DEV": [
|
169
|
-
"Support numlist keyword : eg. SEQ.HWPOFF",
|
170
|
-
"Optimize VLTI run chooser : DEMO tests suffer from a long run filtering",
|
171
|
-
"Do not set default values in a2p2 if not set",
|
172
|
-
"unify ob name creation in vlti instrument createOB()"
|
173
|
-
]
|
174
293
|
}, "0.2.6": {
|
175
|
-
"A2P2": [
|
176
|
-
|
177
|
-
],
|
178
294
|
"VLTI": [
|
179
295
|
"Support baseline back again (single one at present)"
|
180
296
|
],
|
181
|
-
"CHARA": [
|
182
|
-
|
183
|
-
]
|
184
297
|
},
|
185
298
|
"0.2.5": {
|
186
|
-
"A2P2": [
|
187
|
-
|
188
|
-
],
|
189
299
|
"VLTI": [
|
190
300
|
"Add missing template name in log",
|
191
301
|
"Fix error removing baseline after constraint changes on P2 side. Next a2p2 version should add them back in acq templates"
|
192
302
|
],
|
193
|
-
"CHARA": [
|
194
|
-
|
195
|
-
]
|
196
303
|
},
|
197
304
|
"0.2.4": {
|
198
|
-
"A2P2": [
|
199
|
-
|
200
|
-
],
|
201
305
|
"VLTI": [
|
202
306
|
"Fix bug / wrong keys"
|
203
307
|
],
|
204
|
-
"CHARA": [
|
205
|
-
|
206
|
-
]
|
207
308
|
},
|
208
309
|
"0.2.3": {
|
209
|
-
"A2P2": [
|
210
|
-
|
211
|
-
],
|
212
310
|
"VLTI": [
|
213
311
|
"Hide password in login frame"
|
214
312
|
],
|
215
|
-
"CHARA": [
|
216
|
-
|
217
|
-
]
|
218
313
|
},
|
219
314
|
"0.2.2": {
|
220
|
-
"A2P2": [
|
221
|
-
|
222
|
-
],
|
223
315
|
"VLTI": [
|
224
316
|
"ignore default time constraints computed by Aspro"
|
225
317
|
],
|
226
|
-
"CHARA": [
|
227
|
-
|
228
|
-
]
|
229
318
|
},
|
230
319
|
"0.2.1": {
|
231
|
-
"A2P2": [
|
232
|
-
|
233
|
-
],
|
234
320
|
"VLTI": [
|
235
321
|
"fix support for a list of multiples time constraints"
|
236
322
|
],
|
237
|
-
"CHARA": [
|
238
|
-
|
239
|
-
]
|
240
323
|
},
|
241
324
|
"0.2.0": {
|
242
|
-
"A2P2": [
|
243
|
-
|
244
|
-
],
|
245
325
|
"VLTI": [
|
246
326
|
"bug fix"
|
247
327
|
],
|
248
|
-
"CHARA": [
|
249
|
-
|
250
|
-
]
|
251
328
|
},
|
252
329
|
"0.1.6": {
|
253
330
|
"A2P2": [
|
@@ -257,20 +334,11 @@ __release_notes__ = {
|
|
257
334
|
"general config updates",
|
258
335
|
"add PIONIER"
|
259
336
|
],
|
260
|
-
"CHARA": [
|
261
|
-
|
262
|
-
]
|
263
337
|
},
|
264
338
|
"0.1.5": {
|
265
|
-
"A2P2": [
|
266
|
-
|
267
|
-
],
|
268
339
|
"VLTI": [
|
269
340
|
"bugfix for dualfield cases"
|
270
341
|
],
|
271
|
-
"CHARA": [
|
272
|
-
|
273
|
-
]
|
274
342
|
},
|
275
343
|
"0.1.4": {
|
276
344
|
"A2P2": [
|