|
PyTimeloop
|
A list of factors used to describe loop bounds. More...


Public Member Functions | |
| declare_attrs (cls, *args, **kwargs) | |
| Initialize the attributes of this node. | |
| List[Tuple[str, str, str]] | get_split_factors (self) |
| Get a list of split factors. | |
| List[str] | get_factor_names (self) |
| Get a list of factor names. | |
| remove_factor (self, str name) | |
| Remove a factor from the list of factors. | |
| add_eq_factor (self, str name, int value, bool overwrite=False) | |
| Adds an equality factor to the constraint. | |
| add_leq_factor (self, str name, int value, bool overwrite=False) | |
| Adds a less than or equal to (<=) factor constraint to the list of constraints. | |
| add_geq_factor (self, str name, int value, bool overwrite=False) | |
| Adds a greater-than-or-equal factor constraint to the constraint set. | |
| check_unique_remove_repeat (self) | |
| "Factors" | combine (self, "Factors" other) |
| Extends this list with the contents of another list. | |
| get_minimum_product (self, problem.Instance problem_instance) | |
| Calculates the minimum product of all factors in this list. | |
| bool | add_eq_factor_iff_not_exists (self, str name, int value) |
| Add an "name=value" factor iff "name" is not already in the factor list. | |
| bool | add_leq_factor_iff_not_exists (self, str name, int value) |
| Add an "name<=value" factor iff "name" is not already in the factor list. | |
| Optional[str] | name2factor (self, str name) |
| Return the factor with the given name, or None if not found. | |
| __init__ (self, *args, **kwargs) | |
Public Member Functions inherited from pytimeloop.timeloopfe.common.nodes.ListNode | |
| __init__ (self, *args, **kwargs) | |
Public Member Functions inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| __init__ (self, *args, **kwargs) | |
| get_specifiers_from_processors (cls, "BaseSpecification" spec) | |
| Get the specifiers that have been set from processors. | |
| reset_specifiers_from_processors (cls, Optional[Type] processor=None) | |
| Reset the specifiers that have been set from processors. | |
| reset_processor_elems (cls, Optional[Type] processor=None) | |
| recognize_all (cls, bool recognize_all=True) | |
| Set whether all attributes under this node should be recognized. | |
| str | get_tag (self) |
| Get the tag of this node. | |
| Iterable[Tuple[Union[str, int], Any]] | items (self) |
| Get iterable of (key, value) or (index, value) pairs. | |
| T | combine_index (self, Union[str, int] key, T value) |
| Combine the value at the given key with the given value. | |
| str | get_name (self, Union[Set, None] seen=None) |
| Get the name of this node. | |
| check_unrecognized (self, bool ignore_empty=False, ignore_should_have_been_removed_by=False) | |
| Check for unrecognized keys in this node and all subnodes. | |
| Any | recursive_apply (self, callable func, bool self_first=False, set applied_to=None) |
| Apply a function to this node and all subnodes. | |
| clean_empties (self) | |
| Remove empty nodes from this node and all subnodes. | |
| bool | isempty (self) |
| Return True if this node is empty. | |
| bool | isempty_recursive (self) |
| Return True if this node or all subnodes are empty. | |
| add_attr (cls, str key_or_tag, Optional[Union[type, Tuple[type,...], Tuple[None,...], Tuple[str,...], None]] required_type=None, Any default=default_unspecified_, Optional[Callable] callfunc=None, Optional[bool] part_name_match=None, Optional[bool] no_change_key=None, Any _processor_responsible_for_removing=None, Optional[Dict[str, TypeSpecifier]] _add_checker_to=None) | |
| Initialize a type specifier for this class. | |
| List[T] | get_nodes_of_type (self, Type[T] node_type) |
| Return a list of all subnodes of a given type. | |
| Callable | get_setter_lambda (self, Union[str, int] keytag) |
| Get a function that can be used to set a value in this node. | |
| Callable | get_combiner_lambda (self, Union[str, int] keytag) |
| Get a function that can be used to combine a value to this node. | |
| List[Tuple[Any, Callable]] | get_setters_for_keytag (self, str keytag, bool recursive=True) |
| Get a list of tuples of the form (value, setter) for all keys/tags in this node that match the given key/tag. | |
| List[Tuple[Any, Callable]] | get_combiners_for_keytag (self, str keytag, bool recursive=True) |
| Get a list of tuples of the form (value, combiner) for all keys/tags in this node that match the given key/tag. | |
| List[Tuple[Any, Callable]] | get_setters_for_type (self, Type t, bool recursive=True) |
| Get a list of tuples of the form (value, setter) for all keys/tags in this node that match the given type. | |
| List[Tuple[Any, Callable]] | get_combiners_for_type (self, Type t, bool recursive=True) |
| Get a list of tuples of the form (value, combiner) for all keys/tags in this node that match the given type. | |
| __str__ (self) | |
| Return the name of this node. | |
| __format__ (self, format_spec) | |
| Formats the name of this node. | |
| bool | is_defined_non_default_non_empty (self, str key) |
| Returns True if the given key is defined in this node and is not the default value and is not empty. | |
| Any | __getitem__ (self, Union[str, int] key) |
| Get the value at the given key or index. | |
| __setitem__ (self, Union[str, int] key, Any value) | |
| Set the value at the given key or index. | |
| parse_expressions (self, Optional[Dict[str, Any]] symbol_table=None, Optional[set] parsed_ids=None, Optional[Callable] callfunc=None) | |
| Parse expressions in this node and all subnodes. | |
| unique_class_name (cls) | |
| Return a unique name for this class. | |
Static Public Member Functions | |
| check_valid_factor (f) | |
| Check if a factor is valid. | |
| "Factors" | factory (Union[str, list] x) |
| Create a Factors object from a string or a list. | |
| Tuple[str, str, int] | splitfactor (str x) |
| Split a factor string into its components. | |
Static Public Member Functions inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| "BaseSpecification" | get_global_spec () |
| Get the global specification object. | |
| set_global_spec ("BaseSpecification" spec) | |
| Set the global specification object. | |
| Any | try_combine (Any a, Any b, Union["Node", None] innonde=None, Union[int, str, None] index=None) |
| Try to combine two values. | |
Protected Member Functions | |
| _check_factors_compatible (self, a, b) | |
Protected Member Functions inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| Dict[str, TypeSpecifier] | _get_type_specifiers (cls, "BaseSpecification" spec) |
| Get the type specifiers for this node. | |
| _get_all_recognized (self) | |
| Dict[Union[str, int], TypeSpecifier] | _get_index2checker (self, Optional[List[Tuple[str, Any]]] key2elem=None) |
| _parse_elem (self, Union[str, int] key, TypeSpecifier check, Any value_override=None) | |
| _parse_elems (self) | |
| _parse_extra_elems (self, List[Tuple[str, Any]] key2elem) | |
| _check_unrecognized (self, ignore_empty=False, ignore_should_have_been_removed_by=False) | |
| _parse_expression (self, Union[str, int] index, Dict[str, Any] symbol_table, Optional[TypeSpecifier] checker=None) | |
Additional Inherited Members | |
Public Attributes inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| Node | parent_node = None |
| "BaseSpecification" | spec = Node.get_global_spec() |
| logger = logging.getLogger(self.__class__.__name__) | |
| from_data = None | |
Static Protected Member Functions inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| str | _get_tag (x) |
Protected Attributes inherited from pytimeloop.timeloopfe.common.nodes.Node | |
| tuple | _init_args = (args, kwargs) |
| bool | _default_parse = False |
A list of factors used to describe loop bounds.
| pytimeloop.timeloopfe.v4.constraints.Factors.__init__ | ( | self, | |
| * | args, | ||
| ** | kwargs ) |
|
protected |
| pytimeloop.timeloopfe.v4.constraints.Factors.add_eq_factor | ( | self, | |
| str | name, | ||
| int | value, | ||
| bool | overwrite = False ) |
Adds an equality factor to the constraint.
Args: name (str): The name of the factor. value (int): The value of the factor. overwrite (bool, optional): If True, removes any existing factor with the same name before adding the new one. Defaults to False.
| bool pytimeloop.timeloopfe.v4.constraints.Factors.add_eq_factor_iff_not_exists | ( | self, | |
| str | name, | ||
| int | value ) |
Add an "name=value" factor iff "name" is not already in the factor list.
Return True if the factor was added.
| pytimeloop.timeloopfe.v4.constraints.Factors.add_geq_factor | ( | self, | |
| str | name, | ||
| int | value, | ||
| bool | overwrite = False ) |
Adds a greater-than-or-equal factor constraint to the constraint set.
Args: name (str): The name of the factor. value (int): The value of the factor. overwrite (bool, optional): If True, removes any existing factor with the same name before adding the new one. Defaults to False.
| pytimeloop.timeloopfe.v4.constraints.Factors.add_leq_factor | ( | self, | |
| str | name, | ||
| int | value, | ||
| bool | overwrite = False ) |
Adds a less than or equal to (<=) factor constraint to the list of constraints.
Args: name (str): The name of the factor. value (int): The value of the factor. overwrite (bool, optional): If True, removes any existing factor with the same name before adding the new one. Defaults to False.
| bool pytimeloop.timeloopfe.v4.constraints.Factors.add_leq_factor_iff_not_exists | ( | self, | |
| str | name, | ||
| int | value ) |
Add an "name<=value" factor iff "name" is not already in the factor list.
Return True if the factor was added.
| pytimeloop.timeloopfe.v4.constraints.Factors.check_unique_remove_repeat | ( | self | ) |
|
static |
Check if a factor is valid.
Parameters:
Returns:
Raises:
| "Factors" pytimeloop.timeloopfe.v4.constraints.Factors.combine | ( | self, | |
| "Factors" | other ) |
Extends this list with the contents of another list.
Reimplemented from pytimeloop.timeloopfe.common.nodes.CombinableListNode.
| pytimeloop.timeloopfe.v4.constraints.Factors.declare_attrs | ( | cls, | |
| * | args, | ||
| ** | kwargs ) |
Initialize the attributes of this node.
Reimplemented from pytimeloop.timeloopfe.common.nodes.Node.
|
static |
| List[str] pytimeloop.timeloopfe.v4.constraints.Factors.get_factor_names | ( | self | ) |
Get a list of factor names.
Example: get_factor_names() returns ["X", "Y", "Z"] if the factors are "X=123", "Y=456", and "Z=789".
| pytimeloop.timeloopfe.v4.constraints.Factors.get_minimum_product | ( | self, | |
| problem.Instance | problem_instance ) |
Calculates the minimum product of all factors in this list.
Args: problem_instance (problem.Instance): The problem instance.
Returns: int: The calculated minimum product.
| List[Tuple[str, str, str]] pytimeloop.timeloopfe.v4.constraints.Factors.get_split_factors | ( | self | ) |
Get a list of split factors.
Example: get_split_factors() returns [("X", "=", "123"), ("Y", "=", "456"), ("Z", "=", "789")] if the factors are "X=123", "Y=456", and "Z=789".
| Optional[str] pytimeloop.timeloopfe.v4.constraints.Factors.name2factor | ( | self, | |
| str | name ) |
Return the factor with the given name, or None if not found.
| pytimeloop.timeloopfe.v4.constraints.Factors.remove_factor | ( | self, | |
| str | name ) |
Remove a factor from the list of factors.
Args: name (str): The name of the factor to be removed.
Raises: None
Example: remove_factor("X") removes the factor "X=123" from the list of factors.
|
static |
Split a factor string into its components.
Args: x (str): The factor string to be split.
Returns: Tuple[str, str, int]: A tuple containing the factor name, the comparison operator, and the factor value.
Raises: ValueError: If none of the valid comparison operators are found in the factor string.
Example: splitfactor("X=123") returns ("X", "=", 123)