Пример #1
0
 def _backend_reset (self) :
     for apt in pyk.itervalues (MOM.App_Type.Table) :
         for apt_d in pyk.itervalues (apt.derived) :
             try :
                 SAW = apt_d._SAW
             except AttributeError :
                 pass
             else :
                 ### reset caches to avoid sequence dependencies between
                 ### different test cases
                 SAW.reset_cache ()
Пример #2
0
 def _gen_roles (cls) :
     for a in sorted \
             ( pyk.itervalues (cls._Attributes._names)
             , key = TFL.Sorted_By ("rank", "name")
             ) :
         if a is not None and issubclass (a, MOM.Attr.A_Link_Role) :
             yield a
Пример #3
0
 def update_etype(cls, e_type, app_type):
     ETW = e_type._SAW
     if ETW is not None:
         if ETW.e_type is e_type:
             sa_table = ETW.sa_table
             if sa_table is None:
                 if e_type.is_relevant:
                     needs_table = not (e_type.is_partial or e_type.iea_type_restrictions)
                     if needs_table:
                         raise TypeError("Non-partial revelant type %s " "without a table?" % (e_type.type_name,))
                     ### partial e_type with relevant_root
                     ### fix children (the children's ETW refer to the first
                     ### ancestor with a sa_table)
                     ETW.children = sorted(
                         (c._SAW for c in pyk.itervalues(e_type.children)), key=TFL.Getter.type_name
                     )
             else:
                 unique = ETW.unique
                 unique_o = ETW.unique_o
                 if unique and unique == unique_o and not e_type.polymorphic_relevant_epk:
                     sa_table.append_constraint(SA.schema.UniqueConstraint(*unique))
                     e_type.P_uniqueness[0].ems_check = False
                 cls._add_check_constraints(e_type, ETW, sa_table)
                 cls._add_user_defined_indices(e_type, ETW, sa_table)
             if e_type._Reload_Mixin_ is not None and not e_type.is_partial:
                 e_type._Reload_Mixin_.define_e_type(e_type, _Reload_Mixin_)
         elif ETW.root_table is not None:
             etw = e_type._SAW = cls.PNS.Partial_E_Type_Wrapper(e_type, ETW)
             ETW.ATW.add(etw)
Пример #4
0
 def _rrule_attrs(self):
     for a in pyk.itervalues(self.attributes):
         name = getattr(a, "rrule_name", None)
         if name:
             value = a.get_value(self)
             if value is not None and value != []:
                 yield name, value
Пример #5
0
 def record(self, Change, *args, **kw):
     """Record change of type `Change`."""
     result = self._recorder(Change, *args, **kw)
     self.total_changes += 1
     if self.dependents:
         self._recorder.update(pyk.itervalues(self.dependents))
     return result
Пример #6
0
 def _query_multi_root (self, Type, strict = False) :
     tables = self._tables
     return self.Q_Result_Composite \
         ( [   self.Q_Result (pyk.itervalues (tables [t]))
           for t in Type.relevant_roots
           ]
         )
Пример #7
0
 def _rrule_attrs (self) :
     for a in pyk.itervalues (self.attributes) :
         name = getattr (a, "rrule_name", None)
         if name :
             value = a.get_value (self)
             if value is not None and value != [] :
                 yield name, value
Пример #8
0
def show_root_table(apt, pred=pred):
    sk = lambda x: (x.e_type.i_rank, )
    for ETW in sorted(pyk.itervalues(apt._SAW.et_map), key=sk):
        if not pred(ETW):
            continue
        T = ETW.e_type
        print(("%-36s %s" % (T.type_name, ETW.root_table)).rstrip())
Пример #9
0
 def all_links (self, obj_id) :
     r_map  = self._r_map
     result = sorted \
         ( itertools.chain (* (rm [obj_id] for rm in pyk.itervalues (r_map)))
         , key = self.scope.MOM.Id_Entity.sort_key_pm ()
         )
     return result
Пример #10
0
 def verbose_repr(self):
     r = [str(self)]
     for v in pyk.itervalues(self.interfaces):
         r.append(str(v))
     for v in pyk.iterkeys(self.ips):
         r.append(str(v))
     return '\n'.join(r)
Пример #11
0
 def record (self, Change, * args, ** kw) :
     """Record change of type `Change`."""
     result = self._recorder (Change, * args, ** kw)
     self.total_changes += 1
     if self.dependents :
         self._recorder.update (pyk.itervalues (self.dependents))
     return result
