(機械翻訳)Pyramid 1.6の新機能¶
この記事では、app: Pyramid`バージョン1.6の新機能について説明しています:app: Pyramid` 1.5。また、app: Pyramid 1.6に追加された2つのバージョンと廃止予定との間の後方互換性と、ソフトウェア依存の変更と著しいドキュメントの追加についても書かれています。
後方の非互換性¶
IPythonとBPythonのサポートはコアのpshellから削除されました。 Pyramid 1.6以降で引き続き使用するには、バインディングパッケージを明示的にインストールする必要があります。これを行う1つの方法は、パッケージの `` setup.py``ファイルの `` install_requires``セクションに `` pyramid_ipython``(または `` pyramid_bpython``)を追加してから、 `` setup.py開発 `:
setup( #... install_requires=[ 'pyramid_ipython', # new dependency 'pyramid', #... ], )
: func:〜pyramid.renderers.render_to_response` APIを使用するとき、 `` request.response``はもはや変更されません。レンダラーにカスタムレスポンスオブジェクトを提供する場合は、 `` func: 〜pyramid.renderers.render_to_response`に response = 引数を渡す必要があります。値を渡さないと、現在のレスポンスファクトリを使用してレスポンスオブジェクトが作成されます。ほぼすべてのレンダラーが ` request.response``レスポンスオブジェクトを変更します(例えば、JSONレンダラーは `` application / json``に `` request.response.content_type``を設定します)。しかし、 `` render_to_response``を呼び出すとき、返されるレスポンスオブジェクトは、リクエストで後で使用されるレスポンスオブジェクトと同じであるとは限りません。 `` render_to_response``から返された応答オブジェクトは、 `` request.response``と明示的に異なっています。これはレンダラーのAPIを変更しません。 https://github.com/Pylons/pyramid/pull/1563を参照してください。
共通の問題に対処するために、class: 〜pyramid.exceptions.ConfigurationError`はデフォルトのビューマッパーを使用しているときに実際にはアンバインドされたビューであるビュー呼び出し可能オブジェクトを登録します。結合されていないメソッドがPY3 +に存在しないため、可能なエラーは、最初のパラメータの名前が ` self``であるかどうかを調べることによって検出されます。たとえば、 config.add_view(ViewClass.some_method、...)`は実際には `config.add_view(ViewClass、attr = 'some_method)'です。これはPY2のPyramidでは常に問題でしたが、後方互換性はPY3 +にあります。ここでは、 ` self``という名前の最初のパラメータで関数を使用することはできません。この場合、一般的なエラーのように見え、例外が発生します。 https://github.com/Pylons/pyramid/pull/1498を参照してください。
機能の追加¶
- Python 3.5とpypy3との互換性。
- 構文エラーで `` pserve --reload``がクラッシュすることはなくなりました。 https://github.com/Pylons/pyramid/pull/2044を参照してください。
- 静的リソース用のキャッシュ破棄が追加され、新しい:meth: pyramid.config.Configurator.add_cache_buster APIを介して利用できます。コアAPIは、クエリ文字列を介したキャッシュ破棄と、カスタムアセットパイプラインへの統合のためのアセットマニフェストを使用して出荷されます。 https://github.com/Pylons/pyramid/pull/1380およびhttps://github.com/Pylons/pyramid/pull/1583およびhttps://github.com/Pylons/pyramid/pull/2171を参照してください。
- アセットは、:meth: 〜pyramid.config.Configurator.override_asset APIを使用するとき、ファイルシステム上の絶対パスによって上書きされるようになりました。これにより、変更可能なディレクトリからの静的コンテンツの配信を完全にサポートしながら、:meth: 〜pyramid.request.Request.static_url APIと:meth:〜pyramid.config.Configurator.add_static_view 。以前は:meth: 〜pyramid.config.Configurator.add_static_view`を絶対パスで使用することはできませんでした**と**コンテンツにURLを生成します。この変更は ` config.add_static_view( '/ abs / path'、 'static') ``を `` config.add_static_view( 'myapp:static'、 'static') ``と `` config 'に置き換えます。 override_asset(to_override = 'myapp:static /'、override_with = '/ abs / path /') ``です。 `` myapp:static``アセット仕様は完全に作られており、存在する必要はありません。これは `` request.static_url( 'myapp:static / foo.png') ``でURLを生成するために使用されます。 https://github.com/Pylons/pyramid/issues/1252を参照してください。
- 追加された:meth: 〜pyramid.config.Configurator.set_response_factory`と response_factory``キーワードは、class:〜pyramid.config.Configurator`のコンストラクタのキーワード引数で、カスタムの `` Response ``クラス。 https://github.com/Pylons/pyramid/pull/1499を参照してください。
- 追加:attr: `pyramid.config.Configurator.root_package`属性とinitパラメータは、コンフィグレータが作成されたパッケージに関連するリソースを解決するためのincludibleパッケージを支援します。これは、設定からアセット仕様をロードする必要のあるアドオンで特に役に立ちます。その場合、開発者がトップレベルパッケージを基準にしてインポートまたはアセットを定義するのは自然かもしれません。 https://github.com/Pylons/pyramid/pull/1337を参照してください。
- `` proutes``コマンドの全体的な改良。コマンドに `` --format``と `` --glob``引数を追加し、利用可能なリクエストメソッドを表示するための `` method``カラムを導入し、 `` view``の出力を改善しました。ちょうど `` __repr__``です。 https://github.com/Pylons/pyramid/pull/1488を参照してください。
- `` pserve``は `` -b``または `` --browser``オプションを使って、WebブラウザでサーバURLを開きます。 https://github.com/Pylons/pyramid/pull/1533を参照してください。
- Python 3のビューでキーワードのみの引数と関数アノテーションをサポートしています。https://github.com/Pylons/pyramid/pull/1556を参照してください。
- :meth: 〜pyramid.config.Configurator.add_notfound_view()`の ` append_slash``引数は:class: `〜pyramid.interfaces.IResponse`インターフェースを実装しているものを受け入れ、レスポンスクラスとして使用しますデフォルト:class: `〜pyramid.httpexceptions.HTTPFound`の代わりに。 https://github.com/Pylons/pyramid/pull/1610を参照してください。
- :class: `〜pyramid.config.Configurator`は、アクションがコミットサイクル中に他のアクションを呼び出せるようにする機能を拡張しました。これにより、他のアクションを呼び出す機能や、競合検出を改善するためにそれらをグループ化する機能など、より多くのロジックをアクションに配置できます。また、適合したアドオンの構築をさらに支援するために、Pyramidが使用する設定フェーズを公開し、文書化しました。 https://github.com/Pylons/pyramid/pull/1513を参照してください。
- イテレータがレンダラから返されるようにします。以前は、バイトまたはユニコードを返すことしかできませんでした。 https://github.com/Pylons/pyramid/pull/1417を参照してください。
- class: 〜pyramid.authentication.AuthTktCookieHelper`クラスと:class:〜pyramid.session.SignedCookieSessionFactory`クラスでタイミング攻撃に対する堅牢性を向上させるには、stdlibの `` hmac.compare_digest`` Python 2.7.7+および3.3+)。 https://github.com/Pylons/pyramid/pull/1457を参照してください。
- `` pcreate``シェルスクリプト出力の可読性を向上させます。 https://github.com/Pylons/pyramid/pull/1453を参照してください。
- デフォルトの例外応答ビューを使用したいが、変更された述語やその他の設定オプションを使用する `` notfound``と `` forbidden``ビューを簡単に定義できるようにします。 `` view``引数は、meth: 〜pyramid.config.Configurator.add_notfound_view`と:meth:〜pyramid.config.Configurator.add_forbidden_view`のオプションです。https://github.com/Pylons/pyramidを参照してください。 / issues / 494
- `` pshell``スクリプトは、インタープリタを起動する前に環境に定義されている場合、 `` PYTHONSTARTUP``ファイルを読み込みます。 https://github.com/Pylons/pyramid/pull/1448を参照してください。
- `` pyramid.httpexceptions``のステータスコード `` 428前提条件必須 "、" 429 "、" 431リクエストヘッダフィールドが大きすぎます "という新しいHTTP例外オブジェクトを追加しました。 https://github.com/Pylons/pyramid/pull/1372/filesを参照してください。
- scaffold引数なしで実行されたときに `` pcreate``は、足りないフラグに関する情報と利用可能な足場のリストを出力するようになりました。 https://github.com/Pylons/pyramid/pull/1566およびhttps://github.com/Pylons/pyramid/issues/1297を参照してください。
- `` pcreate``は、現在存在するか、あるいは現在の環境でインポート可能なプロジェクト名の引数を指定して起動すると、確認を求めます。 https://github.com/Pylons/pyramid/issues/1357およびhttps://github.com/Pylons/pyramid/pull/1837を参照してください。
- Add:func: pyramid.request.apply_request_extensions`関数は、 `config.add_request_method``で設定されたリクエスト拡張を適用するためのテストに使用できます。以前は、Pyramidのルーターを経由して拡張機能をテストすることしかできませんでした。 https://github.com/Pylons/pyramid/pull/1581を参照してください。
- `` pyramid.request.Request``をサブクラス化し、 `` pyramid.request.Request.add_request.method``を使うことも可能です。 https://github.com/Pylons/pyramid/issues/1529を参照してください。
- `` pshell``用の追加のシェルをエントリポイントとして登録できるようになりました。 https://github.com/Pylons/pyramid/pull/1891およびhttps://github.com/Pylons/pyramid/pull/2012を参照してください。
- 可能であれば、 `` pshell``に注入された変数はデフォルトの `` str(obj) ``ではなくdocstringで表示されます。 https://github.com/Pylons/pyramid/pull/1929を参照してください。
廃止¶
`` pserve``コマンドのデーモン化機能と `` --monitor-restart``は廃止されました。これには、 `` --daemon``、 `` --stop-daemon``、 `` -pid-file``、 `` -stop- `` --status``、 `` --user``、 `` --group``の各フラグがあります。 https://github.com/Pylons/pyramid/pull/2120およびhttps://github.com/Pylons/pyramid/pull/2189およびhttps://github.com/Pylons/pyramid/pull/1641を参照してください。
`` pserve``に依存するのではなく、実際のプロセスマネージャーを使って、自分自身をデーモン化してください。あなたのオペレーティングシステムのサービス(SystemdやUpstartなど)やサーカスやスーパーバイザなどのPythonベースのソリューションを含む多くのオプションが存在します。
https://github.com/Pylons/pyramid/pull/1641およびhttps://github.com/Pylons/pyramid/pull/2120を参照してください。
:func: pyramid.security.remember`の principal``引数は userid``に名前が変更されました。引数名として ` principal``を使用することは引き続き機能し、次のいくつかのリリースでは引き続き動作しますが、非推奨警告が表示されます。
足場の強化¶
- デバッグを支援する足場のログフォーマッタに行番号を追加しました。 https://github.com/Pylons/pyramid/pull/1326を参照してください。
- スキャフォールドで使用するための:app: Pyramid`とそのドキュメントを返すように更新しました。 ` starter```、 `` alchemy``、 `` zodb``テンプレートをバージョンアップされたドキュメントにリンクし、app: `Pyramid`が足場を生成するために使用されたことを反映しました。
- テンプレートから非ASCII著作権記号を削除しました。これにより、足場がプロジェクト生成に失敗する原因となりました。
ドキュメントの機能拡張¶
- クイックチュートリアルの `` ini``ファイルからロギングの設定を削除しました。足場やロギング関連の章を除き、早すぎる説明は避けてください。
- app: Pyramid`がセキュリティAPIの principal``と `userid``として定義しているものに関するドキュメントを改善し明確にします。 https://github.com/Pylons/pyramid/pull/1399を参照してください。
- meth: pyramid.config.Configurator.add_view`を accept``のためにドキュメントをもはや述語リストの一部に移動しませんでした。 ` not_``が `` accept``で失敗したというバグレポートについては、https://github.com/Pylons/pyramid/issues/1391を参照してください。 @mcdoncとの議論は、それが述語として文書化されるべきではないという結論に導いた。このPRについては、https://github.com/Pylons/pyramid/pull/1487を参照してください。
- `` ISession.invalidate`` APIドキュメントの暗黙の詳細を明確にしてください。
- コマンドラインプログラムのドキュメントを追加する( `` p * ``スクリプト)。 https://github.com/Pylons/pyramid/pull/2191を参照してください。