@ -78,36 +78,29 @@ class RoomVersion:
# MSC2209: Check 'notifications' key while verifying
# m.room.power_levels auth rules.
limit_notifications_power_levels : bool
# MSC2175: No longer include the creator in m.room.create events.
msc2175_implicit_room_creator : bool
# MSC2174/MSC2176: Apply updated redaction rules algorithm, move redacts to
# content property.
msc2176_redaction_rules : bool
# MSC3083: Support the 'restricted' join_rule.
msc3083_join_rules : bool
# MSC3375: Support for the proper redaction rules for MSC3083. This mustn't
# be enabled if MSC3083 is not.
msc3375_redaction_rules : bool
# MSC2403: Allows join_rules to be set to 'knock', changes auth rules to allow sending
# m.room.membership event with membership 'knock'.
msc2403_knocking : bool
# No longer include the creator in m.room.create events.
implicit_room_creator : bool
# Apply updated redaction rules algorithm from room version 11.
updated_redaction_rules : bool
# Support the 'restricted' join rule.
restricted_join_rule : bool
# Support for the proper redaction rules for the restricted join rule. This requires
# restricted_join_rule to be enabled.
restricted_join_rule_fix : bool
# Support the 'knock' join rule.
knock_join_rule : bool
# MSC3389: Protect relation information from redaction.
msc3389_relation_redactions : bool
# MSC3787: Adds support for a `knock_restricted` join rule, mixing concepts of
# knocks and restricted join rules into the same join condition.
msc3787_knock_restricted_join_rule : bool
# MSC3667: Enforce integer power levels
msc3667_int_only_power_levels : bool
# MSC3821: Do not redact the third_party_invite content field for membership events.
msc3821_redaction_rules : bool
# Support the 'knock_restricted' join rule.
knock_restricted_join_rule : bool
# Enforce integer power levels
enforce_int_power_levels : bool
# MSC3931: Adds a push rule condition for "room version feature flags", making
# some push rules room version dependent. Note that adding a flag to this list
# is not enough to mark it "supported": the push rule evaluator also needs to
# support the flag. Unknown flags are ignored by the evaluator, making conditions
# fail if used.
msc3931_push_features : Tuple [ str , . . . ] # values from PushRuleRoomFlag
# MSC3989: Redact the origin field.
msc3989_redaction_rules : bool
class RoomVersions :
@ -120,17 +113,15 @@ class RoomVersions:
special_case_aliases_auth = True ,
strict_canonicaljson = False ,
limit_notifications_power_levels = False ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V2 = RoomVersion (
" 2 " ,
@ -141,17 +132,15 @@ class RoomVersions:
special_case_aliases_auth = True ,
strict_canonicaljson = False ,
limit_notifications_power_levels = False ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V3 = RoomVersion (
" 3 " ,
@ -162,17 +151,15 @@ class RoomVersions:
special_case_aliases_auth = True ,
strict_canonicaljson = False ,
limit_notifications_power_levels = False ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V4 = RoomVersion (
" 4 " ,
@ -183,17 +170,15 @@ class RoomVersions:
special_case_aliases_auth = True ,
strict_canonicaljson = False ,
limit_notifications_power_levels = False ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V5 = RoomVersion (
" 5 " ,
@ -204,17 +189,15 @@ class RoomVersions:
special_case_aliases_auth = True ,
strict_canonicaljson = False ,
limit_notifications_power_levels = False ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V6 = RoomVersion (
" 6 " ,
@ -225,38 +208,15 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
MSC2176 = RoomVersion (
" org.matrix.msc2176 " ,
RoomDisposition . UNSTABLE ,
EventFormatVersions . ROOM_V4_PLUS ,
StateResolutionVersions . V2 ,
enforce_key_validity = True ,
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_implicit_room_creator = False ,
msc2176_redaction_rules = True ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = False ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V7 = RoomVersion (
" 7 " ,
@ -267,17 +227,15 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = False ,
msc3375_redaction_rules = False ,
msc2403_knocking = True ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = False ,
restricted_join_rule_fix = False ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V8 = RoomVersion (
" 8 " ,
@ -288,17 +246,15 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = False ,
msc2403_knocking = True ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = True ,
restricted_join_rule_fix = False ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V9 = RoomVersion (
" 9 " ,
@ -309,59 +265,15 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_implicit_room_creator = False ,
msc2176_redaction_rules = False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
MSC3787 = RoomVersion (
" org.matrix.msc3787 " ,
RoomDisposition . UNSTABLE ,
EventFormatVersions . ROOM_V4_PLUS ,
StateResolutionVersions . V2 ,
enforce_key_validity = True ,
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_implicit_room_creator = False ,
msc2176_redaction_rules = False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = True ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
MSC3821 = RoomVersion (
" org.matrix.msc3821.opt1 " ,
RoomDisposition . UNSTABLE ,
EventFormatVersions . ROOM_V4_PLUS ,
StateResolutionVersions . V2 ,
enforce_key_validity = True ,
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_implicit_room_creator = False ,
msc2176_redaction_rules = False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
implicit_room_creator = False ,
updated_redaction_rules = False ,
restricted_join_rule = True ,
restricted_join_rule_fix = True ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = False ,
msc3667_int_only_power_levels = False ,
msc3821_redaction_rules = True ,
knock_restricted_join_rule = False ,
enforce_int_power_levels = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
V10 = RoomVersion (
" 10 " ,
@ -372,17 +284,15 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = True ,
restricted_join_rule_fix = True ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = True ,
msc3667_int_only_power_levels = True ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = True ,
enforce_int_power_levels = True ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = False ,
)
MSC1767v10 = RoomVersion (
# MSC1767 (Extensible Events) based on room version "10"
@ -394,60 +304,34 @@ class RoomVersions:
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= False ,
msc2176 _redaction_rules= False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
implicit_room_creator = False ,
updated _redaction_rules= False ,
restricted_join_rule = True ,
restricted_join_rule_fix = True ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = True ,
msc3667_int_only_power_levels = True ,
msc3821_redaction_rules = False ,
knock_restricted_join_rule = True ,
enforce_int_power_levels = True ,
msc3931_push_features = ( PushRuleRoomFlag . EXTENSIBLE_EVENTS , ) ,
msc3989_redaction_rules = False ,
)
MSC3989 = RoomVersion (
" org.matrix.msc3989 " ,
RoomDisposition . UNSTABLE ,
EventFormatVersions . ROOM_V4_PLUS ,
StateResolutionVersions . V2 ,
enforce_key_validity = True ,
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_implicit_room_creator = False ,
msc2176_redaction_rules = False ,
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = True ,
msc3667_int_only_power_levels = True ,
msc3821_redaction_rules = False ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = True ,
)
MSC3820opt2 = RoomVersion (
# Based upon v10
" org.matrix.msc3820.opt2 " ,
RoomDisposition . UNSTABLE ,
V11 = RoomVersion (
" 11 " ,
RoomDisposition . STABLE ,
EventFormatVersions . ROOM_V4_PLUS ,
StateResolutionVersions . V2 ,
enforce_key_validity = True ,
special_case_aliases_auth = False ,
strict_canonicaljson = True ,
limit_notifications_power_levels = True ,
msc2175_ implicit_room_creator= True , # Used by MSC3820
msc2176 _redaction_rules= True , # Used by MSC3820
msc3083_join_rules = True ,
msc3375_redaction_rules = True ,
msc2403_knocking = True ,
implicit_room_creator = True , # Used by MSC3820
updated_redaction_rules = True , # Used by MSC3820
restricted_join_rule = True ,
restricted_join_rule_fix = True ,
knock_join_rule = True ,
msc3389_relation_redactions = False ,
msc3787_knock_restricted_join_rule = True ,
msc3667_int_only_power_levels = True ,
msc3821_redaction_rules = True , # Used by MSC3820
knock_restricted_join_rule = True ,
enforce_int_power_levels = True ,
msc3931_push_features = ( ) ,
msc3989_redaction_rules = True , # Used by MSC3820
)
@ -460,14 +344,11 @@ KNOWN_ROOM_VERSIONS: Dict[str, RoomVersion] = {
RoomVersions . V4 ,
RoomVersions . V5 ,
RoomVersions . V6 ,
RoomVersions . MSC2176 ,
RoomVersions . V7 ,
RoomVersions . V8 ,
RoomVersions . V9 ,
RoomVersions . MSC3787 ,
RoomVersions . V10 ,
RoomVersions . MSC3989 ,
RoomVersions . MSC3820opt2 ,
RoomVersions . V11 ,
)
}
@ -496,12 +377,12 @@ MSC3244_CAPABILITIES = {
RoomVersionCapability (
" knock " ,
RoomVersions . V7 ,
lambda room_version : room_version . msc2403_knocking ,
lambda room_version : room_version . knock_join_rule ,
) ,
RoomVersionCapability (
" restricted " ,
RoomVersions . V9 ,
lambda room_version : room_version . msc3083_join_rules ,
lambda room_version : room_version . restricted_join_rule ,
) ,
)
}