python

zope.interfaceを使うと、ちょっとだけ安全にクラスデコレータが使えるかも

まだこの使い方で合っているかわかんないけど。 昨日のコードにzope.interfaceを使ってみる。 したいこと(主機能と副機能の実装を分割したい) 本質的に必要な機能とそれ以外の機能の定義を分けたい。 例えば、ツリー構造のオブジェクトを定義するときに、そ…

依存関係のあるものを順に並べる。

やりたいこと A -B -> C -D -> Eというような依存関係がある時、依存関係の解決したものから順に利用したい。上の例だと例えばこんな感じ。 C , B , E , D , ADAG -> トポロジカルソート -> 反転と同じような感じ。たぶん、探せば絶対あるけど、とりあえず必…

デコレータについて(デコレータを引数にしてデコレータを返す関数の作成)

デコレータを引数に、デコレータを返す関数を作って無かったので作ってみる。 今回は、関数用のデコレータをメソッド用のデコレータに変換する関数を作ってみる。 デコレータ デコレータは以下のようなコードの構文糖衣。 @deco def f(n): return n def g(n)…

あとで情報の取得ができるような感じに

途中。何かできそうな感じだけど。綺麗じゃない。やりたいことは、デコレータで指定しておくと、指定したKeyが無かったときには自動でそれを取得するようなもの。 (呼び出す関数は必ず第一引数がdict like object) import getpass import urllib class Hidde…

type()

A = type("A", (object, ), dict(x="x")) print A().x print A.x A.x = "class" a = A() print a.x a.x = "instance" print a.x print A.x ## inheritance B = type("B", (A, ), dict(y="y")) print B.x, B.y # > x # > x # > class # > instance # > class …

dumpdataでfixtureを出力する際にはIndentをつけられる。

python manage.py dumpdata --format=xml ぐちゃぐちゃ。 <django-objects version="1.0"><object pk="4" model="auth.permission"><field type="CharField" name="name">Can add group</field><field to="contenttypes.contenttype" name="content_type" rel="ManyToOneRel">2</field></object></django-objects>

propertyについて

pythonのpropertyについて頭を整理しようと思ったのでまとめてみる。agenda propertyって何? 困ったこと(propertyって読み込み専用の属性を定義するための機能なの?) propertyの使い方 propertyの利用例 getterを定義する場合 setterを定義する場合 delete…

safeが必要ないオブジェクトを作る。

djangoのテンプレートの話。カスタムタグやフィルタ以外で、safeをつける必要がないオブジェクトを作りたい。 formのような。 {{form.as_p}}はできるけれど、自分で作った以下のようなオブジェクトはsafeをつける必要がある。 class A(str): def as_p(self):…

djangoでmodelの図を描いて見る。

django-extensionsにそんな機能が入っていた。 ubuntuで図を描いてみる例。 必要なもの graphviz django-extensions requirements.txt pygraphviz django-extensions install sudo aptitude install graphviz graphviz-dev pip install -r requirements.txt …

templateのデフォルト値を変える。

デフォルトは""なので分かりにくい。settings.pyに以下を追加すると、テンプレートで間違えた時の表示が変わる。 TEMPLATE_STRING_IF_INVALID = "THIS IS NOT EXIST"

views.pyにview関数をwrapするオブジェクトを作る

以下のようなurlを指定する必要があって面倒。 json/foo json/bar json/hoo .... 普通にurls.pyを書くと from django.conf.urls.defaults import patterns, include, url # Uncomment the next two lines to enable the admin: # from django.contrib import…

djangoをnginx+gunicornで動かす。テキトー。

install pip install gunicorn sudo aptitude install nginx cd /etc/nginx sudo mv nginx.conf nginx.conf.orig sudo vi nginx.conf nginx.confを以下のように ## worker=1, port=8000 user www-data; worker_processes 1; error_log /var/log/nginx/error.…

jsのsetTimeout的な非同期っぽい感じのsleepをpythonでどうするのか考えてみた。

こんな方向でいけるかもしれない。書いたコードは、setTimeoutとは似ても似つかないけれど。 イメージ見たいなものはつかめた。。。かもしれない。 実際にsleepをするわけではなく、現在時刻との差分を確認 「できるよ」、「おわった」、「まだ待って」みた…

python-ex-util.el機能追加

python-ex-util.elに機能を追加した。以前に追加したものも含めているけれど、追加した機能は以下のとおり (virtualenvの環境も考慮した)flymakeの設定を追加 defaultで機能は無効 moduleをinsertできる関数(anything-insert-module)を追加 testを書き始めた…

python-ex-util.el

機能追加した。 moduleを選択する際のactionに、web-pageを追加した。 ライブラリのINFO-PKGからweb-pageのurlを抜き出して閲覧 INFO-PKGが見つからなければ、標準ライブラリとみなし、http://docs.python.org/library/.htmlを閲覧 anythingの情報源にpython…

