[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-03-17 Thread Jelle Zijlstra


Change by Jelle Zijlstra :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-03-17 Thread Eric V. Smith


Eric V. Smith  added the comment:

Is there any reason to keep this issue open? The PR was merged.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-28 Thread Guido van Rossum


Guido van Rossum  added the comment:


New changeset 5445e173e76ec792358082caf660fbdc846c64b2 by Gregory Beauregard in 
branch 'main':
bpo-46553: allow bare typing.ClassVar annotations (#30983)
https://github.com/python/cpython/commit/5445e173e76ec792358082caf660fbdc846c64b2


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-28 Thread Gregory Beauregard


Change by Gregory Beauregard :


--
keywords: +patch
pull_requests: +29162
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/30983

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Guido van Rossum


Guido van Rossum  added the comment:

I
To be clear: I am okay with this patch, just not with making dataclasses
import typing.
-- 
--Guido (mobile)

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Gregory Beauregard  added the comment:

I think I miscommunicated my intent with sentence placement. I already posted 
the thoughts I referred to; they're just my concluding opinion on the technical 
merit of using get_type_hints in dataclasses to solve the Annotated problem: 
https://bugs.python.org/msg411945

In any case, I apologize for the faux pas and I'll be careful in the future.

I dug up the issue where pyright was changed (to allow bare ClassVar) that has 
an argument for not allowing it to be bare: 
https://github.com/microsoft/pyright/issues/2377

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Guido van Rossum


Guido van Rossum  added the comment:

Please just don't go there. I beg you. It's not worth it.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Gregory Beauregard  added the comment:

It's acceptable to mypy, and pyright added support a few months ago when I made 
an issue and Eric Traut discovered this pattern in the wild too.

Some of the other type checkers (pyre) still error I believe. My feeling is 
that since this has apparently become used in practice we should fix the 
runtime error for when it's stringified, but we don't necessarily need to 
prescribe that it's a legal type annotation for type checkers (?). If I was 
prescribing how to use ClassVar in a vacuum, I don't see any good typing reason 
we should prohibit this.

re: moving dataclasses: I'm not sure either! I'm trying to look into the issues 
it brings up in practice to weigh against the difficulties of maintaining the 
existing bespoke introspection implementation and the problems it has (dealing 
with stringified annotations, supporting renaming the Annotated symbol).

I made an implementation that fully moves dataclasses over to using 
`get_type_hints` (and got all the tests to pass), but my feeling right now is 
that a few issues are too serious for it to be viable:

1) the namespaces are a mess, and issues like 
https://github.com/python/typing/issues/508 don't have a solution at the moment
2) get_type_hints paints a wide brush on the entire class when it raises for 
errors, so it's not very viable to deal with non-typing non-Annotated[] 
annotations as a one-off

There's also nontechnical issues, like the potential politics of making 
dataclasses always import typing. I'll be updating bpo-46511 later with 
thoughts.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Guido van Rossum


Guido van Rossum  added the comment:

It seems acceptable to mypy.

I'm not sure I like the agenda of "moving dataclasses to using typing.py 
introspection tools".

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Gregory Beauregard  added the comment:

I'm drafting an implementation for the purpose of investigating performance 
right now; I will share when ready.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Eric V. Smith


Eric V. Smith  added the comment:

dataclasses is no doubt too lenient. But it's just trying to accept valid 
strings that look like ClassVar. Way back when this was initially implemented, 
we decided that calling get_type_hints would be too expensive for every 
dataclass, and would also neccesitate importing typing, which we didn't want to 
require.

I think someone needs to do an analysis of how expensive it would be for 
dataclasses to import typing and to call get_type_hints. Perhaps we'd make a 
different decision today.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Change by Gregory Beauregard :


--
nosy: +GBeauregard

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Change by Gregory Beauregard :


--
type:  -> behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Change by Gregory Beauregard :


--
nosy: +AlexWaygood, sobolevn -GBeauregard

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


Gregory Beauregard  added the comment:

I think this is needed for moving dataclasses to using typing.py introspection 
tools to be viable.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue46553] typing: get_type_hints on stringified lone ClassVar raises TypeError

2022-01-27 Thread Gregory Beauregard


New submission from Gregory Beauregard :

```
class C:
a: "ClassVar"

get_type_hints(C, globals())  # TypeError: Plain typing.ClassVar is not valid 
as type argument
```

A stringified lone ClassVar raises at runtime, but this pattern is tested for 
in dataclasses unit tests and used in the wild. The PEP is not clear that it 
should or should not be used with arguments, and it works fine when not 
stringified.

The fix for this is trivial and I can submit a patch if there's agreement.

--
components: Library (Lib)
messages: 411923
nosy: GBeauregard, Jelle Zijlstra, eric.smith, gvanrossum, kj
priority: normal
severity: normal
status: open
title: typing: get_type_hints on stringified lone ClassVar raises TypeError
versions: Python 3.10, Python 3.11, Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com