Python 3.10 related fix

This commit is contained in:
Ondrej Mular 2020-11-26 09:40:35 +01:00
parent 08d2960343
commit f00a25ef21
2 changed files with 58 additions and 3 deletions

View File

@ -0,0 +1,52 @@
From 9f7c50b9bfaafd5d8368eeb34014e65655318ac0 Mon Sep 17 00:00:00 2001
From: Ondrej Mular <omular@redhat.com>
Date: Wed, 25 Nov 2020 10:16:26 +0100
Subject: [PATCH] fix getting type hints annotations in python 3.10
In Python 3.10 a postponed evaluation of type hint annotations [1] will
be a default [2]. To access annotated types as objects instead of
strings, we need to use function `typing.get_type_hints(...)`
[1]: https://www.python.org/dev/peps/pep-0563/
[2]: https://docs.python.org/3.10/whatsnew/3.10.html#pep-563-postponed-evaluation-of-annotations-becomes-default
---
pcs/cli/reports/messages.py | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/pcs/cli/reports/messages.py b/pcs/cli/reports/messages.py
index ecf74561..7582aec0 100644
--- a/pcs/cli/reports/messages.py
+++ b/pcs/cli/reports/messages.py
@@ -1,4 +1,5 @@
from typing import (
+ get_type_hints,
Any,
Dict,
Mapping,
@@ -44,7 +45,7 @@ class CliReportMessageCustom(CliReportMessage):
def __init__(self, dto_obj: dto.ReportItemMessageDto) -> None:
super().__init__(dto_obj)
- self._obj = self.__class__.__annotations__.get("_obj")( # type: ignore
+ self._obj = get_type_hints(self.__class__).get("_obj")( # type: ignore
**dto_obj.payload
)
@@ -446,9 +447,11 @@ def _create_report_msg_map() -> Dict[str, type]:
result: Dict[str, type] = {}
for report_msg_cls in get_all_subclasses(CliReportMessageCustom):
# pylint: disable=protected-access
- code = report_msg_cls.__annotations__.get(
- "_obj", item.ReportItemMessage
- )._code
+ code = (
+ get_type_hints(report_msg_cls)
+ .get("_obj", item.ReportItemMessage)
+ ._code
+ )
if code:
if code in result:
raise AssertionError()
--
2.27.0

View File

@ -1,6 +1,6 @@
Name: pcs
Version: 0.10.7
Release: 1%{?dist}
Release: 2%{?dist}
# https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses
# GPLv2: pcs
# MIT: ember, handlebars, jquery, jquery-ui
@ -47,7 +47,7 @@ Source44: https://github.com/konradhalas/dacite/archive/v%{dacite_version}/dacit
Source100: https://github.com/idevat/pcs-web-ui/archive/%{ui_commit}/%{ui_src_name}.tar.gz
Source101: https://github.com/idevat/pcs-web-ui/releases/download/%{ui_commit}/pcs-web-ui-node-modules-%{ui_commit}.tar.xz
# Patch0: name.patch
Patch0: fix-getting-type-hints-annotations-in-python-3.10.patch
# git for patches
BuildRequires: git
@ -207,7 +207,7 @@ update_times_patch(){
update_times ${patch_file_name} `diffstat -p1 -l ${patch_file_name}`
}
# update_times_patch %%{PATCH0}
update_times_patch %{PATCH0}
# prepare dirs/files necessary for building web ui
# inside SOURCE100 is only directory %%{ui_src_name}
@ -394,6 +394,9 @@ remove_all_tests
%license pyagentx_LICENSE.txt
%changelog
* Thu Nov 26 2020 Ondrej Mular <omular@redhat.com> - 0.10.7-2
- Python 3.10 related fix
* Wed Sep 30 2020 Miroslav Lisik <mlisik@redhat.com> - 0.10.7-1
- Rebased to latest upstream sources (see CHANGELOG.md)
- Added dependency on python packages pyparsing and dateutil