nikkie-ftnextの日記

イベントレポートや読書メモを発信

報告された無限の再帰となるエラーを修正した sphinx-new-tab-link 0.2.3 をリリースしました

リリース報告エントリです。
sphinx-new-tab-linkとはなんだろう」という方は、以下の記事をまずどうぞ!

目次

無限再帰(infinite recursion)エラーを修正しました。
https://github.com/ftnext/sphinx-new-tab-link/releases/tag/v0.2.3

詳細なissueを、いただいたのです❤️

sphinx-new-tab-link 0.2.2を使ったところ、無限の再帰となるエラーの報告。
Read the Docsのエラーログには、たしかにRecursionError

リポジトリ https://github.com/RasmussenLab/njab の設定を元に確認したところ、以下の組合せで手元で再現しました。

原因箇所は 0.2.2 で(主に自分向けに)実験的に追加した、starttagメソッドを代入(MyTranslator.starttag = NewTabLinkHTMLTranslator.starttag1)できるようにするコード。

pydata-sphinx-theme は実行時に動的に継承したTranslatorクラスを生成します。

この動きを sphinx-new-tab-link は想定できていなかったので、無限の再帰となるバグがありました

今回はテストコード(End-to-End的なもの)を書いて、バグ修正を実施2
メソッドの代入もサポートしつつ、実行時の動的継承のパターンも通るように直しました。

issue自体、「使ってくださっている人がいる!」とめちゃめちゃ嬉しいのですが、このissueは解決に必要な情報提供 & めちゃ温かい言葉と、本当に嬉しかったです。

Thanks for the extension! The possibility to change the default how links are opened is really nice.

2024年ベストissueの可能性があります。
使ってくださるだけでもありがたいのですが、私のプログラムに時間を割いてくださっているということが本当にたまらなく嬉しいです。

終わりに

sphinx-new-tab-link 0.2.3のリリース報告をしました。
報告いただいたバグよさらば!しています。

今回の修正の中で pydata-sphinx-theme に見た動的にTranslatorを継承する実装は、近日採用予定です。
「アウトプットする者に情報は集まる」とはまさにこのことで、sphinx-new-tab-linkの実装が当初から比べると数段レベルアップすると思います(コミュニティで見つけたコードにブーストしていただいている)

SphinxでビルドしたHTMLの中の外部リンクをブラウザの新しいタブで開きたい」方はよろしければお試しください(pip install sphinx-new-tab-link)。
触ってみた感想や「こういうユースケースで使いたいんだけどサポートしてくれないか」といった要望、そしてリポジトリへのスターも、お待ちしています!

P.S. 今回のissue対応きっかけエントリたち