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

opiumいじってる

# $ opam switch 4.02.1 $ opam install opium $ opam install core open Core_kernel.Std module O = Opium.Std type person = { name: string; age: int; } let json_of_person { name ; age } = let open Ezjsonm in dict [ "name", (string name) ; "age…

template側で定義したmoduleをnamespaceから取り出セルようにする

template側で定義したmoduleをnamespaceから取り出セルようにする(wip) namespaceの取り出し 通常namespaceは2通りの方法でimportできる - file経由のimport - module経由のimport file経由のimportは以下の様なもの <%namespace name="mf" file="<abtstract>.mako"/> </abtstract>…

postするデータをjson化してpostすればcollectionなどにも対応出来そう。

例えば以下のようなhtmlを <form> <input type="submit"> <div>event <input name="name" placeholder="event name"/> </div> <div collection="participants"> <div>user: <input name="name" placeholder="user name"> <input age="age" placeholder="0" type="number"> </div></div></form>

FormとSchemaの違いvalidation編

FormとSchemaの違いvalidation編 FormとSchemaの違いをプレゼンテーション側からみた話を前に書来ましたが validation側から見た場合にも両者は違うようです。 エラー時にSchemaは元の入力値を捨てても良いが、Formは元の入力値にアクセスできることが重要 S…

marshmallowのdumpをupdate_fieldsを指定せずに使うと型の調査が入るので遅い。

http://marshmallow.readthedocs.org/en/latest/api_reference.html#marshmallow.Schema.dump update_fieldsという引数がdefaultでTrueになっていて。これは値のtypeを見て、変換する関数を変えている。具体的なmappingはmarshmallow.schemaにかかれていて以…

marshmallow-formにform-factoryが誕生しました。Nestedなフィールドのmany=Trueが有効になりました

