From 0b8012b8e1b985d8d5d15e163d5e25aa4a168970 Mon Sep 17 00:00:00 2001 From: James Westman Date: Thu, 27 Oct 2022 13:15:58 -0500 Subject: [PATCH] Support Python 3.9 Remove the '|' syntax for type unions, since it's a 3.10 feature, and set mypy to check with version 3.9. --- .gitlab-ci.yml | 2 +- blueprintcompiler/language/gobject_object.py | 2 +- blueprintcompiler/language/gobject_signal.py | 5 +++-- blueprintcompiler/language/gtkbuilder_template.py | 3 ++- blueprintcompiler/language/values.py | 5 +++-- blueprintcompiler/outputs/xml/__init__.py | 6 ++++-- blueprintcompiler/outputs/xml/xml_emitter.py | 6 ++++-- 7 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2790cd1..6982239 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,7 +6,7 @@ build: image: registry.gitlab.gnome.org/jwestman/blueprint-compiler stage: build script: - - mypy blueprintcompiler + - mypy --python-version=3.9 blueprintcompiler - coverage run -m unittest - coverage report - coverage html diff --git a/blueprintcompiler/language/gobject_object.py b/blueprintcompiler/language/gobject_object.py index 711795c..2647a5a 100644 --- a/blueprintcompiler/language/gobject_object.py +++ b/blueprintcompiler/language/gobject_object.py @@ -45,7 +45,7 @@ class Object(AstNode): return self.tokens["id"] @property - def class_name(self) -> ClassName | None: + def class_name(self) -> T.Optional[ClassName]: return self.children[ClassName][0] @property diff --git a/blueprintcompiler/language/gobject_signal.py b/blueprintcompiler/language/gobject_signal.py index ba1b48b..1cba801 100644 --- a/blueprintcompiler/language/gobject_signal.py +++ b/blueprintcompiler/language/gobject_signal.py @@ -17,6 +17,7 @@ # # SPDX-License-Identifier: LGPL-3.0-or-later +import typing as T from .gtkbuilder_template import Template from .common import * @@ -45,7 +46,7 @@ class Signal(AstNode): return self.tokens["name"] @property - def detail_name(self) -> str | None: + def detail_name(self) -> T.Optional[str]: return self.tokens["detail_name"] @property @@ -53,7 +54,7 @@ class Signal(AstNode): return self.tokens["handler"] @property - def object_id(self) -> str | None: + def object_id(self) -> T.Optional[str]: return self.tokens["object"] @property diff --git a/blueprintcompiler/language/gtkbuilder_template.py b/blueprintcompiler/language/gtkbuilder_template.py index 35ef4f2..7392782 100644 --- a/blueprintcompiler/language/gtkbuilder_template.py +++ b/blueprintcompiler/language/gtkbuilder_template.py @@ -17,6 +17,7 @@ # # SPDX-License-Identifier: LGPL-3.0-or-later +import typing as T from .gobject_object import Object, ObjectContent from .common import * @@ -39,7 +40,7 @@ class Template(Object): return self.tokens["id"] @property - def class_name(self) -> ClassName | None: + def class_name(self) -> T.Optional[ClassName]: if len(self.children[ClassName]): return self.children[ClassName][0] else: diff --git a/blueprintcompiler/language/values.py b/blueprintcompiler/language/values.py index 5030774..2a889ec 100644 --- a/blueprintcompiler/language/values.py +++ b/blueprintcompiler/language/values.py @@ -17,6 +17,7 @@ # # SPDX-License-Identifier: LGPL-3.0-or-later +import typing as T from .common import * from .types import TypeName @@ -50,7 +51,7 @@ class TranslatedStringValue(Value): return self.tokens["value"] @property - def context(self) -> str | None: + def context(self) -> T.Optional[str]: return self.tokens["context"] @@ -116,7 +117,7 @@ class NumberValue(Value): grammar = UseNumber("value") @property - def value(self) -> int | float: + def value(self) -> T.Union[int, float]: return self.tokens["value"] @validate() diff --git a/blueprintcompiler/outputs/xml/__init__.py b/blueprintcompiler/outputs/xml/__init__.py index 2cbb425..e7e33d9 100644 --- a/blueprintcompiler/outputs/xml/__init__.py +++ b/blueprintcompiler/outputs/xml/__init__.py @@ -1,3 +1,5 @@ +import typing as T + from .. import OutputFormat from ...language import * from .xml_emitter import XmlEmitter @@ -45,7 +47,7 @@ class XmlOutput(OutputFormat): self._emit_object_or_template(obj, xml) xml.end_tag() - def _emit_object_or_template(self, obj: Object | Template, xml: XmlEmitter): + def _emit_object_or_template(self, obj: T.Union[Object, Template], xml: XmlEmitter): for child in obj.content.children: if isinstance(child, Property): self._emit_property(child, xml) @@ -123,7 +125,7 @@ class XmlOutput(OutputFormat): def _translated_string_attrs( self, translated: TranslatedStringValue - ) -> T.Dict[str, str | None]: + ) -> T.Dict[str, T.Optional[str]]: return { "translatable": "true", "context": translated.context, diff --git a/blueprintcompiler/outputs/xml/xml_emitter.py b/blueprintcompiler/outputs/xml/xml_emitter.py index def58b5..374b406 100644 --- a/blueprintcompiler/outputs/xml/xml_emitter.py +++ b/blueprintcompiler/outputs/xml/xml_emitter.py @@ -17,6 +17,8 @@ # # SPDX-License-Identifier: LGPL-3.0-or-later +import typing as T + from xml.sax import saxutils from blueprintcompiler.gir import GirType @@ -30,7 +32,7 @@ class XmlEmitter: self._tag_stack = [] self._needs_newline = False - def start_tag(self, tag, **attrs: str | GirType | ClassName | bool | None): + def start_tag(self, tag, **attrs: T.Union[str, GirType, ClassName, bool, None]): self._indent() self.result += f"<{tag}" for key, val in attrs.items(): @@ -56,7 +58,7 @@ class XmlEmitter: self.result += f"" self._needs_newline = True - def put_text(self, text: str | int | float): + def put_text(self, text: T.Union[str, int, float]): self.result += saxutils.escape(str(text)) self._needs_newline = False