Repository navigation
refactor: add type hints across the project - #5
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add type hints across the project to improve static type checking, IDE support, and code readability.
I used
markdown-parser-pyin one of my projects and needed stricter type information for better static analysis. While working with the library, I added type hints throughout the codebase.Changes
MarkdownNodemethods and attributes.MarkdownTreemethods and attributes.list[str]andlist[MarkdownNode].from __future__ import annotationsto support recursive type references.Notes
While adding the type hints, Pylance reported two existing issues in
tree.py:title is not Noneis an unnecessary comparison becausetitleis typed asstr.base_deltamay be possibly unbound depending on the control flow.Tooling suggestions
Consider Pyright instead of mypy
I would suggest considering Pyright for static type checking since it integrates directly with Pylance for editor feedback and can handle complex branching.
Consider Ruff for formatting and imports
I would also suggest considering Ruff for formatting, linting, and import sorting. It could replace the current Black + isort setup while providing a significantly faster workflow.