pattern

Python APIs for STIX 2 Pattern Semantic Equivalence.

compare Some generic comparison utility functions.
transform Generic AST transformation classes.

equivalent_patterns(pattern1, pattern2, stix_version='2.1')

Determine whether two STIX patterns are semantically equivalent.

Parameters:
  • pattern1 – The first STIX pattern
  • pattern2 – The second STIX pattern
  • stix_version – The STIX version to use for pattern parsing, as a string (“2.0”, “2.1”, etc). Defaults to library-wide default version.
Returns:

True if the patterns are semantically equivalent; False if not

find_equivalent_patterns(search_pattern, patterns, stix_version='2.1')

Find patterns from a sequence which are equivalent to a given pattern. This is more efficient than using equivalent_patterns() in a loop, because it doesn’t re-normalize the search pattern over and over. This works on an input iterable and is implemented as a generator of matches. So you can “stream” patterns in and matching patterns will be streamed out.

Parameters:
  • search_pattern – A search pattern as a string
  • patterns – An iterable over patterns as strings
  • stix_version – The STIX version to use for pattern parsing, as a string (“2.0”, “2.1”, etc). Defaults to library-wide default version.
Returns:

A generator iterator producing the semantically equivalent patterns