Hey,

I just found a good example for the unpacking errors I suggested:


    def topological_sort(graph: networkx.DiGraph) -> tuple:
        try:
            (zero_node,) = (node for node in graph if not
graph.neighbors(node))
        except TooFewToUnpackError:
            raise OverdefinedOrdering
        except TooManyToUnpackError:
            raise UnderdefinedOrdering

        ...

This is instead of the following code, which I find less elegant:

    def topological_sort(graph: networkx.DiGraph) -> tuple:
        zero_nodes = tuple(node for node in graph if not
graph.neighbors(node))
        if not zero_nodes:
            raise OverdefinedOrdering
        elif len(zero_nodes) >= 2:
            raise UnderdefinedOrdering
        else:
            (zero_node,) = zero_nodes


Besides elegance, the above code can be optimized with short-circuit logic
for the TooManyToUnpackError, assuming that doesn't break backward
compatibility.
        ...

On Sun, May 3, 2020 at 1:39 AM Soni L. <fakedme...@gmail.com> wrote:

>
>
> On 2020-05-02 7:29 p.m., Steven D'Aprano wrote:
> > On Sat, May 02, 2020 at 03:39:50PM -0300, Soni L. wrote:
> >
> > > def foo():
> > >   yield from ()
> > >   raise ValueError
> >
> >      def foo():
> >          yield from ()
> >          raise ValueUnpackingError
> >
> > Does that help?
> >
> >
> the idea is that it'd become a RuntimeError when you unpack it.
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/GQVFEDUZGVND7Q2ZCTVDSHOXWWUOCQDU/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/55J446VK7534LKCIJIZZOK37Z3T2QZ64/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to