~sjdv1982/hivesystem/trunk

« back to all changes in this revision

Viewing changes to hiveguilib/params.py

  • Committer: Sjoerd de Vries
  • Date: 2014-06-09 10:19:38 UTC
  • mfrom: (182.1.43 hive-view)
  • Revision ID: sjdv1982@gmail.com-20140609101938-7ji5g0buo09r0se6
merged with hive-view branch

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
import Spyder
5
5
 
6
6
import copy
7
 
from bee.types import _parametertypes, stringtupleparser
 
7
from bee.types import _parametertypes, _objecttypes, stringtupleparser
 
8
from functools import partial
8
9
 
9
10
def deslash(s):
10
11
  if isinstance(s, str): return s.replace("\\","")
32
33
parse_paramtypelist_error_index = None
33
34
parse_paramtypelist_error_type = None
34
35
 
 
36
 
 
37
def spyderparse(spyderclass, v):
 
38
  try:
 
39
    v2 = spyder.core.parse(v, mode="Spyder")
 
40
    if isinstance(v2, tuple) and len(v2) == 2 and isinstance(v2[0], str): 
 
41
      v = v2[1]
 
42
  except:
 
43
    pass
 
44
  return spyderclass(v)  
 
45
  
35
46
def parse_paramtypelist(paramtypelist, arglist):
36
47
  global parse_paramtypelist_error_index
37
48
  global parse_paramtypelist_error_type
115
126
          desc = (pp, None)
116
127
        else: #4
117
128
          head = (pp[0], str)
118
 
          if pp[0] == "object":
119
 
            head = pp
120
 
            pp = (pp, None)
 
129
          if pp[0] in _objecttypes:
 
130
            head = ("object",) + pp[1:]
 
131
            pp = (head, None)
121
132
          elif pp[0] in _parametertypes:
122
133
            head = _parametertypes[pp[0]]
123
 
          elif spyder.validvar(pp):
124
 
            cons = getattr(Spyder, pp)      
 
134
          elif spyder.validvar(pp[0]):
 
135
            cls = getattr(Spyder, pp[0])      
 
136
            cons = partial(spyderparse, cls)
125
137
            head = (pp, cons)            
126
138
          elif pp[0] in typemap: pass
127
139
          else: ok = False  
130
142
      if isinstance(pp, tuple): #2a
131
143
        ok = True
132
144
        head = (pp[0], str)
133
 
        if pp[0] == "object":
134
 
          head = pp
 
145
        if pp[0] in _objecttypes:
 
146
          head = ("object",) + pp[1:]
135
147
        elif pp[0] in _parametertypes:
136
148
          head = _parametertypes[pp[0]]
137
 
        elif spyder.validvar(pp):
138
 
          cons = getattr(Spyder, pp)      
 
149
        elif spyder.validvar(pp[0]):
 
150
          cls = getattr(Spyder, pp[0])     
 
151
          cons = partial(spyderparse, cls)
139
152
          head = (pp, cons)         
140
153
        elif pp[0] in typemap: pass
141
154
        else: ok = False  
143
156
      elif isinstance(pp, str): #2
144
157
        ok = True
145
158
        head = pp
146
 
        if pp == "object":
 
159
        if pp in _objecttypes:
147
160
          head = "object"
148
161
        elif pp in _parametertypes: 
149
162
          head = _parametertypes[pp]
150
 
        elif spyder.validvar(pp):
151
 
          cons = getattr(Spyder, pp)      
 
163
        elif spyder.validvar2(pp):
 
164
          cls = getattr(Spyder, pp)      
 
165
          cons = partial(spyderparse, cls)
152
166
          head = (pp, cons)
153
167
        elif pp in typemap:pass
154
168
        else: ok = False    
156
170
    if ok:  
157
171
      ret.append(desc)
158
172
    if not ok:
159
 
      print("Warning: cannot interpret %s due to parameter '%s': %s" % (workername, p, pp))
 
173
      print("Warning: cannot interpret %s due to parameter '%s': '%s'" % (workername, p, pp))
160
174
      return None, None
161
175
  return paramnames, ret
 
176
 
 
177
def get_param_pullantennas(antennas):
 
178
  pullantennas = []
 
179
  for a in antennas:
 
180
    if a == "inp": continue
 
181
    antenna = antennas[a]
 
182
    assert isinstance(antenna, tuple) and len(antenna) == 2, antenna
 
183
    if antenna[0] == "push": continue
 
184
    pp = antenna[1]    
 
185
    if typetuple(pp): continue
 
186
    if pp == "any": continue    
 
187
    pullantennas.append((a,pp))  
 
188
  return pullantennas