Пример #12
0
 def verbose_repr (self) :
     r = [str (self)]
     for v in pyk.itervalues (self.interfaces) :
         r.append (str (v))
     for v in pyk.iterkeys (self.ips) :
         r.append (str (v))
     return '\n'.join (r)
Пример #13
0
 def _fill_cache(self):
     if self._cache is None:
         pred = self._criterion
         result = dict()
         sums = _Sum_Aggr_()
         sum_col = None
         for row in self.iterable:
             key = pred(row)
             is_sum = getattr(row, "_IS_SUM", None)
             if is_sum is not None:
                 sums[key] = is_sum(row)
                 sum_col = getattr(row, "_SUM_CO", None)
             result[key] = row
         if sums:
             sum_fixed = []
             for key, row in pyk.iteritems(result):
                 if sum_col is None:
                     sum_fixed.append(sums[key])
                 else:
                     sum_fixed.append \
                         ( row [:sum_col]
                         + (sums [key], )
                         + row [sum_col + 1:]
                         )
             result = sum_fixed
         else:
             result = pyk.itervalues(result)
         if self._distinct and not self.iterable._distinct:
             result = self._distinct(result)
         self._cache = list(result)
Пример #14
0
 def _gen_roles(cls):
     for a in sorted \
             ( pyk.itervalues (cls._Attributes._names)
             , key = TFL.Sorted_By ("rank", "name")
             ) :
         if a is not None and issubclass(a, MOM.Attr.A_Link_Role):
             yield a
Пример #15
0
 def _setup_target_packages (self, pip) :
     dc      = self.delta_closure
     path    = TFL.sos.path
     sep     = TFL.sos.sep
     self.pym_dict    = pym_dict    = {}
     self.py_modules  = pyms        = []
     self.py_packages = pyps        = []
     for pym in dc.pym_dict.values () :
        for pyp in pym.pkg_chain () :
            if pyp.rel_name not in dc.pym_dict :
                dc._add (pyp)
     for pym in pyk.itervalues (dc.pym_dict) :
         pym.target_pkg  = pym.pkg
         pym.target_path = path.join \
             (self.target_root, pym.pkg.replace (".", sep), pym.base_path)
         pym.source_pns = self._pns_from_pkg (pym.pkg)
         pym.target_pns = self._pns_from_pkg (pym.target_pkg)
         if pym.is_package :
             self._make_target_dir (pym)
             pym.source_mod = pym.pkg
             pym.target_mod = pym.target_pkg
             pyps.append (pym)
         else :
             pym.source_mod = ".".join ((pym.pkg,        pym.base_name))
             pym.target_mod = ".".join ((pym.target_pkg, pym.base_name))
             pyms.append (pym)
         pym_dict [pym.source_mod] = pym
Пример #16
0
def show_attr_wrappers(apt, pred=pred):
    def show(W, level=0):
        qas = W.q_able_attrs_o
        in0 = "  " * (level + bool(level))
        if qas:
            in1 = in0 + " " * (level + 1 + (not level))
            in2 = in1 + "    "
            print("%s%s" % (in0, W.type_name))
            for name, aw in sorted(pyk.iteritems(qas)):
                if not getattr(aw.kind, "show_in_ui", True): continue
                amro = ", ".join(_kind_mro(aw.kind))
                print \
                    ( "%s%s : %s\n%s%s"
                    % (in1, aw.__class__.__name__, aw.kind, in2, amro)
                    )
                if aw.q_able_attrs_o:
                    show(aw, level + 1)
        elif W.e_type.relevant_root:
            print("%s%s <-- %s" % (in0, W.type_name, W.parent.type_name))

    sk = lambda x: (x.e_type.i_rank, )
    for ETW in sorted(pyk.itervalues(apt._SAW.et_map), key=sk):
        if not pred(ETW):
            continue
        show(ETW)
Пример #17
0
 def _query_multi_root(self, Type, strict=False):
     tables = self._tables
     return self.Q_Result_Composite \
         ( [   self.Q_Result (pyk.itervalues (tables [t]))
           for t in Type.relevant_roots
           ]
         )
