python

EIN(Emacs IPython Notebook)を試してみる

2つrepositoryがあり後者の方がmelpaで入るもの。どうやら後者は前者のforkらしい。 tkf/emacs-ipython-notebook: IPython notebook client in Emacs millejoh/emacs-ipython-notebook: Jupyter and IPython 2.x/3.x notebook client in Emacs install packa…

dictknifeのclickへの依存を無くした

dictknifeのclickへの依存を無くした。その過程で思ったことは記事にした。 不要なimportをlazyにしたい(ついでにちょっとしたsetupも呼びたい) - podhmo’s diary argparseでsubcommandを作るためのユーティリティ - podhmo’s diary まだpypiの方は更新して…

不要なimportをlazyにしたい(ついでにちょっとしたsetupも呼びたい)

不要なimportをlazyにしたい場合がある。例えばdictknife.loadではフォーマットとしてjson,yaml,tomlをサポートしているのだけれど。 jsonだけで十分の処理でyamlやtomlをimportを行いたくない。 ふつうのlazy import ふつうのlazy importとして関数の中でim…

argparseでsubcommandを作るためのユーティリティ

サブコマンドを作る時に何らかのライブラリに依存して良いならclickがオススメではあるけれど。 使いたくない場合もあったりする。そういう時にどうするとまだましになるかみたいな事を考えたりしていた。 argparseでのサブコマンド argparseでのサブコマン…

matplotlibで描画できるグラフがわからないので自分用のギャラリーを作っている

github.com matplotlibには色々なメソッドがいっぱい なんか色々あるけれど。どういうものがあるのか把握していない。分かっているのは以下2つだけの様な状況 plot hist たぶんそれ以外にも色々あるかんじ。 matplotlibの例は多すぎるし複雑過ぎる matplotl…

nbreversibleがreversibleになった

github.com nbreversibleがreversibleになった。 reversible? readmeより # convert .ipynb to .py $ python -m nbreversible foo.ipynb > foo.py # convert .py to .ipynb $ python -m nbreversible foo.py > foo.ipynb # re: convert .ipynb to .py $ pyth…

1つのpythonのソースコードからmarkdownやipynbを作るツールを作りはじめた(文芸的プログラミングっぽい感じ)

github.com jupyter notebookは便利なのだけれど。便利な点はcellがあることで。 一方で不便な点もあって。不便な点もまたcellがあることという感じ。 端的にいうとjupyterを立ち上げるのが面倒くさいのとcell間のコントロールを行き来するのが面倒くさい。 …

個人的なグラフ描画用のパッケージに機能を追加した

github.com 個人的なグラフ描画用のパッケージに機能を追加した。その前にこのutataneというパッケージが何をするものなのかを整理してみる気になった。 何をするものなのかというと、グラフを描く等に関する忌避感を緩和するためのもの。だるいと思う率を下…

pytestのyieldで指定するfixtureのやつを真似して実装してみた

github.com pythonのyieldで指定するfixtureのやつを真似して実装してみた。意外と簡単にできるし。面白いし。便利な気がする。 yield fixture? pytestのfixtureはsetup/teardownをgeneratorで定義できる。昔はyield_fixtureという名前だったけれど。現在はf…

pytestのfixtureとcontextlib.contextmanagerでの例外の取り扱い方の違い

前回の記事でpytestのfixtureでもteardownが実行されることを確実にするにはtry-finallyで囲む必要があるという風に書いてしまっていた。 特にtestでの利用を想定して作ったわけではないけれど。test時のsetup/teardownのことを考えると、途中のコードが失敗…

個人的なグラフ描画用のパッケージ作りはじめた

github.com 個人的なグラフ描画用のパッケージ作りはじめた。matplotlibのラッパーの様なもの。 元々のモチベーションは以下の記事に書いてある。 グラフ描く簡単な環境作っときたいかも 結局グラフの表示用のコードとグラフを画像として出力する用のコード…

pythonのastモジュールに不満がでたらlib2to3のコードを使ってみよう

はじめに pythonのコードをparseするためにastモジュールが用意されていたりする。 このモジュールはpythonのコードをparseしてvisitor的なものでastをtravarseしてなどと便利ではあるのだけれど。 コメントなどの情報が消えてしまうなどの不満が出ることが…

たくさんのnotebookの内容をコマンドラインから再実行して更新したい

はじめに たとえばグラフを描画するnotebookをたくさん開いている状態。 ちょっとだけimportしたライブラリに変更があったので実行結果が変わりそうになってしまった。 このようなときに、すべてのipynbファイルを開いてrunallした後にsaveというようなこと…

グラフ描く簡単な環境作っときたいかも

グラフ描くの簡単な環境作っときたいかも。要求は以下の2つ。 手軽にグラフが描ける 手軽にグラフを共有できる 前者は例えばjupyter上でだけ表示みたいなのが嫌な感じ。 後者は例えばGUIで表示とかだけなのは嫌な感じ。 まだ結局一番良いと思える方法は見つ…

sqlalchemyのORMじゃない方の機能(expression language api)

使い方忘れることが多いのでメモ。 準備 テキトウにデータを作って準備する。 テキトウにテーブル作成。 CREATE TABLE groups ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT ); CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, group_id …

