2019-01-01から1年間の記事一覧

jinja2のエラーメッセージを親切にする機能を付けてみて気づいたtemplate継承の複雑さ

過去の記事でCLI用のjinja2 wrapperを書いていたという話をした。この中でエラーメッセージを親切にするということに取り組んだことにも触れた。 この親切なエラーメッセージのテストのために、jinja2のtemplate継承を試してみた所、意外と複雑な機能だなー…

jinja2用のCLIのファイルパスの解決方法を変更した

github.com jinja2用のCLIのファイルパスの解決方法を変更した。 なぜファイルパスの解決方法を変更する必要があるのか? なぜファイルパスの解決方法を変更する必要があるのか?と言うと、デフォルトの解決方法ではコマンドの実行位置に依存してしまうため…

jinja2のCLIラッパーのエラー表示を良い感じにした

github.com jinja2のCLIラッパーのエラー表示を良い感じにした。元々最近余暇に元気がなくて機能を追加したりする気が起きなかったのだけれど。それを機会に自分の作っていたrepositoryのexamplesを整理していた。そのようなことをしている最中に幾つか気に…

pythonのformatterのblackに標準入力でコードを渡す。

hmm $ pip install black $ cat 00hello.py | black No paths given. Nothing to do なるほど。ファイルの指定を"-"にして渡す。 https://github.com/ambv/black/blob/250ba7f04b300df284ba80cd4bb4122b45b41efb/black.py#L465-L467 def reformat_one( src:…

JSONの$refを見て1つのファイルにまとめるコマンドを部分的に使えるようにした。

github.com JSONの$refを見て1つのファイルにまとめるコマンドを部分的に使えるようにした。OpenAPI documentなどを書くときに使う。 いままでは全部をまとめた形でしか使えなかった。 # いままで $ jsonknife bundle --src main.yaml $ jsonknife bundle -…

複数のresourceにループで触る時にcontextlib.ExitStackが便利という話。

複数のresourceにループで触る時にcontextlib.ExitStackが便利という話のメモ。 例えば以下の様な条件で動作する処理を書きたいことがあるとする。 対象となるresource(ファイルなど)を複数取る そのうちN行までを取り出す(それ以降は読まない) 取り出した行…

ipythonのシェルのpromptをpythonのシェルの表示に変える方法のメモ

はじめに ipythonは便利なのですが、実行例などを貼り付けるときには通常のpythonのシェルでの表現に揃えたかったりします。一方でipythonのpromptには実行回数的なものが併記されるなど通常のpythonとは異なる表示になっています。 ipythonのprompt表示 In …

設定ファイル(JSON)のdiffをjson patchでやってみようという試み

設定ファイル(JSON)のdiffを手軽に分かるようになるには?ということについての探訪の1つ。文字列的なdiffの場合に意図しない余分なdiffが発生したりしていた(sort keysしてpretty printしたJSONを使えば幾文かはマシになるけれど)。それ以外の表現は無いも…

net/httpのhandlerを書く時に気をつけたほうが良い順序について

たまに標準ライブラリのみを使ってnet/httpのhandlerを実装することがある。その時の種々の操作で呼び出す順序を気にする必要があるものがある。それのメモ。 先に結論を言ってしまうと以下の順序で記述しましょうという話。 http headerに情報を追加する ht…

最近の砂場でのpythonのサンプルコードの実行方法について

日記的なrepositoryを作っていて、何か調べたいことがあったときにそこにサンプルコードを書いて調べたりしている。そのサンプルコードの書き方でdebugとinfoの実行形態を分ける方法が便利だったのでメモ。 趣旨 この方法の趣旨は以下のような感じ。 通常は…

pyinspectというものを地味に作っている

github.com pyinspectというものを地味に作っている。まだrepository上には一切のドキュメントがないし正式なリリースをしたというわけでもないのでしばらくは個人用。 コードリーディングのお供に 元々の動機はコードリーディングをしようとしているときに…

jediでenvironmentを指定すると、1つの実行環境(venv)で複数の環境をサポートできる話

たしか以前jediのコードを読んだ時に特に環境(venv)毎にjediを入れ直さなくても済むはずという結論になった記憶。python-language-serverのコードを読んでいたタイミングでそういえば上手く考慮できていないのでは?と思うところがあったのでPRを出したりす…

Makefile上の個々の操作の実行時間をファイルに出力したかったところからの諸々

Makefile上の操作に対して、実行時間を計測したい。ただしコンソール上に出力するのではなくファイルに出力したい(というところから始まった)。 ファイルを分けたいので呼び出し側でリダイレクトでは無理 例えば以下の様なタスクがある。それぞれの操作の…

ertを使ってelispのunittestを書く方法のメモ

ertを使ってelispのunittestを書く方法のメモ。ertは標準で添付されているのでインストールは不要(なはず)。 使いかた 以下のような関数を定義しておく(テスト対象) (defun my:add (x y) (+ x y)) テストを書く。 (require 'ert) (ert-deftest add20 () …

emacsのフォントの大きさを調節する方法のメモ

はじめに 遠くの画面に写して作業をしたくなった。デフォルトで用意されているコマンドだけでは特定のバッファのフォントの大きさを調整する方法だけしか見つからなかった。しょうがないのでちょっとしたコマンドを作った。 そのついでにemacsのフォントの大…