home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 October / maximum-cd-2011-10.iso / DiscContents / digsby_setup.exe / lib / distutils / versionpredicate.pyo (.txt) < prev   
Encoding:
Python Compiled Bytecode  |  2011-06-22  |  2.9 KB  |  77 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import re
  5. import distutils.version as distutils
  6. import operator
  7. re_validPackage = re.compile('(?i)^\\s*([a-z_]\\w*(?:\\.[a-z_]\\w*)*)(.*)')
  8. re_paren = re.compile('^\\s*\\((.*)\\)\\s*$')
  9. re_splitComparison = re.compile('^\\s*(<=|>=|<|>|!=|==)\\s*([^\\s,]+)\\s*$')
  10.  
  11. def splitUp(pred):
  12.     res = re_splitComparison.match(pred)
  13.     if not res:
  14.         raise ValueError('bad package restriction syntax: %r' % pred)
  15.     res
  16.     (comp, verStr) = res.groups()
  17.     return (comp, distutils.version.StrictVersion(verStr))
  18.  
  19. compmap = {
  20.     '<': operator.lt,
  21.     '<=': operator.le,
  22.     '==': operator.eq,
  23.     '>': operator.gt,
  24.     '>=': operator.ge,
  25.     '!=': operator.ne }
  26.  
  27. class VersionPredicate:
  28.     
  29.     def __init__(self, versionPredicateStr):
  30.         versionPredicateStr = versionPredicateStr.strip()
  31.         if not versionPredicateStr:
  32.             raise ValueError('empty package restriction')
  33.         versionPredicateStr
  34.         match = re_validPackage.match(versionPredicateStr)
  35.         if not match:
  36.             raise ValueError('bad package name in %r' % versionPredicateStr)
  37.         match
  38.         (self.name, paren) = match.groups()
  39.         paren = paren.strip()
  40.  
  41.     
  42.     def __str__(self):
  43.         if self.pred:
  44.             seq = [ cond + ' ' + str(ver) for cond, ver in self.pred ]
  45.             return self.name + ' (' + ', '.join(seq) + ')'
  46.         return self.name
  47.  
  48.     
  49.     def satisfied_by(self, version):
  50.         for cond, ver in self.pred:
  51.             if not compmap[cond](version, ver):
  52.                 return False
  53.         
  54.         return True
  55.  
  56.  
  57. _provision_rx = None
  58.  
  59. def split_provision(value):
  60.     global _provision_rx
  61.     if _provision_rx is None:
  62.         _provision_rx = re.compile('([a-zA-Z_]\\w*(?:\\.[a-zA-Z_]\\w*)*)(?:\\s*\\(\\s*([^)\\s]+)\\s*\\))?$')
  63.     
  64.     value = value.strip()
  65.     m = _provision_rx.match(value)
  66.     if not m:
  67.         raise ValueError('illegal provides specification: %r' % value)
  68.     m
  69.     if not m.group(2):
  70.         pass
  71.     ver = None
  72.     if ver:
  73.         ver = distutils.version.StrictVersion(ver)
  74.     
  75.     return (m.group(1), ver)
  76.  
  77.