Пример #18
0
 def _fill_cache (self) :
     if self._cache is None :
         pred        = self._criterion
         result      = dict        ()
         sums        = _Sum_Aggr_  ()
         sum_col     = None
         for row in self.iterable :
             key    = pred (row)
             is_sum = getattr (row, "_IS_SUM", None)
             if is_sum is not None :
                 sums [key] = is_sum (row)
                 sum_col    = getattr (row, "_SUM_CO", None)
             result [key]   = row
         if sums :
             sum_fixed      = []
             for key, row in pyk.iteritems (result) :
                 if sum_col is None :
                     sum_fixed.append (sums [key])
                 else :
                     sum_fixed.append \
                         ( row [:sum_col]
                         + (sums [key], )
                         + row [sum_col + 1:]
                         )
             result         = sum_fixed
         else :
             result         = pyk.itervalues (result)
         if self._distinct and not self.iterable._distinct :
             result  = self._distinct (result)
         self._cache = list (result)
Пример #19
0
 def all_links(self, obj_id):
     r_map = self._r_map
     result = sorted \
         ( itertools.chain (* (rm [obj_id] for rm in pyk.itervalues (r_map)))
         , key = self.scope.MOM.Id_Entity.sort_key_pm ()
         )
     return result
Пример #20
0
def show_root_table (apt, pred = pred) :
    sk = lambda x : (x.e_type.i_rank, )
    for ETW in sorted (pyk.itervalues (apt._SAW.et_map), key = sk):
        if not pred (ETW) :
            continue
        T = ETW.e_type
        print (("%-36s %s" % (T.type_name, ETW.root_table)).rstrip ())
Пример #21
0
 def all_attribute_types (self) :
     """List of all attribute types used by the etypes of the application."""
     result = set ()
     for T in self._T_Extension :
         if not T.is_partial :
             for ak in pyk.itervalues (T.attributes) :
                 result.add (ak.attr)
     return sorted (result, key = TFL.Sorted_By ("typ", "name"))
Пример #22
0
 def _r_query_t (self, r_map, role, obj) :
     i = role.role_index
     return itertools.chain \
         ( r_map [role] [obj.pid]
         , * ( r_map [c.Roles [i]] [obj.pid]
             for c in pyk.itervalues (role.assoc.children)
             )
         )
Пример #23
0
 def _r_query_t(self, r_map, role, obj):
     i = role.role_index
     return itertools.chain \
         ( r_map [role] [obj.pid]
         , * ( r_map [c.Roles [i]] [obj.pid]
             for c in pyk.itervalues (role.assoc.children)
             )
         )
Пример #24
0
 def _query_single_root(self, Type, strict=False):
     root = Type.relevant_root
     tables = self._tables
     result = pyk.itervalues(tables[root.type_name])
     if root is not Type:
         ### filter siblings derived from same `relevant_root`
         result = pyk.ifilter(lambda x: isinstance(x, Type), result)
     return self.Q_Result(result)
Пример #25
0
 def all_attribute_types(self):
     """List of all attribute types used by the etypes of the application."""
     result = set()
     for T in self._T_Extension:
         if not T.is_partial:
             for ak in pyk.itervalues(T.attributes):
                 result.add(ak.attr)
     return sorted(result, key=TFL.Sorted_By("typ", "name"))
Пример #26
0
 def _query_single_root (self, Type, strict = False) :
     root   = Type.relevant_root
     tables = self._tables
     result = pyk.itervalues (tables [root.type_name])
     if root is not Type :
         ### filter siblings derived from same `relevant_root`
         result = pyk.ifilter (lambda x : isinstance (x, Type), result)
     return self.Q_Result (result)
Пример #27
0
 def _sig_map_transitive(self, seen_etypes):
     seen_etypes = ETC(dict(seen_etypes, **self.seen_refuse_e_types))
     result = self.__super._sig_map_transitive(seen_etypes)
     E_Types_AQ = self.E_Types_AQ
     if E_Types_AQ:
         for aq in pyk.itervalues(E_Types_AQ):
             result.update(aq._sig_map_transitive(seen_etypes))
     return result
Пример #28
0
 def _sig_map_transitive (self, seen_etypes) :
     seen_etypes = ETC (dict (seen_etypes, ** self.seen_refuse_e_types))
     result      = self.__super._sig_map_transitive (seen_etypes)
     E_Types_AQ  = self.E_Types_AQ
     if E_Types_AQ :
         for aq in pyk.itervalues (E_Types_AQ) :
             result.update (aq._sig_map_transitive (seen_etypes))
     return result
