Python-Markdown / markdown

A Python implementation of John Gruber’s Markdown with Extension support.
https://python-markdown.github.io/
BSD 3-Clause "New" or "Revised" License
3.74k stars 858 forks source link

Improve type annotations (add more and fix wrong ones) #1394

Closed oprypin closed 10 months ago

oprypin commented 10 months ago

The origins of these are three-fold:

waylan commented 10 months ago

So there appears to be a couple code changes included in this (I don't mean adjustments to whitespace/line length). Could you please remove those? They should be submitted separately.

oprypin commented 10 months ago

I only recognized one change that's clearly not about type annotations and reverted it.

I'm not sure if you also mean the NamedTuple change (which I think is on topic, as it's just the way to spell the same thing but with type annotations) or if there was something else.

waylan commented 10 months ago

I was thinking of the NameTuples, but you are correct, they do have type annotations. So nevermind on that.

waylan commented 10 months ago

Thanks for this. Some of the wrong annotations I completely missed.

I'll merge this after a changelog entry is added.

oprypin commented 10 months ago

That is done

oprypin commented 10 months ago

For future reference:

  1. The main reason that nobody complained about the current type annotations is probably that they aren't actually used by type checkers. Unless a file named py.typed exists, the dominant type checker "mypy" ignores the types and asks you to install https://pypi.org/project/types-Markdown/ anyway.

  2. If you are interested in a fully correct type-checked codebase (according to "mypy") as well as official external-facing type annotations support (by adding py.typed), let me know anytime, I can take up that task and help maintain this going forward. Otherwise that's all for now.

waylan commented 10 months ago

Note that you have a conflict with the changelog (presumably with #1392).

Regarding a fully correct type-checked codebase (according to "mypy") that is probably a reasonable goal. Personally, I haven't really explored what's involved given that this is a rather new thing for Python. So contributions are welcome.

oprypin commented 10 months ago

Note that you have a conflict with the changelog

Hm? I had already merged to resolve the conflict. There was just the spelling check failing

Regarding a fully correct type-checked codebase (according to "mypy") that is probably a reasonable goal.

Great, so I'll continue looking into this soon (in a separate PR)

pawamoy commented 10 months ago

This PR almost closes #1389 :slightly_smiling_face:

oprypin commented 10 months ago

Oh I didn't see that! No there are still like 100 mypy errors so maybe not "almost" 😅

pawamoy commented 10 months ago

Oh OK I thought there was just the py.typed file missing :sweat_smile: