The logic in this module extracts the path sent in a filter query.

PATCH calls pass a path key-value pair in the payload:

Valid examples of "path" are as follows:



    "path":"addresses[type eq "work"]"

    "path":"members[value eq

    "path":"members[value eq

                    Figure 8: Example Path Values

Those paths can be simple or complex. The “valuePath” rule allows specific values of a complex multi-valued attribute to be selected:

RFC 7644, Figure 7: SCIM PATCH PATH Rule, ABNF:

    PATH = attrPath / valuePath [subAttr]

The classes in this module parse the overall PATH string for its parts so that they can be easily used in following code.

class scim2_filter_parser.attr_paths.AttrPath(filter_: str, attr_map: dict)

This class depends on the SQL transpiler.


Return first path in list of parsed attr paths.


Return true if AttrPath has multiple levels within it. Eg:

"members[value eq "2819c223-7f76-453a-919d-413861904646"]"

The following example is a simple (or not complex) AttrPath:


Return the parameters for the given path keyed by their attr paths. Eg:

    ('members', 'value', None):  "2819c223-7f76-453a-919d-413861904646",

Main program. Used for testing.