2

PythonプロジェクトでBabelを使い始めたいと思います。ドキュメントに従って、次のようなsetup.pyものがあります。

setup(
    ...
    message_extractors = {'my_project': [('**.py', 'lingua_python', None),
    ]},
    ...

そして、すべてが正常に動作します。ここで、3番目のパラメーター(に設定None)が何を意味し、(それを知るために)何を渡すことができるのか疑問に思いました。Babelのドキュメントを調べましたが、何も見つかりませんでしたが、BabelのMakoのドキュメントでこれを確認しました。

# Extraction from Python source files

[python: myproj/**.py]

# Extraction from Mako templates

[mako: myproj/templates/**.html]
input_encoding = utf-8

そして、私は疑問に思っていました:このinput_encodingオプションはあなたがそこに渡すことができるもののようです。私はすべてのPython、テンプレートなどでUnicodeとUTF-8を使用しているので、これが指定する有効なオプションである可能性があると考えました(おそらく、暗黙の仮定であるかどうかはわかりません)。

だから今私はこの振る舞いを文書化する何かを探していますが、私が見つけたバベルのドキュメントの一部でさえ、3番目のパラメーターが何であるかについて何も言っていませんでした。

これを詳細に説明するいくつかの役立つリンクを共有して、私に教えてください。前もって感謝します。

更新dict:最後の引数はオプションのようであり、おそらく拡張機能に渡されていることがわかりました(例mako)。最後のパラメータをからに設定するNone{'input_encoding': 'utf-8'}mako.exceptions.CompileException不満がUnicode decode operation of encoding 'ascii' failed消えました。したがって、これが答えのように見えますが、私はまだこれに関するドキュメントを探しています。

4

1 に答える 1

3

3番目のパラメーターはオプションマッピングです。

これには、extractorメソッドに渡される任意のキーワードパラメーターを含めることができます。受け入れるキーワードパラメータは、エクストラクタメソッドに完全に依存します。

optionsエクストラクタには、これらのオプションが呼び出されたときに最後のパラメータとして渡されます。通常、メソッドシグネチャで呼び出されます。Mako Babelプラグインは、たとえばをサポートencodingしています。input_encoding前者は後者のパラメータのレガシースペルのようinput_encodingです。指定されていない場合にのみ使用されます。

そのため、すべてのBabelプラグインは、サポートされているオプションを個別に文書化する必要があります。Babelプロジェクトは制限を設定せず、各プラグインがサポートする詳細を認識しません。

Makoエクストラクタの詳細は、CommonFrameworkIntegrationsセクションに記載されています。

input_encodingMakoエクストラクタは、テンプレートのエンコーディングを指定するオプションのパラメータをサポートしています( Template/TemplateLookupinput_encodingパラメータと同じ)。

于 2013-03-06T21:11:55.680 に答える