rval = self._func(*wrapped_args, **wrapped_kwargs)
- if isinstance(rval, (basestring, list, tuple)):
- if isinstance(rval, basestring):
+ if isinstance(rval, (bytes, basestring, list, tuple)):
+ if isinstance(rval, (bytes, basestring)):
rval = _unicode_decode(rval,
encoding=encoding, errors='replace')
else:
yield (k, self[k])
def items(self):
- return list(self.items())
+ return list(self.iteritems())
def __setitem__(self,mykey,myvalue):
"set a value; will be thrown away at reset() time"
mydep=mydep[1:]
orig_dep = mydep
if isinstance(orig_dep, dep.Atom):
- mydep = orig_dep.cpv
+ mydep = orig_dep.cp
else:
- mydep = dep_getcpv(orig_dep)
- myindex = orig_dep.index(mydep)
- prefix = orig_dep[:myindex]
- postfix = orig_dep[myindex+len(mydep):]
+ mydep = orig_dep
+ has_cat = '/' in orig_dep
+ if not has_cat:
+ alphanum = re.search(r'\w', orig_dep)
+ if alphanum:
+ mydep = orig_dep[:alphanum.start()] + "null/" + \
+ orig_dep[alphanum.start():]
+ try:
+ mydep = dep.Atom(mydep)
+ except exception.InvalidAtom:
+ # Missing '=' prefix is allowed for backward compatibility.
+ if not dep.isvalidatom("=" + mydep):
+ raise
+ mydep = dep.Atom('=' + mydep)
+ orig_dep = '=' + orig_dep
+ if not has_cat:
+ null_cat, pn = catsplit(mydep.cp)
+ mydep = pn
+ else:
+ mydep = mydep.cp
expanded = cpv_expand(mydep, mydb=mydb,
use_cache=use_cache, settings=settings)
- try:
- return portage.dep.Atom(prefix + expanded + postfix)
- except portage.exception.InvalidAtom:
- # Missing '=' prefix is allowed for backward compatibility.
- if not isvalidatom("=" + prefix + expanded + postfix):
- raise
- return portage.dep.Atom("=" + prefix + expanded + postfix)
+ return portage.dep.Atom(orig_dep.replace(mydep, expanded, 1))
def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None,
use_cache=1, use_binaries=0, myroot="/", trees=None):
yield v
def values(self):
- return [v for _, v in self.items()]
+ return [v for _, v in self.iteritems()]
def items(self):
- return list(self.items())
+ return list(self.iteritems())
def get(self, key, default=None):
try:
pass
def items(self):
- return list(self.items())
+ return list(self.iteritems())
def itervalues(self):
for k, v in self.items():
yield v
def values(self):
- return list(self.values())
+ return list(self.itervalues())
def __delitem__(self, k):
try:
We dislike this behavior so we create our own normpath func
to fix it.
"""
- if mypath.startswith(os.path.sep):
+ if sys.hexversion >= 0x3000000 and isinstance(mypath, bytes):
+ path_sep = os.path.sep.encode()
+ else:
+ path_sep = os.path.sep
+
+ if mypath.startswith(path_sep):
# posixpath.normpath collapses 3 or more leading slashes to just 1.
- return os.path.normpath(2*os.path.sep + mypath)
+ return os.path.normpath(2*path_sep + mypath)
else:
return os.path.normpath(mypath)