NVelocityの馬鹿

IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.
>>> import System
>>> import clr
>>> clr.AddReference("NVelocity")
>>> from NVelocity import *
>>> from NVelocity.App import *
>>> Velocity.Init()
>>> ctx = VelocityContext()
>>> ctx.Put("key", "value")
'value'
>>> w = System.IO.StringWriter()
>>> Velocity.MergeTemplate("hoge.vm", "Shift-JIS", ctx, w)
Traceback (most recent call last):
  File , line 0, in <stdin>##40
  File , line 0, in MergeTemplate##48
  File NVelocity, line unknown, in MergeTemplate
  File NVelocity, line unknown, in getTemplate
  File NVelocity, line unknown, in getResource
Exception: Unable to find resource 'hoge.vm'
>>> Velocity.MergeTemplate(None, "Shift-JIS", ctx, w)
Traceback (most recent call last):
  File , line 0, in <stdin>##71
  File , line 0, in MergeTemplate##52
  File NVelocity, line unknown, in MergeTemplate
  File NVelocity, line unknown, in getTemplate
  File NVelocity, line unknown, in getResource
  File NVelocity, line unknown, in get
  File NVelocity, line unknown, in get_Item
  File NVelocity, line unknown, in get_Item
  File mscorlib, line unknown, in get_Item
TypeError: キーを Null にすることはできません。
パラメータ名: key
>>>
>>> f=open('hoge.vm', 'w')
>>> f.write("key=$key\r\n")
>>> f.close()
>>> Velocity.MergeTemplate('hoge.vm', "Shift-JIS", ctx, w)
True
>>> print w.GetStringBuilder()
key=value
>>> System.IO.File.Delete('hoge.vm')


ファイル名がnullの場合にキーがNullとかいわれてもこまるよー。
C#でファイル名がinjectionできてないことにきがつかんではまってた。orz


pythonでnullはNoneなんですね。
やっぱりimport書くのがめんどくさいな。
オブジェクトnewとか書いちゃったりするとのでやっぱりちょっとつらい。