Пример #29
0
 def as_json (self) :
     d = dict (type = self.type, version = self.version)
     iface = d ['interfaces'] = []
     for i in pyk.itervalues (self.interfaces) :
         iface.append (i.as_dict)
     ips = d ['ips'] = []
     for i in pyk.iterkeys (self.ips) :
         ips.append (str (i))
     return json.dumps (d)
Пример #30
0
 def attrs (self) :
     E_Type = self.E_Type
     a_type = self.a_type
     sk     = TFL.Sorted_By ("rank", "name")
     result = tuple \
         (  a for a in sorted (pyk.itervalues (E_Type.attributes), key = sk)
         if isinstance (a.attr, a_type)
         )
     return result
Пример #31
0
 def _m_create_role_children (cls) :
     for role in uniq (cls._role_children_to_add) :
         role = getattr (cls._Attributes, role)
         children = sorted \
             ( pyk.itervalues (role.E_Type.children_np)
             , key = TFL.Getter.i_rank
             )
         for c in children :
             cls._m_create_role_child ((role.name, c))
Пример #32
0
 def as_json(self):
     d = dict(type=self.type, version=self.version)
     iface = d['interfaces'] = []
     for i in pyk.itervalues(self.interfaces):
         iface.append(i.as_dict)
     ips = d['ips'] = []
     for i in pyk.iterkeys(self.ips):
         ips.append(str(i))
     return json.dumps(d)
Пример #33
0
 def _m_create_role_children(cls):
     for role in uniq(cls._role_children_to_add):
         role = getattr(cls._Attributes, role)
         children = sorted \
             ( pyk.itervalues (role.E_Type.children_np)
             , key = TFL.Getter.i_rank
             )
         for c in children:
             cls._m_create_role_child((role.name, c))
Пример #34
0
 def attrs(self):
     E_Type = self.E_Type
     a_type = self.a_type
     sk = TFL.Sorted_By("rank", "name")
     result = tuple \
         (  a for a in sorted (pyk.itervalues (E_Type.attributes), key = sk)
         if isinstance (a.attr, a_type)
         )
     return result
Пример #35
0
 def render(self):
     canvas = self.canvas
     nodes = sorted(self.nodes, key=TFL.Getter.entity.type_name)
     for n in nodes:
         self.render_node(n, canvas)
     link_sort_key = TFL.Sorted_By("relation.rid")
     for n in nodes:
         for l in sorted(pyk.itervalues(n.link_map), key=link_sort_key):
             self.render_link(l, canvas)
Пример #36
0
 def render (self) :
     canvas = self.canvas
     nodes  = sorted (self.nodes, key = TFL.Getter.entity.type_name)
     for n in nodes :
         self.render_node (n, canvas)
     link_sort_key = TFL.Sorted_By ("relation.rid")
     for n in nodes :
         for l in sorted (pyk.itervalues (n.link_map), key = link_sort_key) :
             self.render_link (l, canvas)
Пример #37
0
    def __init__ (self, site, request) :
        self.site    = site
        self.request = request
        if 'interfaces' in self.request or 'ips' in self.request :
            st    = Status           (site = site)
            conn  = OLSR_Connections (site = site)
            route = OLSR_Routes      (site = site)
            self.version = st.version
            assert len (st.wlans) <= 1
            interfaces   = {}
            ips          = {}
            count = 0
            for gw, ifname in pyk.iteritems (route.iface_by_gw) :
                ip, lq, nlq, etx  = conn.neighbors [gw]
                i4 = Inet4 (ip, None, None, iface = ifname)
                ips [i4] = 1
                is_wlan = True
                if lq == nlq == etx == 1.0 :
                    is_wlan = False
                if ifname in interfaces :
                    iface = interfaces [ifname]
                    if not iface.is_wlan and is_wlan :
                        iface.is_wlan   = True
                        iface.wlan_info = st.wlans [0]
                else :
                    iface = Interface (count, ifname, None)
                    iface.is_wlan = is_wlan
                    if is_wlan :
                        iface.wlan_info = st.wlans [0]
                    count += 1
                    interfaces [ifname] = iface
                if i4 not in iface.inet4 :
                    iface.append_inet4 (i4)
            wl_if = None
            for iface in pyk.itervalues (interfaces) :
                if iface.is_wlan :
                    if wl_if :
                        m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name)
                        raise ValueError (m)
                    wl_if = iface
            # check own ip
            n  = 'unknown'
            i4 = Inet4 (self.request ['ip'], None, None, iface = n)
            if i4 not in ips :
                assert n not in interfaces
                iface = interfaces [n] = Interface (count, n, None)
                iface.append_inet4 (i4)
                iface.is_wlan = False
                if not wl_if and st.wlans :
                    iface.is_wlan   = True
                    iface.wlan_info = st.wlans [0]
                ips [i4] = True

            self.request ['ips']        = ips
            self.request ['interfaces'] = interfaces
            self.request ['version']    = st.version
