Mailing List Archive

Structural pattern matching and mangling private names
For this code:

class C:
def f(self, x):
match x:
case D(__something=y):
return y

It appears that the name "__something" isn't mangled. Under most other circumstances I'd expect this to be mangled to "_C__something". Is this:
* intentional,
* accidental, but how that it's done it's the defined behaviour,
* or a defect?

It doesn't seem like it's explicitly tested for in test_patma.py either way.

Thanks
David
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/LILLO3MBTVY6ZQT3VNUVXATEPS3ASGQF/
Code of Conduct: http://python.org/psf/codeofconduct/
Re: Structural pattern matching and mangling private names [ In reply to ]
I don't remember this topic ever being discussed, but still I wouldn't
expect that __something to be mangled, given that it refers to an attribute
of an instance of D.

I might expect that in a "case D(something=__y)" you get the mangling for
__y, but I'm not sure what the implementation does now and I'm writing from
my phone

On Wed, 15 Jun 2022, 20:12 , <dw-git@d-woods.co.uk> wrote:

> For this code:
>
> class C:
> def f(self, x):
> match x:
> case D(__something=y):
> return y
>
> It appears that the name "__something" isn't mangled. Under most other
> circumstances I'd expect this to be mangled to "_C__something". Is this:
> * intentional,
> * accidental, but how that it's done it's the defined behaviour,
> * or a defect?
>
> It doesn't seem like it's explicitly tested for in test_patma.py either
> way.
>
> Thanks
> David
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-leave@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/LILLO3MBTVY6ZQT3VNUVXATEPS3ASGQF/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
Re: Structural pattern matching and mangling private names [ In reply to ]
Daniel Moisset wrote:
> I might expect that in a "case D(something=__y)" you get the mangling for
> __y, but I'm not sure what the implementation does now and I'm writing from
> my phone

Yes - that case does what you'd expect.

Thanks for the reply.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/3BALIBTV3ATAEC6G5ZJKAFBASZG4B5AP/
Code of Conduct: http://python.org/psf/codeofconduct/
Re: Structural pattern matching and mangling private names [ In reply to ]
If you want any kind of traction on this I recommend filing an opinionated
issue on this (explaining why the current behavior is wrong).

On Wed, Jun 15, 2022 at 1:25 PM <dw-git@d-woods.co.uk> wrote:

> Daniel Moisset wrote:
> > I might expect that in a "case D(something=__y)" you get the mangling for
> > __y, but I'm not sure what the implementation does now and I'm writing
> from
> > my phone
>
> Yes - that case does what you'd expect.
>
> Thanks for the reply.
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-leave@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/3BALIBTV3ATAEC6G5ZJKAFBASZG4B5AP/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


--
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
Re: Structural pattern matching and mangling private names [ In reply to ]
Guido van Rossum wrote:
> If you want any kind of traction on this I recommend filing an opinionated
> issue on this (explaining why the current behavior is wrong).

Thanks - I'm asking from the point of view of trying to reimplement it. I don't actually have a strong opinion on whether the current behaviour is wrong - I'd just like to know if I should match it.

From that point of view I've deviated from your advice slightly and created a PR instead to add a test for the current behaviour (https://github.com/python/cpython/pull/94500). Hopefully that'll either fix it is "intended" or stir up a different decision. I'm happy with either outcome.

David
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/DBAJEVHAR6QD7HHECUESU6ZMPQKLBSC5/
Code of Conduct: http://python.org/psf/codeofconduct/
Re: Structural pattern matching and mangling private names [ In reply to ]
Having thought about it some more, I agree with Daniel Moisset that the
current behavior is correct -- in D(__foo=bar), __foo is a keyword arg
position and those don't get mangled. Anyway, anything mangled would get
mangled according to the containing class (in your example, C), not
according to the class appearing in the call. Using the called class for
mangling would set a dangerous precedent.

So there's your answer -- the current behavior is as it should be. I'll
look into the patch with that in mind.

On Fri, Jul 1, 2022 at 10:54 AM <dw-git@d-woods.co.uk> wrote:

> Guido van Rossum wrote:
> > If you want any kind of traction on this I recommend filing an
> opinionated
> > issue on this (explaining why the current behavior is wrong).
>
> Thanks - I'm asking from the point of view of trying to reimplement it. I
> don't actually have a strong opinion on whether the current behaviour is
> wrong - I'd just like to know if I should match it.
>
> From that point of view I've deviated from your advice slightly and
> created a PR instead to add a test for the current behaviour (
> https://github.com/python/cpython/pull/94500). Hopefully that'll either
> fix it is "intended" or stir up a different decision. I'm happy with either
> outcome.
>
> David
> _______________________________________________
> Python-Dev mailing list -- python-dev@python.org
> To unsubscribe send an email to python-dev-leave@python.org
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-dev@python.org/message/DBAJEVHAR6QD7HHECUESU6ZMPQKLBSC5/
> Code of Conduct: http://python.org/psf/codeofconduct/
>


--
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>