Constraint

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

Bases: object

Constraint that is made up of SimpleConstraints

Parameters
  • init (object or [object[,...]]) – A single object or list of objects where the objects are as follows. - SimpleConstraint or subclass - Constraint

  • reduce (function) – 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

  • name (str or None) – Optional name for constraint.

  • reprocess_on_match (bool) – Reprocess the item if the constraint is satisfied.

  • reprocess_on_fail (bool) – Reprocess the item if the constraint is not satisfied.

  • work_over (ProcessList.[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.

constraints

List of Constraint or SimpleConstraint that make this constraint.

Type

[Constraint[,…]]

matched

Result of the last check_and_set

Type

bool

reduce

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

Type

function

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> at 0x7f8be05f5730>,
                  '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})

Attributes Summary

dup_names

Return dictionary of constraints with duplicate names

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)

Return the specified attribute

notall(item, constraints)

True if not all of the constraints match

notany(item, constraints)

True if none of the constraints match

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 – Returns a mapping between the duplicated name and all the constraints that define that name.

Return type

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

Methods Documentation

static all(item, constraints)[source]

Return positive only if all results are positive.

static any(item, constraints)[source]

Return the first successful constraint.

append(constraint)[source]

Append a new constraint

check_and_set(item, work_over=1)[source]

Check and set the constraint

Returns

success, reprocess

Returns 2-tuple of

  • success : True if check is successful.

  • List of ProcessList.

Return type

bool, [ProcessList[,…]]

copy()[source]

Copy ourselves

get_all_attr(attribute: str)[source]

Return the specified attribute

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

Parameters

attribute (str) – The attribute to retrieve

Returns

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

Return type

[(SimpleConstraint or Constraint, object)[,…]]

Raises

AttributeError – If the attribute is not found.

static notall(item, constraints)[source]

True if not all of the constraints match

static notany(item, constraints)[source]

True if none of the constraints match