Пример #38
0
    def __init__ (self, site, request) :
        self.site    = site
        self.request = request
        if 'interfaces' in self.request or 'ips' in self.request :
            st    = Status           (site = site)
            conn  = OLSR_Connections (site = site)
            route = OLSR_Routes      (site = site)
            self.version = st.version
            assert len (st.wlans) <= 1
            interfaces   = {}
            ips          = {}
            count = 0
            for gw, ifname in pyk.iteritems (route.iface_by_gw) :
                ip, lq, nlq, etx  = conn.neighbors [gw]
                i4 = Inet4 (ip, None, None, iface = ifname)
                ips [i4] = 1
                is_wlan = True
                if lq == nlq == etx == 1.0 :
                    is_wlan = False
                if ifname in interfaces :
                    iface = interfaces [ifname]
                    if not iface.is_wlan and is_wlan :
                        iface.is_wlan   = True
                        iface.wlan_info = st.wlans [0]
                else :
                    iface = Interface (count, ifname, None)
                    iface.is_wlan = is_wlan
                    if is_wlan :
                        iface.wlan_info = st.wlans [0]
                    count += 1
                    interfaces [ifname] = iface
                if i4 not in iface.inet4 :
                    iface.append_inet4 (i4)
            wl_if = None
            for iface in pyk.itervalues (interfaces) :
                if iface.is_wlan :
                    if wl_if :
                        m = "Duplicate wlan: %s/%s" % (iface.name, wl_if.name)
                        raise ValueError (m)
                    wl_if = iface
            # check own ip
            n  = 'unknown'
            i4 = Inet4 (self.request ['ip'], None, None, iface = n)
            if i4 not in ips :
                assert n not in interfaces
                iface = interfaces [n] = Interface (count, n, None)
                iface.append_inet4 (i4)
                iface.is_wlan = False
                if not wl_if and st.wlans :
                    iface.is_wlan   = True
                    iface.wlan_info = st.wlans [0]
                ips [i4] = True

            self.request ['ips']        = ips
            self.request ['interfaces'] = interfaces
            self.request ['version']    = st.version
Пример #39
0
def show_children (T, bi = "  ", level = 0, seen = None) :
    """Display tree of children of essential type `T`."""
    if seen is None :
        seen = set ()
    print ("%s%s" % (bi * level, T.type_name))
    l1 = level + 1
    for c in sorted (pyk.itervalues (T.children), key = TFL.Getter.i_rank) :
        if c not in seen :
            show_children (c, bi, l1, seen)
            seen.add (c)
Пример #40
0
def watch_directories(pyinotify, timeout, overrides, *directories):
    if pyinotify:
        _watch_directories_pyinotify(pyinotify, overrides, *directories)
    else:
        import time
        print("Polling fallback, interval %dms" % (timeout, ))
        while True:
            time.sleep(1000. / timeout)
            for template in pyk.itervalues(CSS_Template.templates):
                template.check_for_update()
Пример #41
0
def show_ancestors (apt, pred = pred) :
    sk = lambda x : (x.e_type.i_rank, )
    for ETW in sorted (pyk.itervalues (apt._SAW.et_map), key = sk) :
        if not pred (ETW) :
            continue
        T = ETW.e_type
        xs = ("%-36s" % (T.type_name), )
        if ETW.ancestors :
            xs += ("<" , " < ".join ("%-16s" % (a.type_name, ) for a in ETW.ancestors).rstrip ())
        print (" ".join (xs).rstrip ())
