Constraint

class jwst.associations.lib.constraint.Constraint(init=None, reduce=None, name=None, reprocess_on_match=False, reprocess_on_fail=False, work_over=ListCategory.BOTH, reprocess_rules=None)[source]

Bases: object

Constraint that is made up of SimpleConstraints.

Attributes:
constraints[Constraint[,…]]

List of Constraint or SimpleConstraint that make this constraint.

matchedbool

Result of the last check_and_set

reducefunction

A reduction function with signature x(iterable) where iterable is the components list. Returns boolean indicating state of the components. Predefined functions are: - all: True if all components return True - any: True if any component returns True

Notes

Named constraints can be accessed directly through indexing:

>>> c = Constraint(SimpleConstraint(name="simple", value="a_value"))
>>> c["simple"]
SimpleConstraint({'sources': <function SimpleConstraint.__init__.<locals>.<lambda>,
                  'force_unique': True,
                  'test': <bound method SimpleConstraint.eq of SimpleConstraint({...})>,
                  'reprocess_on_match': False,
                  'reprocess_on_fail': False,
                  'work_over': 1,
                  'reprocess_rules': None,
                  'value': 'a_value',
                  'name': 'simple',
                  'matched': False})

Initialize a new Constraint.

Parameters:
initobject or [object[,…]]

A single object or list of objects where the objects are as follows. - SimpleConstraint or subclass - Constraint

reducefunction

A reduction function with signature x(iterable) where iterable is the components list. Returns boolean indicating state of the components. Default value is Constraint.all

namestr or None

Optional name for constraint.

reprocess_on_matchbool

Reprocess the item if the constraint is satisfied.

reprocess_on_failbool

Reprocess the item if the constraint is not satisfied.

work_overListCategory.[BOTH, EXISTING, RULES]

The condition on which this constraint should operate.

reprocess_rules[rule[,..]] or None

List of rules to be applied to. If None, calling function will determine the ruleset. If empty, [], all rules will be used.

Attributes Summary

dup_names

Return dictionary of constraints with duplicate names.

id

Return identifier for the constraint.

Methods Summary

all(item, constraints)

Return positive only if all results are positive.

any(item, constraints)

Return the first successful constraint.

append(constraint)

Append a new constraint.

check_and_set(item[, work_over])

Check and set the constraint.

copy()

Copy ourselves.

get_all_attr(attribute[, name])

Return the specified attribute for specified constraints.

notall(item, constraints)

Check if not all of the constraints match; true if not all do.

notany(item, constraints)

Check if none of the constraints match; true if none do.

preserve()

Preserve all constraint states.

restore()

Restore all constraint states.

Attributes Documentation

dup_names

Return dictionary of constraints with duplicate names.

This method is meant to be overridden by classes that need to traverse a list of constraints.

Returns:
dups{str: [constraint[,…]][,…]}

Returns a mapping between the duplicated name and all the constraints that define that name.

id

Return identifier for the constraint.

Returns:
idstr

The identifier

Methods Documentation

static all(item, constraints)[source]

Return positive only if all results are positive.

Parameters:
itemACID

The candidate.

constraintslist[Constraint, …]

The list of constraints to check.

Returns:
bool, list(Constraint, …) or None

True if all constraints positive, with empty list. If no constraints, False and empty list. Otherwise False with list of constraints to reprocess.

static any(item, constraints)[source]

Return the first successful constraint.

Parameters:
itemACID

The candidate.

constraintslist[Constraint, …]

The list of constraints to check.

Returns:
bool, list(Constraint, …) or None

False, [] if no match or constraints to reprocess. True, list(Constraints) if match found, and any constraints to reprocess listed.

append(constraint)[source]

Append a new constraint.

check_and_set(item, work_over=ListCategory.BOTH)[source]

Check and set the constraint.

Returns:
success, reprocessbool, [~jwst.associations.ProcessList[,…]]

Returns 2-tuple of

  • success : True if check is successful.

  • List of ProcessList.

copy()[source]

Copy ourselves.

Returns:
object

Deepcopy of self.

get_all_attr(attribute, name=None)[source]

Return the specified attribute for specified constraints.

Parameters:
attributestr

The attribute to retrieve

namestr or None

Only return attribute if the name of the current constraint matches the requested named constraints. If None, always return value.

Returns:
result[(SimpleConstraint or Constraint, object)[,…]]

The list of values of the attribute in a tuple. If there is no attribute, an empty tuple is returned.

Raises:
AttributeError

If the attribute is not found.

static notall(item, constraints)[source]

Check if not all of the constraints match; true if not all do.

Parameters:
itemACID

The candidate.

constraintslist[Constraint, …]

The list of constraints to check.

Returns:
bool

True if not all constraints match.

static notany(item, constraints)[source]

Check if none of the constraints match; true if none do.

Parameters:
itemACID

The candidate.

constraintslist[Constraint, …]

The list of constraints to check.

Returns:
bool

True if none of the constraints match.

preserve()[source]

Preserve all constraint states.

restore()[source]

Restore all constraint states.