Pretty Print 4
あー。
(Interactive (Expr (BoolOp (And) (Call (Name 'callable' (Load)) (Name 'x' (Load))) (Call (Name 'callable' (Load)) (Name 'x' (Load))))))
という表示になってしまって、期待しているのはそうじゃないんだよなぁ、とprettyprintライブラリのどこを修正するか考えていたが、結局ライブラリの使い方が間違っていただけだった。「1行で収まるなら1行で、そうじゃなければ改行して2番目以降はインデント」とやりたかったので、下のように書いていたけども、
return pp.union( pp.concat( pp.Text(head), pp.spread(child), # <- ここが間違い pp.Text(")")), pp.concat( pp.Text(head), pp.Nest(1, pp.concat( pp.LINE, pp.stack(child), pp.Text(")")))))
pp.spread(child)のそれぞれの子要素の中に「改行してもよい」マークが混ざっていると開業されてしまう。これはflatternで囲って1行限定にしてしまう必要がある。
出力結果:
(Interactive (Expr (BoolOp (And) (Call (Name 'callable' (Load)) (Name 'x' (Load))) (Call (Name 'callable' (Load)) (Name 'x' (Load))))))
うむうむ、そうそう、こういう出力が欲しかったんだよね。
もうすぐ電車が着いてしまうので、ぐちゃぐちゃいじったのをきれいにしよう。