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

Merge .pyi files #926

Merged
merged 9 commits into from
Aug 17, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions lark-stubs/ast_utils.pyi

This file was deleted.

14 changes: 0 additions & 14 deletions lark-stubs/grammar.pyi

This file was deleted.

47 changes: 0 additions & 47 deletions lark-stubs/indenter.pyi

This file was deleted.

31 changes: 0 additions & 31 deletions lark-stubs/load_grammar.pyi

This file was deleted.

39 changes: 0 additions & 39 deletions lark-stubs/reconstruct.pyi

This file was deleted.

108 changes: 0 additions & 108 deletions lark-stubs/visitors.pyi

This file was deleted.

6 changes: 4 additions & 2 deletions lark/ast_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
"""

import inspect, re
import types
from typing import Optional

from lark import Transformer, v_args

Expand All @@ -27,7 +29,7 @@ def _call(func, _data, children, _meta):

inline = v_args(wrapper=_call)

def create_transformer(ast_module, transformer=None):
def create_transformer(ast_module: types.ModuleType, transformer: Optional[Transformer]=None) -> Transformer:
"""Collects `Ast` subclasses from the given module, and creates a Lark transformer that builds the AST.

For each class, we create a corresponding rule in the transformer, with a matching name.
Expand All @@ -49,4 +51,4 @@ def create_transformer(ast_module, transformer=None):

setattr(t, camel_to_snake(name), obj)

return t
return t
16 changes: 9 additions & 7 deletions lark/grammar.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
from typing import Optional, Tuple

from .utils import Serialize

###{standalone

class Symbol(Serialize):
__slots__ = ('name',)

is_term = NotImplemented
is_term: bool = NotImplemented

def __init__(self, name):
self.name = name
self.name: str = name

def __eq__(self, other):
assert isinstance(other, Symbol), other
Expand Down Expand Up @@ -50,11 +52,11 @@ class RuleOptions(Serialize):
__serialize_fields__ = 'keep_all_tokens', 'expand1', 'priority', 'template_source', 'empty_indices'

def __init__(self, keep_all_tokens=False, expand1=False, priority=None, template_source=None, empty_indices=()):
chanicpanic marked this conversation as resolved.
Show resolved Hide resolved
self.keep_all_tokens = keep_all_tokens
self.expand1 = expand1
self.priority = priority
self.template_source = template_source
self.empty_indices = empty_indices
self.keep_all_tokens: bool = keep_all_tokens
chanicpanic marked this conversation as resolved.
Show resolved Hide resolved
self.expand1: bool = expand1
self.priority: int = priority
self.template_source: Optional[str] = template_source
self.empty_indices: Tuple[bool, ...] = empty_indices

def __repr__(self):
return 'RuleOptions(%r, %r, %r, %r)' % (
Expand Down
44 changes: 39 additions & 5 deletions lark/indenter.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,24 @@
"Provides Indentation services for languages with indentation similar to Python"

from abc import ABC, abstractmethod

from .exceptions import LarkError
from .lark import PostLex
from .lexer import Token

###{standalone
from typing import Tuple, List, Iterator, Optional

class DedentError(LarkError):
pass

class Indenter(PostLex):
def __init__(self):
self.paren_level = None
self.indent_level = None
class Indenter(PostLex, ABC):
def __init__(self) -> None:
self.paren_level: Optional[int] = None
self.indent_level: Optional[List[int]] = None
assert self.tab_len > 0

def handle_NL(self, token):
def handle_NL(self, token: Token) -> Iterator[Token]:
if self.paren_level > 0:
return

Expand Down Expand Up @@ -64,4 +68,34 @@ def process(self, stream):
def always_accept(self):
return (self.NL_type,)

@property
@abstractmethod
def NL_type(self) -> str:
...

@property
@abstractmethod
def OPEN_PAREN_types(self) -> List[str]:
...

@property
@abstractmethod
def CLOSE_PAREN_types(self) -> List[str]:
...

@property
@abstractmethod
def INDENT_type(self) -> str:
...

@property
@abstractmethod
def DEDENT_type(self) -> str:
...

@property
@abstractmethod
def tab_len(self) -> int:
...

###}
Loading