Hey Martin, It looks like you want to look at a Homset class, in particular, a good model might be tensor/modules/free_module_homset.py. I'd also perhaps not use a classcall on the morphism, but instead explicitly construct the Homset (parent) and from that, construct the corresponding element to simplify the class (and it's a natural interface).
Best, Travis On Sunday, June 7, 2015 at 4:52:58 AM UTC-7, Martin R wrote: > > Hi there! > > I tried to improve on my FindStat interface ( > trac.sagemath.org/ticket/17818), by making the instances of the class > FindStatMap elements of a new class FindStatMaps. > > I used the pattern below (reduced to an absolute minimum. I must admit, > this is a lot of code for saying that a FindStatMap has a parent): > > Now, if you look hard enough, you'll find three question marks in > FindStatMaps.__init__. > > My question, is, what should I put there? Mathematically, FindStatMaps > are morphisms in the category FiniteEnumeratedSets. They have a domain > (which is an element of FindStatCollections, such as DyckWords or Graphs) > and a codomain, and it would actually be nice if we could compose them. > > Or should I be doing something completely different? > > Best, > > Martin > > class FindStatMap(Element): > __metaclass__ = ClasscallMetaclass > @staticmethod > def __classcall_private__(cls, entry): > """ > Retrieve a map from the database. > """ > return FindStatMaps()(entry) > > def __init__(self, parent, entry): > self._map = entry > Element.__init__(self, parent) > > # a few methods describing a map, like domain, codomain, name. > ... > > class FindStatMaps(Parent, UniqueRepresentation): > def __init__(self): > """ > Fetch all the maps from FindStat. > > TESTS:: > > sage: from sage.databases.findstat import > FindStatMaps > sage: M = > FindStatMaps() # optional -- > internet > sage: > TestSuite(M).run() # optional -- > internet > """ > self._findstat_maps = > json.load(urlopen(FINDSTAT_URL_DOWNLOADS_MAPS)) > Parent.__init__(self, category=???) > > def _element_constructor_(self, entry): > """Initialize a FindStat map. > > INPUT: > > - ``entry`` -- a string containing the FindStat name of the > map, or an integer giving its id, or a dict containing all > the information. > > # very few methods > ... > > Element = FindStatMap > -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.
