Thanks for the encouragement!
I've been working some more on it since I had some more free cycles in the last
few days and I think I've got to the limit of my capabilities. I think I've got
it to a point where it needs more eyes because my experience level writing code
in the python interpreter is pretty low, so I know that I have holes in there,
especially around using INCREF/DECREF.
I'm currently stuck on 3 things:
1. repr( pickle.loads( pickle.dumps(int | str) ) ) causes an infinite recursion
that I can't figure out. I might end up re-specializing `repr()` again since it
isn't defined in the PEP.
2.
- `None | "forwardref"` and `None | None`
- `"forwardref" | None` and `"forwardRefA" | "forwardRefB"`
I've had a go at adding a `type.__ror__` as suggested by GvR, but I think I'm
missing something.
3. type parameters
- I'm not sure how to handle this:
```
MaybeT = None | "T" # creates shadow union
T = TypeVar('T')
maybe_int = MaybeT[int] # should this stay in shadow land, or go back to
typing.py
isinstance(1, maybe_int)
isinstance(1, MaybeT[int])
```
I have a couple options for this:
- implement the type substitution in c; which can be done, but feels like
overkill?
- store the type parameters on the shadow object and vivify when needed (which
will end up being in the isinstance call)
- implement the __getitem__ as a call into the typing.py library and promote as
it's requested. This is how I've currently implemented it.
I'm happy to keep going on this if/when needed,
Richard
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/RYH3TYK5RXII5ESUYMTJAROBUAE3SY7H/
Code of Conduct: http://python.org/psf/codeofconduct/