コード例 #1
0
ファイル: config.py プロジェクト: wildone/pycopia
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
コード例 #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
コード例 #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"]
コード例 #4
0
ファイル: test.py プロジェクト: tijmengit/pycopia
 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"])
コード例 #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
コード例 #6
0
ファイル: analyze.py プロジェクト: llwang/powerdroid
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
コード例 #7
0
ファイル: grublib.py プロジェクト: tijmengit/pycopia
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(
コード例 #8
0
ファイル: datafile.py プロジェクト: llwang/powerdroid
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