From 4a33a6bc8364e71a3fe11369f61e2ec7e2527475 Mon Sep 17 00:00:00 2001 From: tsarna Date: Thu, 30 Dec 1999 21:37:02 +0000 Subject: Extension Classes for Python, pulled from Zope 2.1.1 as they (and especially Acquisition) can be quite useful in their own right. EC fixes a wart in CPython: Python classes can't use C-implemented types as base classes. EC-based C classes can be subclassed by python, and in fact python classes can use pure mixin EC C classes so that you can have speed critical methods of a class in C and the rest in Python. EC also provides a mixin called Acquisition, which provides a kind of contextual inheritance. If an object can't find the data/method in itself or by looking up it's list of base classes, it will then try to acquire the thing up through its containers (or other context). --- lang/py-extclass/Makefile | 42 ++++++++++++++++++++++++++++++++++++++++++ lang/py-extclass/files/md5 | 3 +++ lang/py-extclass/pkg/COMMENT | 1 + lang/py-extclass/pkg/DESCR | 17 +++++++++++++++++ lang/py-extclass/pkg/PLIST | 29 +++++++++++++++++++++++++++++ 5 files changed, 92 insertions(+) create mode 100644 lang/py-extclass/Makefile create mode 100644 lang/py-extclass/files/md5 create mode 100644 lang/py-extclass/pkg/COMMENT create mode 100644 lang/py-extclass/pkg/DESCR create mode 100644 lang/py-extclass/pkg/PLIST (limited to 'lang') diff --git a/lang/py-extclass/Makefile b/lang/py-extclass/Makefile new file mode 100644 index 00000000000..d778b2d96b3 --- /dev/null +++ b/lang/py-extclass/Makefile @@ -0,0 +1,42 @@ +# $NetBSD: Makefile,v 1.1.1.1 1999/12/30 21:37:02 tsarna Exp $ +# + +DISTNAME= Zope-2.1.1-src +PKGNAME= py-extclass-2.1.1 +CATEGORIES= www +MASTER_SITES= http://www.zope.org/Products/Zope/2.1.1/ +EXTRACT_SUFX= .tgz + +MAINTAINER= tsarna@netbsd.org +HOMEPAGE= http://www.digicool.com/releases/ExtensionClass + +DEPENDS+= python-1.5.2:../../lang/python + +ALL_TARGET= default +PYTHON_LIBDIR= ${LOCALBASE}/lib/python1.5/site-packages +PYTHON_CONFIGDIR= ${LOCALBASE}/lib/python1.5/config +EXTRACT_ELEMENTS= Zope-2.1.1-src/lib/Components/ExtensionClass + +WRKSRC= ${WRKDIR}/Zope-2.1.1-src/lib/Components/ExtensionClass + +do-configure: + ( cd ${WRKSRC} ;\ + ${CP} ${PYTHON_CONFIGDIR}/Makefile.pre.in . ;\ + ${MAKE} -f Makefile.pre.in boot) + +post-build: + (cd ${WRKSRC}; ${LOCALBASE}/bin/python ${PREFIX}/lib/python1.5/compileall.py .) + (cd ${WRKSRC}; ${LOCALBASE}/bin/python -O ${PREFIX}/lib/python1.5/compileall.py .) + +do-install: + (cd ${WRKSRC}; ${INSTALL_DATA} ExtensionClass.h \ + ${LOCALBASE}/include/python1.5 ; \ + ${INSTALL_SCRIPT} Xaq.py* ComputedAttribute.py* ${PYTHON_LIBDIR} ; \ + ${INSTALL_PROGRAM} *.so ${PYTHON_LIBDIR} ; \ + ${INSTALL_SCRIPT_DIR} ${PYTHON_LIBDIR}/extclass_test ; \ + ${INSTALL_SCRIPT} test_*.py* ${PYTHON_LIBDIR}/extclass_test ; \ + ${INSTALL_DATA_DIR} ${PYTHON_LIBDIR}/extclass_doc ; \ + ${INSTALL_DATA} *.txt *.stx ${PYTHON_LIBDIR}/extclass_doc) + + +.include "../../mk/bsd.pkg.mk" diff --git a/lang/py-extclass/files/md5 b/lang/py-extclass/files/md5 new file mode 100644 index 00000000000..65b213d151d --- /dev/null +++ b/lang/py-extclass/files/md5 @@ -0,0 +1,3 @@ +$NetBSD: md5,v 1.1.1.1 1999/12/30 21:37:02 tsarna Exp $ + +MD5 (Zope-2.1.1-src.tgz) = 170e9304b2b2ee271eb0f8a0aa768fc9 diff --git a/lang/py-extclass/pkg/COMMENT b/lang/py-extclass/pkg/COMMENT new file mode 100644 index 00000000000..936b66ac844 --- /dev/null +++ b/lang/py-extclass/pkg/COMMENT @@ -0,0 +1 @@ +Python-extensible C "classes" and Acquisition for Python diff --git a/lang/py-extclass/pkg/DESCR b/lang/py-extclass/pkg/DESCR new file mode 100644 index 00000000000..0ef5da230f6 --- /dev/null +++ b/lang/py-extclass/pkg/DESCR @@ -0,0 +1,17 @@ +ExtensionClasses is a lightweight mechanism has been developed for +making Python extension types more class-like. Classes can be developed +in an extension language, such as C or C++, and these classes can be +treated like other python classes. They can be sub-classed in python, +they provide access to method documentation strings, and they can be +used to directly create new instances. + +Extension classes provide additional extensions to class and instance +semantics, including A protocol for accessing subobjects "in the context +of" their containers. This is used to implement custom method types and +environmental acquisition*. A protocol for overriding method call +semantics. This is used to implement "synchonized" classes and could be +used to implement argument type checking. A protocol for class +initialization that supports execution of a special __class_init__ +method after a class has been initialized. + +(* see http://www.digicool.com/releases/ExtensionClass/Acquisition.html) diff --git a/lang/py-extclass/pkg/PLIST b/lang/py-extclass/pkg/PLIST new file mode 100644 index 00000000000..41449d5bf09 --- /dev/null +++ b/lang/py-extclass/pkg/PLIST @@ -0,0 +1,29 @@ +@comment $NetBSD: PLIST,v 1.1.1.1 1999/12/30 21:37:02 tsarna Exp $ +include/python1.5/ExtensionClass.h +lib/python1.5/site-packages/Acquisition.so +lib/python1.5/site-packages/ComputedAttribute.so +lib/python1.5/site-packages/ComputedAttribute.py +lib/python1.5/site-packages/ComputedAttribute.pyc +lib/python1.5/site-packages/ComputedAttribute.pyo +lib/python1.5/site-packages/ExtensionClass.so +lib/python1.5/site-packages/MethodObject.so +lib/python1.5/site-packages/Missing.so +lib/python1.5/site-packages/MultiMapping.so +lib/python1.5/site-packages/Record.so +lib/python1.5/site-packages/Sync.so +lib/python1.5/site-packages/ThreadLock.so +lib/python1.5/site-packages/Xaq.py +lib/python1.5/site-packages/Xaq.pyc +lib/python1.5/site-packages/Xaq.pyo +lib/python1.5/site-packages/extclass_doc/COPYRIGHT.txt +lib/python1.5/site-packages/extclass_doc/Acquisition.stx +lib/python1.5/site-packages/extclass_doc/ExtensionClass.stx +lib/python1.5/site-packages/extclass_doc/MultiMapping.stx +lib/python1.5/site-packages/extclass_test/test_Sync.py +lib/python1.5/site-packages/extclass_test/test_ThreadLock.py +lib/python1.5/site-packages/extclass_test/test_acquisition.py +lib/python1.5/site-packages/extclass_test/test_add.py +lib/python1.5/site-packages/extclass_test/test_binding.py +lib/python1.5/site-packages/extclass_test/test_explicit_acquisition.py +lib/python1.5/site-packages/extclass_test/test_func_attr.py +lib/python1.5/site-packages/extclass_test/test_method_hook.py -- cgit v1.2.3