Exemple #1
0
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
Exemple #2
0
 def _get_cache(self):
     try:
         return self.__dict__["_cache_"]
     except KeyError:
         from pycopia import dictlib
         c = dictlib.AttrDict()
         self.__dict__["_cache_"] = c
         return c
Exemple #3
0
 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"]
Exemple #4
0
 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"])
Exemple #5
0
 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
Exemple #6
0
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
Exemple #7
0
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(
Exemple #8
0
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