#: E231 a = (1,2) #: E231 a[b1,:] #: E231 a = [{'a':''}] #: Okay a = (4,) b = (5, ) c = {'text': text[5:]} result = { 'key1': 'value', 'key2': 'value', } def foo() -> None: #: E231 if (1,2): pass #: Okay a = (1,\ 2) #: E231:2:20 mdtypes_template = { 'tag_full': [('mdtype', 'u4'), ('byte_count', 'u4')], 'tag_smalldata':[('byte_count_mdtype', 'u4'), ('data', 'S4')], } # E231 f"{(a,b)}" # Okay because it's hard to differentiate between the usages of a colon in a f-string f"{a:=1}" f"{ {'a':1} }" f"{a:.3f}" f"{(a:=1)}" f"{(lambda x:x)}" f"normal{f"{a:.3f}"}normal" #: Okay snapshot.file_uri[len(f's3://{self.s3_bucket_name}/'):] #: E231 {len(f's3://{self.s3_bucket_name}/'):1} #: Okay a = (1,) # https://github.com/astral-sh/ruff/issues/10113 """Minimal repo.""" def main() -> None: """Primary function.""" results = { "k1": [1], "k2":[2], } results_in_tuple = ( { "k1": [1], "k2":[2], }, ) results_in_list = [ { "k1": [1], "k2":[2], } ] results_in_list_first = [ { "k2":[2], } ] x = [ { "k1":[2], # E231 "k2": x[2:4], "k3":[2], # E231 "k4": [2], "k5": [2], "k6": [1, 2, 3, 4,5,6,7] # E231 }, { "k1": [ { "ka":[2,3], # E231 }, { "kb": [2,3], # E231 }, { "ka":[2, 3], # E231 "kb": [2, 3], # Ok "kc": [2, 3], # Ok "kd": [2,3], # E231 "ke":[2,3], # E231 }, ] } ] # Should be E231 errors on all of these type parameters and function parameters, but not on their (strange) defaults def pep_696_bad[A:object="foo"[::-1], B:object =[[["foo", "bar"]]], C:object= bytes]( x:A = "foo"[::-1], y:B = [[["foo", "bar"]]], z:object = "fooo", ): pass class PEP696Bad[A:object="foo"[::-1], B:object =[[["foo", "bar"]]], C:object= bytes]: def pep_696_bad_method[A:object="foo"[::-1], B:object =[[["foo", "bar"]]], C:object= bytes]( self, x:A = "foo"[::-1], y:B = [[["foo", "bar"]]], z:object = "fooo", ): pass class PEP696BadWithEmptyBases[A:object="foo"[::-1], B:object =[[["foo", "bar"]]], C:object= bytes](): class IndentedPEP696BadWithNonEmptyBases[A:object="foo"[::-1], B:object =[[["foo", "bar"]]], C:object= bytes](object, something_dynamic[x::-1]): pass # Should be no E231 errors on any of these: def pep_696_good[A: object="foo"[::-1], B: object =[[["foo", "bar"]]], C: object= bytes]( x: A = "foo"[::-1], y: B = [[["foo", "bar"]]], z: object = "fooo", ): pass class PEP696Good[A: object="foo"[::-1], B: object =[[["foo", "bar"]]], C: object= bytes]: pass class PEP696GoodWithEmptyBases[A: object="foo"[::-1], B: object =[[["foo", "bar"]]], C: object= bytes](): pass class PEP696GoodWithNonEmptyBases[A: object="foo"[::-1], B: object =[[["foo", "bar"]]], C: object= bytes](object, something_dynamic[x::-1]): pass