marshmallow-formにform-factoryが誕生しました。Nestedなフィールドのmany=Trueが有効になりました。 今回の主な変更点は以下の3つです 必要なら 各フィールドに描画関数を設定することができるようになりました form_factoryが使えるようになりました(exp…

marshmallow-formでmetadataのoverrideが出来るようになりました

marshmallow-formでmetadataのoverrideが出来るようになりました。 marshmallow-formでmetadataのoverrideが出来るようになりました。 他にも幾つか変更点がありますがコレが大きな変更です。 override出来るのは以下の2箇所です Nestedで作ったフィールド…

marshmallow-formにfrom_objectを追加しました。

marshmallow-formにfrom_objectを追加しました。 今まで受け取る値が辞書だけでしたが。ORMのmodelなどオブジェクトを受け取りたい場合があります。 そのような場合に対応するためにfrom_objectを追加しました。 以下の様にして使います。 import marshmallo…

marshmallow-formのvalidation部分の機能を修正しました。

marshmallow-formのvalidation部分の機能を修正しました。 昨日時点のままでも以下の様なコードは動いていました*1。 from marshmallo.validate import Length class AuthenticationForm(mf.Form): name = mf.String() password = mf.String(Length(5)) pass…

marshmallow-formに継承の対応とlayoutシステム付けました

marshmallow-formに継承の対応とlayoutシステム付けました。 marshmallow-form に以下のような機能を付けました。 継承の対応 ネストしたフォームを順序付きで利用 Layoutシステム 今回一番の変更はLayoutシステムな気がします。 継承の対応 むしろ無かった…

marshmallow-formというもの作っています

marshmallow-formというもの作っています(wip) marshmallow-form というもの作っています。これは、marshmallow をフォームライブラリっぽく使えるようにラッピングしたライブラリです。 フォームライブラリとは フォームライブラリとはhtmlのフォーム要素を…

pythonで動的に生成したモジュールをキャッシュする方法

pythonで動的に生成したモジュールをキャッシュする方法 pythonで動的に作ったコードから生成したモジュールをキャッシュする方法について調べたのでまとめました。 bytecode経由でキャッシュする方法 tempfile経由でキャッシュする方法 ちなみにこれはテン…

kamoというテンプレートエンジンを作ろうとしてみました

kamoというテンプレートエンジンを作ってみました kamo というテンプレートエンジンを作ってみました。まだ開発は途中なのですが、だいたい1日位でそれなりに動くテンプレートエンジンが作れるものなんだな〜と思ったりしました。文法的にはおおよそmako に…

astモジュールを使ってあるモジュールの変数名を抜き出す。

NodeTransformerというvisitorが用意されているのでこれを使うのが一番楽 import ast import inspect class CollectVarname(ast.NodeTransformer): def __init__(self): self.r = set() def visit_Name(self, node): self.r.add(node.id) def collect_varnam…

filegenを使ったscaffold scriptの作成のしかた

filegenを使ったscaffold scriptの作成のしかた filegenでscaffold用のスクリプトを生成する方法は以下のようなコードを書く。 filegen_script.py # -*- coding:utf-8 -*- from filegen import Filegen from filegen.asking import AskString def gen(): fg …

filegenでscaffold scriptを作れる様になった

以下の様なことが出来るようになった filegen.packageが簡単なpython packageの雛型を持つようになった filegenに非依存なscaffold commandが生成出来るようになった。 python packageの生成 filegen.packageを呼び出すとpython packageのscaffoldとして機能…

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた。 はじめはdjangoのormでviewを使った方法を考えて、ちょっとしたことからdjangoが思いもしない挙動をしたのでsqlalchemyではどうだったのか確認しようとした。 状況説明 以下…

python3の環境でpygraphvizをインストールしようとしてみた時のメモ

macのpython3環境でpygraphvizをインストールしようとした時のメモ 事前にmacportsでgraphviz-develをインストールしておきます。*1 sudo port install graphviz-devel 前提の環境 $ python -V Python 3.4.2 試しにpip でinstallしようとする 試しにpipでイ…

djangoでのテストデータの生成方法について考えてみた

djangoでのテストデータの生成方法について考えてみた。 集計や検索などのテストが辛い 今までdjangoでテストデータを作ってきてfactory boyを使ったテストを前提にするというのがあったのだけれど。 これは、必要となるモデルの数が少ないものでは上手くい…

srcgenを止めてprestringというライブラリを作り始めました。

srcgenを止めてprestringというライブラリを作り始めました。 ここ最近srcgenを使って遊んでたんですが、色々と思う所があったので自分でライブラリを作りました。 srcgenの素晴らしいところ インデントを含んだ構造をすごい手軽に記述できるのが良いです。 …

pythonのnamedtupleについて見過ごしてきたこと

pythnonのcollectionsにnamedtupleがありますが。コレについて見過ごしてきたことがありました。以下のようなコードがTrueを返してしまいます。 from collections import namedtuple Foo = namedtuple("Foo", "name value") Bar = namedtuple("Bar", "name v…

filegenという小さなライブラリを作りました

filegenというものを作りました。 filegenというものを作りました。特定のファイル構造を生成する処理の記述を簡略化するための小さなライブラリです。 (python3でしか確認していないのでpython2だと動かないかもしれないです) 動機 元々、コレ単体で使うつ…

この何日か特定のメソッドのセットを必ず呼び出すことについて悩んでいた。

この何日か特定のメソッドのセットを必ず呼び出すことについて悩んでいた。 この何日か特定のメソッドのセットを必ず呼び出すことについて悩んでいた。 ある処理が複雑になった時に、ちいさな処理に分けることがある。そしてユニットテストでは分けた範囲で…

srcgenが何かに使えそうだと思っているのだけれど。どうしたら便利なのかという答えは出ていない

srcgenが何かに使えそうだと思っているのだけれど。どうしたら便利なのかという答えは出ていない srcgenというパッケージがあって。これが個人的には結構面白い機能を持った ライブラリだと思っているのだけれど。良い使い方というのが見えていない。 srcgen…

pythonで評価器的な物を書いて昔を懐かしんだ。

昔こういうの書いてましたね。 以下のような感じで実行する感じです。 # 10 Application.run([Value(10)]) # 10 + 20 Application.run([BOp("+", Value(10), Value(20))]) # x = 10; x + 1 Application.run([Assign("x", 10), BOp("+", Var("x"), Value(1))]…

ppic 機能追加しました。

昨日作っていたppicに機能を追加しました。現在の最新は0.2.5です。追加された機能は以下です。 --stable-onlyオプションを追加しました。 --allオプションはdeprecatedになり--installedオプションになりました 一定時間(deaultは10分)各packageの情報のjso…

ppic pythonのパッケージのupdateを確認するためのパッケージ

ppicというpackage作りました 何で作ったの? 現在の環境でどのパッケージが最新でどのパッケージがアップデート必要なのかが知りたかったからです。 (本当はpipにこのような機能がついてほしかったりします) StackOverFlowのこの回答見てもなんとなく良い気…

djangoのviewとurl patternの定義をもう少しstrictな感じにできないかと考えていた

まとまってない感じの文章だけれど備忘録として残す。 djangoでurls.pyにview関数を登録する時に、以下のような状況がだるいと思った。 urls.pyに定義したview関数を登録し忘れる view関数の引数を変えた後に、urls.pyのpatternを変更し忘れている そしてそ…