何が問題なのかわかっていないので適切な質問ができないのですが,以下のようなwith文を使って書かれたコードの構造がわかりません.
以下は疑似コードです.

import gzip
import codecs

with codecs.getreader('utf-8')(gzip.open(u'inputfile.gz', 'r')) as f:
    for line in f:
        some processes

(この例は言語処理100本ノックの問題20を念頭に置いています)
このwith文において,gzip.open()はcodecs.getreader()とどういう関係にあるのでしょうか?
つまり,gzip.open()はcodecsのメソッドではないし,.getreaderのスコープにも入っていませんので,おそらくwith文の要素のひとつになっているのだと思うのですが,どういう要素かわかりません.with文はこのように並列的にいくつも要素(項?)をとることができるのだとして,それらはどういう関係にあるのでしょうか?