Rh$ ddlZGddZy)NceZdZdZdZy) ASTTestMixinz3Test mixing to have basic assertions for AST nodes.cj|tjj|tjtffd ||y)Ncft|t|ur( jt|dt|t|tjr:|j D]*}t |||}t |||}||us"||,yt|tr! t||dD]\}}||y||k7r j|d|yy#t$rEt|}t|} || kDrd} || z } nd} | |z } | d| d} j| dwxYw) Nz is not T)strictFirstSecondz list contains z additional elements.z != ) typefail isinstanceastAST_fieldsgetattrlistzip ValueErrorlenfailureException)abmissingfieldvalue1value2node1node2len1len2whatdiffmsgselftraverse_compares ./usr/lib/python3.12/test/support/ast_helper.pyr$z5ASTTestMixin.assertASTEqual..traverse_comparesKAwd1g% T!WKxQ{;<!SWW%YY9E$Qw7F$Qw7FV+(8 9At$?(+Aq(>7 u(67a QEaU+," ?q6Dq6Dd{&#d{'#d{!F/$7LMC//4$> ?s %C""AD0)assertIsInstancer robject)r#ast1ast2r$s` @r%assertASTEqualzASTTestMixin.assertASTEqualsC dCGG, dCGG, ,28 -: t$N)__name__ __module__ __qualname____doc__r*r+r%rrs =%%r+r)r rr0r+r%r1s (%(%r+