sqlalchemyのautomapによる既存のDBからのmodelの生成について

昨日あたりにsqlalchemyのautomapの仕組みをつかってgraphqlのschemaを作ろうとしていたのだけれど。その時に使っていたsqlalchemyのautomapの仕組みが期待していたのとちょっと違っていたのでどうしようか考えてみる。 sqlalchemy? pythonで使われているORM…

既存のdbからgraphqlのschemaを生成しようとしてみる

はじめに 既存のDBのURLを渡すと、何か良い感じにgraphqlのベースのapiを良い感じに提供してくれるようにする何かを作ろうとしはじめた。 graphqlはschemaを取るのだけれど、こちらのschemaはgraphベースなのでちょっと困る。 サーバー側の実装をするために…

docutils用にsphinxのliteralincludeのsubsetを作って使ってみる。

literalinclude? sphinxで利用可能なdirectiveの1つ。 以下の様な形で別のファイルに定義した記述をあたかも自身のcode-blockとして記述したかのように使えるもの。 ここはReSTの文章。 .. literalinclude:: <filename.<ext>> ここもReSTの文章。 似たようなものとしてincl</filename.<ext>…

bsonのdump(文字列表現)

人間が確認するためにbsonを文字列にdumpしたいことがある。 bsonはjsonではない bsonはjsonではないのでjson.dumpsは使えない。 import json import bson from collections import ChainMap person = ChainMap({"name": "foo"}, ChainMap({"age": 20}, {"_i…

1つのquery objectに紐づく複数のqueryの管理について

(途中:wip) はじめに pymongoを直で使うのがつらいと感じる事がある。というよりmongodb一般でつらいと感じることがある。主にjoin。 joinを手軽に書けるwrapper的なものがほしいと感じる事がある joinが書けるということ joinが書けるということは1つのque…

最近pythonでmongodb使うなら

普通に使う場合 過去にそれなりに人気のあった(?)mongodb用のライブラリは軒並み廃れている感じがある。3.x系に追随できていない物が多い。pymongoを直接使ったほうがマシな印象。もし非同期を気にしたいならmotorなどは良いかもしれない。 あとまだ新しめで…

テキトウなyamlの値からswagger spec経由でgoのstruct定義のコードを生成してみる

テキトウなyamlの値からswagger spec経由でgoのstruct定義のコードを生成してみる。 使うのはdictknifeとgoaway やること 素となるデータの例を書く(yaml) データからswagger specを生成 swagger specからコードを生成 以下の様な形で変換が行われる。 confi…

docutilsを直接利用してRestからmarkdown(のsubset)を生成するツールを作ってみる

docutils ReSTのためのライブラリ ReST? markdownのようなもの first step docutilsではpublisherと呼ばれるものがもっともトップレベルのapplication。 内部でドキュメントをparseしてnode treeを作成した後に各writerのtranslateで出力される。 reader+par…

jsonからswagger specを生成するコマンドに変更を加えた

github.com 昨日作ったコマンドに変更を加えた。変更点は以下 複数のファイルを渡せるようにした minimapを表示するようにしてみた validationのための --emit=jsonschema を止めた 複数のファイルを渡せるようにした 複数のファイルを渡せるようにした。req…

jsonからswagger specを生成するコマンドをdictknifeに取り込んだ

以前に、jsonからswagger specを生成するツールを作っていたのだけれど。とくにリポジトリを分けておく必要性もなかったのでdictknifeに取り込んだ。 ついでに、swagger独自っぽい雰囲気のしたコマンドはswaggerknifeとして別のコマンドにすることにした。 …

pythonでwarningsパッケージを使った警告の表示のメモ

警告を表示したいことがある。例えば、次のversionで廃止予定の関数を使った時の警告など。 こういうときには warningsパッケージを使う。 first step 00warn.py import warnings def foo(): warnings.warn("hmm") return "hai" if __name__ == "__main__": …

sphinxで雑にコード例と実行結果を表示したい場合

sphinxで雑にコード例と実行結果を表示したい場合がある。コード例はliteralincludeを使うと便利。一方実行結果をどうするのかというのが悩みどころ。 現状はMakefileで出力結果を生成してliteralincludeで埋め込んでいる。 こういう感じ .. literalinclude:…

sphinxのliteralincludeが絶対パスを表示するのが嫌だった

sphinxのliteralincludeが絶対パスを表示するのが嫌だった。 以下の様なmonkey patchをあてるextensionを作ってあげると無理矢理変更できる(わるい) def setup(app): # monkey patch import os.path from difflib import unified_diff from sphinx.directive…

そろそろドキュメントを書き始めることにした

github.com そろそろドキュメントを書き始めることにした。ただまだまだ個人用のつもりなのでまともな文章は書かない。 どうしてドキュメントがほしくなったか? どうしてドキュメントが欲しくなったかというと、このはてなブログの記事だけでは断片的な情報…

modulegraphが上手く動かないのでsys.path_hooksで遊ぶ

modulegraphというパッケージがあり、これでモジュール間の依存関係をグラフにしてみたりできるらしいのだけれど。何だか上手く動かなかった。 残念な気持ちにはなったのだけれど、何か特別なパッケージに頼らずともpythonのimport hookの機能を利用すれば同…