def get_config(_extrafiles=None, initdict=None, session=None, **kwargs): """get_config([extrafiles], [initdict=], [**kwargs]) Returns a RootContainer instance containing configuration parameters. An extra dictionary may be merged in with the 'initdict' parameter. And finally, extra options may be added with keyword parameters when calling this. """ files = [] files.append(os.path.join(os.environ["HOME"], ".pycopiarc")) if type(_extrafiles) is str: _extrafiles = [_extrafiles] if _extrafiles: files.extend(_extrafiles) session = session or models.get_session() rootnode = config.get_root(session) cache = dictlib.AttrDict() flags = dictlib.AttrDict() # copy flag values to cache so changes don't persist. flagsnode = session.query(Config).filter( and_(Config.parent_id == rootnode.id, Config.name == "flags")).one() for valnode in flagsnode.children: flags[valnode.name] = valnode.value cache.flags = flags cf = RootContainer(session, rootnode, cache) for f in files: if os.path.isfile(f): cf.mergefile(f) if type(initdict) is dict: cf.evalupdate(initdict) cf.update(kwargs) controller.initialize(cf) return cf
def _get_cache(self): try: return self.__dict__["_cache_"] except KeyError: from pycopia import dictlib c = dictlib.AttrDict() self.__dict__["_cache_"] = c return c
def test_AttrDict(self): d = dictlib.AttrDict() d.one = "one" print d print d.get print d.one print d["one"] d["two"] = 2 print d.two print d["two"]
def test_AttrDict(self): d = dictlib.AttrDict() d.one = "one" print(d) print(d.get) print(d.one) print(d["one"]) d["two"] = 2 print(d.two) print(d["two"])
def GetBuild(self): """Return a dictionary of build information from phone. """ if self._build is None: text = self.ShellCommandOutput("cat system/build.prop") rv = dictlib.AttrDict() for line in text.splitlines(): if line.startswith("#"): continue try: l, r = line.split("=", 1) except ValueError: continue else: rv[l.strip()] = r.strip() self._build = rv return self._build
def RollupTable(filename, timespan="1minute"): timemarks = TimeMarksGenerator("0s,%s,..." % timespan) newfilename = "%s-%s.dat" % (os.path.splitext(filename)[0], timespan) header, arr = ReadArray(filename) header = header[:2] # timestamp and average value ctx = dictlib.AttrDict() ctx.datafilename = newfilename report = flatfile.GnuplotReport(ctx) report.Initialize() report.SetColumns(*header) start = timemarks.next() for end in timemarks: minute = TimeSlice(arr, start, end) if len(minute) > 0: minutecolumns = minute.transpose() report.WriteRecord(minutecolumns[0][-1], numpy.average(minutecolumns[1])) start = end else: break report.Finalize() return newfilename
BUILTIN_CMDLINE = 0x1 # Run in the command-line. BUILTIN_MENU = 0x2 # Run in the menu. BUILTIN_TITLE = 0x4 # Only for the command title. BUILTIN_SCRIPT = 0x8 # Run in the script. BUILTIN_NO_ECHO = 0x10 # Don't print command on booting. BUILTIN_HELP_LIST = 0x20 # Show help in listing. class GrubCommand(object): def __init__(self, name, flags): self.name = name self.flags = flags COMMANDS = dictlib.AttrDict() COMMANDS.blocklist = GrubCommand("blocklist", BUILTIN_CMDLINE | BUILTIN_HELP_LIST) COMMANDS.boot = GrubCommand( "boot", BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ) COMMANDS.bootp = GrubCommand( "bootp", BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST, ) COMMANDS.cat = GrubCommand( "cat", BUILTIN_CMDLINE | BUILTIN_HELP_LIST, ) COMMANDS.chainloader = GrubCommand(
def DecodeFullPathName(pathname): data = DataFileData() data.build = dictlib.AttrDict() data.pathname = pathname data.rollup = 0 data.voltage = 0.0 data.samples = 0 pathname = os.path.abspath(pathname) dirname, fname = os.path.split(pathname) nameparts = fname.split("-") dirparts = dirname.split("/") if "data" in dirparts: data.build.id = dirparts[-1] data.build.type = dirparts[-2] data.build.product = dirparts[-3] else: data.build = None try: mt = timelib.strptime_mutable(nameparts[1], "%m%d%H%M%S") except: data.timestamp = timelib.localtime_mutable(os.path.getmtime(pathname)) else: mt.set_format("%a, %d %b %Y %H:%M:%S %Z") # year info is not encoded in the timestamp, so get it from file system. mtime = timelib.localtime_mutable(os.path.getmtime(pathname)) mt.year = mtime.tm_year data.timestamp = mt data.testcase = nameparts[0] if len(nameparts) > 1: endoffset = -1 try: data.voltage = float(nameparts[endoffset].split(".")[0]) / 100.0 except (ValueError, TypeError, IndexError): try: data.rollup = timespec.parse_timespan(nameparts[endoffset].split(".")[0]) endoffset -= 1 except ValueError: data.rollup = 0 try: data.voltage = float(nameparts[endoffset].split(".")[0]) / 100.0 except (ValueError, TypeError, IndexError): data.voltage = 0.0 endoffset -= 1 try: data.samples = int(nameparts[endoffset]) except (ValueError, TypeError, IndexError): data.samples = 0 for part in nameparts[2:endoffset]: mo = _STATE_RE.match(part) if mo: data[mo.group(1)] = _STATEMAP[mo.group(2)] else: mo = _DATA_RE.match(part) if mo: data[mo.group(1)] = mo.group(2) else: print >>sys.stderr, "Warning: name component not matched: %r" % (part,) return data