素敵な印刷(xonsh.pretty)

Pythonはきれいな先進的なプリンタです。このかなりのプリンタは、古いpprint pythonモジュールを置き換えることを意図しています。これは、開発者がかなりのプリントコールバックを提供することを許可していません。

このモジュールは、Tanaka Akiraの rubyのprettyprint.rbライブラリに基づいています。

以下の実装はIPythonプロジェクトからフォークされた:*著作権(C)2008から2014、IPython開発チーム*著作権(C)2001年から2007年のフェルナンド・ペレス< fperez @コロラド州。edu > * Copyright(c)2001、Janko Hauser < jhauser @ zscout 。de > * Copyright(c)2001、Nathaniel Gray < n8gray @ caltech 。エデュース >

使用例

オブジェクトの表現を直接印刷するには、pprintを使用します。

from pretty import pretty_print
pretty_pprint(complex_object)

出力の文字列を得るにはかなり使います:

from pretty import pretty
string = pretty(complex_object)

拡張

かなりのライブラリは、開発者が自分のオブジェクトにかなりの印刷ルールを追加できるようにします。このプロセスは簡単です。_repr_pretty_メソッドをオブジェクトに追加し、渡されたかわいいプリンタのメソッドを呼び出すだけです。

class MyObject(object):

    def _repr_pretty_(self, p, cycle):
        ...

リストサブクラスの_repr_pretty_メソッドの実装例を次に示します。

class MyList(list):

    def _repr_pretty_(self, p, cycle):
        if cycle:
            p.text('MyList(...)')
        else:
            with p.group(8, 'MyList([', '])'):
                for idx, item in enumerate(self):
                    if idx:
                        p.text(',')
                        p.breakable()
                    p.pretty(item)

サイクルパラメータがある真のかなりのサイクルを検出した場合。あなたはそれに反応しなければならない、または結果が無限ループになります。 p.text()は出力に改行なしのテキストを追加するだけで、p.breakable()は空白を追加するか、ここで改行します。引数を渡すと、デフォルトのスペースの代わりに使用されます。 p.pretty pretty printメソッドを使って別のオブジェクトをprettyprintします。

グループ関数の最初のパラメータは、次の行の余分な字下げを指定します。この例では、次の項目は同じ行にあり(アイテムが十分に短い場合)、またはMyListの開始括弧の右端に揃えられます。

あなたが何かをインデントしたいだけなら、open / closeパラメータなしでgroup関数を使うことができます。このコードを使用することもできます:

with p.indent(2):
    ...
著作権:2007年Armin Ronacherによる。ロバート・カーン(Robert Kern)による部分(c)2009。
ライセンス:BSDライセンス。
class xonsh.pretty.PrettyPrinter(出力、max_width = 79、改行= 'n'、max_seq_length = 1000 )[ソース]

以下のための基底クラスRepresentationPrinterのオブジェクトのかわいいreprsを生成するために使用されるもしPrettyPrinter。RepresentationPrinterとは異なり、 このプリンタはデフォルトのpprintersや_repr_pretty_ コールバックメソッドについては何も知らない。

begin_group(インデント= 0、オープン= '' )[ソース]

グループを開始します。with文を持たないpython <2.5をサポートしたい場合は、これが好ましい方法です:

p.begin_group(1、 '{')... p.end_group(1、 '}')

Python 2.5の式は次のようになります。

p.group(1、 '{'、 '}'):
...

最初のパラメータは、次の行のインデント(通常は開始テキストの幅)を指定し、2番目のパラメータは開始テキストを指定します。すべてのパラメータはオプションです。

break_()[ソース]

正しいインデントを維持して、出力に改行を明示的に挿入します。

breakable(sep = '' )[ソース]

分割可能な区切り文字を出力に追加します。これは自動的にここで壊れることを意味しません。このポジションが壊れていなければ、デフォルトでは1つのスペースにsepが挿入されます。

end_group(dedent = 0、close = '' )[ソース]

グループを終了します。詳細はbegin_groupを参照してください。

flush()[ソース]

バッファーに残っているデータをフラッシュします。

text(obj )[ソース]

リテラルテキストを出力に追加します。

クラスxonsh.pretty.RepresentationPrinter(出力、冗長=偽、MAX_WIDTH = 79、改行= 'N' 、singleton_pprinters =なし、type_pprinters =なし、deferred_pprinters =なし、max_seq_length = 1000 )[ソース]

Pythonオブジェクトのためにかなりのプリンタを呼び出すかなりの方法を持っている特別なかわいいプリンタ。

このクラスは処理データを自己に格納するので、スレッド環境ではこのクラスを使用しないでください。常にロックまたは再インスタンス化してください。

インスタンスには冗長なフラグがあり、コールバックがその出力を制御するためにアクセスすることもできます。たとえば、デフォルトインスタンスreprは、プリンタが冗長モードの場合は、アンダースコアの前に付かないすべての属性とメソッドを出力します。

pretty(obj )[ソース]

指定されたオブジェクトをかなり印刷します。

xonsh.pretty.pretty(obj、verbose = False、max_width = 79、改行= '\ n'、max_seq_length = 1000 )[ソース]

オブジェクトの表現をきれいに印刷します。

xonsh.pretty.pretty_print(obj、verbose = False、max_width = 79、改行= '\ n'、max_seq_length = 1000 )[ソース]

pretty()と同じですが、stdoutに出力します。

xonsh.pretty.for_type(typ、func )[ソース]

指定されたタイプのきれいなプリンタを追加します。

xonsh.pretty.for_type_by_name(type_module、type_name、func、dtp = None )[ソース]

型オブジェクト自体ではなく、モジュールと型の名前で指定された型のかなりのプリンタを追加します。