Пример #42
0
def show_children(T, bi="  ", level=0, seen=None):
    """Display tree of children of essential type `T`."""
    if seen is None:
        seen = set()
    print("%s%s" % (bi * level, T.type_name))
    l1 = level + 1
    for c in sorted(pyk.itervalues(T.children), key=TFL.Getter.i_rank):
        if c not in seen:
            show_children(c, bi, l1, seen)
            seen.add(c)
Пример #43
0
 def _response_body(self, resource, request, response):
     req_data = request.req_data
     result = dict()
     tree = int(req_data.get("tree", "0"))
     init = int(req_data.get("init", "0"))
     volume, path_spec = resource.strip_volume(req_data["target"])
     added = []
     for file in pyk.itervalues(request.req_data.files):
         added.append(volume.add(path_spec, file))
     return dict(added=added)
Пример #44
0
def watch_directories (pyinotify, timeout, overrides, * directories) :
    if pyinotify :
        _watch_directories_pyinotify (pyinotify, overrides, * directories)
    else :
        import time
        print ("Polling fallback, interval %dms" % (timeout, ))
        while True :
            time.sleep (1000. / timeout)
            for template in pyk.itervalues (CSS_Template.templates) :
                template.check_for_update ()
Пример #45
0
 def _response_body(self, resource, request, response):
     req_data = request.req_data
     result = dict()
     tree = int(req_data.get("tree", "0"))
     init = int(req_data.get("init", "0"))
     volume, path_spec = resource.strip_volume(req_data["target"])
     added = []
     for file in pyk.itervalues(request.req_data.files):
         added.append(volume.add(path_spec, file))
     return dict(added=added)
Пример #46
0
def show_ancestors(apt, pred=pred):
    sk = lambda x: (x.e_type.i_rank, )
    for ETW in sorted(pyk.itervalues(apt._SAW.et_map), key=sk):
        if not pred(ETW):
            continue
        T = ETW.e_type
        xs = ("%-36s" % (T.type_name), )
        if ETW.ancestors:
            xs += ("<", " < ".join("%-16s" % (a.type_name, )
                                   for a in ETW.ancestors).rstrip())
        print(" ".join(xs).rstrip())
Пример #47
0
def children_trans_iter(T, level=0, seen=None, sort_key=None):
    if seen is None:
        seen = set()
    if sort_key is None:
        sort_key = TFL.Getter.i_rank
    yield T, level
    for c in sorted(pyk.itervalues(T.children), key=sort_key):
        if c not in seen:
            seen.add(c)
            for cc, l in children_trans_iter(c, level + 1, seen, sort_key):
                yield cc, l
Пример #48
0
def children_trans_iter (T, level = 0, seen = None, sort_key = None) :
    if seen is None :
        seen = set ()
    if sort_key is None :
        sort_key = TFL.Getter.i_rank
    yield T, level
    for c in sorted (pyk.itervalues (T.children), key = sort_key) :
        if c not in seen :
            seen.add (c)
            for cc, l in children_trans_iter (c, level + 1, seen, sort_key) :
                yield cc, l
Пример #49
0
 def has_child (self, child_name, transitive = True) :
     """Checks if this node or one of this childs has a node named
        `child_name'.
     """
     child_name = self._child_name (child_name)
     for children in pyk.itervalues (self.children_groups) :
         if child_name in children :
             return children [child_name]
     if transitive :
         for c in self.children :
             child = c.has_child (child_name, transitive = True)
             if child is not None :
                 return child
Пример #50
0
 def has_child(self, child_name, transitive=True):
     """Checks if this node or one of this childs has a node named
        `child_name'.
     """
     child_name = self._child_name(child_name)
     for children in pyk.itervalues(self.children_groups):
         if child_name in children:
             return children[child_name]
     if transitive:
         for c in self.children:
             child = c.has_child(child_name, transitive=True)
             if child is not None:
                 return child
Пример #51
0
 def _setup_attrs (self, e_type) :
     attr_dict = self._attr_dict
     for a in pyk.itervalues (attr_dict) :
         for d in a.attr.auto_up_depends :
             try :
                 x = attr_dict [d]
             except KeyError :
                 pass
             else :
                 x.dependent_attrs.add (a)
         if isinstance (a.completer, MOM.Attr.Completer_Spec) :
             a.attr.completer = a.completer (a, e_type)
         if isinstance (a.polisher, MOM.Attr.Polisher._Polisher_) :
             a.attr.polisher = a.polisher.Instance (a)
