diff options
author | Sebastian Luther <SebastianLuther@gmx.de> | 2010-05-19 14:04:13 +0200 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-05-20 02:52:02 -0700 |
commit | f3e9d04bfbca52991f0f8f26d29babce379ceb47 (patch) | |
tree | d87debf8420f6e6663d65f32de2255203730bf55 | |
parent | e37dc80c145d36eb1c76c17bf0ae5a3927b09a64 (diff) | |
download | portage-f3e9d04bfbca52991f0f8f26d29babce379ceb47.tar.gz portage-f3e9d04bfbca52991f0f8f26d29babce379ceb47.tar.bz2 portage-f3e9d04bfbca52991f0f8f26d29babce379ceb47.zip |
Add portage.dep.Atom.unevaluated_atom to not lose the original use dep in Atom.evaluate_conditionals()
-rw-r--r-- | pym/portage/dep/__init__.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py index 341953930..146caa709 100644 --- a/pym/portage/dep/__init__.py +++ b/pym/portage/dep/__init__.py @@ -549,7 +549,10 @@ class Atom(_atom_base): def __init__(self, forbid_overlap=False): self.overlap = self._overlap(forbid=forbid_overlap) - def __init__(self, s): + def __new__(cls, s, unevaluated_atom=None): + return _atom_base.__new__(cls, s) + + def __init__(self, s, unevaluated_atom=None): if isinstance(s, Atom): # This is an efficiency assertion, to ensure that the Atom # constructor is not called redundantly. @@ -608,6 +611,11 @@ class Atom(_atom_base): self.__dict__['use'] = use self.__dict__['without_use'] = without_use + if unevaluated_atom: + self.__dict__['unevaluated_atom'] = unevaluated_atom + else: + self.__dict__['unevaluated_atom'] = self + def __setattr__(self, name, value): raise AttributeError("Atom instances are immutable", self.__class__, name, value) @@ -657,7 +665,7 @@ class Atom(_atom_base): if self.slot: atom += ":%s" % self.slot atom += str(self.use.evaluate_conditionals(use)) - return Atom(atom) + return Atom(atom, self) def __copy__(self): """Immutable, so returns self.""" |