Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: rewrite API #208

Merged
merged 14 commits into from
May 13, 2024
Merged

feat!: rewrite API #208

merged 14 commits into from
May 13, 2024

Conversation

ObserverOfTime
Copy link
Member

@ObserverOfTime ObserverOfTime commented Mar 12, 2024

Starting with the type stubs to show what the new API will look like (subject to change).
Breaking changes are marked with !.

Additions:

  • LANGUAGE_VERSION
  • MIN_COMPATIBLE_LANGUAGE_VERSION
  • Point(row, column)
  • Language.__repr__()
  • Language.__eq__(): checks ptr
  • Language.__int__(): returns ptr
  • Language.__index__(): returns ptr
  • Language.__hash__(): returns ptr
  • Node.__str__(): returns the S-expression
  • TreeCursor.goto_first_child_for_point(point)
  • TreeCursor.__copy__(): returns copy()
  • Query(language, source)
  • Parser(language, included_ranges, timeout_micros)
  • Parser.language (getter + setter)
  • Parser.included_ranges (getter + setter)
  • Parser.timeout_micros (getter + setter)
  • Range.__hash__()

Deprecations:

  • Node.sexp(): use str()
  • Tree.text: use root_node.text
  • TreeCursor.goto_first_child_for_point(row, column): use goto_first_child_for_point(point)
  • LookaheadIterator.reset(language, state): use reset_state(state, language)
  • Parser.set_language(language): use Parser(language) or language setter
  • Parser.set_included_ranges(ranges): use included_ranges setter
  • Parser.set_timeout_micros(timeout): use timeout_micros setter

Removals:

  • Language(path, name) !
  • Language.build_library(...) !
  • Language.name !
  • Language.lib
  • Language.language_id: use int()

Changes:

  • Language() only accepts a single integer argument. !
  • TreeCursor.descendant_index is changed to a property. !
  • LookaheadIterator.language returns a Language instance. !
  • LookaheadIterator.reset_state(...) accepts an optional language argument.
  • Query.captures(...) arguments must be keywords (except for node).
  • Query.matches(...) arguments must be keywords (except for node).
  • Range.__repr__() prints attributes in the same order as the Range() arguments.
  • Range() arguments are no longer considered optional.

Internals:

  • Drop support for Python 3.8.
  • Separate the C code into multiple files.
  • Use the pymalloc memory interface.
  • Handle invalid inputs to prevent segfaults.
  • Improve the docstrings, using core docs where possible.
  • Update the tests, replacing submodules with parser packages.

@ObserverOfTime ObserverOfTime added this to the 0.22 milestone Mar 12, 2024
@ObserverOfTime ObserverOfTime self-assigned this Mar 12, 2024
@ObserverOfTime ObserverOfTime force-pushed the rewrite branch 27 times, most recently from 6c75b32 to 259e8c9 Compare March 15, 2024 21:27
Plus many codebase improvements
Plus Query & Parser constructors
tree_sitter/__init__.pyi Outdated Show resolved Hide resolved
And use Sphinx to generate HTML docs
@ObserverOfTime ObserverOfTime force-pushed the rewrite branch 10 times, most recently from 631f3d0 to 6bf0eae Compare May 2, 2024 16:15
@ObserverOfTime ObserverOfTime marked this pull request as ready for review May 2, 2024 16:18
@ObserverOfTime
Copy link
Member Author

It's finally done! @amaanq

@ObserverOfTime ObserverOfTime force-pushed the rewrite branch 4 times, most recently from d2e14c9 to a6ae583 Compare May 9, 2024 18:56
ObserverOfTime

This comment was marked as resolved.

And fix remaining issues
@amaanq amaanq merged commit 681fc55 into master May 13, 2024
12 checks passed
@ObserverOfTime ObserverOfTime deleted the rewrite branch May 13, 2024 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants