================== index access ================== a = arr[0] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (number)))) ================== attribute access ================== a = obj.prop.nested --- (module (assignment left: (pattern (identifier)) right: (attribute object: (attribute object: (identifier) attribute: (identifier)) attribute: (identifier)))) ================== full slice ================== a = arr[:] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (slice)))) ================== slice with start stop ================== a = arr[1:2] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (slice (number) (number))))) ================== slice with step ================== a = arr[1:2:3] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (slice (number) (number) (number))))) ================== slice start only ================== a = arr[1:] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (slice (number))))) ================== negative index ================== a = arr[-1] --- (module (assignment left: (pattern (identifier)) right: (subscript object: (identifier) subscript: (unary_operator argument: (number))))) ================== method chaining ================== result = obj.css("x").show().hide() --- (module (assignment left: (pattern (identifier)) right: (call function: (attribute object: (call function: (attribute object: (call function: (attribute object: (identifier) attribute: (identifier)) arguments: (argument_list (string))) attribute: (identifier)) arguments: (argument_list)) attribute: (identifier)) arguments: (argument_list)))) ================== call with keyword args ================== E.div(id="container", class_="xxx") --- (module (call function: (attribute object: (identifier) attribute: (identifier)) arguments: (argument_list (keyword_argument name: (identifier) value: (string)) (keyword_argument name: (identifier) value: (string))))) ================== call with star args ================== f(a, *args, **kwargs) --- (module (call function: (identifier) arguments: (argument_list (identifier) (list_splat_argument (identifier)) (dictionary_splat_argument (identifier))))) ================== generator as sole argument ================== total = sum(x for x in items) --- (module (assignment left: (pattern (identifier)) right: (call function: (identifier) arguments: (argument_list body: (identifier) (for_in_clause left: (pattern (identifier)) right: (identifier)))))) ================== new expression ================== x = new Foo(1, 2) --- (module (assignment left: (pattern (identifier)) right: (new_expression constructor: (call function: (identifier) arguments: (argument_list (number) (number))))))