<s> from synapse . push . rulekinds import PRIORITY_CLASS_MAP , PRIORITY_CLASS_INVERSE_MAP <EOL> import copy <EOL> def list_with_base_rules ( rawrules ) : <EOL> """<STR_LIT>""" <EOL> ruleslist = [ ] <EOL> modified_base_rules = { <EOL> r [ '<STR_LIT>' ] : r for r in rawrules if r [ '<STR_LIT>' ] < <NUM_LIT:0> <EOL> } <EOL> rawrules = [ r for r in rawrules if r [ '<STR_LIT>' ] >= <NUM_LIT:0> ] <EOL> current_prio_class = PRIORITY_CLASS_INVERSE_MAP . keys ( ) [ - <NUM_LIT:1> ] <EOL> ruleslist . extend ( make_base_prepend_rules ( <EOL> PRIORITY_CLASS_INVERSE_MAP [ current_prio_class ] , modified_base_rules <EOL> ) ) <EOL> for r in rawrules : <EOL> if r [ '<STR_LIT>' ] < current_prio_class : <EOL> while r [ '<STR_LIT>' ] < current_prio_class : <EOL> ruleslist . extend ( make_base_append_rules ( <EOL> PRIORITY_CLASS_INVERSE_MAP [ current_prio_class ] , <EOL> modified_base_rules , <EOL> ) ) <EOL> current_prio_class -= <NUM_LIT:1> <EOL> if current_prio_class > <NUM_LIT:0> : <EOL> ruleslist . extend ( make_base_prepend_rules ( <EOL> PRIORITY_CLASS_INVERSE_MAP [ current_prio_class ] , <EOL> modified_base_rules , <EOL> ) ) <EOL> ruleslist . append ( r ) <EOL> while current_prio_class > <NUM_LIT:0> : <EOL> ruleslist . extend ( make_base_append_rules ( <EOL> PRIORITY_CLASS_INVERSE_MAP [ current_prio_class ] , <EOL> modified_base_rules , <EOL> ) ) <EOL> current_prio_class -= <NUM_LIT:1> <EOL> if current_prio_class > <NUM_LIT:0> : <EOL> ruleslist . extend ( make_base_prepend_rules ( <EOL> PRIORITY_CLASS_INVERSE_MAP [ current_prio_class ] , <EOL> modified_base_rules , <EOL> ) ) <EOL> return ruleslist <EOL> def make_base_append_rules ( kind , modified_base_rules ) : <EOL> rules = [ ] <EOL> if kind == '<STR_LIT>' : <EOL> rules = BASE_APPEND_OVRRIDE_RULES <EOL> elif kind == '<STR_LIT>' : <EOL> rules = BASE_APPEND_UNDERRIDE_RULES <EOL> elif kind == '<STR_LIT:content>' : <EOL> rules = BASE_APPEND_CONTENT_RULES <EOL> rules = copy . deepcopy ( rules ) <EOL> for r in rules : <EOL> modified = modified_base_rules . get ( r [ '<STR_LIT>' ] ) <EOL> if modified : <EOL> r [ '<STR_LIT>' ] = modified [ '<STR_LIT>' ] <EOL> return rules <EOL> def make_base_prepend_rules ( kind , modified_base_rules ) : <EOL> rules = [ ] <EOL> if kind == '<STR_LIT>' : <EOL> rules = BASE_PREPEND_OVERRIDE_RULES <EOL> rules = copy . deepcopy ( rules ) <EOL> for r in rules : <EOL> modified = modified_base_rules . get ( r [ '<STR_LIT>' ] ) <EOL> if modified : <EOL> r [ '<STR_LIT>' ] = modified [ '<STR_LIT>' ] <EOL> return rules <EOL> BASE_APPEND_CONTENT_RULES = [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : '<STR_LIT:default>' , <EOL> } , { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> ] <EOL> } , <EOL> ] <EOL> BASE_PREPEND_OVERRIDE_RULES = [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : False , <EOL> '<STR_LIT>' : [ ] , <EOL> '<STR_LIT>' : [ <EOL> "<STR_LIT>" <EOL> ] <EOL> } <EOL> ] <EOL> BASE_APPEND_OVRRIDE_RULES = [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> ] <EOL> } <EOL> ] <EOL> BASE_APPEND_UNDERRIDE_RULES = [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT:type>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : '<STR_LIT>' <EOL> } , { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : False <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : '<STR_LIT:default>' <EOL> } , { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT:2>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT:type>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : '<STR_LIT:default>' <EOL> } , { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : False <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT:type>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : '<STR_LIT:default>' <EOL> } , { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : False <EOL> } <EOL> ] <EOL> } , <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:key>' : '<STR_LIT:type>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : [ <EOL> '<STR_LIT>' , { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:value>' : False <EOL> } <EOL> ] <EOL> } <EOL> ] <EOL> BASE_RULE_IDS = set ( ) <EOL> for r in BASE_APPEND_CONTENT_RULES : <EOL> r [ '<STR_LIT>' ] = PRIORITY_CLASS_MAP [ '<STR_LIT:content>' ] <EOL> r [ '<STR_LIT:default>' ] = True <EOL> BASE_RULE_IDS . add ( r [ '<STR_LIT>' ] ) <EOL> for r in BASE_PREPEND_OVERRIDE_RULES : <EOL> r [ '<STR_LIT>' ] = PRIORITY_CLASS_MAP [ '<STR_LIT>' ] <EOL> r [ '<STR_LIT:default>' ] = True <EOL> BASE_RULE_IDS . add ( r [ '<STR_LIT>' ] ) <EOL> for r in BASE_APPEND_OVRRIDE_RULES : <EOL> r [ '<STR_LIT>' ] = PRIORITY_CLASS_MAP [ '<STR_LIT>' ] <EOL> r [ '<STR_LIT:default>' ] = True <EOL> BASE_RULE_IDS . add ( r [ '<STR_LIT>' ] ) <EOL> for r in BASE_APPEND_UNDERRIDE_RULES : <EOL> r [ '<STR_LIT>' ] = PRIORITY_CLASS_MAP [ '<STR_LIT>' ] <EOL> r [ '<STR_LIT:default>' ] = True <EOL> BASE_RULE_IDS . add ( r [ '<STR_LIT>' ] ) </s>
