On 2016-10-12 16:29, Travis Scrimshaw wrote: > > > On Wednesday, October 12, 2016 at 9:01:51 AM UTC-5, Daniel Krenn wrote: > > On 2016-10-12 13:39, Jori Mäntysalo wrote: > > More about this: In posets.py there is > > > > try: > > elements = D.topological_sort() > > except Exception: > > raise ValueError("Hasse diagram contains cycles.") > > > > and that should be "except TypeError", as that is what > > .topological_sort() raises from DiGraph that is not acyclic. > > > > But should a function without parameters like foo.bar() ever raise > > TypeError? If we can run that, then the object foo is of the right > type > > and has bar()-function. Or where goes the limit between TypeError and > > ValueError, i.e. what we mean by 'type' -- is DAG a "type" or just a > > DiGraph with some special properties? > > There could be a ContainsCycleError which has RuntimeError as a base... > > > IMO a ValueError is better than a TypeError because topological_sort > (implicitly) takes the DiGraph as an input, and the input type is > correct, just its value is wrong. Although this is more towards > bikeshedding...
I agree that a ValueError is better than a TypeError. IMHO even better is a (special) RuntimeError, as checking if it contains a cycle needs (at least somehow) the sorting. Thus it happens when the algorithm has already started. (bikeshedding... ;) ) Daniel -- 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 sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at https://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.