Skip to content

Commit

Permalink
Merge pull request #46 from klauer/fix_annotations
Browse files Browse the repository at this point in the history
FIX: further annotation-related fixes
  • Loading branch information
klauer authored Jun 1, 2022
2 parents 61684c9 + fb45aee commit b6d7723
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 23 deletions.
17 changes: 17 additions & 0 deletions .github/codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
coverage:
precision: 1
round: down
status:
project:
default:
target: auto
patch:
default:
target: auto

comment:
layout: "reach, diff, flags, files"
behavior: default
require_changes: true # if true: only post the comment if coverage changes
require_base: yes # [yes :: must have a base report to post]
require_head: yes # [yes :: must have a head report to post]
6 changes: 5 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
name: lint

on: [push, pull_request]
on:
push:
branches:
- master
pull_request: {}

jobs:
lint:
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
# Run available tests for all push and pull-request actions.
name: pytest

on: [push, pull_request]
on:
push:
branches:
- master
pull_request: {}

jobs:
build:
Expand Down
49 changes: 28 additions & 21 deletions blark/transform.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@ def get_comments_and_pragmas(self) -> Tuple[List[lark.Token], List[lark.Token]]:
if not self.comments:
return [], []

pragmas = []
comments = []
pragmas: List[lark.Token] = []
comments: List[lark.Token] = []
by_type = {
"SINGLE_LINE_COMMENT": comments,
"MULTI_LINE_COMMENT": comments,
Expand Down Expand Up @@ -504,7 +504,7 @@ class LtimeOfDay(Literal):
"""Long time of day literal value."""
hour: lark.Token
minute: lark.Token
second: lark.Token
second: Optional[lark.Token] = None
meta: Optional[Meta] = meta_field()

@property
Expand All @@ -523,7 +523,7 @@ class Date(Literal):

year: lark.Token
month: lark.Token
day: lark.Token
day: Optional[lark.Token]
meta: Optional[Meta] = meta_field()

@property
Expand Down Expand Up @@ -570,7 +570,7 @@ def from_lark(
day: lark.Token,
hour: lark.Token,
minute: lark.Token,
second: lark.Token,
second: Optional[lark.Token],
) -> DateTime:
return DateTime(
date=Date(year=year, month=month, day=day),
Expand Down Expand Up @@ -602,7 +602,7 @@ def from_lark(
day: lark.Token,
hour: lark.Token,
minute: lark.Token,
second: lark.Token,
second: Optional[lark.Token],
) -> LdateTime:
return LdateTime(
ldate=Ldate(year=year, month=month, day=day),
Expand Down Expand Up @@ -718,7 +718,7 @@ class DirectVariable(Variable):
@staticmethod
def from_lark(
location_prefix: lark.Token,
size_prefix: Optional[VariableSizePrefix],
size_prefix: Optional[lark.Token],
location: lark.Token,
*bits: lark.Token,
):
Expand Down Expand Up @@ -797,12 +797,12 @@ def __str__(self) -> str:
@dataclass
@_rule_handler("field_selector")
class FieldSelector:
field: SymbolicVariable
field: SimpleVariable
dereferenced: bool
meta: Optional[Meta] = meta_field()

@staticmethod
def from_lark(dereferenced: Optional[lark.Token], field: SymbolicVariable):
def from_lark(dereferenced: Optional[lark.Token], field: SimpleVariable):
return FieldSelector(
field=field,
dereferenced=dereferenced is not None
Expand All @@ -815,14 +815,14 @@ def __str__(self) -> str:
@dataclass
@_rule_handler("multi_element_variable")
class MultiElementVariable(Variable):
name: SymbolicVariable
name: SimpleVariable
dereferenced: bool
elements: List[Union[SubscriptList, FieldSelector]]
meta: Optional[Meta] = meta_field()

@staticmethod
def from_lark(
variable_name: SymbolicVariable,
variable_name: SimpleVariable,
*subscript_or_field: Union[SubscriptList, FieldSelector]
) -> MultiElementVariable:
return MultiElementVariable(
Expand Down Expand Up @@ -946,9 +946,10 @@ def full_type_name(self) -> str:

@staticmethod
def from_lark(
*args: lark.Token,
string_type: lark.Token,
length: Optional[lark.Token],
*value_parts: Optional[lark.Token],
) -> StringTypeInitialization:
string_type, length, *value_parts = args
spec = StringTypeSpecification(string_type, length)
_, value = value_parts or [None, None]
return StringTypeInitialization(spec=spec, value=value)
Expand Down Expand Up @@ -1164,9 +1165,11 @@ class ArraySpecification:
meta: Optional[Meta] = meta_field()

@property
def base_type_name(self) -> lark.Token:
def base_type_name(self) -> Union[str, lark.Token]:
"""The base type name."""
return self.type.type_name
if isinstance(self.type, DataType):
return self.type.type_name
return str(self.type.name)

@property
def full_type_name(self) -> str:
Expand Down Expand Up @@ -1241,7 +1244,7 @@ class ArrayTypeInitialization:
meta: Optional[Meta] = meta_field()

@property
def base_type_name(self) -> lark.Token:
def base_type_name(self) -> Union[str, lark.Token]:
"""The base type name."""
return self.spec.base_type_name

Expand Down Expand Up @@ -1587,14 +1590,18 @@ def value(self) -> str:
@staticmethod
def from_lark(
name: SymbolicVariable,
*parameters: ParameterAssignment,
first_parameter: Optional[ParameterAssignment] = None,
*remaining_parameters: ParameterAssignment,
) -> FunctionCall:
# Condition parameters (which may be `None`) to represent empty tuple
if parameters == (None, ):
if first_parameter is None:
parameters = []
else:
parameters = [first_parameter] + list(remaining_parameters)

return FunctionCall(
name=name,
parameters=list(parameters)
parameters=parameters,
)

def __str__(self) -> str:
Expand All @@ -1606,7 +1613,7 @@ def __str__(self) -> str:
@_rule_handler("var1")
class DeclaredVariable:
# Alternate name: VariableWithLocation? MaybeLocatedVariable?
variable: SymbolicVariable
variable: SimpleVariable
location: Optional[Union[IncompleteLocation, Location]]
meta: Optional[Meta] = meta_field()

Expand Down Expand Up @@ -2637,7 +2644,7 @@ class IfStatement(Statement):
def from_lark(
if_expr: Expression,
then: Optional[StatementList],
*args: Union[ElseIfClause, ElseClause]
*args: Optional[Union[ElseIfClause, ElseClause]]
) -> IfStatement:
else_clause: Optional[ElseClause] = None
if args and isinstance(args[-1], ElseClause) or args[-1] is None:
Expand Down

0 comments on commit b6d7723

Please sign in to comment.