| # Copyright 1999-2013 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| from _emerge.DepPriority import DepPriority |
| |
| |
| class DepPrioritySatisfiedRange: |
| """ |
| DepPriority Index Category |
| |
| not satisfied and buildtime HARD |
| not satisfied and runtime 7 MEDIUM |
| satisfied and buildtime_slot_op 6 MEDIUM_SOFT |
| satisfied and buildtime 5 MEDIUM_SOFT |
| satisfied and runtime 4 MEDIUM_SOFT |
| runtime_post 3 MEDIUM_POST |
| satisfied and runtime_post 2 MEDIUM_POST |
| optional 1 SOFT |
| (none of the above) 0 NONE |
| """ |
| |
| MEDIUM = 7 |
| MEDIUM_SOFT = 6 |
| MEDIUM_POST = 3 |
| SOFT = 1 |
| NONE = 0 |
| |
| @classmethod |
| def _ignore_optional(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.optional) |
| |
| @classmethod |
| def _ignore_satisfied_runtime_post(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if not priority.satisfied: |
| return False |
| if priority.buildtime or priority.runtime: |
| return False |
| return bool(priority.runtime_post) |
| |
| @classmethod |
| def _ignore_runtime_post(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if priority.buildtime or priority.runtime: |
| return False |
| return bool(priority.runtime_post) |
| |
| @classmethod |
| def _ignore_satisfied_runtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if priority.buildtime: |
| return False |
| if not priority.runtime: |
| return True |
| return bool(priority.satisfied) |
| |
| @classmethod |
| def _ignore_satisfied_buildtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if priority.buildtime_slot_op: |
| return False |
| return bool(priority.satisfied) |
| |
| @classmethod |
| def _ignore_satisfied_buildtime_slot_op(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| if priority.optional: |
| return True |
| if priority.satisfied: |
| return True |
| return not priority.buildtime and not priority.runtime |
| |
| @classmethod |
| def _ignore_runtime(cls, priority): |
| if priority.__class__ is not DepPriority: |
| return False |
| return bool(priority.satisfied or priority.optional or not priority.buildtime) |
| |
| ignore_medium = _ignore_runtime |
| ignore_medium_soft = _ignore_satisfied_buildtime_slot_op |
| ignore_medium_post = _ignore_runtime_post |
| ignore_medium_post_satisifed = _ignore_satisfied_runtime_post |
| ignore_soft = _ignore_optional |
| |
| |
| DepPrioritySatisfiedRange.ignore_priority = ( |
| None, |
| DepPrioritySatisfiedRange._ignore_optional, |
| DepPrioritySatisfiedRange._ignore_satisfied_runtime_post, |
| DepPrioritySatisfiedRange._ignore_runtime_post, |
| DepPrioritySatisfiedRange._ignore_satisfied_runtime, |
| DepPrioritySatisfiedRange._ignore_satisfied_buildtime, |
| DepPrioritySatisfiedRange._ignore_satisfied_buildtime_slot_op, |
| DepPrioritySatisfiedRange._ignore_runtime, |
| ) |