Author loewis
Recipients Alexander.Belopolsky, Arfrever, Robin.Schreiber, amaury.forgeotdarc, belopolsky, loewis, pitrou
Date 2012-09-07.05:47:34
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1346996856.15.0.708679934947.issue15870@psf.upfronthosting.co.za>
In-reply-to
Content
As for declaring ABCs: I don't think the API is necessary, or even helps. An ABC is best created by *calling* ABCMeta, with the appropriate name, a possibly-empty bases tuple, and a dict. What FromSpec could do is to fill out slots with custom functions, which won't be necessary or desirable for ABCs. The really tedious part may be to put all the abstract methods into the ABC, for which having a TypeSpec doesn't help at all. (But I would certainly agree that simplifying creation of ABCs in extension modules is a worthwhile reason for an API addition)

For the case that Alexander apparently envisions, i.e. metaclasses where the resulting type objects extend the layout of heap types: it should be possible for an extension module to fill out the entire type "from scratch". This will require knowledge of the layout of heap types, so it can't use just the stable ABI - however, doing this through the stable ABI won't be possible, anyway, since the extended layout needs to know how large a HeapType structure is.

If filling out a type with all slots one-by-one is considered too tedious, and patching ob_type too hacky - here is another approach: Use FromSpec to create a type with all slots filled out, then call the metatype to create a subtype of that. I.e. the type which is based on a metatype would actually be a derived class of the type which has the slots defined.
History
Date User Action Args
2012-09-07 05:47:36loewissetrecipients: + loewis, amaury.forgeotdarc, belopolsky, pitrou, Arfrever, Alexander.Belopolsky, Robin.Schreiber
2012-09-07 05:47:36loewissetmessageid: <1346996856.15.0.708679934947.issue15870@psf.upfronthosting.co.za>
2012-09-07 05:47:35loewislinkissue15870 messages
2012-09-07 05:47:34loewiscreate