msgpack-python icon indicating copy to clipboard operation
msgpack-python copied to clipboard

Adding type stubs

Open sbdchd opened this issue 3 years ago • 9 comments

In the course of using msgpack in a project I've written some basic type stubs for the parts of the API I'm using. I don't think it would be too hard to fill out the type stubs for the rest of the API.

Would you accept a PR adding stub files to the package? Not sure if you have a preference on adding the types to the code itself or keeping them as separate stub files.

related: https://www.python.org/dev/peps/pep-0561/

sbdchd avatar Dec 11 '20 04:12 sbdchd

Would you accept a PR adding stub files to the package?

I expect it will be very complex types and very low benefit for users, because msgpack can pack/unpack various types. I don't want to maintain it.

But if it is simple and very useful, I will consider it.

methane avatar Dec 11 '20 05:12 methane

See #404.

methane avatar Jan 27 '21 01:01 methane

I ended up creating a separate type stub package: https://github.com/sbdchd/msgpack-types

If you aren't interested in have the types in the package itself, would you be okay with me adding them to the type shed?

https://github.com/python/typeshed/

sbdchd avatar Jan 27 '21 04:01 sbdchd

Well, I know for a fact that this is incorrect. Unpacking methods accept any object that implements the buffer protocol, so next to bytes there's also bytearray, array, memoryview, numpy.ndarray, etc. There is a long-standing issue to add the ability to describe things as "buffer-like". It's an open issue, because buffers are very variable (writeable or not, data types, contiguous or non-contiguous, strided) and you need to describe them pretty accurately so your type annotation is actually useful.

jfolz avatar Mar 19 '21 11:03 jfolz

It's been almost 2 years but a comment on the linked issue says PEP 688 is here to save the day. Was that the thing that we needed to unblock this?

rodrigogiraoserrao avatar Feb 17 '23 23:02 rodrigogiraoserrao

Well, for one a PEP needs to be accepted and implemented first to make a difference. As of now it's just a draft.

jfolz avatar Feb 18 '23 09:02 jfolz

Ugh, sorry. Got so carried away by it that I didn't even check the PEP status.

rodrigogiraoserrao avatar Feb 18 '23 11:02 rodrigogiraoserrao

Good news is that PEP 688 has been accepted. Bad news is that it'll be available in Python 3.12 at the earliest. Any earlier version would need a backport.

jfolz avatar Mar 10 '23 09:03 jfolz

Good news is that PEP 688 has been accepted. Bad news is that it'll be available in Python 3.12 at the earliest. Any earlier version would need a backport.

typing-extensions now supports Buffer in the latest release, this is a common way to backport new typing PEPs to projects.

clokep avatar May 30 '23 19:05 clokep