変更点—Werkzeugのドキュメント
変更点
バージョン2.0.2
2021年10月5日リリース
- WebSocketリクエストをルーティングするときに、
Connection
ヘッダーで複数のトークンを処理します。 :issue: `2131` - https上でデバッガーのPINCookieセキュアフラグを設定します。 :pr: `2150`
MultiDict.update
の型注釈を修正して、反復可能な値を受け入れるようにしました:pr: `2142`Rule.match
のmerge_slash=True
の場合、リダイレクトURLの二重エンコードを防止します。 :issue: `2157`CombinedMultiDict.to_dict
とflat=False
は、値リストを作成するときにすべてのコンポーネントの指示を考慮します。 :issue: `2189`send_file
は、ブラウザが解凍された.tar.gz
ファイルを保存しないように、as_attachment
が無効になっている場合にのみ、検出されたContent-Encoding
を設定します。 :issue: `2149`default
とtype
の両方がNone
でない場合に、TypeConversionDict.get
の型注釈がOptional
値を返さないように修正しました。 :issue: `2169`rules
パラメーターにIterable[Rule]
ではなくIterable[RuleFactory]
を受け入れるように、ルーティングルールファクトリの型注釈を修正しました。 :issue: `2183`FileStorage.__getattr__
:issue: `2155` に欠落している型注釈を追加します- デバッガーのPINCookieは、最新のブラウザーセキュリティと互換性を持たせるために、
None
ではなくSameSite
をStrict
に設定して設定されています。 :issue: `2156` - 型注釈は、
BinaryIO
およびTextIO
の代わりにIO[bytes]
およびIO[str]
を使用して、より広い型の互換性を実現します。 :issue: `2130` - アドホックTLS証明書は、CNに一致するSANを使用して生成されます。 :issue: `2158`
- Python3.6または0.4.17より前のグリーンレットバージョンを使用している場合のローカルのメモリ使用量を修正しました。 :pr: `2212`
- バインドされたTypeVarを使用していないため、
CallbackDict
の型注釈を修正しました。 :issue: `2235` - 応答のCSPヘッダーオプションの設定を修正しました。 :pr: `2237`
- 非常に長いトレースバックでクリックしても行が展開されないインタラクティブデバッガーの問題を修正します。 :pr: `2239`
- 対話型デバッガーは、
ProcessPoolExecutor
などのトレースバックのない例外の表示を処理します。 :issue: `2217`
バージョン2.0.1
2021年5月17日リリース
send_file
max_age
呼び出し可能の型注釈を修正しました。pathlib.Path
をmax_age
に渡さないでください。 :issue: `2119`- タイプチェックがユーザープロジェクトのインポートを理解できるように、トップレベルの名前をエクスポート済みとしてマークします。 :issue: `2122`
- Python3.6.0で利用できなかったいくつかのタイプを修正します。 :issue: `2123`
cached_property
はその戻り型に対して一般的であり、それで装飾されたプロパティは正しい型を報告します。 :issue: `2113`- 境界に特別な正規表現文字が含まれている場合のマルチパート解析のバグを修正しました。 :issue: `2125`
- タイプチェックは、文字列のデフォルトで
headers.get
を呼び出すと、常に文字列が返されることを理解しています。 :issue: `2128` HTTPException.description
が文字列でない場合、get_description
はそれを文字列に変換します。 :issue: `2115`
バージョン2.0.0
2021年5月11日リリース
- Python2および3.5のサポートを終了します。 :pr: `1693`
utils.format_string()
を廃止し、代わりにstring.Template
を使用してください。 :issue: `1756`utils.bind_arguments()
とutils.validate_arguments()
を廃止し、代わりにSignature.bind()
とinspect.signature()
を使用してください。 :issue: `1757`utils.HTMLBuilder
を非推奨にします。 :issue: `1761`utils.escape()
およびutils.unescape()
を廃止し、代わりにMarkupSafeを使用してください。 :issue: `1758`- 文書化されていない
python -m werkzeug.serving
CLIは非推奨です。 :issue: `1834` - 開発サーバーの実行時に使用できる
environ["werkzeug.server.shutdown"]
関数は非推奨になります。 :issue: `1752` useragents
モジュールと組み込みのユーザーエージェントパーサーは非推奨です。 代わりに、user_agent.UserAgent
をサブクラス化し、Request.user_agent_class
を設定して、専用のパーサーライブラリを使用してください。 :issue: `2078`- 未使用の内部
posixemulation
モジュールを取り外します。 :issue: `1759` - すべての
datetime
値は、tzinfo=timezone.utc
でタイムゾーンに対応しています。 これは、http.parse_date
を使用するすべてのものに適用されます:Request.date
、.if_modified_since
、.if_unmodified_since
;Response.date
、.expires
、.last_modified
、.retry_after
;parse_if_range_header
、およびIfRange.date
。 値を比較するときは、他の値も認識している必要があります。そうでない場合は、これらの値を単純にする必要があります。 パラメータを渡したり属性を設定したりする場合でも、ナイーブな値はUTCであると見なされます。 :pr: `2040` - すべてのリクエストとレスポンスのラッパーミックスインコードを単一の
Request
クラスとResponse
クラスにマージします。 ミックスインクラスを使用する必要がなくなり、非推奨の警告が表示されます。isinstance
またはissubclass
をBaseRequest
およびBaseResponse
に対してチェックすると、非推奨の警告が表示され、代わりにRequest
またはResponse
に対してチェックされます。 。 :issue: `1963` - JSONサポートは、インストールされている場合、simplejsonを使用しなくなりました。 別のJSONモジュールを使用するには、
Request.json_module
とResponse.json_module
をオーバーライドします。 :pr: `1766` Response.get_json()
は結果をキャッシュしなくなり、cache
パラメーターは削除されました。 :issue: `1698`Response.freeze()
は、ETag
ヘッダーが設定されていない場合、ヘッダーを生成します。no_etag
パラメーター(通常はとにかく表示されませんでした)は使用されなくなりました。 :issue: `1963`url_scheme
引数をbuild()
に追加して、バインドされたスキームをオーバーライドします。 :pr: `1721`- 空のリストをクエリ文字列パラメータとして
build()
に渡しても、不要な?
は追加されません。 また、リスト内のNone
アイテムをいくつでもドロップします。 :issue: `1992` Headers
オブジェクトをテストクライアントメソッドまたはEnvironBuilder
に渡す場合、キーの複数の値が1つのコンマ区切り値に結合されます。 これは、複数値ヘッダーのHTTP仕様と一致します。 :issue: `1655`Response.status
とstatus_code
の設定では、同じ解析とエラーチェックが使用されます。 :issue: `1658` 、:pr:` 1728`MethodNotAllowed
とRequestedRangeNotSatisfiable
は、他のHTTPエラーと一致して、response
kwargを取ります。 :pr: `1748`Unauthorized
によって生成される応答は、ブラウザーや他のクライアントとの相互運用性を向上させるために、www_authenticate
の値ごとに1つのWWW-Authenticate
ヘッダーを生成します。 :pr: `1755`parse_authorization_header
がヘッダー値をデコードできない場合、UnicodeDecodeError
を上げる代わりに、None
を返します。 :issue: `1816`- デバッガーはjQueryを使用しなくなりました。 :issue: `1807`
- テストクライアントには、
REQUEST_URI
およびRAW_URI
にクエリ文字列が含まれています。 :issue: `1781` default_stream_factory
のパラメーターの順序を、呼び出し時に使用される順序と一致するように切り替えます。 :pr: `1085`send_file
関数を追加して、ファイルを提供する応答を生成します。 Flaskの実装から適応。 :issue: `265` 、:pr:` 1850`send_from_directory
関数を追加して、信頼できるディレクトリ内の信頼できないパスを安全に提供します。 Flaskの実装から適応。 :issue: `1880`send_file
はdownload_name
を取ります。これは、Content-Disposition: inline
を使用してas_attachment=False
であっても渡されます。download_name
は、Flaskのattachment_filename
を置き換えます。 :issue: `1869`send_file
は、デフォルトでconditional=True
とmax_age=None
を設定します。Cache-Control
はmax_age
が設定されていない場合はno-cache
に設定され、それ以外の場合はpublic
に設定されます。 これは、時限キャッシュを使用する代わりに条件付きリクエストを検証するようにブラウザに指示します。max_age=None
は、Flaskのcache_timeout=43200
を置き換えます。 :issue: `1882`send_file
をetag="string"
と一緒に呼び出すと、カスタムETagを生成する代わりに設定できます。etag
は、Flaskのadd_etags
を置き換えます。 :issue: `1868`send_file
は、download_name
からmimetype
を推測するときにエンコードが返される場合、Content-Encoding
ヘッダーを設定します。 :pr: `3896`generate_password_hash
で使用されるデフォルトを更新します。 PBKDF2の反復を150000から260000に増やします。 塩の長さを8から16に増やします。secrets
モジュールを使用してソルトを生成します。 :pr: `1935`sys.stdin
がなんらかの理由でNone
の場合、リローダーはクラッシュしません。 :pr: `1915`delete_cookie
に引数を追加して、set_cookie
と最新のブラウザーが期待する属性に一致させます。 :pr: `1889`utils.cookie_date
は非推奨です。代わりにutils.http_date
を使用してください。Set-Cookie expires
の値は「-」で区切られなくなりました。 :pr: `2040`request.environ
の代わりにrequest.headers
を使用して、ヘッダー属性を検索します。 :pr: `1808`- テスト
Client
リクエストメソッド(client.get
など)は、常にTestResponse
のインスタンスを返します。Response
の通常の動作に加えて、このクラスはrequest
に応答を生成した要求を提供し、history
はfollow_redirects
が中古。 :issue: `763、1894` - テスト
Client
リクエストメソッドは、auth
パラメーターを使用してAuthorization
ヘッダーを追加します。Authorization
オブジェクトまたはBasic
認証用の(username, password)
タプルにすることができます。 :pr: `1809` - テスト
Client
からの応答でresponse.close()
を呼び出すと、要求入力ストリームが閉じられます。 これはファイルの動作と一致し、場合によってはResourceWarning
を防ぐことができます。 :issue: `1785` EnvironBuilder.from_environ
は、WSGI用にエンコードされた値をデコードして、新しい値の二重エンコードを回避します。 :pr: `1959`- デフォルトの統計リローダーは、システム/仮想環境以外の
sys.path
エントリの下にあるPythonファイルを監視します。これにはほとんどのユーザーコードが含まれているはずです。 また、extra_files
で指定されたディレクトリの下にあるすべてのPythonファイルを監視します。 :pr: `1945` - リローダーは
__pycache__
ディレクトリを再び無視します。 :pr: `1945` run_simple
は、リローダーによってスキャンされないfnmatch
パターンのリストexclude_patterns
を取ります。 :issue: `1333`- Cookie名が引用符で囲まれなくなりました。 これは RFC 6265 に反しており、
__Secure
プレフィックス付きCookieの設定を許可する可能性がありました。 :pr: `1965` - 単語が部分文字列になる可能性がある場合に、ユーザーエージェントプラットフォームのいくつかの単語の一致を修正します。 :issue: `1923`
- 開発サーバーのログはSSLエラーを無視しました。 :pr: `1967`
- フォームデータの一時ファイルは、一部のライブラリとの互換性を高めるために、
wb+
モードではなくrb+
で開かれます。 :issue: `1961` - ETagとデバッガーピンの生成、および一部のテストでは、MD5の代わりにSHA-1を使用します。 MD5は、FIPS140などの一部の環境では使用できません。 ETagが異なるため、これにより一部のキャッシュが無効になる場合があります。 :issue: `1897`
Cross-Origin-Opener-Policy
およびCross-Origin-Embedder-Policy
応答ヘッダープロパティを追加します。 :pr: `2008`run_simple
は、0.0.0.0
または::
ではなく、すべてのアドレスにバインドするときに有効なIPアドレスを表示しようとします。 この場合、本番環境で開発サーバーを実行しないことについても警告します。 :issue: `1964`- ColoramaがWindowsにインストールされている場合、開発サーバーログの色が表示されます。 すべてのプラットフォームで、スタイルのサポートにClickは不要になりました。 :issue: `1832`
- 空のファイル(または長さが0の他のデータ)の範囲要求は、416エラーではなく、空のファイルで200応答を返します。 :issue: `1937`
Request
およびResponse
の新しいsans-IO基本クラスが抽出され、WSGIまたはIOに依存しないすべての動作が含まれるようになりました。 これらはパブリックAPIではなく、ASGIフレームワークがWerkzeugを使用できるようにするための継続的なリファクタリングの一部です。 :pr: `2005`multipart/form-data
の解析は、sans-ioパターンを使用するようにリファクタリングされました。 これにより、大きなバイナリファイルのアップロードを含むフォームの解析も大幅に高速化されます。 :issue: `1788、875`LocalProxy
は、すべてのr-ops、インプレースops、非同期など、現在のPythonデータモデルの特別なメソッドと一致します。__class__
はプロキシされるため、isinstance
など、多くの場合、プロキシはオブジェクトのように見えます。issubclass(type(obj), LocalProxy)
を使用して、オブジェクトが実際にプロキシであるかどうかを確認します。 :issue: `1754`Local
は、Python3.7以降でthreading.local
の代わりにContextVar
を使用します。 :pr: `1778`request.values
には、GET要求のform
は含まれません(GET本体が定義されていない場合でも)。 これにより、不正なキャッシュプロキシがクエリ文字列ではなくフォームデータをキャッシュするのを防ぎます。 :pr: `2037`- 開発サーバーは、基盤となるソケットを
environ
にwerkzeug.socket
として追加します。 これは非標準であり、開発サーバーに固有です。他のサーバーが独自のキーでこれを公開する場合があります。 これは、WebSocketのアップグレード要求を処理するのに役立ちます。 :issue: `2052` - URLマッチングは、WebSocketアップグレード要求に対して
websocket=True
モードを想定しています。 :issue: `2052` - より多くのケースを処理するように
UserAgentParser
を更新しました。 :issue: `1971` werzeug.DechunkedInput.readinto
は、バッファーのサイズを超えて読み取ることはありません。 :issue: `2021`- 最大コンテンツサイズを超えた場合の接続リセットを修正しました。 :pr: `2051`
pbkdf2_hex
、pbkdf2_bin
、およびsafe_str_cmp
は非推奨になりました。hashlib
とhmac
は同等のものを提供します。 :pr: `2083`invalidate_cached_property
は非推奨です。 代わりにdel obj.name
を使用してください。 :pr: `2084`Href
は非推奨です。 代わりにwerkzeug.routing
を使用してください。 :pr: `2085`Request.disable_data_descriptor
は非推奨です。 代わりにshallow=True
を使用してリクエストを作成してください。 :pr: `2085`HTTPException.wrap
は非推奨です。 代わりに、手動でサブクラスを作成してください。 :pr: `2085`
バージョン1.0.1
2020-03-31リリース
RequestRedirect.get_response
への引数をオプションにします。 :issue: `1718`- 単一のアクセス制御のみを許可し、起点値を許可します。 :pr: `1723`
- 存在しないコンテンツセキュリティポリシーヘッダーを解析しようとしたときのクラッシュを修正しました。 :pr: `1731`
http_date
ゼロは1000未満の年を埋め、常に4桁を出力します。 :issue: `1739`- インタラクティブデバッガコンソールで欠落しているローカル変数を修正します。 :issue: `1746`
io.BytesIO
のようなファイルのようなオブジェクトをFileStorage.save
に渡す問題を修正しました。 :issue: `1733`
バージョン1.0.0
2020-02-06リリース
- Python3.4のサポートを終了します。 (:issue: `1478` )
- バージョン0.15で非推奨の警告を発行したコードを削除します。 (:issue: `1477` )
werkzeug
モジュールによって提供されるほとんどの最上位属性を削除して、直接インポートを優先します。 たとえば、import werkzeug; werkzeug.url_quote
の代わりに、from werkzeug.urls import url_quote
を実行します。 最初にバージョン0.16をインストールして、アップグレード中に非推奨の警告を確認してください。 :issue: `2` 、:pr:` 1640`- キャッシュされたプロパティを無効にするために
utils.invalidate_cached_property()
を追加しました。 (:pr: `1474` ) Set-Cookie
応答ヘッダーのディレクティブキーは、Cookie
要求ヘッダーを解析するときに無視されません。 これにより、「expires」や「version」などの名前のCookieが許可されます。 (:issue: `1495` )- リクエストCookieは
MultiDict
に解析され、同じキーを持つCookieのすべての値をキャプチャします。cookies[key]
は、最後の値ではなく最初の値を返します。cookies.getlist(key)
を使用して、すべての値を取得します。parse_cookie
もデフォルトでMultiDict
になります。 :issue: `1562` 、:pr:` 1458` charset=utf-8
をHTTP例外応答のCONTENT_TYPE
ヘッダーに追加します。 (:pr: `1526` )- インタラクティブデバッガーは、ラムダや内包表記などのネストされたスコープ内の外部変数を処理します。 :issue: `913` 、:issue:` 1037` 、:pr: `1532`
- Mac上のOpera60のユーザーエージェントは、「chrome」ではなく「opera」として正しく報告されます。 :issue: `1556`
- Android上のCrosswalkのプラットフォームは、「chromeos」ではなく「android」として正しく報告されます。 (:pr: `1572` )
- 現在のサーバー名が構成済みのサーバー名と一致しない場合に警告を発行します。 :issue: `760`
- スキームのデフォルトポートを使用して構成されたサーバー名は、現在のスキームが一致する場合、ポートなしの現在のサーバー名と一致します。 :pr: `1584`
InternalServerError
には、フレームワークがエラーの元の原因を追跡するために使用できるoriginal_exception
属性があります。 :pr: `1590`X-Foo
がx-foo
と同じになるように、ヘッダーはヘッダーキーのケースとは無関係に等しいかどうかテストされます。 :pr: `1605`http.dump_cookie()
は、samesite
の値として'None'
を受け入れます。 :issue: `1549`set_cookie()
はsamesite
引数を受け入れます。 :pr: `1705`- Response.content_security_policy データ構造を介してコンテンツセキュリティポリシーヘッダーをサポートします。 :pr: `1617`
LanguageAccept
は、「en-US」の「en」または「en」の「en-US」の一致にフォールバックして、プライマリ言語タグでのみ一致するクライアントまたは翻訳をより適切にサポートします。 :issue: `450` 、:pr:` 1507`MIMEAccept
は、照合時に特異性のためにMIMEパラメーターを使用します。 :issue: `458` 、:pr:` 1574`- クライアント証明書を検証するように構成された
SSLContext
で開発サーバーを起動した場合、PEM形式の証明書はenviron["SSL_CLIENT_CERT"]
として使用できます。 :pr: `1469` is_resource_modified
は、常にFalse
を返すのではなく、GET
およびHEAD
以外のメソッドに対して実行されます。 :issue: `409`SharedDataMiddleware
は、パッケージローダーでファイルではなくディレクトリにアクセスしようとすると、500ではなく404を返します。 setuptoolsとpkg_resourcesへの依存関係が削除されました。 :issue: `1599`response.cache_control.immutable
フラグを追加します。 このCache-Control
ヘッダーオプションのブラウザサポートはまだ実験段階であり、実装されていない可能性があることに注意してください。 :issue: `1185`- 開発サーバーでのオプションの要求ログの強調表示は、termcolorではなくClickによって処理されます。 :issue: `1235`
- 開発サーバーのオプションのアドホックTLSサポートは、pyOpenSSLではなく暗号化によって処理されます。 :pr: `1555`
FileStorage.save()
は、pathlib
および PEP 519PathLike
オブジェクトをサポートします。 :issue: `1653`- デバッガーのセキュリティピンは、Podmanが管理するコンテナー内で一意です。 :issue: `1661`
host_matching
が有効になっているときにURLを作成すると、異なるホストを持つ重複するエンドポイントがある場合に現在のホストが考慮されます。 :issue: `488`429 TooManyRequests
および503 ServiceUnavailable
HTTP例外は、retry_after
パラメーターを使用してRetry-After
ヘッダーを設定します。 :issue: `1657`Map
とRule
には、動作するHTTPサーバーの数と同様に、複数のスラッシュを1つに折りたたむmerge_slashes
オプションがあります。 これはデフォルトで有効になっています。 :pr: `1286、1694`- HTTP 103、208、306、425、506、508、および511をステータスコードのリストに追加します。 :pr: `1678`
update
、setlist
、およびsetlistdefault
メソッドをHeaders
データ構造に追加します。extend
メソッドは、MultiDict
とkwargsを取ることができます。 :pr: `1687、1697`- 開発サーバーは、最初のパスセグメントを削除するのではなく、2つのスラッシュで始まるパスを受け入れます。 :issue: `491`
Request
およびResponse
ラッパーにアクセス制御(クロスオリジンリクエストシェアリング、CORS)ヘッダープロパティを追加します。 :pr: `1699`Accept
の値は、同等の品質のタグに対してアルファベット順に並べられなくなりました。 代わりに、最初の順序が保持されます。 :issue: `1686`- 代替実装用に
Map.lock_class
属性を追加しました。 :pr: `1702` - 非同期フレームワークで使用するために、ルーティングシステムでのWebSocketルールのマッチングと構築をサポートします。 :pr: `1709`
- ファイル全体にまたがる範囲要求は、 RFC 7233 に準拠するために、200ではなく206で応答します。 これは、古いブラウザにメディアを提供するのに役立つ場合があります。 :issue: `410、1704`
SharedDataMiddleware
のデフォルトfallback_mimetype
はapplication/octet-stream
です。 ファイル名がテキストのmimetypeのように見える場合は、utf-8
文字セットが追加されます。 これは、BaseResponse
およびFlaskのsend_file()
の動作と一致します。 :issue: `1689`
バージョン0.16.1
2020-01-27リリース
- サブパッケージの非推奨メッセージのインポート場所を修正しました。 :issue: `1663`
- 開発サーバーがコンテンツなしで応答する場合のPython3.5のSSLエラーを修正します。 :issue: `1659`
バージョン0.16.0
2019年9月19日リリース
werkzeug
モジュールによって提供されるほとんどのトップレベル属性を廃止し、直接インポートを優先します。 非推奨のインポートはバージョン1.0で削除されます。たとえば、
import werkzeug; werkzeug.url_quote
の代わりに、from werkzeug.urls import url_quote
を実行します。 非推奨の警告は、使用する正しいインポートを示します。werkzeug.exceptions
およびwerkzeug.routing
も、アクセスする代わりにインポートする必要がありますが、技術的な理由により、警告を表示することはできません。
バージョン0.15.6
2019-09-04リリース
- スクリプトがエントリポイントである場合にWindowsでリローダーが失敗する原因となったpipのバグを回避します。 これにより、Flaskの flask run コマンドが「Scriptsflaskという名前のモジュールがありません」で失敗する問題が修正されます。 :issue: `1614`
ProxyFix
は、デフォルトでX-Forwarded-Proto
ヘッダーを信頼します。 :issue: `1630`ProxyFix
の非推奨のnum_proxies
引数は、x_for
、x_proto
、およびx_host
を0.14の動作に一致するように設定します。 これは、中間アップグレードの中断を少なくすることを目的としていますが、1.0でも引数は削除されます。 :issue: `1630`
バージョン0.15.5
2019年7月17日リリース
- Python3.8で
ast.Module
に変更されたため、TypeError
を修正しました。 :issue: `1551` - 一部のPython2.7リリースのデバッグビルドでのCアサーションの失敗を修正しました。 :issue: `1553`
BadRequestKeyError
は、e.show_exception
がTrue
に設定されている場合、KeyError
メッセージを説明に追加します。 これは、元の0.15.0の動作よりも安全なデフォルトであり、情報を失うことなく制御しやすくなります。 :pr: `1592`- デバッガーをjQuery3.4.1にアップグレードします。 :issue: `1581`
- リローダーが失敗する原因となった一部の外部デバッガーの問題を回避します。 :issue: `1607`
- リローダーがeggとしてインストールされたsetuptoolsスクリプトをイントロスペクトできない問題を回避します。 :issue: `1600`
- スクリプトが実行可能としてマークされている場合でも、リローダーは
sys.executable
を使用し、0.15で導入されたNixOS向けの動作を元に戻します。 リローダーによってOSError: [Errno 8] Exec format error
が発生しなくなりました。 :issue: `1482` 、:issue:` 1580` SharedDataMiddleware
は、Windowsドライブ名のパスを安全に処理します。 :issue: `1589`
バージョン0.15.3
2019年5月14日リリース
- Python2.7の開発サーバーで複数行のヘッダーフォールディングを適切に処理します。 (:issue: `1080` )
response
引数をUnauthorized
に戻します。 (:pr: `1527` )www_authenticate
が指定されていない場合、Unauthorized
はWWW-Authenticate
ヘッダーを追加しません。 (:issue: `1516` )- デフォルトのURLコンバーターは、バイトを
b
で表すのではなく、バイトを文字列に正しくエンコードします。 (:issue: `1502` ) ProfilerMiddleware
のファイル名フォーマット文字列を修正して、float値を正しく処理するようにしました。 (:issue: `1511` )LintMiddleware
をPython3で動作するように更新します。 (:issue: `1510` )- デバッガーは連鎖例外のサイクルを検出し、その場合はタイムアウトしません。 (:issue: `1536` )
- Dockerで開発サーバーを実行する場合、デバッガーのセキュリティピンはコンテナーごとに一意になります。
バージョン0.15.2
2019年4月2日リリース
Rule
コード生成では、カバレッジが無視するファイル名を使用します。 以前の値「生成された」は、カバレッジの失敗を引き起こしていました。 (:issue: `1487` )- 永続化されたCookieがない場合、テストクライアントはCookieヘッダーを削除します。 これにより、0.15.0で導入された、元のリクエストのCookieがリダイレクトに使用され、ログアウトなどの機能が失敗する問題が修正されます。 (:issue: `1491` )
- テストクライアントは、アプリに渡す前に環境をコピーして、インプレースの変更がリダイレクトリクエストに影響を与えないようにします。 (:issue: `1498` )
"werkzeug"
ロガーは、ロギングチェーンのレベルにハンドラーが構成されていない場合にのみハンドラーを追加します。 これにより、他のコードが最初にロギングを構成する場合に、二重ロギングが回避されます。 (:issue: `1492` )
バージョン0.15.1
2019年3月21日リリース
Unauthorized
は、最初の引数としてdescription
を取り、以前の動作を復元します。 新しいwww_authenticate
引数が2番目にリストされています。 (:issue: `1483` )
バージョン0.15.0
2019年3月19日リリース
- URLの構築は約7倍高速です。 各
Rule
は、それ自体を構築するために最適化された関数をコンパイルします。 (:pr: `1281` ) MapAdapter.build()
にMultiDict
を渡して、キーの複数の値を表すことができます。 リスト値を使用してdictを渡すときに、これはすでに実行されています。 (:pr: `724` )path_info
は、Map.bind()
のデフォルトで'/'
になります。 (:issue: `740` 、:pr:` 768` 、:pr: `1316` )RequestRedirect
コードを301から308に変更し、リダイレクト中に動詞とリクエスト本文(フォームデータ)を保持します。 (:pr: `1342` )- URLルールの
int
およびfloat
コンバーターは、signed=True
パラメーターが渡された場合、負の値を処理します。 たとえば、/jump/<int(signed=True):count>
です。 (:pr: `1355` ) Location
のResponse.get_wsgi_headers()
の自動修正は、ルートパスではなく、現在のパスを基準にしています。 (:issue: `693` 、:pr:` 718` 、:pr: `1315` )- 412の応答には、本文にエンティティヘッダーとエラーメッセージが含まれています。
If-Match
(:pr: `1233` )を実装する際に元々省略されていましたが、仕様では許可されていないようです。 (:issue: `1231` 、:pr:` 1255` ) - Content-Lengthヘッダーは、1xxおよび204応答では削除されます。 これにより、本文は送信されないがヘッダーは引き続き存在するという以前の変更が修正されます。 新しい動作はRFC7230と一致します。 (:pr: `1294` )
Unauthorized
は、www_authenticate
パラメーターを使用して、応答のWWW-Authenticate
ヘッダーを設定します。これは、有効な401応答に技術的に必要です。 (:issue: `772` 、:pr:` 795` )- ステータスコード424
FailedDependency
のサポートを追加します。 (:pr: `1358` ) http.parse_cookie()
は、キーまたは値のないCookieを生成するのではなく、空のセグメントを無視します。 (:issue: `1245` 、:pr:` 1301` )parse_authorization_header()
(およびAuthorization
、authorization
)は、認証ヘッダーをUTF-8として扱います。 Python 2では、基本認証のユーザー名とパスワードはunicode
です。 (:pr: `1325` )parse_options_header()
は、 RFC 2231 パラメーターの継続を理解します。 (:pr: `1417` )uri_to_iri()
は、スペースなどの予約されていないクラスのASCII文字を引用符で囲まず、デコード時に無効なバイトを引用符で囲みます。iri_to_uri()
は予約文字を引用しません。 これらの文字クラスについては、 RFC 3987 を参照してください。 (:pr: `1433` )get_content_type
は、application/
で始まるものだけでなく、+xml
で終わるすべてのmimetypeの文字セットを追加します。application/javascript
などの既知のテキストタイプにも文字セットが与えられます。 (:pr: `1439` )werkzeug.security
モジュールをクリーンアップし、古いhashlibサポートを削除します。 (:pr: `1282` )generate_password_hash()
では、PBKDF2はデフォルトで150000回の反復を使用し、50000から増加しています。 (:pr: `1377` )ClosingIterator
は、内部イテレータではなく、ラップされた iterable でclose
を呼び出します。 これは、__iter__
がself
を返したオブジェクトには影響しません。 他のオブジェクトの場合、メソッドは以前に呼び出されませんでした。 (:issue: `1259` 、:pr:` 1260` )- バイトは
Headers
のキーとして使用でき、Latin-1のような値としてデコードされます。 (:pr: `1346` ) Range
は、渡された範囲タプルのリストが有効なRange
ヘッダーを生成することを検証します。 (:pr: `1412` )FileStorage
は、stream._file
に属性が存在しない場合、属性を検索し、tempfile.SpooledTemporaryFile()
がio.IOBase
。 https://github.com/python/cpython/pull/3249を参照してください。 (:pr: `1409` )CombinedMultiDict.copy()
は、浅い可変コピーをMultiDict
として返します。 コピーは、結合されたdictへの変更を反映しなくなりましたが、より一般的には役立ちます。 (:pr: `1420` )- デバッガーで使用されるjQueryのバージョンが3.3.1に更新されます。 (:pr: `1390` )
- デバッガーは、長い
markupsafe.Markup
インスタンスを正しくレンダリングします。 (:pr: `1393` ) - Werkzeugがzipファイルとしてインストールされている場合、デバッガーはリソースを提供できます。
DebuggedApplication.get_resource
はpkgutil.get_data
を使用します。 (:pr: `1401` ) - デバッガーとサーバーログは、Python3の連鎖例外をサポートします。 (:pr: `1396` )
- インタラクティブデバッガーは、ユーザーコードからのフレームを強調表示して、長いスタックトレースで簡単に選択できるようにします。 envがvenvではなくvirtualenvで作成された場合、デバッガーが一部のフレームを誤って分類する可能性があることに注意してください。 (:pr: `1421` )
- 対話型デバッガーの上部にあるエラーメッセージをクリックすると、トレースバックの下部にジャンプします。 (:pr: `1422` )
- PINを生成するとき、デバッガーは、現在のUIDにユーザー名が関連付けられていない場合に発生する
KeyError
を無視します。これは、Dockerで発生する可能性があります。 (:issue: `1471` ) BadRequestKeyError
は、説明にKeyError
メッセージを追加して、400エラーの原因を明確にします。 Flaskのようなフレームワークは、e.args = ()
を設定することにより、本番環境でこの情報を省略できます。 (:pr: `1395` )- ネストされた
ImportError
がimport_string()
から発生した場合、トレースバックはネストされたインポートについて言及します。 「親によってまだセットアップされていないモジュール」を処理するためのテストされていないコードパスを削除します。 (:pr: `735` ) - PDBなどのツールの使用中にリロードをトリガーしても、入力が非表示になりません。 (:pr: `1318` )
- Pythonファイルが実行可能とマークされている場合、リローダーはPython実行可能ファイルをコマンドラインの前に追加しません。 これにより、リローダーがNixOSで動作できるようになります。 (:pr: `1242` )
python -m app
で実行すると、リロード間でsys.path
が変わる問題を修正します。 リローダーは、モジュールが「-m」で実行されたことを検出し、リロード時にsys.argv
のファイルパスの代わりにそれを再構築します。 (:pr: `1416` )- 開発サーバーは、
unix://app.socket
のようなホスト名を渡すことでUnixソケットにバインドできます。 (:pr: `209` 、:pr:` 1019` ) - サーバーは、Jythonの互換性のために、
SOL_TCP
の代わりにIPPROTO_TCP
定数を使用します。 (:pr: `1375` ) run_simple()
でアドホックSSL証明書を使用する場合、証明書は無効な機関によって署名されているのではなく、自己署名として表示されます。 (:pr: `1430` )- 開発サーバーは、未加工の要求行ではなく引用符で囲まれていないIRIをログに記録し、開発中の要求パスでUnicodeを簡単に操作できるようにします。 (:issue: `1115` )
- 開発サーバーは、Python3上の
ConnectionError
を認識してクライアントの切断を抑制し、アプリケーション内で発生した可能性のある他のOSErrors
を抑制しません。 (:pr: `1418` ) - 環境キー
REQUEST_URI
およびRAW_URI
には、パーセントデコードされる前の生のパスが含まれています。 これは非標準ですが、多くのWSGIサーバーがそれらを追加します。 ミドルウェアは、PATH_INFO
をこれに置き換えて、生の値に基づいてルーティングすることができます。 (:pr: `1419` ) EnvironBuilder
は、CONTENT_TYPE
またはCONTENT_LENGTH
が設定されていない場合、それらを環境に設定しません。 以前は、設定されていない場合、これらはデフォルト値を使用していました。 空の値と未設定の値を区別できるようになりました。 (:pr: `1308` )- クエリ文字列引数がパス内のクエリ文字列を上書きする場合、テストクライアントは
ValueError
を発生させます。 (:pr: `1338` ) test.EnvironBuilder
とtest.Client
は、data
とcontent_type
を手動で渡す代わりに、json
引数を取ります。 これは、test.EnvironBuilder.json_dumps()
メソッドを使用してシリアル化されます。 (:pr: `1404` )test.Client
リダイレクト処理が書き直されました。 (:pr: `1402` )- リダイレクト環境は、最初のリクエスト環境からコピーされます。
- ルートの下のパスにリダイレクトするとき、スクリプトのルートとパスは正しく区別されます。
- HEADメソッドはGETに変更されていません。
- 307および308コードは、メソッドと本体を保持します。 他のすべては、本文と関連するヘッダーを無視します。
- ヘッダーは、ブラウザーの動作に従って、すべてのコードの新しいリクエストに渡されます。
test.EnvironBuilder
は、WSGIキーに加えて、コンテンツタイプと長さのヘッダーをデータから検出するときに設定します。- イテレータミドルウェアがクリーンアップコードを安全に実行できるようにするために、
buffered=False
の場合でも、中間応答ボディが繰り返されます。 最後の応答のみがバッファリングされません。 (:pr: `988` )
EnvironBuilder
、FileStorage
、およびwsgi.get_input_stream()
は、グローバル_empty_stream
インスタンスを共有しなくなりました。 これにより、1つのリクエストでストリームを閉じることが他の使用法に影響を与えるケースを防ぐことで、テストの分離が向上します。 (:pr: `1340` )- 1.0では、デフォルトの
SecureCookie.serialization_method
がpickle
からjson
に変更されます。 既存のトークンをアップグレードするには、json
が失敗した場合に、unquote()
をオーバーライドしてpickle
を試行します。 (:pr: `1413` ) CGIRootFix
は、Lighttpdの非常に古いバージョンのPATH_INFO
を変更しなくなりました。LighttpdCGIRootFix
は、0.9でCGIRootFix
に名前が変更されました。 どちらも非推奨であり、バージョン1.0で削除される予定です。 (:pr: `1141` )werkzeug.wrappers.json.JSONMixin
はFlaskの実装に置き換えられました。 完全なAPIについてはドキュメントを確認してください。 (:pr: `1445` )- contribモジュールは非推奨であり、
werkzeug
コアに移動されるか、バージョン1.0で完全に削除されます。 すでに非推奨の警告を発行している一部のモジュールは削除されました。python -W default::DeprecationWarning
を使用してコードを実行またはテストして、使用している非推奨のコードをキャッチしてください。 (:issue: `4` )LintMiddleware
はwerkzeug.middleware.lint
に移動しました。ProfilerMiddleware
はwerkzeug.middleware.profiler
に移動しました。ProxyFix
はwerkzeug.middleware.proxy_fix
に移動しました。JSONRequestMixin
はwerkzeug.wrappers.json
に移動しました。cache
は、別のプロジェクト cachelib に抽出されました。 Werkzeugのバージョンは非推奨です。securecookie
とsessions
は、別のプロジェクト secure-cookie に抽出されました。 Werkzeugのバージョンは非推奨です。ProxyFix
を除く、fixers
のすべてが非推奨になりました。JSONMixin
を除く、wrappers
のすべてが非推奨になりました。atom
は非推奨です。 これはWerkzeugの他の部分には適合せず、コミュニティ内の専用ライブラリによってより適切に提供されます。jsrouting
が削除されました。 代わりに、テンプレートまたはJSON応答をレンダリングするときにURLを設定します。limiter
が削除されました。 その特定の使用はWerkzeugによって直接処理されますが、ストリーム制限は一般にWSGIサーバーによってより適切に処理されます。testtools
が削除されました。 デフォルトのテストクライアントに比べて大きなメリットはありませんでした。iterio
は非推奨です。
wsgi.get_host()
はX-Forwarded-For
を参照しなくなりました。ProxyFix
を使用してそれを処理します。 (:issue: `609` 、:pr:` 1303` )ProxyFix
は、より多くのヘッダー、複数の値、およびより安全な構成をサポートするようにリファクタリングされています。- 各ヘッダーは複数の値をサポートします。 プロキシの信頼できる数は、ヘッダーごとに個別に構成されます。
num_proxies
引数は非推奨です。 (:pr: `1314` ) X-Forwarded-Host
に基づいてSERVER_NAME
とSERVER_PORT
を設定します。 (:pr: `1314` )SERVER_PORT
を設定し、X-Forwarded-Port
に基づいてHTTP_HOST
を変更します。 (:issue: `1023` 、:pr:` 1304` )X-Forwarded-Prefix
に基づいてSCRIPT_NAME
を設定します。 (:issue: `1237` )- 元のWSGI環境値は、
werkzeug.proxy_fix.orig
キー(dict)に保存されます。 個々のキーwerkzeug.proxy_fix.orig_remote_addr
、werkzeug.proxy_fix.orig_wsgi_url_scheme
、およびwerkzeug.proxy_fix.orig_http_host
は非推奨になりました。
- 各ヘッダーは複数の値をサポートします。 プロキシの信頼できる数は、ヘッダーごとに個別に構成されます。
werkzeug.wsgi
のミドルウェアは、werkzeug.contrib
から移動したミドルウェアとともに、werkzeug.middleware
の下の個別のモジュールに移動しました。 古いwerkzeug.wsgi
インポートは非推奨であり、バージョン1.0で削除されます。 (:pr: `1452` )werkzeug.wsgi.DispatcherMiddleware
はwerkzeug.middleware.dispatcher.DispatcherMiddleware
に移動しました。werkzeug.wsgi.ProxyMiddleware
をwerkzeug.middleware.http_proxy.ProxyMiddleware
に移動しました。werkzeug.wsgi.SharedDataMiddleware
はwerkzeug.middleware.shared_data.SharedDataMiddleware
に移動しました。
ProxyMiddleware
はクエリ文字列をプロキシします。 (:pr: `1252` )ProfilerMiddleware
によって生成されるファイル名はカスタマイズできます。 (:issue: `1283` )werkzeug.wrappers
モジュールはパッケージに変換され、そのさまざまなクラスが個別のモジュールに編成されています。 既存のパブリックAPIであると理解されている、以前に文書化されたクラスは、引き続きwerkzeug.wrappers
からインポート可能であるか、特定のモジュールからインポートされる可能性があります。 (:pr: `1456` )
バージョン0.14.1
2017年12月31日にリリース
- 統合開発サーバーでのステータスコード処理によるリグレッションを解決しました。
バージョン0.14
2017年12月31日にリリース
- HTTP例外は、
Request.application
によって自動的にキャッチされるようになりました。 - ブラウザとしてのエッジのサポートが追加されました。
SpooledTemporaryFile
がないプラットフォームのサポートが追加されました。- if-matchによるetag処理のサポートを追加します
- SameSitecookie属性のサポートが追加されました。
werkzeug.wsgi.ProxyMiddleware
を追加しましたNullCache
にhas
を実装- キャッシュクライアントの
get_multi
は、常にリストを返すようになりました。 - 古いPythonバージョンの終了時にリローダーがクラッシュしないようにウォッチドッグオブザーバーのシャットダウンを改善しました。
- RFC2231に従って
filename*
ファイル名属性のサポートが追加されました - リローダーPINのマシンIDがWindowsで正確に読み取られない問題を解決しました。
- リローダーのinitファイルの構文エラーの回避策を追加しました。
- Windowsのコンソールスクリプトでリローダーを使用するためのサポートが追加されました。
- 組み込みのHTTPサーバーは、HTTPボディが予期されていない場合(204、204、HEADリクエストなど)に接続を閉じなくなりました。
EnvironHeaders
オブジェクトは、偽の値に設定されている場合、空のコンテンツタイプと長さをスキップするようになりました。- Werkzeugは、1xxまたは204/304応答でcontent-lengthヘッダーを送信しなくなりました。
- Cookieの値に、引用符を付けずにスラッシュと等号を含めることも許可されるようになりました。
- ルーティングコンバータ引数の正規表現を緩和しました。
- Cookieが値なしで送信された場合、Cookieは空の値であると見なされ、パーサーはこれを受け入れます。 以前は、これにより、値に続くCookieが破損する可能性がありました。
- テスト
Client
およびEnvironBuilder
は、リクエストオブジェクトと同様にmimetypeをサポートするようになりました。 - URLルールの静的ウェイトのサポートが追加されました。
- sys.pathにディレクトリ以外のパスが含まれている、より複雑なリローダーのシナリオをより適切に処理します。
EnvironHeaders
は、文字列以外のキーが渡された場合に奇妙なエラーを発生させなくなりました。
バージョン0.13
2017年12月7日にリリース
- Python2.6および3.3のサポートを廃止します。 CIテストはこれらのバージョンでは実行されず、サポートは次のバージョンで完全に削除されます。 (:issue: `pallets / meta#24` )
- ポートが整数でない場合は、
TypeError
を上げます。 (:pr: `1088` ) werkzeug.script
は完全に非推奨です。 代わりにクリックを使用してください。 (:pr: `1090` )response.age
はtimedelta
として解析されます。 以前は、datetime
として誤って扱われていました。 ヘッダー値は整数の秒数であり、日付文字列ではありません。 (:pr: `414` )TypeConversionDict
で、コンバーターの使用時にエラーが伝播されないバグを修正しました。 (:issue: `1102` )Authorization.qop
は、RFC 2617に準拠するために、セットではなく文字列です。 (:pr: `984` )- エンコードされたCookieがデフォルトで4093バイトより大きい場合、例外が発生します。 ブラウザは、これより大きいCookieを黙って無視する場合があります。
BaseResponse
には新しい属性max_cookie_size
があり、dump_cookie
にはこれを構成するための新しい引数max_size
があります。 (:pr: `780` 、:pr:` 1109` ) werkzeug.contrib.lint.GuardedIterator.close
のTypeErrorを修正しました。 (:pr: `1116` )BaseResponse.calculate_content_length
は、Python3のUnicode応答で正しく機能するようになりました。 最初にiter_encoded
を使用してエンコードします。 (:issue: `705` )- 安全なCookieの貢献は、Python3の文字列秘密鍵で機能します。 (:pr: `1205` )
- 共有データミドルウェアは、ルックアップの順序を維持するために、静的な場所のdictではなくリストを受け入れます。 (:pr: `1197` )
- エンコードなしのHTTPヘッダー値には、一重引用符を含めることができます。 (:pr: `1208` )
- 組み込みの開発サーバーは、チャンク転送エンコーディングを使用したリクエストの受信をサポートしています。 (:pr: `1198` )
バージョン0.12.2
2017年5月16日にリリース
- リグレッションの修正:プルリクエスト
#892
により、 ProxyFix を使用している場合でも、Werkzeugがリバースプロキシの背後にあるリモートクライアントのIPを正しくログに記録できませんでした。 - Windowsの safe_join のバグを修正しました。
バージョン0.12.1
2017年3月15日リリース
- Windowsでのリローダー(デバッグモードで使用)のクラッシュを修正しました。 ( OSError:[WinError 10038] )。 プルリクエスト
#1081
を参照してください - 変更を Headers のクラス階層に部分的に戻します。
#1084
を参照してください。
バージョン0.12
2017年3月10日リリース
- werkzeug.scriptの大きな非推奨の警告を吐き出します
- inspect.getargspec が3.6でなくなったため、使用可能な場合は inspect.getfullargspec を内部的に使用します
- ステータスコード451および423のサポートが追加されました
- ビルドエラーの提案を改善しました。 特に、誰かがエラーを文字列化した場合にのみ、提案が計算されます。
- uWSGIのキャッシングバックエンドのサポートが追加されました。
- FileStorage を反復処理すると無限ループが発生するバグを修正します。
- データ構造は、stdlibの collections モジュールの関連する基本クラスから継承するようになりました。 #794を参照してください。
- ユーザーエージェント文字列でNetBSD、OpenBSD、FreeBSD、DragonFlyBSDプラットフォームを認識するためのサポートを追加します。
- SeaMonkeyブラウザの名前とバージョンを正しく認識します
- Baiduspiderとbingbotのユーザーエージェントを認識する
- LocalProxy のラップされたオブジェクトが関数である場合は、__ wrapped__属性で参照してください。
generate_password_hash
のデフォルトがより安全なものに変更されました。プルリクエスト#753
を参照してください。- オプションヘッダー解析でのエンコードのサポートを追加します。プルリクエスト
#933
を参照してください。 test.Client
は、相対URLを使用してLocationヘッダーを適切に処理するようになりました。プルリクエスト#879
を参照してください。- HTTPException が発生すると、デバッグを容易にするために説明が出力されるようになりました。
- Werkzeugのdictのようなデータ構造には、Python2での
view
メソッドが含まれるようになりました。プルリクエスト#968
を参照してください。 - 初期化中に
stream_factory
が提供されなかった場合のMultiPartParser
のバグを修正します。プルリクエスト#973
を参照してください。 - デバッガミドルウェアのPythonプロンプトでオートコレクトとスペルチェッカーを無効にします。プルリクエスト
#994
を参照してください。 - メソッドが一致しない場合はスラッシュルートにリダイレクトしないでください。プルリクエスト
#907
を参照してください。 - 凍結パッケージで
SharedDataMiddleware
を使用する場合のバグを修正します。プルリクエスト#959
を参照してください。 - Range ヘッダー解析関数が無効な値
#974
に対して修正されました。 - バイト範囲要求のサポートを追加します。プル要求
#978
を参照してください。 - 開発サーバー
#1004
で最新の暗号化デフォルトを使用します。 - テストクライアントのpost()メソッドは、dataパラメーターを介してファイルオブジェクトを受け入れるようになりました。
- HTTPコード
#1013
に基づいてrun_simpleの端末出力に色を付けます。 - デバッガコンソールでself-XSSを修正します。
#1031
を参照してください。 - IPython5.xシェルのサポートを修正します。
#1033
を参照してください。 - Acceptデータ構造を変更して、最初に特異性で並べ替えます。これにより、mimeタイプに
best_match
を使用する場合(requests.accept_mimetypes.best_match
など)により正確な結果が得られます。
バージョン0.11.16
- werkzeug.serving:クライアントから提供された場合のみCONTENT_TYPE / CONTENT_LENGTHを設定します
- werkzeug.serving: python -m werkzeug.serving を使用した場合のリローダーのクラッシュを修正しました。
バージョン0.11.15
2016年12月30日にリリースされました。
- 以前のリリースのバグ修正のバグ修正。
バージョン0.11.14
2016年12月30日にリリースされました。
- プラットフォームが
ForkingMixIn
をインポートする前にフォークできるかどうかを確認し、そのようなプラットフォームでForkingWSGIServer
を作成するときに例外を発生させます。PR#999
を参照してください。
バージョン0.11.13
2016年12月26日にリリースされました。
- 特定のWindowsインストールでのリローダー発行者の正しい修正。
バージョン0.11.12
2016年12月26日にリリースされました。
- 空のリストに関するmultidictのその他のバグを修正します。
#1000
を参照してください。 - 以前は意図せずに欠落していたいくつかの EnvironBuilder プロパティにいくつかのdocstringを追加します。
- Windowsのリローダーの回避策を追加しました。
バージョン0.11.11
2016年8月31日にリリースされました。
- Python3のJSONRequestMixinを修正しました。 #731を参照
- 整数を渡すときのテストクライアントでの壊れた文字列の処理を修正しました。 #852を参照
parse_options_header
のバグを修正します。コンマまたはセミコロンで始まる無効なコンテンツタイプでは、無効な戻り値が返されます。問題#995
を参照してください。- 空のリストを値として渡すときのmultidictsのバグを修正します。問題
#979
を参照してください。 - WerkzeugデバッガーでXSSを許可するセキュリティの問題を修正します。
#1001
を参照してください。
バージョン0.11.10
2016年5月24日にリリースされました。
- Python 2.6で実行し、壊れたロケールを使用しているときに発生するバグを修正しました。 プルリクエスト#912を参照してください。
- Google AppEngineでデバッガーを実行するとクラッシュする問題を修正しました。 問題#925を参照してください。
- メモリの枯渇を引き起こす可能性のあるマルチパート解析の問題を修正しました。
バージョン0.11.9
2016年4月24日にリリースされました。
- デバッガーがPOSIXシステムでマシンGUIDを使用しない原因となっていた問題を修正しました。
- デバッガーのPINの使用に関するPython3のUnicodeエラーを修正しました。
- ピンデバッグコードのタイムスタンプ検証を修正しました。 この修正がないと、ピンが長時間記憶されていました。
バージョン0.11.8
2016年4月15日にリリースされました。
- Python3のOSXでのマシンGUID検出コードの問題を修正しました。
バージョン0.11.7
2016年4月14日にリリースされました。
- デバッガーのPython3でのリグレッションを修正しました。
バージョン0.11.6
2016年4月14日にリリースされました。
- werkzeug.serving:不正なリクエストでもクライアントアドレスを表示します。
- デバッガーのPINベースの保護を改善し、Cookieの試行によるブルートフォース攻撃を困難にしました。 デバッガーは実稼働環境での実行を目的としていないことに注意してください。
- ピンのタイムアウトを1週間に増やして、ユーザーの煩わしさを軽減し、ユーザーがピンチェックを完全に無効にする可能性を減らしました。
- werkzeug.serving:パスがダブルスラッシュで始まる場合の壊れたHTTP_HOSTを修正しました。
バージョン0.11.5
2016年3月22日にリリースされました。
- werkzeug.serving:HTTPサーバーへのSSL接続を試行したときのクラッシュを修正しました。
バージョン0.11.4
2016年2月14日にリリースされました。
- -mフラグからwerkzeug.servingが機能しない問題を修正しました。
- 誤った弱いetag処理を修正しました。
バージョン0.11.3
2015年12月20日にリリースされました。
- プロキシに対してコピー操作が機能しない問題を修正しました。
- 開発サーバーのログ操作を変更して、すべての状況でサーバーが実行されている場所を再び正しくログに記録するようにしました。
- 0.11.2の修正と同様のSSLラッピングによる別のリグレッションを修正しましたが、コードパスが異なります。
バージョン0.11.2
2015年11月12日にリリースされました。
- Python3上のWindowsで継承可能なソケットを修正しました。
- フォークサーバーが起動しなくなる問題を修正しました。
- ファイル記述子によるソケットのオープンをサポートするプラットフォームでのSSLラッピングを修正しました。
- ウォッチドッグリローダーからログを記録しなくなりました。
- ホストのUnicodeエラーは、より適切にキャッチされるか、不正な要求エラーに変換されるようになりました。
バージョン0.11.1
2015年11月10日にリリースされました。
- デバッガーでのPython3のリグレッションを修正しました。
バージョン0.11
2015年11月8日にリリースされた、コードネームGleisbaumaschine。
run_simple
およびwerkzeug.serving
の他の機能にreloader_paths
オプションを追加しました。 これにより、ユーザーはカスタムパスを使用してWerkzeugのPythonモジュール監視を完全にオーバーライドできます。- Werkzeugのクラスの多くのカスタムキャッシュプロパティは、Pythonの
property
タイプのサブクラスになりました(問題#616
)。 bind_to_environ
は、HTTP_HOST
(プルリクエスト#204
)の暗黙的なデフォルトポート番号と明示的なデフォルトポート番号を区別しないようになりました。BuildErrors
がより有益になりました。 エラーメッセージとして完全な文が付属し、提案も提供します(プルリクエスト#691
)。- バージョンではなくSafariのビルド番号が抽出されるユーザーエージェントパーサーのバグを修正しました(プルリクエスト
#703
)。 - デフォルトのMULTIコマンド(プルリクエスト
#702
)をサポートしないtwemproxyのRedisCacheset_manyが壊れていた問題を修正しました。 - リクエストクラスとレスポンスクラスの
mimetype
パラメータが常に小文字に変換されるようになりました。 - タイムアウトが0の場合にキャッシュが期限切れにならないようにキャッシュを変更しました。 これにより、redis setexの問題も修正されます(問題
#550
) - Werkzeugは、PythonがASCIIとして検出した場合、
UTF-8
をUnix上のファイルシステムエンコーディングと見なすようになりました。 - キャッシュに新しいオプションの has メソッドがあります。
- parse_options_header のさまざまなバグを修正しました(プルリクエスト
#643
)。 - リローダーが有効になっている場合、可能であれば、サーバーは親プロセスでソケットを開きます。 これは、リローダーがクライアントからの接続を開始すると、切断するのではなく待機することを意味します。 これは、すべてのPythonバージョンで機能するわけではありません。
- デバッガーにPINベースの認証を実装しました。 これはオプションで無効にすることができますが、お勧めしません。 実稼働環境でデバッガーを実行する人が多すぎることが判明したため、この変更が必要でした。
- Devserverでは、SSLモジュールをインストールする必要がなくなりました。
バージョン0.10.5
(バグ修正リリース、リリース日は未定)
- リローダー:一時ファイルを元のファイルに移動することによって行われたファイルの変更を正しく検出します。 PyCharmの場合(プルリクエスト
#722
)。 - Python3での
werkzeug.datastructures.ETags
のブール動作を修正しました(問題#744
)。
バージョン0.10.4
(バグ修正リリース、2015年3月26日にリリース)
- パッケージアーティファクトを手動で削除した0.10.3の再リリース。
バージョン0.10.3
(バグ修正リリース、2015年3月26日にリリース)
- パッケージアーティファクトなしで0.10.2の再リリース。
バージョン0.10.2
(バグ修正リリース、2015年3月26日にリリース)
empty
がキーワード引数に依存するサードパーティライブラリを壊す可能性がある問題を修正しました(プルリクエスト#675
)`get_empty_kwargs
を提供することにより、Rule.empty
を改善し、empty
メソッド全体をオーバーライドせずにカスタムkwargsを設定できるようにしました。 (プルリクエスト#675
)- サーバーパラメーターに含まれている場合にスタートアップがクラッシュしないようにリローダーの
`extra_files`
パラメーターを修正しました - URLの構築時に MultiDict を使用することはサポートされなくなりました。 この動作により、いくつかの回帰が発生しました。
- stat-reloaderのパフォーマンスの問題を修正しました(プルリクエスト
#715
)。
バージョン0.10.1
(バグ修正リリース、2015年2月3日にリリース)
- URLの複数のクエリ値によるリグレッションを修正しました(プルリクエスト
#667
)。 - イベントレットのモンキーパッチと組み込みサーバーの問題を修正しました(プルリクエスト
#663
)。
バージョン0.10
2015年1月30日にリリースされた、コードネームBagger。
contrib.cache
のキャッシュのエラー処理を変更し、テストスイートを改善しました。- sys.maxint が定義されていないため、アドホックsslコンテキストを作成する際のPython3のバグを修正しました。
make_ssl_devcert()
が例外で失敗する原因となっていたPython3のバグを修正しました。- 504および505の例外を追加しました。
- ChromeOS検出のサポートが追加されました。
- ルーティングシステムにUUIDコンバーターを追加しました。
- サーバーを終了する方法を説明するメッセージを追加しました。
werkzeug.datastructures.CombinedMultiDict
のlen
がクラッシュするPython2のバグを修正しました。- 互換性のあるダイジェストが見つかった場合のstdlibpbkdf2hmacのサポートが追加されました。
py.test
を使用するために移植されたテストスイート。- さまざまなミドルウェアのマイナーな最適化(プルリクエスト
#496
および#571
)。 - 組み込みサーバーには、
OpenSSL
の代わりにstdlibssl
モジュールを使用してください(問題#434
)。 これは、OpenSSLコンテキストがサポートされなくなったことを意味しますが、代わりにstdlibからssl.SSLContext
がサポートされます。 - 外部URLを作成するときにプロトコル相対URLを許可します。
- tz対応の日時オブジェクトのタイムゾーンオフセットを出力するようにAtomシンジケーションを修正しました(プルリクエスト
#254
)。 - 追加されたファイルを追跡し、パッケージの構文エラーで壊れたsys.modulesセットアップから回復するためのリローダーの改善。
cache.RedisCache
は、redisオブジェクトに対して任意の**kwargs
をサポートするようになりました。werkzeug.test.Client
は、307のリダイレクトを解決するときに元の要求メソッドを使用するようになりました(プル要求#556
)。werkzeug.datastructures.MIMEAccept
は、mimetypeパラメーターを適切に処理するようになりました(プルリクエスト#205
)。werkzeug.datastructures.Accept
は、RFC 2616(プルリクエスト#536
)に従って、0
の品質を許容できないものとして処理するようになりました。werkzeug.urls.url_fix
は、idna
エンコーディングでホスト名を正しくエンコードするようになりました(#559
を発行)。 また、不正な形式のURLでもクラッシュしなくなりました(問題#582
)。werkzeug.routing.MapAdapter.match
は、パス/
と空のパスの違いを認識するようになりました(問題#360
)。- 対話型デバッガーは、ASCII以外のファイル名をデコードしようとします(
#469
を発行)。 - 生成されたSSL証明書のデフォルトのキーサイズを1024ビットに増やしました(
#611
を発行)。 redirect()
を呼び出すときに使用するResponse
サブクラスを指定するためのサポートが追加されました。werkzeug.test.EnvironBuilder
は、コンテンツタイプを推測するためにリクエストメソッドを使用しなくなり、form
、files
、およびinput_stream
プロパティに完全に依存します(問題[ X158X] )。- Symbianをユーザーエージェントプラットフォームリストに追加しました。
- automatically_set_content_lengthを尊重するようにmake_conditionalを修正しました
- response.streamへの書き込み時に
Content-Length
の設定を解除します(問題#451
) wrappers.Request.method
は常に大文字になり、WSGI環境の不整合が解消されました(問題647
)。routing.Rule.empty
は、Rule
のサブクラスで正しく機能するようになりました(プルリクエスト#645
)。- 同時更新を考慮して、マップの更新を安全にしました。
- URL構築の同じフィールドに複数の値を許可します(問題
#658
)。
バージョン0.9.7
(バグ修正リリース、リリース日は未定)
werkzeug.debug.tbtools
のUnicodeの問題を修正しました。werkzeug.posixemulation
のPython3互換性の問題を修正しました。ImmutableList
の致命的なタイプミスのバックポート修正(問題#492
)。FileSystemCache
アトミックのキャッシュディレクトリを作成します(#468
を発行)。- Python 3クライアントで動作するようにmemcachedキーにネイティブ文字列を使用します(問題
#539
)。 werkzeug.debug.tbtools.Frame
オブジェクトの文字セット検出を修正しました(#547
および#532
の問題)。werkzeug.utils.import_string
のAttributeError
マスキングを修正しました(#182
を発行)。- サーバーを明示的にシャットダウンします(問題
#519
)。 werkzeug.contrib.cache.MemcachedCache
でUNIXタイムスタンプとして誤って解釈される2592000を超えるタイムアウトを修正しました(問題#533
)。werkzeug.exceptions.abort
が期待されるクラスの任意のサブクラスを発生させるバグを修正しました(問題#422
)。- 壊れた
jsrouting
を修正(werkzeug.templates
の削除による) werkzeug.urls.url_fix
は、不正な形式のURLでクラッシュしなくなりましたが、変更されずに返されます。 これは#582
の安価な回避策であり、適切な修正がバージョン0.10に含まれています。werkzeug.wrappers.Request
のreprは、非ASCII値でクラッシュしなくなりました(プルリクエスト#466
)。redis.StrictRedis
オブジェクトと組み合わせた場合のcache.RedisCache
のバグを修正しました(プルリクエスト#583
)。WWW-Authenticate
ヘッダーのqop
パラメーターは、RFC 2617(#633
の問題)で要求されているように、常に引用符で囲まれるようになりました。- Python3での
werkzeug.contrib.cache.SimpleCache
のバグを修正しました。キャッシュから古いエントリをプルーニングするときに、add / setが例外をスローする場合があります(プルリクエスト#651
)。
バージョン0.9.6
(バグ修正リリース、2014年6月7日にリリース)
- IRIからURIへの変換の安全な変換を追加し、それを内部的に使用して、
itms-service
などのプロトコルの仕様違反に関する問題を回避します。
バージョン0.9.7
- uri_to_iri()がクエリ文字列パラメーターのハッシュを再エンコードしない問題を修正しました。
バージョン0.9.5
(バグ修正リリース、2014年6月7日にリリース)
- リクエストオブジェクトからenvironビルダーにcharset引数を転送します。
- マルチパートデータで欠落している境界のエラー処理を修正しました。
os.urandom()
のないシステムでのセッション作成を修正しました。- 辞書キーのプラスが適切にURLエンコードされない問題を修正しました。
- マルチディクトでディープコピーが機能しない問題を修正しました。
- リダイレクトの二重引用符の問題を修正しました。
- 2.xのヘッダーにユニコードキーが表示される問題を修正しました。
- テストビルダーのUnicode文字列のバグを修正しました。
- WSGIプロファイラーのPython3のUnicodeバグを修正しました。
- Python2.7.7およびPython3.4での安全な文字列比較関数の問題を修正しました。
バージョン0.9.4
(バグ修正リリース、2013年8月26日にリリース)
- Python3.3の問題とCookie解析のエッジケースを修正しました。
- WSGIデコードダンスで正しく処理されないデコードエラーを修正しました。
- URIからIRIへの変換がパーセント記号を誤ってデコードする問題を修正しました。
バージョン0.9.3
(バグ修正リリース、2013年7月25日にリリース)
リクエストクラスの
data
記述子の動作を0.9より前の動作に復元しました。 これは、.data
と.get_data()
の動作が異なることも意味します。 新しいコードでは、常に.get_data()
を使用する必要があります。それに加えて、フォームデータの解析で何が起こるかを制御する
.get_data()
メソッドのフラグがあり、フォームパーサーはキャッシュされたデータを尊重します。 これにより、カスタムフォームデータの処理の一貫性が高まります。
バージョン0.9.2
(バグ修正リリース、2013年7月18日にリリース)
- 安全でないパラメータを
url_quote()
に追加しました。 url_quote_plus()
が '+' を正しく引用しない問題を修正しました。RedisCache
の残りの部分をPython3.3に移植しました。MemcachedCache
の残りの部分をPython3.3に移植しました- contribアトムモジュールの非推奨警告を修正しました。
- コンテンツタイプパラメータの代わりにヘッダーディクショナリを介してコンテンツタイプを設定する際のリグレッションを修正しました。
- stdlibセキュア文字列比較関数には正しい名前を使用してください。
release_local()
のdocstringの誤った参照を修正しました。werkzeug.wrappers.BaseResponse.is_streamed
属性にアクセスするときに時々発生する AttributeError を修正しました。
バージョン0.9.1
(バグ修正リリース、2013年6月14日にリリース)
- ルーティングシステムまたはURL引用関数の特定の部分で整数が受け入れられなくなった問題を修正しました。
- url_quote が1桁のコードポイントに対して正しいエスケープコードを生成しない問題を修正しました。
SharedDataMiddleware
がパスを正しく読み取らず、場合によってはetag生成で壊れてしまう問題を修正しました。- Expect:100-continue を開発サーバーで適切に処理して、curlの問題を解決します。
- 要求が閉じると、入力ストリームを自動的に使い果たします。 これにより、リクエストファイルに触れないとタイムアウトになる問題が修正されます。
- 制限されていないストリームがマルチパートパーサーに渡された場合に何も実行されないストリームの枯渇を修正しました。
- マルチパートパーサーのバッファーサイズを増やしました。
バージョン0.9
2013年6月13日にリリースされたコードネームPlanierraupe。
- 制限付きストリームで
tell()
のサポートが追加されました。 ETags
は、弱いものを含め、あらゆる種類のetagが少なくとも1つ含まれている場合、ゼロ以外になります。- SSLサーバーのstdlibにバグの回避策を追加しました。
- devserverのSSLインターフェイスが改善され、証明書を簡単に生成してファイルからロードできるようになりました。
- リダイレクトのためにクラスのopenメソッドを呼び出すようにテストクライアントをリファクタリングしました。 これにより、サブクラス化がより強力になります。
werkzeug.wsgi.make_chunk_iter()
およびwerkzeug.wsgi.make_line_iter()
は、イテレーターとストリームの処理をサポートするようになりました。- ルーティングシステムによるURL生成で、
+
が引用されなくなりました。 - URL修正により、特定の予約文字が引用されなくなりました。
werkzeug.security.generate_password_hash()
およびcheck関数は、hashlibアルゴリズムのいずれかをサポートするようになりました。- wsgi.get_current_url は、クエリ文字列で非ASCIIデータを送信するブラウザに対してASCIIセーフになりました。
werkzeug.http.parse_options_header()
の解析動作が改善されました- ローカルプロキシにオペレーターを追加しました。
- ルーティングシステムのデフォルトコンバーターをオーバーライドするフックを追加しました。
- HTTP例外の説明フィールドが常にエスケープされるようになりました。 マークアップオブジェクトを使用してそれを無効にします。
- プロキシ修正にプロキシ引数の数を追加して、一般的なプロキシ設定ですぐに使用できるようにしました。 デフォルトでは、以前ほどx-forwarded-forヘッダーを信頼しなくなります。
- URI / IRI関数でのフラグメント処理のサポートが追加されました。
werkzeug.http.parse_dict_header()
のカスタムクラスサポートが追加されました。- LighttpdCGIRootFix の名前を CGIRootFix に変更しました。
- URLを修正するときは、人々がURLの誤用を好むため、常に + を安全なものとして扱ってください。
- contribプロファイラーのディレクトリへのプロファイリングのサポートが追加されました。
- エスケープ関数は、デフォルトで引用符をエスケープするようになりました。
- 例外のreprを魔法が少なくなるように変更しました。
- 応答オブジェクトを受信するために環境を渡す必要がなくなるように、例外インターフェイスが簡素化されました。
- IterIOオブジェクトにセンチネル引数を追加しました。
- セキュリティモジュールのpbkdf2サポートが追加されました。
- ストリームのみを残すようにすべてのフォーム解析を無効にするプレーンリクエストタイプが追加されました。
- 非推奨の fix_headers のサポートを削除しました。
- 非推奨の header_list のサポートを削除しました。
- iter_encoded の非推奨パラメーターのサポートを削除しました。
- 制限付きストリームオブジェクトの非推奨の非サイレント使用のサポートを削除しました。
- キャッシュされたプロパティの以前のダミー writable パラメーターのサポートを削除しました。
- 関連するリソースを閉じるためにリクエストオブジェクトを明示的に閉じるためのサポートが追加されました。
- 条件付きリクエストの処理またはレスポンスのデータプロパティへのアクセスは、ダイレクトパススルーモードを無視しなくなりました。
- werkzeug.templatesとwerkzeug.contrib.kickstartを削除しました。
- 転送されたホストのホストルックアップロジックを変更して、ホストのリストを許可します。この場合、最初のホストのみが取得されます。
- wsgi.get_query_string 、 wsgi.get_path_info 、 wsgi.get_script_name を追加し、 wsgi.pop_path_info と wsgi.peek_path_info [ X168X]関数はユニコードデコードを実行します。 これは、Python3でWSGIエンコーディングダンスを公開する必要がないようにするために必要でした。
- content_encoding と content_md5 をリクエストオブジェクトの共通リクエスト記述子ミックスインに追加しました。
- オプションとトレースをテストクライアントに追加しました。
- 入力ストリームの使用率を見直して、使いやすく、拡張しやすくしました。 入力側でのコンテンツペイロードの検出は、リクエストメソッドの代わりにコンテンツタイプヘッダーを検出することで、HTTPに準拠するようになりました。 これは、解析が失敗したときだけでなく、リクエストクラスのストリームプロパティが常に利用可能であることも意味します。
- withステートメントで
werkzeug.wrappers.BaseResponse
を使用するためのサポートが追加されました。 - get_app_iter を変更して、応答を早期にフェッチし、反復可能な応答をラップするときに失敗しないようにしました。 これにより、フィルタリングが容易になります。
- 応答用の get_data および set_data メソッドが導入されました。
- リクエストに get_data を導入しました。
- ソフトは、要求オブジェクトと応答オブジェクトの data 記述子を非推奨にしました。
- 一部のヘッダーに as_bytes 操作を追加して、Cookieなどの操作を簡素化しました。
- デバッガーがトレースバックをプライベートペーストとしてgithubのgistサービスに貼り付けるようにしました。
バージョン0.8.4
(バグ修正リリース、リリース日は発表予定)
- デバッガーにファビコンを追加しました。これにより、GoogleChromeの/favicon.icoへのリクエストによって状態変更がトリガーされる問題が修正されます。 これにより、スタック上のコンテキストローカルオブジェクトを使用し、エラー時にコンテキストを保持するFlaskやその他のフレームワークに関するいくつかの問題が修正されるはずです。
- デバッガーで上にスクロールする際の問題を修正しました。
- URLルートとは異なるURLで実行されているデバッガーの問題を修正しました。
- プロキシがめったに使用されない特別なメソッドを適切に転送しない問題を修正しました。
- ChromeからのXSS保護がデバッガーを壊さないようにする回避策を追加しました。
- redisが実行されていない場合は、redisテストをスキップします。
- コンテンツタイプが正しく取得されない原因となっていたマルチパートパーサーのタイプミスを修正しました。
バージョン0.8.3
(バグ修正リリース、2012年2月5日にリリース)
werkzeug.wsgi.make_line_iter()
で、バッファサイズより長い行が適切に処理されなかった別の問題を修正しました。- デバッガーをGAEでより適切に使用できるように、デバッグコンソールの実行が終了した後にstdoutを復元します。
- intサブクラスのredisキャッシュのバグを修正しました(boolキャッシュに影響します)。
- 信頼できないソースからのリダイレクトターゲットに関するXSSの問題を修正しました。
- Redisキャッシュバックエンドがパスワード認証をサポートするようになりました。
バージョン0.8.2
(バグ修正リリース、2011年12月16日にリリース)
- 組み込みサーバーのリクエスト処理がソケットエラーに正しく応答しない問題を修正しました。
- ルーティング要求リダイレクト例外のコード属性が正しく使用されるようになりました。
- Windowsでのシャットダウンに関するバグを修正しました。
- 非ASCII文字がURLルールにハードコードされているいくつかのUnicodeの問題を修正しました。
__doc__
ではなくfdelに割り当てられている2つのプロパティdocstringを修正しました。- CRLF行末が行反復関数によって2つに分割され、マルチパートファイルのアップロードで問題が発生する可能性がある問題を修正しました。
バージョン0.8.1
(バグ修正リリース、2011年9月30日にリリース)
- memcacheが正しく機能しない問題を修正しました。
copy.copy()
でmultidictのコピーを壊していたPython2.7.1以降の問題を修正しました。- 代替Python実装の潜在的な問題について、不変の順序付けされたマルチディクトのハッシュ方法を変更しました。
バージョン0.8
2011年9月29日にリリース、コードネームLötkolben
- 汎用
BadRequestKeyError
のデータ構造固有のKeyErrorsを削除しました。 - 文書化された
werkzeug.wrappers.BaseRequest._load_form_data()
。 - ルーティングシステムは、リダイレクトのために文字列を渡すだけなので、 query_args パラメーターの辞書の代わりに文字列も受け入れるようになりました。
- Werkzeugは、効率と単純さの理由から、
data
属性が設定されるとすぐに、コンテンツの長さを自動的に設定するようになりました。 - ルーティングシステムは、サーバー名を小文字に正規化するようになりました。
- サーバー名の構成が正しくない場合でも、ルーティングシステムでValueErrorsが発生することはなくなりました。 これにより、その要素を無視できるようになるため、展開がはるかに簡単になります。
- HTTPダイジェストヘッダーの解析に関するバグを修正しました。 ncパラメーターとnonceパラメーターが欠落しているヘッダーを拒否しました。
- プロキシ修正により、X-Forwarded-Protoに基づいてwsgi.url_schemeも更新されるようになりました。
- redisキャッシュにキープレフィックスのサポートが追加されました。
- 応答オブジェクトの autocorrect_location_header および automatically_set_content_length を介して制御されるようになったラッパーの一部の自動修正を抑制する機能が追加されました。
- Werkzeugは新しい方法を使用して、受信データの長さが完全であることを確認し、サーバーがこれを怠った場合、それ自体でIOエラーを発生させます。
make_line_iter()
では、ストリームが提供できる長さを超えない制限が必要になりました。- フォームの解析をフォームパーサークラスにリファクタリングしました。これにより、デバッグと拡張のために解析プロセスの個々の部分にフックすることができます。
- 条件付き応答の場合、コンテンツの長さは、すでに存在している場合は設定されなくなり、欠落している場合は追加されます。
- 不変のデータ構造がハッシュ可能になりました。
- ヘッダーデータ構造では、ヘッダーインジェクション攻撃を回避するために値に改行を使用できなくなりました。
- サブクラス化により、プロキシ修正で別のリモートアドレスを選択できるようになりました。
- ストリームベースのURLデコードが追加されました。 これにより、Werkzeugがすべての未解析データをメモリにロードしなくなるため、URLデコードされた大きな送信フォームデータのメモリ使用量が削減されます。
- Memcacheクライアントは、バグのあるcmemcacheモジュールを使用しなくなり、pylibmcをサポートするようになりました。 GAEは自動的に試行されず、専用クラスは不要になります。
- Redisキャッシュがデータを適切にシリアル化するようになりました。
- Python2.4のサポートを削除しました
バージョン0.7.2
(バグ修正リリース、2011年9月30日にリリース)
- デバッガーのCSRFの問題を修正しました。
- デバッガーは現在、lodgeitにプライベートペーストを生成しています。
- URLマップが環境にバインドされている場合、クエリ引数はリダイレクトのために適切にデコードされます。
バージョン0.7.1
(バグ修正リリース、2011年7月26日にリリース)
- 新しいバージョンのIPythonの問題を修正しました。
- 確実に機能しないpyinotifyベースのリローダーを無効にしました。
バージョン0.7
2011年7月24日にリリース、コードネームSchraubschlüssel
- python-libmemcachedのサポートをWerkzeugキャッシュ抽象化レイヤーに追加します。
url_decode()
およびurl_encode()
のパフォーマンスが向上しました。- SharedDataMiddlewareが、pkg_resourcesを介してロードするときに、奇妙なパスで内部サーバーエラーを引き起こす可能性がある問題を修正しました。
- 生成されたコンポーネントにコロンが含まれている場合にURLが無効になるURL生成のバグを修正しました。
werkzeug.import_string()
は、部分的にセットアップされたパッケージで正しく機能するようになりました。- 問題が発生したため、開発サーバーでIPv6の自動ソケット切り替えを無効にしました。
- Werkzeugは、条件付きHTTP応答を作成するときにDateヘッダーをオーバーライドしなくなりました。
- ルーティングシステムは、特定のパスに一致するメソッドを取得するためのメソッドを提供します。
- ルーティングシステムは、エンコーディングエラーの動作を変更するためのパラメータを受け入れるようになりました。
- ローカルマネージャーは、ラップされたローカルオブジェクトに転送されるコンストラクター内のカスタムID関数を受け入れることができるようになりました。
- url_unquote_plusは、Unicode文字列を再び受け入れるようになりました。
- ファイルシステムセッションサポートのプルーニング機能と同時使用に関する問題を修正しました。
- ポートを破棄する外部URL生成の問題を修正しました。
- Werkzeugキャッシュ抽象化レイヤーにpylibmcのサポートが追加されました。
- 改行がたまたまチャンク制限にあったときに発生した新しいマルチパートパーサーの問題を修正しました。
- ポートが使用されている場合、Cookieが正しく設定されるようになりました。 ドットのないドメインにCookieを設定しようとすると、ランタイムエラーが発生します。
- Template.from_fileがファイル記述子に対して機能しない問題を修正しました。
- リローダーはinotifyを使用してリロードを追跡できるようになりました。 これには、pyinotifyライブラリがインストールされている必要があります。
- Werkzeugデバッガーは、カスタムロッジインストールにサブミットできるようになりました。
- リダイレクト関数のステータスコードアサーションにより、201をリダイレクトコードとして使用できるようになりました。 これは実際のリダイレクトではありませんが、関数が引き続き役立つようにリダイレクトと十分に共有しています。
- pypyのsecurecookieを修正しました。
- 無効なユーザーデータが指定された場合に、 MIMEAccept オブジェクトで best_match を呼び出すと ValueErrors が発生する問題を修正しました。
- 非推奨の werkzeug.contrib.kickstart および werkzeug.contrib.testtools
- URLルーティングにURL引数を渡して、リダイレクト用に保持できるようになりました。 将来的には、URL引数の照合も可能になる可能性があります。
- Python 3へのポートをサポートするために、ヘッダーエンコーディングがutf-8からlatin1に変更されました。 オブジェクトに渡されたバイト文字列は変更されないままであるため、utf-8Cookieを使用できます。 これは、Python 3バージョンが後で変更され、常にlatin1値で動作する部分です。
- マルチパートデータの特定の値が使用されている場合に最後の文字が削除される原因となっていたフォームパーサーのバグを修正しました。
- マルチパートパーサーは、グローバル文字セットをオーバーライドするために、part-individualコンテンツタイプヘッダーを確認するようになりました。
- ファイルストレージオブジェクトにmimetypeおよびmimetype_params属性が導入されました。
- FileStorageファイル名フォールバックロジックを変更して、Pythonがstdinなどの特別なファイルをマークするために使用する特別なファイル名をスキップするようにしました。
- より多くのHTTP例外クラスが導入されました。
- call_on_close をデコレータとして使用できるようになりました。
- キャッシュバックエンドとしてのredisのサポート。
- BaseRequest.scheme を追加しました。
- RFC 5789PATCHメソッドのサポート。
- 新しいカスタムルーティングパーサーとより良い順序付け。
- is_behind_proxy のサポートを削除しました。 代わりに、セットアップに応じて REMOTE_ADDR を書き換えるWSGIミドルウェアを使用してください。 ドロップインの交換については、
werkzeug.contrib.fixers.ProxyFix
も参照してください。 - テストクライアントにCookie偽造のサポートを追加しました。
- ルーティングシステムでのホストベースのマッチングのサポートが追加されました。
- デフォルトの「無視」からより適切な「置換」ユニコードエラー処理モードに切り替えました。
- 組み込みサーバーは、「werkzeug.server.shutdown」という名前の関数をWSGI環境に追加して、シャットダウンを開始するようになりました。 これは現在、Python2.6以降でのみ機能します。
- サポートが開始されると、Python 3との互換性を高めるために、ヘッダーはlatin1と見なされるようになりました。
werkzeug.security.safe_join()
を追加しました。werkzeug.datastructures.MIMEAccept
に accept_html に類似した accept_json プロパティを追加しました。werkzeug.utils.import_string()
が失敗し、問題を特定するはるかに優れたエラーメッセージが表示されるようになりました。- If-Range ヘッダー(
werkzeug.http.parse_if_range_header()
およびwerkzeug.datastructures.IfRange
)の解析のサポートが追加されました。 - Range ヘッダー(
werkzeug.http.parse_range_header()
およびwerkzeug.datastructures.Range
)の解析のサポートが追加されました。 - 応答の Content-Range ヘッダーの解析のサポートが追加され、それにアクセサーオブジェクトが提供されました(
werkzeug.http.parse_content_range_header()
およびwerkzeug.datastructures.ContentRange
)。
バージョン0.6.2
(バグ修正リリース、2010年4月23日にリリース)
- リクエストオブジェクトの属性 implicit_seqence_conversion 属性の名前を implicit_sequence_conversion に変更しました。
バージョン0.6.1
(バグ修正リリース、2010年4月13日にリリース)
- 大幅に改善されたローカルオブジェクト。 今すぐスタンドアロンのグリーンレットビルドを取得し、無料の呼び出し可能オブジェクトへのプロキシもサポートする必要があります。 スタックされたローカルもあり、現在の要求/応答をスタックの一番上にプッシュすることで、同じアプリケーションをそれ自体の内部から呼び出すことができます。
- メソッドが提供されていない場合、ルーティングビルドメソッドはデフォルト以外のメソッドルールも適切にビルドします。
- 組み込みサーバーに適切なIPv6サポートを追加しました。
- Windows固有のファイルシステムセッションストアの修正。 (高い同時実行性の下でより安定するはずです)
- セッションシステムの NameError を修正しました。
- werkzeug.scriptシステムの空の引数のバグを修正しました。
- アプリケーションが
logging.basicConfig()
を使用するとログ行が重複するバグを修正しました(#499) - 安全なパスワードハッシュおよびチェック機能を追加しました。
- GET が存在する場合、 HEAD がルーティングシステムのメソッドとして暗黙的に追加されるようになりました。 多くの場合、コードはこれが当てはまると想定しており、 HEAD を GET に正規化しないウェブサーバーでは、 HEAD リクエストが破損する可能性があるため、これを行わないとバグと見なされました。 。
- スクリプトサポートはSSLサーバーを起動できるようになりました。
バージョン0.6
2010年2月19日にリリースされたコードネームHammer。
- 保留中の非推奨を削除
- sys.pathがtestappから出力されるようになりました。
- RFC2068とCookie値の引用との非互換性を修正しました。
FileStorage
は、マルチパートヘッダーへのアクセスを提供するようになりました。- cached_property.writeable は非推奨になりました。
MapAdapter.match()
は、エンドポイントだけでなく、一致した Rule を返す return_rule キーワード引数を受け入れるようになりました。routing.Map.bind_to_environ()
は、マップが無効なWSGI環境にバインドされている場合に、より正確なエラーメッセージを表示するようになりました。- 組み込みの開発サーバーにSSLのサポートを追加しました。
- 応答オブジェクトは、WSGIアプリケーションとして評価されるときに、その場で変更されなくなりました。 下位互換性のために、 fix_headers 関数は、オーバーライドされた場合に引き続き呼び出されます。 ただし、下位互換性のサポートは将来のバージョンで廃止されるため、応答を送信する前にヘッダーの変更が必要な場合は、 get_wsgi_headers を使用するようにアプリケーションを変更する必要があります。
append_slash_redirect()
では、QUERY_STRINGがWSGI環境にある必要がなくなりました。DynamicCharsetResponseMixin
を追加しましたDynamicCharsetRequestMixin
を追加しましたBaseRequest.url_charset
を追加しました- リクエストオブジェクトとレスポンスオブジェクトのデフォルトは __ repr __ になりました。
- 組み込みのデータ構造をピクルスできるようになりました。
- フォームデータパーサーは、コンテンツタイプではなくファイル名を調べて、アップロードを通常のフォームデータまたはファイルアップロードとして処理する必要があるかどうかを判断します。 これにより、GoogleChromeのバグが修正されます。
- make_line_iter およびバイナリアップロード用のマルチパートパーサーのパフォーマンスが向上しました。
- 修正済み
is_streamed
- EnvironBuilder のパス引用バグを修正しました。これにより、PATH_INFOとSCRIPT_NAMEが引用されていない環境で終了していました。
werkzeug.BaseResponse.freeze()
がコンテンツの長さを設定するようになりました。- 不明なHTTPメソッドの場合、リクエストストリームは空ではなく、常に制限されるようになりました。 これにより、Werkzeugの上にDAVやその他のプロトコルを簡単に実装できます。
werkzeug.MIMEAccept.best_match()
を追加しました- 標準ディクショナリからの複数値テストクライアントの投稿がサポートされるようになりました。 以前は、マルチディクトを使用する必要がありました。
- ルールテンプレートは、サブマウント、サブドメイン、その他のルールファクトリで適切に機能するようになりました。
werkzeug.LimitedStream
の非推奨の非サイレント使用。- Werkzeugの多くの部分にIRI処理のサポートを追加しました。
- 開発サーバーは、werkzeugロガーに正しくログインするようになりました。
werkzeug.extract_path_info()
を追加しましたurl_fix()
のクエリ文字列引用のバグを修正しました- fallback_mimetype を
werkzeug.SharedDataMiddleware
に追加しました。 - 非推奨の
BaseResponse.iter_encoded()
の文字セットパラメータ。 BaseResponse.make_sequence()
、BaseResponse.is_sequence
、BaseResponse._ensure_sequence()
を追加しました。werkzeug.Map
のより良い__repr__を追加しました- import_string はユニコード文字列も受け入れるようになりました。
- 開発サーバーは、ホスト名の後の二重スラッシュで壊れません。
werkzeug.exceptions.HTTPException
の __ repr __ および __ str __ の改善- テストクライアントが複数のCookieで正しく機能するようになりました。
werkzeug.routing.Map
には、デフォルトのコンバーターマッピングを持つクラス属性が含まれるようになりました。 これは、サブクラスがコンストラクターに渡さずにコンバーターをオーバーライドするのに役立ちます。- 実装
OrderedMultiDict
- ファイルシステムに保存するセッションをより効率的にするためのセッションサポートを改善しました。 また、ファイルシステムセッションストアに現在保存されているセッションの一覧表示のサポートも追加されました。
- werkzeugは、解析にPythonタイムモジュールを使用しなくなりました。つまり、より広い範囲の日付を解析できます。
- ラッパーには、使用するdictとリストのタイプを交換できるクラス属性がありません。
- これで、werkzeugデバッガーがappengine開発サーバーで動作するはずです。
- URLビルダーは、予期しない引数の削除をサポートするようになりました。 以前は、クエリ文字列として常にURLに追加されていました。
- プロファイラーが正しいストリームに書き込むようになりました。
バージョン0.5.1
(2009年7月9日にリリースされた0.5のバグ修正リリース)
FileStorage
のブールチェックを修正しました- URLルーティングシステムは、UnicodeURLルールを適切にサポートするようになりました。
- ファイルアップロードストリームは、truncate()メソッドを提供する必要がなくなりました。
BaseRequest._form_parsing_failed()
を実装しました。- 修正#394
ImmutableDict.copy()
、ImmutableMultiDict.copy()
、およびImmutableTypeConversionDict.copy()
は、変更可能な浅いコピーを返します。- make_runserver スクリプトアクションのバグを修正しました。
MultiDict.items()
とMutiDict.iteritems()
は、各キーの値ごとにペアを返す引数を受け入れるようになりました。- マルチパートパーサーは、余分な改行が追加された手作りのマルチパートリクエストでより適切に機能します。 これにより、setuptoolsのアップロードが適切に処理されないバグが修正されます(#390)
- アトムフィードジェネレーターのいくつかのマイナーなバグを修正しました。
- クライアントのCookieヘッダーの解析で大文字と小文字が区別されるバグを修正しました。
- 動作しない非推奨の警告を修正しました。
SharedDataMiddleware
のパッケージの読み込みを修正しました。- UTCに設定されていない現地時間のサーバーでサーバー側の有効期限が発生するセキュリティで保護されたCookieのバグを修正しました。
- インタラクティブデバッガーのコンソールを修正しました。
バージョン0.5
4月24日にリリースされたコードネームSchlagbohrer。
- 今Python2.4が必要です
IterIO
のバグを修正しましたMIMEAccept
とCharsetAccept
を追加しました。これらは、通常のAccept
と同じように機能しますが、mimetypeとcharsetの特別な正規化と、特別な便利なメソッドがあります。- サービングシステムをwsgirefから自作のものに切り替えました。
Client
がCookieをサポートするようになりました。fixers
モジュールを追加し、ウェブサーバーのバグとホスティングセットアップの副作用に対するさまざまな修正を加えました。werkzeug.contrib.wrappers
を追加しましたis_hop_by_hop_header()
を追加しましたis_entity_header()
を追加しましたremove_hop_by_hop_headers()
を追加しましたpop_path_info()
を追加しましたpeek_path_info()
を追加しましたwrap_file()
とFileWrapper
を追加しました- LimitedStream をcontribパッケージから通常のwerkzeugパッケージに移動し、デフォルトの動作を変更して、警告なしに停止するのではなく、例外を発生させました。 古いクラスは0.6までモジュールに残ります。
- 古いCGIハックを置き換える実験的なマルチパートパーサーを実装しました。
dump_options_header()
とparse_options_header()
を追加しましたquote_header_value()
とunquote_header_value()
を追加しましたurl_encode()
とurl_decode()
セパレータ引数を受け入れて切り替えるようになりました & と ; ペアセパレーターとして。 マジックスイッチはもう設置されていません。- すべてのフォームデータ解析関数と
BaseRequest
オブジェクトには、着信バイト数を制限するためのパラメーター(または属性)があります(全体またはフィールドごと)。 LanguageAccept
を追加しました- リクエストオブジェクトは、すべてのコレクションに対して読み取り専用になるように強制されるようになりました。
- 多くの新しいコレクションクラス、一般的にリファクタリングされたコレクションを追加しました。
- テストサポートがリファクタリングされ、半文書化されていない werkzeug.test.File が
werkzeug.FileStorage
に置き換えられました。 EnvironBuilder
が追加され、以前の個別のcreate_environ()
、Client
、およびBaseRequest.from_values()
が統合されました。 それらはすべて同じように機能するようになり、混乱が少なくなりました。- 内部モジュールからのインポートは、未定義の動作として公式に文書化されています。 これらのモジュールは、パブリックインターフェイスとして公開されることはありませんでした。
- FileStorage .__ len __ を削除しました。これは、以前はすべてのブラウザーが送信するコンテンツの長さを送信しないブラウザーのオブジェクトを偽造していました。
SharedDataMiddleware
は wrap_file を使用するようになり、設定可能なキャッシュタイムアウトがあります。CommonRequestDescriptorsMixin
を追加しましたCommonResponseDescriptorsMixin.mimetype_params
を追加しましたwerkzeug.contrib.lint
を追加しました- passthrough_errors を run_simple に追加しました。
- secure_filename を追加しました
make_line_iter()
を追加しましたMultiDict
は、 getlist の呼び出し元に内部リストを公開する代わりに、リストを返す反復関数をコピーするようになりました。Client
のopen()
にfollow_redirect
を追加しました。make_runserver()
に extra_files のサポートが追加されました
バージョン0.4.1
(バグ修正リリース、2009年1月11日にリリース)
- werkzeug.contrib.cache.Memcached は、サーバーアドレスを持つ文字列のリストの代わりに、memcache.Clientインターフェイスを実装するオブジェクトを受け入れるようになりました。 また、GoogleAppEngineキャッシュに接続する GAEMemcachedCache もあります。
- Python 2.6では変換されなくなったため、秘密鍵をバイト文字列に明示的に変換するようになりました。
- url_encode とそれを呼び出すすべてのインターフェースは、オプションの順序付けをサポートするようになりましたが、デフォルトでは無効になっています。
- 開発サーバーはクライアントのアドレスを解決しなくなりました。
- ファイルを壊した werkzeug.test のタイプミスを修正しました。
- Map.bind_to_environ は、可能な場合、 Host ヘッダーを使用するようになりました。
- BaseCache.get_dict (#345)を修正しました
- werkzeug.test.Client は、バッファリングされたアプリケーションを実行できるようになりました。この場合、アプリケーションは自動的に適切に閉じられます。
- Headers.set (#354)を修正しました。 以前にヘッダーの重複が発生しました。
- Headers.pop (#349)を修正しました。 デフォルトのパラメータが適切に処理されませんでした。
- create_environ のUnboundLocalErrorを修正しました(#351)
- Headers はwsgirefとの互換性が向上しました。
- Template.render はmultidictsを受け入れるようになりました。
- Python2.3のサポートを終了しました
バージョン0.4
2008年11月23日にリリースされたコードネームSchraubenzieher。
- Client は空の data 引数をサポートするようになりました。
- Response.application のバグを修正し、メソッドデコレータとして使用できなくなった。
- セッションシステムは今すぐappengineで動作するはずです
- セキュアCookieは、さまざまなCPUアーキテクチャを備えた負荷分散環境で適切に機能するようになりました。
- CacheControl.no_cache および CacheControl.private の動作は、HTTPRFCの可能性を反映するように変更されました。 これらの属性を None または True に設定すると、値が「空の値」に設定されるようになりました。 詳細については、ドキュメントをご覧ください。
- werkzeug.contrib.atom.AtomFeed .__ call __ を修正しました。 (#338)
- BaseResponse.make_conditional は常に self を返すようになりました。 以前は、投稿リクエストなどは対象外でした。
- html および xhtml のブール属性処理のバグを修正しました。
- デバッガーのペーストビン機能に適切なエラー処理を追加しました。
- ヘッダーにインターフェイスのようなリストを追加しました(スライスとインデックス作成が機能するようになりました)
- Headers の __ setitem __ メソッドで、置換時にすべてのキーが正しく削除されなかったバグを修正しました。
- remove_entity_headers を追加しました。これにより、ヘッダーのリスト(または Headers オブジェクト)からすべてのエンティティヘッダーが削除されます。
- ステータスコードが304の場合、応答は自動的に remove_entity_headers を呼び出すようになりました。
- Href クエリパラメータ処理のバグを修正しました。 以前は、 Href への呼び出しの最後の項目は、それがdictである場合、適切に処理されませんでした。
- ヘッダーが pop 操作をサポートするようになり、environプロパティをより適切に処理できるようになりました。
バージョン0.3.1
(バグ修正リリース、2008年6月24日にリリース)
- werkzeug.contrib.SecureCookie のセキュリティ問題を修正しました。
バージョン0.3
2008年6月14日にリリースされ、コードネームEUR325CAT6。
- URLルーティングでのリダイレクトのサポートが追加されました。
- Authorization と AuthorizationMixin を追加しました
- WWWAuthenticate と WWWAuthenticateMixin を追加しました
- parse_list_header を追加しました
- parse_dict_header を追加しました
- parse_authorization_header を追加しました
- parse_www_authenticate_header を追加しました
- _get_current_object メソッドを LocalProxy オブジェクトに追加しました
- parse_form_data を追加しました
- MultiDict 、 CombinedMultiDict 、 Headers 、および EnvironmentHeaders は、 BadRequest のサブクラスである特別なキーエラーを発生させるため、あなたはそれらを捕まえません、彼らは意味のあるHTTP応答を与えます。
- 代替エンコーディングエラー処理のサポートが追加され、新しい HTTPUnicodeError は(キャッチされない場合) BadRequest のように動作します。
- BadRequest.wrap を追加しました。
- SharedDataMiddlewareにETagサポートを追加し、キャッシュを無効にするオプションを追加しました。
- リクエストオブジェクトの is_xhr を修正しました。
- URLアダプタの dispatch メソッドのエラー処理を修正しました。 (#318)
- SharedDataMiddleware のバグを修正しました。
- Accept.values を修正しました。
- EnvironmentHeaders にcontent-typeとcontent-lengthが含まれるようになりました
- url_encode は、渡されたdictのリストとタプルを同じキーの複数の値として扱うため、 MultiDict を関数に渡す必要はありません。
- validate_arguments を追加しました
- BaseRequest.application を追加しました
- 改善されたPython2.3サポート
- run_simple は、スクリプトモジュールの make_runserver ファクトリ関数のように、 use_debugger および use_evalex パラメーターを受け入れるようになりました。
- environ_property はデフォルトで読み取り専用になりました
- リクエストを「浅い」リクエストとして初期化できるようになりました。これにより、リクエストオブジェクトが入力ストリームを消費しようとするとランタイムエラーが発生します。
バージョン0.2
2008年2月14日、コードネームFaustkeilでリリースされました。
- AnyConverter をルーティングシステムに追加しました。
- werkzeug.contrib.securecookie を追加しました
- 例外には、応答オブジェクトを返す
get_response()
メソッドがあります - パスの順序付けのバグを修正しました(#293)、ThomasJohanssonに感謝します
- BaseReporterStream は、werkzeugcontribモジュールの一部になりました。 Werkzeug 0.3以降では、そこからインポートする必要があります。
- DispatcherMiddleware を追加しました。
- RequestRedirect は HTTPException のサブクラスになり、302ではなく301ステータスコードを使用します。
- url_encode と url_decode は、オプションでキーをユニコード文字列として扱うこともできるようになりました。
- werkzeug.script では、ブール引数の呼び出し元の形式が異なります。
- lazy_property の名前を cached_property に変更しました。
- import_string を追加しました。
- オブジェクトを要求するためにis_ *プロパティを追加しました。
- empty()メソッドをルーティングルールに追加しました。
- werkzeug.contrib.profiler を追加しました。
- extends を Headers に追加しました。
- dump_cookie と parse_cookie を追加しました。
- as_tuple をクライアントに追加しました。
- werkzeug.contrib.testtools を追加しました。
- werkzeug.unescape を追加しました
- BaseResponse.freeze を追加しました
- werkzeug.contrib.atom を追加しました
- HTTPExceptionsは、デフォルトの説明をオーバーライドする引数 description を受け入れるようになりました。
- MapAdapter にパス情報のデフォルトが追加されました。 bind_to_environ を使用する場合、後でパスを渡す必要はありません。
- werkzeugが開発サーバーに使用するwsgirefサブクラスは、直接のsys.stderrロギングを使用せず、「werkzeug」と呼ばれるロガーを使用します。
- Href を実装しました。
- 実装された find_modules
- 要求オブジェクトと応答オブジェクトをベースオブジェクト、ミックスイン、およびすべてのミックスインを実装するフル機能のサブクラスにリファクタリングしました。
- シンプルなユーザーエージェントパーサーを追加
- werkzeugのルーティングは、ルールに一致するが別のメソッドの場合、 MethodNotAllowed を発生させるようになりました。
- 多くの修正と小さな改善
バージョン0.1
2007年12月9日にリリースされ、コードネームWictorinoxger。
- 初回リリース