Пример #52
0
def show_qc_map (apt, pred = pred) :
    def _show (QC, indent = 4) :
        if QC.Map :
            for k, v in sorted (pyk.iteritems (QC.Map)) :
                print (("%-30s: %.80s" % (" " * indent + k, v)).rstrip ())
                if isinstance (v, QC.__class__) :
                    _show (v, indent + 4)
    sk = lambda x : (x.e_type.i_rank, )
    for ETW in sorted (pyk.itervalues (apt._SAW.et_map), key = sk):
        if not pred (ETW) :
            continue
        if ETW.sa_tables :
            print (ETW)
            _show (ETW.QC)
Пример #53
0
 def __init__ (self, * args, ** kw) :
     self.GTW = GTW = JNJ.GTW (self)
     self.env = env = JNJ.Environment.HTML (* args, GTW = GTW, ** kw)
     self.Template_Type = T = Template_E.New \
         ( "x"
         , By_Path      = {}
         , Map          = {}
         , Media_Map    = {}
         , css_href_map = {}
         , etag         = None
         )
     self.Template_Map  = T.Map
     for t in sorted (pyk.itervalues (Template.Map), key = TFL.Getter.id) :
         T.copy (env, t)
Пример #54
0
 def _setup_attrs(self, e_type):
     attr_dict = self._attr_dict
     for a in pyk.itervalues(attr_dict):
         for d in a.attr.auto_up_depends:
             try:
                 x = attr_dict[d]
             except KeyError:
                 pass
             else:
                 x.dependent_attrs.add(a)
         if isinstance(a.completer, MOM.Attr.Completer_Spec):
             a.attr.completer = a.completer(a, e_type)
         if isinstance(a.polisher, MOM.Attr.Polisher._Polisher_):
             a.attr.polisher = a.polisher.Instance(a)
Пример #55
0
def show_selects(apt, name="select", pred=pred):
    sk = lambda x: (x.e_type.i_rank, )
    for ETW in sorted(pyk.itervalues(apt._SAW.et_map), key=sk):
        if not pred(ETW):
            continue
        T = ETW.e_type
        if ETW.has_relevant_tables:
            second = "" if T.relevant_root is T \
                else (T.relevant_root.type_name if T.relevant_root else "")
            head = ("%s %s" % (T.type_name, second)).strip()
            print \
                ( "%s%s" % (head, nl), "  "
                , fixed_booleans (formatted_select (ETW, name = name))
                )
Пример #56
0
 def __init__(self, *args, **kw):
     self.GTW = GTW = JNJ.GTW(self)
     self.env = env = JNJ.Environment.HTML(*args, GTW=GTW, **kw)
     self.Template_Type = T = Template_E.New \
         ( "x"
         , By_Path      = {}
         , Map          = {}
         , Media_Map    = {}
         , css_href_map = {}
         , etag         = None
         )
     self.Template_Map = T.Map
     for t in sorted(pyk.itervalues(Template.Map), key=TFL.Getter.id):
         T.copy(env, t)
Пример #57
0
def show_selects (apt, name = "select", pred = pred) :
    sk = lambda x : (x.e_type.i_rank, )
    for ETW in sorted (pyk.itervalues (apt._SAW.et_map), key = sk):
        if not pred (ETW) :
            continue
        T = ETW.e_type
        if ETW.has_relevant_tables :
            second = "" if T.relevant_root is T \
                else (T.relevant_root.type_name if T.relevant_root else "")
            head   = ("%s %s" % (T.type_name, second)).strip ()
            print \
                ( "%s%s" % (head, nl), "  "
                , fixed_booleans (formatted_select (ETW, name = name))
                )
Пример #58
0
def unit_changes(after, before, str_dates, unit, offset=0, limit=5):
    """Yield all elements of `str_dates` closest to `unit` changes."""
    map = mm_list()
    for d, sd in in_range(after, before, str_dates):
        p1, p2 = d.periods[unit]
        if offset:
            p1 += offset
            p2 += offset
        p = p1 if (d - p1 < (p2 - p1) // 2) else (p2 + 1)
        delta = (d - p).days
        a_delta = abs(delta)
        if a_delta <= limit:
            map[p].append((a_delta, -sign(delta), sd))
    result = list(min(v)[-1] for v in pyk.itervalues(map))
    return sorted(result)