python-ex-util.el書いた。

emacsでpythonのコードを書いている時に便利になるんじゃないかなと思うような機能が入っている。 具体的な機能 現在開いているバッファのコードを実行(python-ex-util:eval-buffer-with-current-python) 現在importしているmoduleへ飛ぶ(python-ex-util:any…

wsgirefを見て気になったコード

気になった部分があったので、調べてみた。 たぶん、メソッドディスパッチのコストを下げるためのもの。 似たようなベンチマークを書いて速度図ってみた。 class A(object): def _write(self, ys): raise NotImplementedError from StringIO import StringIO…

fabricの環境設定とコマンドの実行の定義の区別が分かりにくい

注釈を付けるデコレータを定義すれば良いんじゃないかと思った。 とりあえずしたいこと fabfileの中で「環境設定」、「操作」を一目で分かるようにする あと、環境設定だけをリストで取り出せるとか便利 なんか注釈を付けるデコレータを定義すれば良いんじゃ…

fabricは環境も設定できた。

昨日に引き続きfabricについて。fabricは環境設定もfabfile.pyの中にかけた。 fabコマンドの引数の形式は以下のような感じ。(略系) fab [environment] <operation>environmentの環境でoperationの操作をするということができる。 another_sceneという環境設定を書いてみ</operation>…

fabricのコマンドメモ

fabric.apiにlocal,run,sudoがある。 local local上でコマンド実行 run remote上でコマンドを実行 sudo remote上でsudo+コマンド実行

fabricを使ってみる。

スクリプトをまとめておくのに、fabricが便利だと教えてもらったので使い方を調べる。 install pypiにあがってる pip install fabric 使い方 fabfileを作る。 fabコマンドをとおして実行。 fabfileは、Makefileみたいなもの。fabfile.pyという名前で保存する…

withとか使ってみようとした

機能の存在は知っているけれど、使ったことが無かったので朝の空いた時間に。 # -*- coding: utf-8 -*- ## schemeのparamaterのようなことしようとしたらp.x = yがは文だった。 ## print p.x = yとか無理だった。 # need self._value class Paramaterized(ob…

Pipeがおもしろかったのでどうやって作ってるのか調べてみた。

Pipe自体のコードの行数も少ないのでざっと眺めて見たところ以下のような感じだった。 Pipeの肝はPipeデコレータ。 __ror__を定義することで"|"の意味変えている。*1 すべての関数にPipeデコレータを付ける。 とかしているよう。Pipeデコレータの定義は以下…

pipe.LINQ的なライブラリ

なにこれ? こんなことができる(pypiのサンプルより)フィボナッチ数列の4000000以下の偶数の総和が欲しい euler2 = fib() | where(lambda x: x % 2 == 0) | take_while(lambda x: x < 4000000) | add 全部の関数の例を作ってみる。 出力を伴う lineout,stdou…

moinmoin,blockdiag

memo memo ## blockdiag_directive.py # -*- coding: utf-8 -*- from docutils import nodes from blockdiag.diagparser import tokenize, parse from blockdiag.DiagramDraw import DiagramDraw from blockdiag.blockdiag import ScreenNodeBuilder from bl…

複数のデコレータをひとつにまとめる

複数のデコレータをひとつの関数に付与するのが、何度も続くと面倒くさい。 @decorator1 @decorator2 @decorator3 def f(): pass ひとつのデコレータにまとめてみても良いかも。 # -*- coding:utf-8 -*- def decorator_compose(*decorators): def _decorator…

デコレータを取り除いて見たかった。

最終的には、汎用的なデコレータ除去の方法が見つからなかった。 対象 pythonのデコレータが分かる クロージャが分かる。 デコレータをかけた関数のデコレータを取り除きたいと思っている 色々調べて見たところ、デコレータを付与する前の関数を取り出す方法…

デコレータを使った関数の置き換え(dynamic_scope的な)

djangoで開発をしていて、実機でのテストがめんどい部分があった。 views関数の中で、想定した状態の時に、意図した通りの分岐が行われるかテストしたい。そのためには、関数を置き換えられると良さそう。そんなわけで、`with_dummy`というデコレータを作成…

クラスデコレータを使ってクラスのすべてのメソッドにデコレータを付加してみる。

クラスデコレータでクラス中のメソッド全部に入力出力の値を伝える機能を持たせてみる class Inspector(object): depth = 0 @classmethod def bind(kls, fn): def _bind(*args, **kw): indent = " " * kls.depth print "%s %sargs=%s, kw=%s" % (indent, fn,…

デコレータは何も関数である必要はないわけで

オブジェクトのメソッドも形を整えれば、デコレータとしてつかえる。副次的な機能を追加するのに使えそう。 例(平均を計算するカウンタのメソッドをデコレータとして利用) 平均を返すカウンタを使った例。 f()を呼ぶと共に値はカウントされ、g()を呼ぶともに…