From a97050858ccaccbc599cec73f6b5ef7b8fa9eb69 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 14:45:20 +0300 Subject: [PATCH 01/14] to dataclasses --- adaptive_hockey_federation/core/__init__.py | 0 adaptive_hockey_federation/core/user_card.py | 64 +++++++++ adaptive_hockey_federation/parser/parser_1.py | 124 +++++++++++++++++ adaptive_hockey_federation/parser/parser_2.py | 128 ++++++++++++++++++ ...260\320\274\320\270 \320\233\320\242.xlsx" | Bin 0 -> 39612 bytes ...\274\320\260\320\275\320\264\321\213.xlsx" | Bin 0 -> 59032 bytes poetry.lock | 27 +++- pyproject.toml | 3 +- 8 files changed, 344 insertions(+), 2 deletions(-) create mode 100644 adaptive_hockey_federation/core/__init__.py create mode 100644 adaptive_hockey_federation/core/user_card.py create mode 100644 adaptive_hockey_federation/parser/parser_1.py create mode 100644 adaptive_hockey_federation/parser/parser_2.py create mode 100644 "adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" create mode 100644 "adaptive_hockey_federation/parser/\320\241\320\276\321\201\321\202\320\260\320\262 \320\272\320\276\320\274\320\260\320\275\320\264\321\213.xlsx" diff --git a/adaptive_hockey_federation/core/__init__.py b/adaptive_hockey_federation/core/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/adaptive_hockey_federation/core/user_card.py b/adaptive_hockey_federation/core/user_card.py new file mode 100644 index 00000000..54316d2d --- /dev/null +++ b/adaptive_hockey_federation/core/user_card.py @@ -0,0 +1,64 @@ +from dataclasses import dataclass +from datetime import date + + +@dataclass +class BaseUserInfo: + """Основной класс с обязательными полями. + """ + name: str + surname: str + date_of_birth: date + team: str + + +@dataclass +class HockeyData(BaseUserInfo): + """Класс с необязательными полями из документов формата docx. + """ + patronymic: str = None + birth_certificate: str = None + passport: str = None + position: str = None + player_number: int = None + is_assistant: bool = False + is_captain: bool = False + + +@dataclass +class ExcelDataPlayer_1(BaseUserInfo): + """Класс с необязательными полями из документов формата xlsx. + """ + position: str = None + classification: str = None + + +@dataclass +class ExcelDataCoach_1: + """Класс с необязательными полями из документов формата xlsx. + """ + name: str + surname: str + team: str + role: str = None + + +@dataclass +class ExcelData_2(BaseUserInfo): + """Класс с необязательными полями из документов формата xlsx. + """ + classification: str + riding_face_forward: int = None + riding_backwards: int = None + cast: int = None + dribbling: int = None + team_hockey: int = None + result: float = None + + +@dataclass +class ExcelDataFirstSheet_2(BaseUserInfo): + """Класс с необязательными полями из документов формата xlsx. + """ + classification: str + revision: int diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py new file mode 100644 index 00000000..df62b2e0 --- /dev/null +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -0,0 +1,124 @@ +from typing import Dict, List, Tuple + +import openpyxl + +from adaptive_hockey_federation.core.user_card import ( + ExcelDataCoach_1, + ExcelDataPlayer_1, +) + +WORKBOOK_PATH = 'adaptive_hockey_federation/parser/Состав команды.xlsx' + + +def build_dict( + user_dict: Dict, + user_list: str, + key: str, + value_index: int +) -> Dict: + try: + user_dict[key] = user_list[value_index] + except: + user_dict[key] = None + return user_dict + + +def get_players( + team_name: str, + lst: List +) -> List[Dict]: + player_list = [] + for user in lst: + user_dict = { + 'Команда': None, + 'Имя': None, + 'Фамилия': None, + 'Дата рождения': None, + 'Позиция': None, + 'Класс': None} + user_dict['Команда'] = team_name + user_dict = build_dict(user_dict, user, 'Имя', 0) + user_dict = build_dict(user_dict, user, 'Фамилия', 1) + user_dict = build_dict(user_dict, user, 'Дата рождения', 2) + user_dict = build_dict(user_dict, user, 'Позиция', 3) + user_dict = build_dict(user_dict, user, 'Класс', 4) + if user_dict['Имя'] is not None: + player_list.append(user_dict) + return player_list + + +def get_coaches( + team_name: str, + lst: List +) -> List[Dict]: + coach_list = [] + for coach in lst: + user_coach_dict = { + 'Команда': None, + 'Имя': None, + 'Фамилия': None, + 'Роль': None + } + user_coach_dict['Команда'] = team_name + user_coach_dict = build_dict(user_coach_dict, coach, 'Имя', 0) + user_coach_dict = build_dict(user_coach_dict, coach, 'Фамилия', 1) + user_coach_dict = build_dict(user_coach_dict, coach, 'Роль', 3) + if team_name is not None: + if ( + user_coach_dict['Имя'] + and user_coach_dict['Фамилия'] + and user_coach_dict['Роль'] + ): + coach_list.append(user_coach_dict) + return coach_list + + +def parse_team_composition(sheet) -> List: + lst = [] + team_name = sheet['F1'].value + for i in range(5, sheet.max_row): + user_list = [] + for col in sheet.iter_cols(2, sheet.max_column - 1): + value = col[i].value + if value != 'РУКОВОДИТЕЛИ': + user_list.append(value) + else: + lst.append(1) + lst.append(user_list) + return to_list_of_classes(lst, team_name) + + +def to_list_of_classes( + lst: List, + team_name: str +) -> Tuple[List[ExcelDataCoach_1, ExcelDataPlayer_1]]: + index = lst.index(1) + coaches_list = get_coaches(team_name, lst[index + 3: len(lst)]) + coaches = [] + for i in coaches_list: + coach = ExcelDataCoach_1( + name=i['Имя'], + surname=i['Фамилия'], + team=i['Команда'], + role=i['Роль'] + ) + coaches.append(coach) + players_list = get_players(team_name, lst[0: index]) + players = [] + for i in players_list: + player = ExcelDataPlayer_1( + name=i['Имя'], + surname=i['Фамилия'], + date_of_birth=i.get('Дата рождения'), + team=i['Команда'], + position=i['Позиция'], + classification=i['Класс'] + ) + players.append(player) + return players, coaches + + +book = openpyxl.load_workbook(WORKBOOK_PATH) + +for sheet in book: + parse_team_composition(sheet) diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py new file mode 100644 index 00000000..aabbd25a --- /dev/null +++ b/adaptive_hockey_federation/parser/parser_2.py @@ -0,0 +1,128 @@ +from typing import Dict, List + +import openpyxl + +from adaptive_hockey_federation.core.user_card import ( + ExcelData_2, + ExcelDataFirstSheet_2, +) + +WORKBOOK_PATH = ('adaptive_hockey_federation/parser/' + 'Копия Сводная таблица по командам с классами ЛТ.xlsx') + + +def parse_first_sheet(sheet) -> List: + lst = [] + for i in range(0, sheet.max_row): + player_list = [] + for col in sheet.iter_cols(1, sheet.max_column): + value = col[i].value + player_list.append(value) + lst.append(player_list) + return get_players_first_sheet(lst) + + +def get_players_first_sheet(lst: List) -> List[Dict]: + result_list = [] + for i in lst: + player_dict = { + 'Команда': i[0], + 'Имя': i[1].split()[0], + 'Фамилия': i[1].split()[1], + 'Дата рождения': i[2], + 'Класс': i[3], + 'Пересмотр (начало сезона)': i[4] + } + result_list.append(player_dict) + return to_list_of_classes_first_sheet( + result_list + ) + + +def to_list_of_classes_first_sheet( + player_list: List[Dict] +) -> List[ExcelDataFirstSheet_2]: + players = [] + for i in player_list: + player = ExcelDataFirstSheet_2( + team=i.get('Команда'), + name=i.get('Имя'), + surname=i.get('Фамилия'), + date_of_birth=i.get('Дата'), + classification=i.get('Класс'), + revision=i.get('Пересмотр (начало сезона)') + ) + players.append(player) + return players + + +def parse_sheets(sheet) -> List: + team_name = sheet['A1'].value + lst = [] + for i in range(3, sheet.max_row + 1): + row_list = [] + for j in range(1, sheet.max_column + 1): + value = sheet.cell(row=i, column=j).value + row_list.append(value) + lst.append(row_list) + return get_players(lst, team_name) + + +def get_players( + lst: List, + team_name: str +) -> List[Dict]: + player_list = [] + for i in lst: + if i[0] is not None: + try: + koeff = (i[3] + i[4] + i[5] + i[6] + i[7]) / 5 + except: + koeff = None + player_dict = { + 'Команда': team_name, + 'Имя': i[0].split()[0], + 'Фамилия': i[0].split()[1], + 'Дата рождения': i[1], + 'Класс': i[2], + 'Катание лицом вперед': i[3], + 'Катание спиной вперед': i[4], + 'Бросок': i[5], + 'Дриблинг': i[6], + 'Командный хоккей': i[7], + 'ИТОГО': koeff + } + player_list.append(player_dict) + return to_list_of_classes(player_list) + + +def to_list_of_classes( + player_list: List[Dict] +) -> List[ExcelData_2]: + players = [] + for i in player_list: + player = ExcelData_2( + team=i.get('Команда'), + name=i.get('Имя'), + surname=i.get('Фамилия'), + date_of_birth=i.get('Дата'), + classification=i.get('Класс'), + riding_face_forward=i.get('Катание лицом вперед'), + riding_backwards=i.get('Катание спиной вперед'), + cast=i.get('Бросок'), + dribbling=i.get('Дриблинг'), + team_hockey=i.get('Командный хоккей'), + result=i.get('ИТОГО') + ) + players.append(player) + return players + + +book = openpyxl.load_workbook(WORKBOOK_PATH) + + +for i in book: + if i.title == 'Реестр классификации': + parse_first_sheet(i) + else: + parse_sheets(i) diff --git "a/adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" "b/adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" new file mode 100644 index 0000000000000000000000000000000000000000..ba626231656b7a02d88a387a57264ae6f82f9f16 GIT binary patch literal 39612 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 Date: Wed, 18 Oct 2023 15:00:39 +0300 Subject: [PATCH 02/14] to dataclasses --- adaptive_hockey_federation/parser/exception.py | 2 ++ adaptive_hockey_federation/parser/parser_1.py | 3 ++- adaptive_hockey_federation/parser/parser_2.py | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 adaptive_hockey_federation/parser/exception.py diff --git a/adaptive_hockey_federation/parser/exception.py b/adaptive_hockey_federation/parser/exception.py new file mode 100644 index 00000000..c55dfaf8 --- /dev/null +++ b/adaptive_hockey_federation/parser/exception.py @@ -0,0 +1,2 @@ +class ExceptionForFlake8(Exception): + pass diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py index df62b2e0..cfc98939 100644 --- a/adaptive_hockey_federation/parser/parser_1.py +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -6,6 +6,7 @@ ExcelDataCoach_1, ExcelDataPlayer_1, ) +from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 WORKBOOK_PATH = 'adaptive_hockey_federation/parser/Состав команды.xlsx' @@ -18,7 +19,7 @@ def build_dict( ) -> Dict: try: user_dict[key] = user_list[value_index] - except: + except ExceptionForFlake8: user_dict[key] = None return user_dict diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py index aabbd25a..0f362dca 100644 --- a/adaptive_hockey_federation/parser/parser_2.py +++ b/adaptive_hockey_federation/parser/parser_2.py @@ -6,6 +6,7 @@ ExcelData_2, ExcelDataFirstSheet_2, ) +from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 WORKBOOK_PATH = ('adaptive_hockey_federation/parser/' 'Копия Сводная таблица по командам с классами ЛТ.xlsx') @@ -77,7 +78,7 @@ def get_players( if i[0] is not None: try: koeff = (i[3] + i[4] + i[5] + i[6] + i[7]) / 5 - except: + except ExceptionForFlake8: koeff = None player_dict = { 'Команда': team_name, From 1d774dddb81f8ed8c4f00e31c3846eb7503f216f Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 15:05:50 +0300 Subject: [PATCH 03/14] to dataclasses --- adaptive_hockey_federation/parser/parser_1.py | 8 ++------ adaptive_hockey_federation/parser/parser_2.py | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py index cfc98939..484d04b6 100644 --- a/adaptive_hockey_federation/parser/parser_1.py +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -1,12 +1,8 @@ +from parser.exception import ExceptionForFlake8 from typing import Dict, List, Tuple import openpyxl - -from adaptive_hockey_federation.core.user_card import ( - ExcelDataCoach_1, - ExcelDataPlayer_1, -) -from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 +from core.user_card import ExcelDataCoach_1, ExcelDataPlayer_1 WORKBOOK_PATH = 'adaptive_hockey_federation/parser/Состав команды.xlsx' diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py index 0f362dca..44759b91 100644 --- a/adaptive_hockey_federation/parser/parser_2.py +++ b/adaptive_hockey_federation/parser/parser_2.py @@ -1,12 +1,8 @@ +from parser.exception import ExceptionForFlake8 from typing import Dict, List import openpyxl - -from adaptive_hockey_federation.core.user_card import ( - ExcelData_2, - ExcelDataFirstSheet_2, -) -from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 +from core.user_card import ExcelData_2, ExcelDataFirstSheet_2 WORKBOOK_PATH = ('adaptive_hockey_federation/parser/' 'Копия Сводная таблица по командам с классами ЛТ.xlsx') From 896785a0a01dc926ad356535607504d73f4a4fdb Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 15:21:20 +0300 Subject: [PATCH 04/14] to dataclasses --- adaptive_hockey_federation/parser/parser_1.py | 10 +++++++--- adaptive_hockey_federation/parser/parser_2.py | 11 +++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py index 484d04b6..6264603c 100644 --- a/adaptive_hockey_federation/parser/parser_1.py +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -1,8 +1,12 @@ -from parser.exception import ExceptionForFlake8 from typing import Dict, List, Tuple import openpyxl -from core.user_card import ExcelDataCoach_1, ExcelDataPlayer_1 + +from adaptive_hockey_federation.core.user_card import ( + ExcelDataCoach_1, + ExcelDataPlayer_1, +) +from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 WORKBOOK_PATH = 'adaptive_hockey_federation/parser/Состав команды.xlsx' @@ -88,7 +92,7 @@ def parse_team_composition(sheet) -> List: def to_list_of_classes( lst: List, team_name: str -) -> Tuple[List[ExcelDataCoach_1, ExcelDataPlayer_1]]: +) -> Tuple[ExcelDataCoach_1, ExcelDataPlayer_1]: index = lst.index(1) coaches_list = get_coaches(team_name, lst[index + 3: len(lst)]) coaches = [] diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py index 44759b91..a0b223ce 100644 --- a/adaptive_hockey_federation/parser/parser_2.py +++ b/adaptive_hockey_federation/parser/parser_2.py @@ -1,8 +1,11 @@ -from parser.exception import ExceptionForFlake8 from typing import Dict, List import openpyxl -from core.user_card import ExcelData_2, ExcelDataFirstSheet_2 + +from adaptive_hockey_federation.core.user_card import ( + ExcelData_2, + ExcelDataFirstSheet_2, +) WORKBOOK_PATH = ('adaptive_hockey_federation/parser/' 'Копия Сводная таблица по командам с классами ЛТ.xlsx') @@ -72,9 +75,9 @@ def get_players( player_list = [] for i in lst: if i[0] is not None: - try: + if i[3] and i[4] and i[5] and i[6] and i[7]: koeff = (i[3] + i[4] + i[5] + i[6] + i[7]) / 5 - except ExceptionForFlake8: + else: koeff = None player_dict = { 'Команда': team_name, From 7e80c8a455f01594db9ba6831fe9c234b12eb284 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 22:24:25 +0300 Subject: [PATCH 05/14] output to classes --- adaptive_hockey_federation/core/user_card.py | 63 ++++++++++--------- adaptive_hockey_federation/parser/parser_1.py | 19 +++--- adaptive_hockey_federation/parser/parser_2.py | 8 +-- 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/adaptive_hockey_federation/core/user_card.py b/adaptive_hockey_federation/core/user_card.py index 54316d2d..aaed3291 100644 --- a/adaptive_hockey_federation/core/user_card.py +++ b/adaptive_hockey_federation/core/user_card.py @@ -1,64 +1,71 @@ from dataclasses import dataclass from datetime import date +from typing import Union @dataclass class BaseUserInfo: """Основной класс с обязательными полями. """ - name: str - surname: str - date_of_birth: date - team: str + name: Union[str, None] + surname: Union[str, None] + date_of_birth: Union[date, None] + team: Union[str, None] @dataclass class HockeyData(BaseUserInfo): """Класс с необязательными полями из документов формата docx. """ - patronymic: str = None - birth_certificate: str = None - passport: str = None - position: str = None - player_number: int = None + patronymic: Union[str, None] + birth_certificate: Union[str, None] + passport: Union[str, None] + position: Union[str, None] + player_number: Union[int, None] is_assistant: bool = False is_captain: bool = False @dataclass class ExcelDataPlayer_1(BaseUserInfo): - """Класс с необязательными полями из документов формата xlsx. + """Класс с необязательными полями из таблицы "Состав команды.xlsx". + Информация об игроках. """ - position: str = None - classification: str = None + position: Union[str, None] + classification: Union[str, None] @dataclass class ExcelDataCoach_1: - """Класс с необязательными полями из документов формата xlsx. + """Класс с необязательными полями из таблицы "Состав команды.xlsx". + Информация о руководительском составе. """ - name: str - surname: str - team: str - role: str = None + name: Union[str, None] + surname: Union[str, None] + team: Union[str, None] + role: Union[str, None] @dataclass class ExcelData_2(BaseUserInfo): - """Класс с необязательными полями из документов формата xlsx. + """Класс с необязательными полями из таблицы + "Копия Сводная таблица по командам с классами ЛТ.xlsx". + Информация из всех листов, кроме первого """ - classification: str - riding_face_forward: int = None - riding_backwards: int = None - cast: int = None - dribbling: int = None - team_hockey: int = None - result: float = None + classification: Union[float, None] + riding_face_forward: Union[float, None] + riding_backwards: Union[float, None] + cast: Union[float, None] + dribbling: Union[float, None] + team_hockey: Union[float, None] + result: Union[float, None] @dataclass class ExcelDataFirstSheet_2(BaseUserInfo): - """Класс с необязательными полями из документов формата xlsx. + """Класс с необязательными полями из таблицы + "Копия Сводная таблица по командам с классами ЛТ.xlsx". + Информация из первого листа. """ - classification: str - revision: int + classification: Union[str, None] + revision: Union[int, None] diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py index 6264603c..7d7240fb 100644 --- a/adaptive_hockey_federation/parser/parser_1.py +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -1,4 +1,4 @@ -from typing import Dict, List, Tuple +from typing import Any, Dict, List, Tuple import openpyxl @@ -31,13 +31,12 @@ def get_players( player_list = [] for user in lst: user_dict = { - 'Команда': None, + 'Команда': team_name, 'Имя': None, 'Фамилия': None, 'Дата рождения': None, 'Позиция': None, 'Класс': None} - user_dict['Команда'] = team_name user_dict = build_dict(user_dict, user, 'Имя', 0) user_dict = build_dict(user_dict, user, 'Фамилия', 1) user_dict = build_dict(user_dict, user, 'Дата рождения', 2) @@ -55,12 +54,11 @@ def get_coaches( coach_list = [] for coach in lst: user_coach_dict = { - 'Команда': None, + 'Команда': team_name, 'Имя': None, 'Фамилия': None, 'Роль': None } - user_coach_dict['Команда'] = team_name user_coach_dict = build_dict(user_coach_dict, coach, 'Имя', 0) user_coach_dict = build_dict(user_coach_dict, coach, 'Фамилия', 1) user_coach_dict = build_dict(user_coach_dict, coach, 'Роль', 3) @@ -74,11 +72,14 @@ def get_coaches( return coach_list -def parse_team_composition(sheet) -> List: - lst = [] +def parse_team_composition(sheet) -> Tuple[ + List[ExcelDataPlayer_1], + List[ExcelDataCoach_1] +]: + lst: List[Any] = [] team_name = sheet['F1'].value for i in range(5, sheet.max_row): - user_list = [] + user_list: List[Any] = [] for col in sheet.iter_cols(2, sheet.max_column - 1): value = col[i].value if value != 'РУКОВОДИТЕЛИ': @@ -92,7 +93,7 @@ def parse_team_composition(sheet) -> List: def to_list_of_classes( lst: List, team_name: str -) -> Tuple[ExcelDataCoach_1, ExcelDataPlayer_1]: +) -> Tuple[List[ExcelDataPlayer_1], List[ExcelDataCoach_1]]: index = lst.index(1) coaches_list = get_coaches(team_name, lst[index + 3: len(lst)]) coaches = [] diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py index a0b223ce..ba2c2d81 100644 --- a/adaptive_hockey_federation/parser/parser_2.py +++ b/adaptive_hockey_federation/parser/parser_2.py @@ -1,4 +1,4 @@ -from typing import Dict, List +from typing import Any, Dict, List import openpyxl @@ -22,7 +22,7 @@ def parse_first_sheet(sheet) -> List: return get_players_first_sheet(lst) -def get_players_first_sheet(lst: List) -> List[Dict]: +def get_players_first_sheet(lst: List) -> List[ExcelDataFirstSheet_2]: result_list = [] for i in lst: player_dict = { @@ -71,7 +71,7 @@ def parse_sheets(sheet) -> List: def get_players( lst: List, team_name: str -) -> List[Dict]: +) -> List[ExcelData_2]: player_list = [] for i in lst: if i[0] is not None: @@ -97,7 +97,7 @@ def get_players( def to_list_of_classes( - player_list: List[Dict] + player_list: List[Dict[Any, Any]] ) -> List[ExcelData_2]: players = [] for i in player_list: From 047b4ba1cbdbfbe4bf9b4ffab49f49758dea5217 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 22:27:28 +0300 Subject: [PATCH 06/14] output to classes --- adaptive_hockey_federation/parser/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 adaptive_hockey_federation/parser/__init__.py diff --git a/adaptive_hockey_federation/parser/__init__.py b/adaptive_hockey_federation/parser/__init__.py new file mode 100644 index 00000000..e69de29b From ab7b85dfa16dc6e5b899602de887279be0315c8d Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 22:29:12 +0300 Subject: [PATCH 07/14] output to classes --- adaptive_hockey_federation/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 adaptive_hockey_federation/__init__.py diff --git a/adaptive_hockey_federation/__init__.py b/adaptive_hockey_federation/__init__.py new file mode 100644 index 00000000..e69de29b From b13a7109292c21b60d8a490a65f4a29997e1df8e Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Wed, 18 Oct 2023 23:18:29 +0300 Subject: [PATCH 08/14] output to classes --- poetry.lock | 13 ++++++++++++- pyproject.toml | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index e52ded2d..1eb7d791 100644 --- a/poetry.lock +++ b/poetry.lock @@ -356,6 +356,17 @@ dev = ["build", "flake8"] doc = ["sphinx"] test = ["pytest", "pytest-cov"] +[[package]] +name = "types-openpyxl" +version = "3.1.0.24" +description = "Typing stubs for openpyxl" +optional = false +python-versions = ">=3.7" +files = [ + {file = "types-openpyxl-3.1.0.24.tar.gz", hash = "sha256:a8f4d594f75ca2b5194a4178ab46c63d0993db26a7e6bb972aa56cbf7d5d544f"}, + {file = "types_openpyxl-3.1.0.24-py3-none-any.whl", hash = "sha256:8f5ea051e1870ae688f3ed075c4f9297eeb62c53897c694282bf0467c278100c"}, +] + [[package]] name = "types-pytz" version = "2023.3.1.1" @@ -487,4 +498,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "e68c8af0bd1211dfade1e583eb717eed13b46590d48a7425dd8130ccb22d6c75" +content-hash = "4fac9b9f969d147b501b405bee8823000b5929d2331d6e508708ebea2e5cf084" diff --git a/pyproject.toml b/pyproject.toml index 24e69d7d..37213352 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ python = "^3.11" django = "^4.2.6" gunicorn = "^21.2.0" openpyxl = "^3.1.2" +types-openpyxl = "^3.1.0.24" [tool.poetry.group.dev.dependencies] isort = "^5.12.0" From b6cb676368aaead120f1b7023c201b1d930af43d Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Thu, 19 Oct 2023 00:23:00 +0300 Subject: [PATCH 09/14] output to classes --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 37213352..4aa7902f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,8 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" -[tool.mypy] +[tool.mypy --no-namespace-packages] + plugins = ["mypy_django_plugin.main"] mypy_path = "./adaptive_hockey_federation" From e61d2925b0398865144cf7f9712e0e115d3e5444 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Thu, 19 Oct 2023 00:26:48 +0300 Subject: [PATCH 10/14] output to classes --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 4aa7902f..943c5003 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,8 +32,8 @@ requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" -[tool.mypy --no-namespace-packages] - +[tool.mypy] +namespace_packages = False plugins = ["mypy_django_plugin.main"] mypy_path = "./adaptive_hockey_federation" From f10ff2b0ed306cb9074d054c38b4dcf7d260b21e Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Thu, 19 Oct 2023 01:13:21 +0300 Subject: [PATCH 11/14] output to classes --- adaptive_hockey_federation/{__init__.py => __init__.pyi} | 0 pyproject.toml | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) rename adaptive_hockey_federation/{__init__.py => __init__.pyi} (100%) diff --git a/adaptive_hockey_federation/__init__.py b/adaptive_hockey_federation/__init__.pyi similarity index 100% rename from adaptive_hockey_federation/__init__.py rename to adaptive_hockey_federation/__init__.pyi diff --git a/pyproject.toml b/pyproject.toml index 943c5003..59891923 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,10 @@ build-backend = "poetry.core.masonry.api" [tool.mypy] -namespace_packages = False +namespace_packages = false plugins = ["mypy_django_plugin.main"] mypy_path = "./adaptive_hockey_federation" + [tool.django-stubs] django_settings_module = "adaptive_hockey_federation.settings" \ No newline at end of file From be20d3431b27d7112db69724668c8854be9a7c07 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Thu, 19 Oct 2023 01:15:49 +0300 Subject: [PATCH 12/14] output to classes --- poetry.lock | 18 +++++++++++++++++- pyproject.toml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 1eb7d791..24f85592 100644 --- a/poetry.lock +++ b/poetry.lock @@ -307,6 +307,22 @@ files = [ [package.dependencies] et-xmlfile = "*" +[[package]] +name = "openpyxl-stubs" +version = "0.1.25" +description = "Type stubs for openpyxl" +optional = false +python-versions = "*" +files = [ + {file = "openpyxl-stubs-0.1.25.tar.gz", hash = "sha256:108b112df072f7645ca356eacdd5730b1bd986c67ae33366a4a13c6879c369e7"}, + {file = "openpyxl_stubs-0.1.25-py3-none-any.whl", hash = "sha256:db29f7804993b4a46b155fc4be45314c14538cb475b00591d8096e5af486abf1"}, +] + +[package.dependencies] +mypy = ">=0.720" +openpyxl = ">=3.0.0" +typing-extensions = ">=3.7.4" + [[package]] name = "packaging" version = "23.2" @@ -498,4 +514,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "4fac9b9f969d147b501b405bee8823000b5929d2331d6e508708ebea2e5cf084" +content-hash = "7d271aacac69b9c861f13155cb9ac29000e1d0c51c346ed4391ab0c5531f4f54" diff --git a/pyproject.toml b/pyproject.toml index 59891923..494b72df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,6 +11,7 @@ django = "^4.2.6" gunicorn = "^21.2.0" openpyxl = "^3.1.2" types-openpyxl = "^3.1.0.24" +openpyxl-stubs = "^0.1.25" [tool.poetry.group.dev.dependencies] isort = "^5.12.0" From 8ed1afa4254969ec575cf111114cdbf0cb7cf591 Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Thu, 19 Oct 2023 11:15:32 +0300 Subject: [PATCH 13/14] output to classes --- .github/workflows/mypy_flake.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/mypy_flake.yml b/.github/workflows/mypy_flake.yml index 8ca24f7e..66efbcf2 100644 --- a/.github/workflows/mypy_flake.yml +++ b/.github/workflows/mypy_flake.yml @@ -25,4 +25,6 @@ jobs: - name: Run Mypy uses: jashparekh/mypy-action@v2 with: - requirements: django-stubs django \ No newline at end of file + requirements: + - django-stubs django + - types-openpyxl \ No newline at end of file From f8c9a23ff2dceaa016448cc9249d7ed91bede4cd Mon Sep 17 00:00:00 2001 From: Stanislav-Gutnikov Date: Mon, 30 Oct 2023 19:50:06 +0300 Subject: [PATCH 14/14] new parse for NEW TABLE!!! --- .py | 945 ++++++++++++++++++ adaptive_hockey_federation/core/user_card.py | 41 +- adaptive_hockey_federation/parser/parser_1.py | 164 ++- adaptive_hockey_federation/parser/parser_2.py | 128 --- ...260\320\274\320\270 \320\233\320\242.xlsx" | Bin 39612 -> 0 bytes ...276\320\262 \320\245\320\224\320\235.xlsx" | Bin 0 -> 10472 bytes ...\274\320\260\320\275\320\264\321\213.xlsx" | Bin 59032 -> 0 bytes 7 files changed, 1004 insertions(+), 274 deletions(-) create mode 100644 .py delete mode 100644 adaptive_hockey_federation/parser/parser_2.py delete mode 100644 "adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" create mode 100644 "adaptive_hockey_federation/parser/\320\240\320\265\320\265\321\201\321\202\321\200 \320\272\320\273\320\260\321\201\321\201\320\276\320\262 \320\245\320\224\320\235.xlsx" delete mode 100644 "adaptive_hockey_federation/parser/\320\241\320\276\321\201\321\202\320\260\320\262 \320\272\320\276\320\274\320\260\320\275\320\264\321\213.xlsx" diff --git a/.py b/.py new file mode 100644 index 00000000..d380a26c --- /dev/null +++ b/.py @@ -0,0 +1,945 @@ +#!/usr/bin/env python3 +r""" +This script will install Poetry and its dependencies in an isolated fashion. + +It will perform the following steps: + * Create a new virtual environment using the built-in venv module, or the virtualenv zipapp if venv is unavailable. + This will be created at a platform-specific path (or `$POETRY_HOME` if `$POETRY_HOME` is set: + - `~/Library/Application Support/pypoetry` on macOS + - `$XDG_DATA_HOME/pypoetry` on Linux/Unix (`$XDG_DATA_HOME` is `~/.local/share` if unset) + - `%APPDATA%\pypoetry` on Windows + * Update pip inside the virtual environment to avoid bugs in older versions. + * Install the latest (or a given) version of Poetry inside this virtual environment using pip. + * Install a `poetry` script into a platform-specific path (or `$POETRY_HOME/bin` if `$POETRY_HOME` is set): + - `~/.local/bin` on Unix + - `%APPDATA%\Python\Scripts` on Windows + * Attempt to inform the user if they need to add this bin directory to their `$PATH`, as well as how to do so. + * Upon failure, write an error log to `poetry-installer-error-.log and restore any previous environment. + +This script performs minimal magic, and should be relatively stable. However, it is optimized for interactive developer +use and trivial pipelines. If you are considering using this script in production, you should consider manually-managed +installs, or use of pipx as alternatives to executing arbitrary, unversioned code from the internet. If you prefer this +script to alternatives, consider maintaining a local copy as part of your infrastructure. + +For full documentation, visit https://python-poetry.org/docs/#installation. +""" # noqa: E501 +import sys + + +# Eager version check so we fail nicely before possible syntax errors +if sys.version_info < (3, 6): # noqa: UP036 + sys.stdout.write("Poetry installer requires Python 3.6 or newer to run!\n") + sys.exit(1) + + +import argparse +import json +import os +import re +import shutil +import subprocess +import sysconfig +import tempfile + +from contextlib import closing +from contextlib import contextmanager +from functools import cmp_to_key +from io import UnsupportedOperation +from pathlib import Path +from typing import Optional +from urllib.request import Request +from urllib.request import urlopen + + +SHELL = os.getenv("SHELL", "") +WINDOWS = sys.platform.startswith("win") or (sys.platform == "cli" and os.name == "nt") +MINGW = sysconfig.get_platform().startswith("mingw") +MACOS = sys.platform == "darwin" + +FOREGROUND_COLORS = { + "black": 30, + "red": 31, + "green": 32, + "yellow": 33, + "blue": 34, + "magenta": 35, + "cyan": 36, + "white": 37, +} + +BACKGROUND_COLORS = { + "black": 40, + "red": 41, + "green": 42, + "yellow": 43, + "blue": 44, + "magenta": 45, + "cyan": 46, + "white": 47, +} + +OPTIONS = {"bold": 1, "underscore": 4, "blink": 5, "reverse": 7, "conceal": 8} + + +def style(fg, bg, options): + codes = [] + + if fg: + codes.append(FOREGROUND_COLORS[fg]) + + if bg: + codes.append(BACKGROUND_COLORS[bg]) + + if options: + if not isinstance(options, (list, tuple)): + options = [options] + + for option in options: + codes.append(OPTIONS[option]) + + return "\033[{}m".format(";".join(map(str, codes))) + + +STYLES = { + "info": style("cyan", None, None), + "comment": style("yellow", None, None), + "success": style("green", None, None), + "error": style("red", None, None), + "warning": style("yellow", None, None), + "b": style(None, None, ("bold",)), +} + + +def is_decorated(): + if WINDOWS: + return ( + os.getenv("ANSICON") is not None + or os.getenv("ConEmuANSI") == "ON" # noqa: SIM112 + or os.getenv("Term") == "xterm" # noqa: SIM112 + ) + + if not hasattr(sys.stdout, "fileno"): + return False + + try: + return os.isatty(sys.stdout.fileno()) + except UnsupportedOperation: + return False + + +def is_interactive(): + if not hasattr(sys.stdin, "fileno"): + return False + + try: + return os.isatty(sys.stdin.fileno()) + except UnsupportedOperation: + return False + + +def colorize(style, text): + if not is_decorated(): + return text + + return f"{STYLES[style]}{text}\033[0m" + + +def string_to_bool(value): + value = value.lower() + + return value in {"true", "1", "y", "yes"} + + +def data_dir() -> Path: + if os.getenv("POETRY_HOME"): + return Path(os.getenv("POETRY_HOME")).expanduser() + + if WINDOWS: + base_dir = Path(_get_win_folder("CSIDL_APPDATA")) + elif MACOS: + base_dir = Path("~/Library/Application Support").expanduser() + else: + base_dir = Path(os.getenv("XDG_DATA_HOME", "~/.local/share")).expanduser() + + base_dir = base_dir.resolve() + return base_dir / "pypoetry" + + +def bin_dir() -> Path: + if os.getenv("POETRY_HOME"): + return Path(os.getenv("POETRY_HOME")).expanduser() / "bin" + + if WINDOWS and not MINGW: + return Path(_get_win_folder("CSIDL_APPDATA")) / "Python/Scripts" + else: + return Path("~/.local/bin").expanduser() + + +def _get_win_folder_from_registry(csidl_name): + import winreg as _winreg + + shell_folder_name = { + "CSIDL_APPDATA": "AppData", + "CSIDL_COMMON_APPDATA": "Common AppData", + "CSIDL_LOCAL_APPDATA": "Local AppData", + }[csidl_name] + + key = _winreg.OpenKey( + _winreg.HKEY_CURRENT_USER, + r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", + ) + path, _ = _winreg.QueryValueEx(key, shell_folder_name) + + return path + + +def _get_win_folder_with_ctypes(csidl_name): + import ctypes + + csidl_const = { + "CSIDL_APPDATA": 26, + "CSIDL_COMMON_APPDATA": 35, + "CSIDL_LOCAL_APPDATA": 28, + }[csidl_name] + + buf = ctypes.create_unicode_buffer(1024) + ctypes.windll.shell32.SHGetFolderPathW(None, csidl_const, None, 0, buf) + + # Downgrade to short path name if have highbit chars. See + # . + has_high_char = False + for c in buf: + if ord(c) > 255: + has_high_char = True + break + if has_high_char: + buf2 = ctypes.create_unicode_buffer(1024) + if ctypes.windll.kernel32.GetShortPathNameW(buf.value, buf2, 1024): + buf = buf2 + + return buf.value + + +if WINDOWS: + try: + from ctypes import windll # noqa: F401 + + _get_win_folder = _get_win_folder_with_ctypes + except ImportError: + _get_win_folder = _get_win_folder_from_registry + + +PRE_MESSAGE = """# Welcome to {poetry}! + +This will download and install the latest version of {poetry}, +a dependency and package manager for Python. + +It will add the `poetry` command to {poetry}'s bin directory, located at: + +{poetry_home_bin} + +You can uninstall at any time by executing this script with the --uninstall option, +and these changes will be reverted. +""" + +POST_MESSAGE = """{poetry} ({version}) is installed now. Great! + +You can test that everything is set up by executing: + +`{test_command}` +""" + +POST_MESSAGE_NOT_IN_PATH = """{poetry} ({version}) is installed now. Great! + +To get started you need {poetry}'s bin directory ({poetry_home_bin}) in your `PATH` +environment variable. +{configure_message} +Alternatively, you can call {poetry} explicitly with `{poetry_executable}`. + +You can test that everything is set up by executing: + +`{test_command}` +""" + +POST_MESSAGE_CONFIGURE_UNIX = """ +Add `export PATH="{poetry_home_bin}:$PATH"` to your shell configuration file. +""" + +POST_MESSAGE_CONFIGURE_FISH = """ +You can execute `set -U fish_user_paths {poetry_home_bin} $fish_user_paths` +""" + +POST_MESSAGE_CONFIGURE_WINDOWS = """""" + + +class PoetryInstallationError(RuntimeError): + def __init__(self, return_code: int = 0, log: Optional[str] = None): + super().__init__() + self.return_code = return_code + self.log = log + + +class VirtualEnvironment: + def __init__(self, path: Path) -> None: + self._path = path + self._bin_path = self._path.joinpath( + "Scripts" if WINDOWS and not MINGW else "bin" + ) + # str is for compatibility with subprocess.run on CPython <= 3.7 on Windows + self._python = str( + self._path.joinpath(self._bin_path, "python.exe" if WINDOWS else "python") + ) + + @property + def path(self): + return self._path + + @property + def bin_path(self): + return self._bin_path + + @classmethod + def make(cls, target: Path) -> "VirtualEnvironment": + if not sys.executable: + raise ValueError( + "Unable to determine sys.executable. Set PATH to a sane value or set it" + " explicitly with PYTHONEXECUTABLE." + ) + + try: + # on some linux distributions (eg: debian), the distribution provided python + # installation might not include ensurepip, causing the venv module to + # fail when attempting to create a virtual environment + # we import ensurepip but do not use it explicitly here + import ensurepip # noqa: F401 + import venv + + builder = venv.EnvBuilder(clear=True, with_pip=True, symlinks=False) + context = builder.ensure_directories(target) + + if ( + WINDOWS + and hasattr(context, "env_exec_cmd") + and context.env_exe != context.env_exec_cmd + ): + target = target.resolve() + + builder.create(target) + except ImportError: + # fallback to using virtualenv package if venv is not available, eg: ubuntu + python_version = f"{sys.version_info.major}.{sys.version_info.minor}" + virtualenv_bootstrap_url = ( + f"https://bootstrap.pypa.io/virtualenv/{python_version}/virtualenv.pyz" + ) + + with tempfile.TemporaryDirectory(prefix="poetry-installer") as temp_dir: + virtualenv_pyz = Path(temp_dir) / "virtualenv.pyz" + request = Request( + virtualenv_bootstrap_url, headers={"User-Agent": "Python Poetry"} + ) + virtualenv_pyz.write_bytes(urlopen(request).read()) + cls.run( + sys.executable, virtualenv_pyz, "--clear", "--always-copy", target + ) + + # We add a special file so that Poetry can detect + # its own virtual environment + target.joinpath("poetry_env").touch() + + env = cls(target) + + # this ensures that outdated system default pip does not trigger older bugs + env.pip("install", "--disable-pip-version-check", "--upgrade", "pip") + + return env + + @staticmethod + def run(*args, **kwargs) -> subprocess.CompletedProcess: + completed_process = subprocess.run( + args, + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + **kwargs, + ) + if completed_process.returncode != 0: + raise PoetryInstallationError( + return_code=completed_process.returncode, + log=completed_process.stdout.decode(), + ) + return completed_process + + def python(self, *args, **kwargs) -> subprocess.CompletedProcess: + return self.run(self._python, *args, **kwargs) + + def pip(self, *args, **kwargs) -> subprocess.CompletedProcess: + return self.python("-m", "pip", *args, **kwargs) + + +class Cursor: + def __init__(self) -> None: + self._output = sys.stdout + + def move_up(self, lines: int = 1) -> "Cursor": + self._output.write(f"\x1b[{lines}A") + + return self + + def move_down(self, lines: int = 1) -> "Cursor": + self._output.write(f"\x1b[{lines}B") + + return self + + def move_right(self, columns: int = 1) -> "Cursor": + self._output.write(f"\x1b[{columns}C") + + return self + + def move_left(self, columns: int = 1) -> "Cursor": + self._output.write(f"\x1b[{columns}D") + + return self + + def move_to_column(self, column: int) -> "Cursor": + self._output.write(f"\x1b[{column}G") + + return self + + def move_to_position(self, column: int, row: int) -> "Cursor": + self._output.write(f"\x1b[{row + 1};{column}H") + + return self + + def save_position(self) -> "Cursor": + self._output.write("\x1b7") + + return self + + def restore_position(self) -> "Cursor": + self._output.write("\x1b8") + + return self + + def hide(self) -> "Cursor": + self._output.write("\x1b[?25l") + + return self + + def show(self) -> "Cursor": + self._output.write("\x1b[?25h\x1b[?0c") + + return self + + def clear_line(self) -> "Cursor": + """ + Clears all the output from the current line. + """ + self._output.write("\x1b[2K") + + return self + + def clear_line_after(self) -> "Cursor": + """ + Clears all the output from the current line after the current position. + """ + self._output.write("\x1b[K") + + return self + + def clear_output(self) -> "Cursor": + """ + Clears all the output from the cursors' current position + to the end of the screen. + """ + self._output.write("\x1b[0J") + + return self + + def clear_screen(self) -> "Cursor": + """ + Clears the entire screen. + """ + self._output.write("\x1b[2J") + + return self + + +class Installer: + METADATA_URL = "https://pypi.org/pypi/poetry/json" + VERSION_REGEX = re.compile( + r"v?(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:\.(\d+))?" + "(" + "[._-]?" + r"(?:(stable|beta|b|rc|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*)?)?" + "([.-]?dev)?" + ")?" + r"(?:\+[^\s]+)?" + ) + + def __init__( + self, + version: Optional[str] = None, + preview: bool = False, + force: bool = False, + accept_all: bool = False, + git: Optional[str] = None, + path: Optional[str] = None, + ) -> None: + self._version = version + self._preview = preview + self._force = force + self._accept_all = accept_all + self._git = git + self._path = path + + self._cursor = Cursor() + self._bin_dir = None + self._data_dir = None + + @property + def bin_dir(self) -> Path: + if not self._bin_dir: + self._bin_dir = bin_dir() + return self._bin_dir + + @property + def data_dir(self) -> Path: + if not self._data_dir: + self._data_dir = data_dir() + return self._data_dir + + @property + def version_file(self) -> Path: + return self.data_dir.joinpath("VERSION") + + def allows_prereleases(self) -> bool: + return self._preview + + def run(self) -> int: + if self._git: + version = self._git + elif self._path: + version = self._path + else: + try: + version, current_version = self.get_version() + except ValueError: + return 1 + + if version is None: + return 0 + + self.display_pre_message() + self.ensure_directories() + + def _is_self_upgrade_supported(x): + mx = self.VERSION_REGEX.match(x) + + if mx is None: + # the version is not semver, perhaps scm or file + # we assume upgrade is supported + return True + + vx = (*tuple(int(p) for p in mx.groups()[:3]), mx.group(5)) + return vx >= (1, 1, 7) + + if version and not _is_self_upgrade_supported(version): + self._write( + colorize( + "warning", + f"You are installing {version}. When using the current installer, " + "this version does not support updating using the 'self update' " + "command. Please use 1.1.7 or later.", + ) + ) + if not self._accept_all: + continue_install = input("Do you want to continue? ([y]/n) ") or "y" + if continue_install.lower() in {"n", "no"}: + return 0 + + try: + self.install(version) + except subprocess.CalledProcessError as e: + raise PoetryInstallationError( + return_code=e.returncode, log=e.output.decode() + ) from e + + self._write("") + self.display_post_message(version) + + return 0 + + def install(self, version): + """ + Installs Poetry in $POETRY_HOME. + """ + self._write( + "Installing {} ({})".format( + colorize("info", "Poetry"), colorize("info", version) + ) + ) + + with self.make_env(version) as env: + self.install_poetry(version, env) + self.make_bin(version, env) + self.version_file.write_text(version) + self._install_comment(version, "Done") + + return 0 + + def uninstall(self) -> int: + if not self.data_dir.exists(): + self._write( + "{} is not currently installed.".format(colorize("info", "Poetry")) + ) + + return 1 + + version = None + if self.version_file.exists(): + version = self.version_file.read_text().strip() + + if version: + self._write( + "Removing {} ({})".format( + colorize("info", "Poetry"), colorize("b", version) + ) + ) + else: + self._write("Removing {}".format(colorize("info", "Poetry"))) + + shutil.rmtree(str(self.data_dir)) + for script in ["poetry", "poetry.bat", "poetry.exe"]: + if self.bin_dir.joinpath(script).exists(): + self.bin_dir.joinpath(script).unlink() + + return 0 + + def _install_comment(self, version: str, message: str): + self._overwrite( + "Installing {} ({}): {}".format( + colorize("info", "Poetry"), + colorize("b", version), + colorize("comment", message), + ) + ) + + @contextmanager + def make_env(self, version: str) -> VirtualEnvironment: + env_path = self.data_dir.joinpath("venv") + env_path_saved = env_path.with_suffix(".save") + + if env_path.exists(): + self._install_comment(version, "Saving existing environment") + if env_path_saved.exists(): + shutil.rmtree(env_path_saved) + shutil.move(env_path, env_path_saved) + + try: + self._install_comment(version, "Creating environment") + yield VirtualEnvironment.make(env_path) + except Exception as e: + if env_path.exists(): + self._install_comment( + version, "An error occurred. Removing partial environment." + ) + shutil.rmtree(env_path) + + if env_path_saved.exists(): + self._install_comment( + version, "Restoring previously saved environment." + ) + shutil.move(env_path_saved, env_path) + + raise e + else: + if env_path_saved.exists(): + shutil.rmtree(env_path_saved, ignore_errors=True) + + def make_bin(self, version: str, env: VirtualEnvironment) -> None: + self._install_comment(version, "Creating script") + self.bin_dir.mkdir(parents=True, exist_ok=True) + + script = "poetry.exe" if WINDOWS else "poetry" + target_script = env.bin_path.joinpath(script) + + if self.bin_dir.joinpath(script).exists(): + self.bin_dir.joinpath(script).unlink() + + try: + self.bin_dir.joinpath(script).symlink_to(target_script) + except OSError: + # This can happen if the user + # does not have the correct permission on Windows + shutil.copy(target_script, self.bin_dir.joinpath(script)) + + def install_poetry(self, version: str, env: VirtualEnvironment) -> None: + self._install_comment(version, "Installing Poetry") + + if self._git: + specification = "git+" + version + elif self._path: + specification = version + else: + specification = f"poetry=={version}" + + env.pip("install", specification) + + def display_pre_message(self) -> None: + kwargs = { + "poetry": colorize("info", "Poetry"), + "poetry_home_bin": colorize("comment", self.bin_dir), + } + self._write(PRE_MESSAGE.format(**kwargs)) + + def display_post_message(self, version: str) -> None: + if WINDOWS: + return self.display_post_message_windows(version) + + if SHELL == "fish": + return self.display_post_message_fish(version) + + return self.display_post_message_unix(version) + + def display_post_message_windows(self, version: str) -> None: + path = self.get_windows_path_var() + + message = POST_MESSAGE_NOT_IN_PATH + if path and str(self.bin_dir) in path: + message = POST_MESSAGE + + self._write( + message.format( + poetry=colorize("info", "Poetry"), + version=colorize("b", version), + poetry_home_bin=colorize("comment", self.bin_dir), + poetry_executable=colorize("b", self.bin_dir.joinpath("poetry")), + configure_message=POST_MESSAGE_CONFIGURE_WINDOWS.format( + poetry_home_bin=colorize("comment", self.bin_dir) + ), + test_command=colorize("b", "poetry --version"), + ) + ) + + def get_windows_path_var(self) -> Optional[str]: + import winreg + + with winreg.ConnectRegistry( + None, winreg.HKEY_CURRENT_USER + ) as root, winreg.OpenKey(root, "Environment", 0, winreg.KEY_ALL_ACCESS) as key: + path, _ = winreg.QueryValueEx(key, "PATH") + + return path + + def display_post_message_fish(self, version: str) -> None: + fish_user_paths = subprocess.check_output( + ["fish", "-c", "echo $fish_user_paths"] + ).decode("utf-8") + + message = POST_MESSAGE_NOT_IN_PATH + if fish_user_paths and str(self.bin_dir) in fish_user_paths: + message = POST_MESSAGE + + self._write( + message.format( + poetry=colorize("info", "Poetry"), + version=colorize("b", version), + poetry_home_bin=colorize("comment", self.bin_dir), + poetry_executable=colorize("b", self.bin_dir.joinpath("poetry")), + configure_message=POST_MESSAGE_CONFIGURE_FISH.format( + poetry_home_bin=colorize("comment", self.bin_dir) + ), + test_command=colorize("b", "poetry --version"), + ) + ) + + def display_post_message_unix(self, version: str) -> None: + paths = os.getenv("PATH", "").split(":") + + message = POST_MESSAGE_NOT_IN_PATH + if paths and str(self.bin_dir) in paths: + message = POST_MESSAGE + + self._write( + message.format( + poetry=colorize("info", "Poetry"), + version=colorize("b", version), + poetry_home_bin=colorize("comment", self.bin_dir), + poetry_executable=colorize("b", self.bin_dir.joinpath("poetry")), + configure_message=POST_MESSAGE_CONFIGURE_UNIX.format( + poetry_home_bin=colorize("comment", self.bin_dir) + ), + test_command=colorize("b", "poetry --version"), + ) + ) + + def ensure_directories(self) -> None: + self.data_dir.mkdir(parents=True, exist_ok=True) + self.bin_dir.mkdir(parents=True, exist_ok=True) + + def get_version(self): + current_version = None + if self.version_file.exists(): + current_version = self.version_file.read_text().strip() + + self._write(colorize("info", "Retrieving Poetry metadata")) + + metadata = json.loads(self._get(self.METADATA_URL).decode()) + + def _compare_versions(x, y): + mx = self.VERSION_REGEX.match(x) + my = self.VERSION_REGEX.match(y) + + vx = (*tuple(int(p) for p in mx.groups()[:3]), mx.group(5)) + vy = (*tuple(int(p) for p in my.groups()[:3]), my.group(5)) + + if vx < vy: + return -1 + elif vx > vy: + return 1 + + return 0 + + self._write("") + releases = sorted( + metadata["releases"].keys(), key=cmp_to_key(_compare_versions) + ) + + if self._version and self._version not in releases: + msg = f"Version {self._version} does not exist." + self._write(colorize("error", msg)) + + raise ValueError(msg) + + version = self._version + if not version: + for release in reversed(releases): + m = self.VERSION_REGEX.match(release) + if m.group(5) and not self.allows_prereleases(): + continue + + version = release + + break + + if current_version == version and not self._force: + self._write( + f'The latest version ({colorize("b", version)}) is already installed.' + ) + + return None, current_version + + return version, current_version + + def _write(self, line) -> None: + sys.stdout.write(line + "\n") + + def _overwrite(self, line) -> None: + if not is_decorated(): + return self._write(line) + + self._cursor.move_up() + self._cursor.clear_line() + self._write(line) + + def _get(self, url): + request = Request(url, headers={"User-Agent": "Python Poetry"}) + + with closing(urlopen(request)) as r: + return r.read() + + +def main(): + parser = argparse.ArgumentParser( + description="Installs the latest (or given) version of poetry" + ) + parser.add_argument( + "-p", + "--preview", + help="install preview version", + dest="preview", + action="store_true", + default=False, + ) + parser.add_argument("--version", help="install named version", dest="version") + parser.add_argument( + "-f", + "--force", + help="install on top of existing version", + dest="force", + action="store_true", + default=False, + ) + parser.add_argument( + "-y", + "--yes", + help="accept all prompts", + dest="accept_all", + action="store_true", + default=False, + ) + parser.add_argument( + "--uninstall", + help="uninstall poetry", + dest="uninstall", + action="store_true", + default=False, + ) + parser.add_argument( + "--path", + dest="path", + action="store", + help=( + "Install from a given path (file or directory) instead of " + "fetching the latest version of Poetry available online." + ), + ) + parser.add_argument( + "--git", + dest="git", + action="store", + help=( + "Install from a git repository instead of fetching the latest version " + "of Poetry available online." + ), + ) + + args = parser.parse_args() + + installer = Installer( + version=args.version or os.getenv("POETRY_VERSION"), + preview=args.preview or string_to_bool(os.getenv("POETRY_PREVIEW", "0")), + force=args.force, + accept_all=args.accept_all + or string_to_bool(os.getenv("POETRY_ACCEPT", "0")) + or not is_interactive(), + path=args.path, + git=args.git, + ) + + if args.uninstall or string_to_bool(os.getenv("POETRY_UNINSTALL", "0")): + return installer.uninstall() + + try: + return installer.run() + except PoetryInstallationError as e: + installer._write(colorize("error", "Poetry installation failed.")) + + if e.log is not None: + import traceback + + _, path = tempfile.mkstemp( + suffix=".log", + prefix="poetry-installer-error-", + dir=str(Path.cwd()), + text=True, + ) + installer._write(colorize("error", f"See {path} for error logs.")) + tb = "".join(traceback.format_tb(e.__traceback__)) + text = f"{e.log}\nTraceback:\n\n{tb}" + Path(path).write_text(text) + + return e.return_code + + +if __name__ == "__main__": + sys.exit(main()) \ No newline at end of file diff --git a/adaptive_hockey_federation/core/user_card.py b/adaptive_hockey_federation/core/user_card.py index aaed3291..b355b74c 100644 --- a/adaptive_hockey_federation/core/user_card.py +++ b/adaptive_hockey_federation/core/user_card.py @@ -27,45 +27,8 @@ class HockeyData(BaseUserInfo): @dataclass -class ExcelDataPlayer_1(BaseUserInfo): - """Класс с необязательными полями из таблицы "Состав команды.xlsx". - Информация об игроках. - """ - position: Union[str, None] - classification: Union[str, None] - - -@dataclass -class ExcelDataCoach_1: - """Класс с необязательными полями из таблицы "Состав команды.xlsx". - Информация о руководительском составе. - """ - name: Union[str, None] - surname: Union[str, None] - team: Union[str, None] - role: Union[str, None] - - -@dataclass -class ExcelData_2(BaseUserInfo): +class ExcelData(BaseUserInfo): """Класс с необязательными полями из таблицы - "Копия Сводная таблица по командам с классами ЛТ.xlsx". - Информация из всех листов, кроме первого + "Реестр классов ХДН.xlsx". """ classification: Union[float, None] - riding_face_forward: Union[float, None] - riding_backwards: Union[float, None] - cast: Union[float, None] - dribbling: Union[float, None] - team_hockey: Union[float, None] - result: Union[float, None] - - -@dataclass -class ExcelDataFirstSheet_2(BaseUserInfo): - """Класс с необязательными полями из таблицы - "Копия Сводная таблица по командам с классами ЛТ.xlsx". - Информация из первого листа. - """ - classification: Union[str, None] - revision: Union[int, None] diff --git a/adaptive_hockey_federation/parser/parser_1.py b/adaptive_hockey_federation/parser/parser_1.py index 7d7240fb..cd47184e 100644 --- a/adaptive_hockey_federation/parser/parser_1.py +++ b/adaptive_hockey_federation/parser/parser_1.py @@ -1,126 +1,76 @@ -from typing import Any, Dict, List, Tuple +from typing import Any, Dict, List import openpyxl -from adaptive_hockey_federation.core.user_card import ( - ExcelDataCoach_1, - ExcelDataPlayer_1, -) -from adaptive_hockey_federation.parser.exception import ExceptionForFlake8 +from adaptive_hockey_federation.core.user_card import ExcelData -WORKBOOK_PATH = 'adaptive_hockey_federation/parser/Состав команды.xlsx' +WORKBOOK_PATH = ('adaptive_hockey_federation/parser/Реестр классов ХДН.xlsx') -def build_dict( - user_dict: Dict, - user_list: str, - key: str, - value_index: int -) -> Dict: - try: - user_dict[key] = user_list[value_index] - except ExceptionForFlake8: - user_dict[key] = None - return user_dict - - -def get_players( - team_name: str, - lst: List -) -> List[Dict]: - player_list = [] - for user in lst: - user_dict = { - 'Команда': team_name, - 'Имя': None, - 'Фамилия': None, - 'Дата рождения': None, - 'Позиция': None, - 'Класс': None} - user_dict = build_dict(user_dict, user, 'Имя', 0) - user_dict = build_dict(user_dict, user, 'Фамилия', 1) - user_dict = build_dict(user_dict, user, 'Дата рождения', 2) - user_dict = build_dict(user_dict, user, 'Позиция', 3) - user_dict = build_dict(user_dict, user, 'Класс', 4) - if user_dict['Имя'] is not None: - player_list.append(user_dict) - return player_list - - -def get_coaches( - team_name: str, - lst: List -) -> List[Dict]: - coach_list = [] - for coach in lst: - user_coach_dict = { - 'Команда': team_name, - 'Имя': None, - 'Фамилия': None, - 'Роль': None +def parse(sheet) -> List: + lst = [] + for i in range(0, 115): + player_list = [] + for col in sheet.iter_cols(1, sheet.max_column): + value = col[i].value + player_list.append(value) + lst.append(player_list) + print(lst) + return get_players(lst) + + +def get_players(lst: List) -> List[ExcelData]: + result_list = [] + for i in lst: + player_dict = { + 'Команда': i[0], + 'Имя': i[1].split()[0], + 'Фамилия': i[1].split()[1], + 'Дата рождения': i[2], + 'Класс': i[3], + 'Пересмотр (начало сезона)': i[4] } - user_coach_dict = build_dict(user_coach_dict, coach, 'Имя', 0) - user_coach_dict = build_dict(user_coach_dict, coach, 'Фамилия', 1) - user_coach_dict = build_dict(user_coach_dict, coach, 'Роль', 3) - if team_name is not None: - if ( - user_coach_dict['Имя'] - and user_coach_dict['Фамилия'] - and user_coach_dict['Роль'] - ): - coach_list.append(user_coach_dict) - return coach_list + result_list.append(player_dict) + return to_list_of_classes( + result_list + ) -def parse_team_composition(sheet) -> Tuple[ - List[ExcelDataPlayer_1], - List[ExcelDataCoach_1] -]: - lst: List[Any] = [] - team_name = sheet['F1'].value - for i in range(5, sheet.max_row): - user_list: List[Any] = [] - for col in sheet.iter_cols(2, sheet.max_column - 1): - value = col[i].value - if value != 'РУКОВОДИТЕЛИ': - user_list.append(value) - else: - lst.append(1) - lst.append(user_list) - return to_list_of_classes(lst, team_name) +def to_list_of_classes( + player_list: List[Dict] +) -> List[ExcelData]: + players = [] + for i in player_list: + player = ExcelData( + team=i.get('Команда'), + name=i.get('Имя'), + surname=i.get('Фамилия'), + date_of_birth=i.get('Дата'), + classification=i.get('Класс'), + revision=i.get('Пересмотр (начало сезона)') + ) + players.append(player) + return players def to_list_of_classes( - lst: List, - team_name: str -) -> Tuple[List[ExcelDataPlayer_1], List[ExcelDataCoach_1]]: - index = lst.index(1) - coaches_list = get_coaches(team_name, lst[index + 3: len(lst)]) - coaches = [] - for i in coaches_list: - coach = ExcelDataCoach_1( - name=i['Имя'], - surname=i['Фамилия'], - team=i['Команда'], - role=i['Роль'] - ) - coaches.append(coach) - players_list = get_players(team_name, lst[0: index]) + player_list: List[Dict[Any, Any]] +) -> List[ExcelData]: players = [] - for i in players_list: - player = ExcelDataPlayer_1( - name=i['Имя'], - surname=i['Фамилия'], - date_of_birth=i.get('Дата рождения'), - team=i['Команда'], - position=i['Позиция'], - classification=i['Класс'] + for i in player_list: + player = ExcelData( + team=i.get('Команда'), + name=i.get('Имя'), + surname=i.get('Фамилия'), + date_of_birth=i.get('Дата'), + classification=i.get('Класс'), ) players.append(player) - return players, coaches + return players book = openpyxl.load_workbook(WORKBOOK_PATH) -for sheet in book: - parse_team_composition(sheet) + +for i in book: + print(parse(i)) diff --git a/adaptive_hockey_federation/parser/parser_2.py b/adaptive_hockey_federation/parser/parser_2.py deleted file mode 100644 index ba2c2d81..00000000 --- a/adaptive_hockey_federation/parser/parser_2.py +++ /dev/null @@ -1,128 +0,0 @@ -from typing import Any, Dict, List - -import openpyxl - -from adaptive_hockey_federation.core.user_card import ( - ExcelData_2, - ExcelDataFirstSheet_2, -) - -WORKBOOK_PATH = ('adaptive_hockey_federation/parser/' - 'Копия Сводная таблица по командам с классами ЛТ.xlsx') - - -def parse_first_sheet(sheet) -> List: - lst = [] - for i in range(0, sheet.max_row): - player_list = [] - for col in sheet.iter_cols(1, sheet.max_column): - value = col[i].value - player_list.append(value) - lst.append(player_list) - return get_players_first_sheet(lst) - - -def get_players_first_sheet(lst: List) -> List[ExcelDataFirstSheet_2]: - result_list = [] - for i in lst: - player_dict = { - 'Команда': i[0], - 'Имя': i[1].split()[0], - 'Фамилия': i[1].split()[1], - 'Дата рождения': i[2], - 'Класс': i[3], - 'Пересмотр (начало сезона)': i[4] - } - result_list.append(player_dict) - return to_list_of_classes_first_sheet( - result_list - ) - - -def to_list_of_classes_first_sheet( - player_list: List[Dict] -) -> List[ExcelDataFirstSheet_2]: - players = [] - for i in player_list: - player = ExcelDataFirstSheet_2( - team=i.get('Команда'), - name=i.get('Имя'), - surname=i.get('Фамилия'), - date_of_birth=i.get('Дата'), - classification=i.get('Класс'), - revision=i.get('Пересмотр (начало сезона)') - ) - players.append(player) - return players - - -def parse_sheets(sheet) -> List: - team_name = sheet['A1'].value - lst = [] - for i in range(3, sheet.max_row + 1): - row_list = [] - for j in range(1, sheet.max_column + 1): - value = sheet.cell(row=i, column=j).value - row_list.append(value) - lst.append(row_list) - return get_players(lst, team_name) - - -def get_players( - lst: List, - team_name: str -) -> List[ExcelData_2]: - player_list = [] - for i in lst: - if i[0] is not None: - if i[3] and i[4] and i[5] and i[6] and i[7]: - koeff = (i[3] + i[4] + i[5] + i[6] + i[7]) / 5 - else: - koeff = None - player_dict = { - 'Команда': team_name, - 'Имя': i[0].split()[0], - 'Фамилия': i[0].split()[1], - 'Дата рождения': i[1], - 'Класс': i[2], - 'Катание лицом вперед': i[3], - 'Катание спиной вперед': i[4], - 'Бросок': i[5], - 'Дриблинг': i[6], - 'Командный хоккей': i[7], - 'ИТОГО': koeff - } - player_list.append(player_dict) - return to_list_of_classes(player_list) - - -def to_list_of_classes( - player_list: List[Dict[Any, Any]] -) -> List[ExcelData_2]: - players = [] - for i in player_list: - player = ExcelData_2( - team=i.get('Команда'), - name=i.get('Имя'), - surname=i.get('Фамилия'), - date_of_birth=i.get('Дата'), - classification=i.get('Класс'), - riding_face_forward=i.get('Катание лицом вперед'), - riding_backwards=i.get('Катание спиной вперед'), - cast=i.get('Бросок'), - dribbling=i.get('Дриблинг'), - team_hockey=i.get('Командный хоккей'), - result=i.get('ИТОГО') - ) - players.append(player) - return players - - -book = openpyxl.load_workbook(WORKBOOK_PATH) - - -for i in book: - if i.title == 'Реестр классификации': - parse_first_sheet(i) - else: - parse_sheets(i) diff --git "a/adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" "b/adaptive_hockey_federation/parser/\320\232\320\276\320\277\320\270\321\217 \320\241\320\262\320\276\320\264\320\275\320\260\321\217 \321\202\320\260\320\261\320\273\320\270\321\206\320\260 \320\277\320\276 \320\272\320\276\320\274\320\260\320\275\320\264\320\260\320\274 \321\201 \320\272\320\273\320\260\321\201\321\201\320\260\320\274\320\270 \320\233\320\242.xlsx" deleted file mode 100644 index ba626231656b7a02d88a387a57264ae6f82f9f16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39612 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 literal 0 HcmV?d00001 diff --git "a/adaptive_hockey_federation/parser/\320\241\320\276\321\201\321\202\320\260\320\262 \320\272\320\276\320\274\320\260\320\275\320\264\321\213.xlsx" "b/adaptive_hockey_federation/parser/\320\241\320\276\321\201\321\202\320\260\320\262 \320\272\320\276\320\274\320\260\320\275\320\264\321\213.xlsx" deleted file mode 100644 index 400eaa12bc0a05ab4609373c3fa1001bcb70120e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59032 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