LocalFSの障害
[更新日:
2005年06月11日
]
オリジナルのままでは、ローカルなファイルを get できない致命的な障害があります。
Zope オブジェクトはすべて docstring 属性値を持たないといけないのですが、
拡張クラス (ExtensionClass) は、多重継承に問題があるらしく、
docstring が得られない場合があります。
その結果 LocalFS のあつかうファイルが Zope オブジェクトとして認知されないことになります。
原因が Zope 拡張クラス側にあるのか、LocalFS のせいなのか判断できません。
作者に問い合わせたところ、Python 2.2 はオフィシャルサポートされていないので、
考えていなかったそうです。
python2.1.3 と 2.2.2 の両方で動作する
パッチ
作ったので、RPM に入れました。
[更新履歴]
2003/03/23 Zope27-LocalFS-1.0.0-0vp2.i386.rpm
— docstring が取得できない問題の修正
2003/02/20 Zope27-LocalFS-1.0.0-0vp1.i386.rpm
— 新規作成
サンプル
LocalFS.py の問題のコードを簡単にすれば次のようになります。
#! /usr/bin/python2.1
import sys
sys.path.append('/usr/share/zope26/lib/python')
from ExtensionClass import Base
class MyClass(Base):
"""this is MyClass"""
def __class_init__(self):
"""class intializer"""
class Wrapper:
"""this is Wrapper"""
def getWrapper():
class ObjectWrapper(Wrapper, MyClass): pass
return ObjectWrapper
if __name__ == '__main__':
w = getWrapper()
print 'docstring: ', w.__doc__
これを実行すると "docstring: this is Wrapper" と表示されるはずです。
しかし、python2.2.2 の環境では、"docstring: None" となります。
もちろん、先頭の 3 行は次のように変更してから実行して見てください。
#! /usr/bin/python2.2
import sys
sys.path.append('/usr/share/zope27/lib/python')
|