From 7ce594d02996e3eecda24f32613e2e5e7bc38f7f Mon Sep 17 00:00:00 2001 From: Ken Lauer Date: Wed, 1 Jun 2022 08:58:13 -0700 Subject: [PATCH 1/4] FIX: further annotation-related fixes --- blark/transform.py | 49 ++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/blark/transform.py b/blark/transform.py index 3f183ad..0c6a2d9 100644 --- a/blark/transform.py +++ b/blark/transform.py @@ -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, @@ -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 @@ -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 @@ -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), @@ -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), @@ -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, ): @@ -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 @@ -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( @@ -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) @@ -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: @@ -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 @@ -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: @@ -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() @@ -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: From 330bb11a1ec2a82a1a0261e428625a061bb07a2e Mon Sep 17 00:00:00 2001 From: Ken Lauer Date: Wed, 1 Jun 2022 09:03:39 -0700 Subject: [PATCH 2/4] CI: don't bother with my feature branches --- .github/workflows/lint.yml | 6 +++++- .github/workflows/pytest.yml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 7bbb339..4608872 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,6 +1,10 @@ name: lint -on: [push, pull_request] +on: + push: + branches: + - master + pull_request: {} jobs: lint: diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 21381a1..9d56d08 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -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: From f63195141a904c7bb739985f95b49c8d3da25890 Mon Sep 17 00:00:00 2001 From: Ken Lauer Date: Wed, 1 Jun 2022 14:00:27 -0700 Subject: [PATCH 3/4] CI: code coverage settings --- .github/codecov.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/codecov.yml diff --git a/.github/codecov.yml b/.github/codecov.yml new file mode 100644 index 0000000..b6bd1f7 --- /dev/null +++ b/.github/codecov.yml @@ -0,0 +1,23 @@ +codecov: + require_ci_to_pass: yes + +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] + +github_checks: + annotations: true From fb45aeeff606abbba5bc8d35f06be1b73149bd8a Mon Sep 17 00:00:00 2001 From: Ken Lauer Date: Wed, 1 Jun 2022 14:07:34 -0700 Subject: [PATCH 4/4] CI: tweak codecov settings --- .github/codecov.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/codecov.yml b/.github/codecov.yml index b6bd1f7..4b48127 100644 --- a/.github/codecov.yml +++ b/.github/codecov.yml @@ -1,6 +1,3 @@ -codecov: - require_ci_to_pass: yes - coverage: precision: 1 round: down @@ -18,6 +15,3 @@ comment: 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] - -github_checks: - annotations: true