from contextlib import contextmanager
from timeit import default_timer
from pathlib import Path

gas_ved_dict = {'Изготовление свай': 'Изготовление металлической сваи Ø219х8 L= 8м',
                'Бурение скважин': 'Бурение скважин', 'Погружение свай': 'Погружение свай',
                'Заполнение полости свай ЦПС': 'Заполнение трубопровода и подъем давления ',
                'Срезка свай, монтаж оголовков': 'Монтаж оголовков',
                'Засыпка пространства между сваями щебнем фракции 15-20 мм': 'Засыпка георешетки щебнем',
                'Монтаж деформационных марок': 'Монтаж деформационной марки (датчика деформации)',
                'Монтаж траверс': 'Монтаж траверс',
                'Монтаж м/к (связи, стойки, упоры, подкосы)': 'Монтаж м/к основных',
                'Устройство термометрических скважин': 'Устройство термометрических скважин',
                'Монтаж термометрических трубок': 'Монтаж термометрической трубки из трубы Ø 57х3,5мм',
                'Устройство песчанной подушки': 'Устройство песчаного основания с послойным уплотнением (вручную)',
                'Укладка габионов': 'Укладка георешетки',
                'Заполнение габионов щебнем фракции 70-120мм': 'Засыпка георешетки щебнем',
                'Монтаж термостабилизаторов': 'Монтаж термостабилизаторов', 'АКЗ свай и металлоконструкций': 'АКЗ МК',
                'Монтаж опор DN 500 (неподвижная, направляющая, скользящая)': 'Монтаж опор',
                'Сварка газопровода 530х24 мм': 'Сварка трубопровода',
                'Надземная прокладка газопровода 530х24 мм': 'Прокладка трубопроводов наружных инженерных систем из стальных труб',
                'Монтаж опор метанолопровода': 'Монтаж опор', 'Сварка метанолопровода 57х6мм': 'Сварка трубопровода',
                'Надземная прокладка метанолопровода 57х6мм': 'Прокладка трубопроводов наружных инженерных систем из стальных труб',
                'Монтаж заземления': 'Монтаж активного соляного заземления',
                'Очистка полости трубопроводов': 'Очистка полости трубопровода',
                'Гидроиспытания трубопроводов': 'Гидроиспытания трубопровода Ду 1400 мм',
                'Изоляция сварных соединений газопровода': 'Изоляция сварного стыка манжетами'}

new_dormitory_dict = {'АС/поз.1.1/Установка свай с заполнением': 'Погружение свай',
                      'АС/поз.1.1/Изготовление свай (наращивание)': 'Изготовление и монтаж оголовка металлической сваи',
                      'АС/поз.1.1/Монтаж оголовков': 'Монтаж оголовков',
                      'АС/поз.1.1/Монтаж ростверка': 'Монтаж ростверков и опорных конструкций под порталы, опоры ВЛ',
                      'АС/поз.1.1/АКЗ боковой поверхности металлических свай': 'АКЗ боковой поверхности металических свай',
                      'АС/поз.1.1/АКЗ м/к надземной части свай и оголовков, ростверка': 'АКЗ боковой поверхности металических свай',
                      'АС.ТТ/поз.1.1/Монтаж блоков общежития': 'Монтаж блоков ФБС',
                      'АС.ТТ/поз.1.1/Устройство внутренних лестниц': 'Монтаж лестниц',
                      'АС.ТТ/поз.1.1/Монтаж ферм стропильных': 'Монтаж м/к основных',
                      'АС.ТТ/поз.1.1/Монтаж нащельников на венткамеры': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж прогонов': 'Монтаж м/к основных',
                      'АС.ТТ/поз.1.1/Монтаж нащельников, элементов примыкания': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж крепления радиальных вентиляторов': 'Монтаж электроприборов',
                      'АС.ТТ/поз.1.1/Монтаж крепления наружных воздуховодов Д 250, 315, 800х400, 1000х600': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/Монтаж балок пола': 'Монтаж сборных конструкции полов',
                      'АС.ТТ/поз.1.1/Монтаж хомутов для крепления внутренних воздуховодов (27 шт.)': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/Монтаж крепежных элементов воздуховодов чердака (230 шт)': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/Монтаж крыльца №1': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж крыльца №3': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж крыльца №2': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж профилей обрамления проемов (3 шт)': 'Заполнение оконных проемов из ПВХ профилей',
                      'АС.ТТ/поз.1.1/Монтаж люка-лаза на кровлю': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж подставки под наружный блок кондиционера': 'Монтаж блоков ФБС',
                      'АС.ТТ/поз.1.1 Устройство оконных проемов': 'Заполнение оконных проемов из ПВХ профилей',
                      'АС.ТТ/поз.1.1 Устройство дверных проемов': 'Монтаж ворот, входных дверей',
                      'АС.ТТ/поз.1.1/Устройство подкровельной антиконденсатной пленки': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж профлиста (крыша, фронтон, козырек, цоколь)': 'Монтаж кровельного покрытия из профлиста',
                      'АС.ТТ/поз.1.1/Устройство утеплителя рулонного, жесткого': 'Монтаж кровли',
                      'АС.ТТ/поз.1.1/Монтаж панелей кровельных': 'Монтаж сэндвич-панелей',
                      'АС.ТТ/поз.1.1/Теплоизоляция техподполья': 'Устройство теплоизоляции',
                      'АС.ТТ/поз.1.1/Внутренняя отделка потолка "Армстронг"': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка ЦСП толщ.10 мм': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка стен "Бук"': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Устройство пола венткамер ЦСП толщ.10 мм и 16 мм': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка стен фибропанелью': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка потолка плитой перфорированной': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Устройство пола венткамер линолеум': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка плинтуса': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Внутренняя отделка пола линолеум': 'Внутренняя отделка',
                      'АС.ТТ/поз.1.1/Водоснабжение, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Водоснабжение, монтаж опор': 'Монтаж опор',
                      'АС.ТТ/поз.1.1/Водоснабжение, монтаж хомутов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Водоснабжение, монтаж муфт, угольников, тройников': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Водоснабжение, монтаж кранов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Теплоизоляция магистрального водопровода, монтаж теплоизоляции': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Канализация ниже отм. -0.000, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'Подземная прокладка трубопроводов К1, с учетом монтажа греющего кабеля и устройством теплоизоляции': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Монтаж стальных колодцев бытовой самотечной канализации К1, с учетом внутренней обвязки': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж муфт, отводов, тройников, ревизии, перехода': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Канализация выше отм. +0.000, монтаж клапанов воздушных': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Канализация ниже отм. -0.000, монтаж отводов, тройников, ревизии': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Теплоизоляция канализации, монтаж теплоизоляции': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/Прохождение труб через стык блок-модулей': 'Монтаж модулей / блок-боксов',
                      'АС.ТТ/поз.1.1/Крепление канализации под зданием': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж тройников, отводов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж шкафа пожарного в комплекте с огнетушителем, рукавом пожарным': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Противопожарный трубопровод, монтаж задвижек': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Обвязка бойлера, отводов, тройников, ревизии, перехода, ниппель': 'Трубопроводы обвязки утилизационного теплообменника',
                      'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж оборудования (водонагреватель, расширит. бак, регулятор давления, насос)': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж кранов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Обвязка бойлера, монтаж опор': 'Монтаж опор',
                      'АС.ТТ/поз.1.1/Общеобменная вентиляция, монтаж воздуховодов': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/В-8, монтаж воздуховода': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/Дымоудаление, прокладка воздуховодов': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж воздуховодов': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/Дымоудаление, огнезащита воздуховодов': 'Огнезащита',
                      'АС.ТТ/поз.1.1/В-8, монтаж переходника, тройника, зонта': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1, В1/1, В1/2, ВП1, ВД1, монтаж клапанов, ниппель': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж шумоглушителя, зонта': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Дымоудаление, монтаж переходников, отводов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж тройников, отводов, переходников, врезки': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Общеобменная вентиляция, монтаж вентилятора': 'Монтаж системы приточной вентиляции',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж вентрешетки': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж крестовины, заглушек, хомутов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1 монтаж приточной установки': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/Дымоудаление, монтаж клапанов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1,В12-14.1, монтаж комплекта автоматики': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж воздушно-тепловой завесы': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/Дымоудаление, монтаж зонтов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/П-1,2,В12-14.1, монтаж изоляции воздуховодов': 'Монтаж воздуховодов',
                      'АС.ТТ/поз.1.1/П-1.2.В12-14.1. монтаж сплит-системы': 'Монтаж оборудования системы кондиционирования (сплит-системы)',
                      'АС.ТТ/поз.1.1/Отопление (П1), монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж трубопроводов': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Отопление, монтаж трубопровода': 'Прокладка импульсных трубопроводов ',
                      'АС.ТТ/поз.1.1/Отопление, монтаж переходов, тройников, уголков, муфт': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Отопление, монтаж опор для труб': 'Монтаж опор',
                      'АС.ТТ/поз.1.1/Отопление (П1), монтаж кранов': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж счетчиков, кранов, манометров, термометров и др.': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Отопление, монтаж радиаторов': 'Монтаж трудопроводов отопления',
                      'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж опор для труб': 'Монтаж опор',
                      'АС.ТТ/поз.1.1/Отопление, монтаж насоса (ИТП), блока питания': 'Монтаж блоков ФБС',
                      'АС.ТТ/поз.1.1/Автоматика к вентиляторам, монтаж шкафов': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж переходов, тройников, уголков, муфт': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/Отопление, монтаж изоляции': 'Монтаж трудопроводов отопления',
                      'АС.ТТ/поз.1.1/Отопление (ИТП), монтаж изоляции': 'Монтаж трудопроводов отопления',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж кабеля': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж короба, кабель-канала, перегородки': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/Электрообогрев линии канализации до КНС': 'Водопровод противопожарный',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж светильников': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж ламп': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж ящика трансформаторного понижающего': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж выключателей, розеток': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж знаков безопасности': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж конвектора': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж обогревателя': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж футляра': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж трубы ПВХ с зондом': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/ЭОМ, монтаж металлорукава': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/АОВ, монтаж кабеля': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/АОВ, монтаж щита управления приточной установкой': 'Монтаж оборудования',
                      'АС.ТТ/поз.1.1/АОВ, монтаж щита управления вытяжкой': 'Монтаж шкафа управления электрообогревом',
                      'АС.ТТ/поз.1.1/АОВ, монтаж щита упр-я вентилятором дымоудаления, подпора': 'Монтаж стоек',
                      'АС.ТТ/поз.1.1/АОВ, монтаж блока упр-я клапанами': 'Монтаж щита пожарного с комплектующими',
                      'АС.ТТ/поз.1.1/АОВ, монтаж щита пожарной автоматики': 'Монтаж шкафа управления электрообогревом',
                      'АС.ТТ/поз.1.1/АОВ, монтаж пульта контроля и управления, блока контроля и индикации': 'Монтаж блоков ФБС',
                      'АС.ТТ/поз.1.1/АОВ, монтаж блока питания': 'Монтаж блоков ФБС',
                      'АС.ТТ/поз.1.1/АОВ, монтаж трубы ПВХ с зондом': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/АОВ, монтаж металлорукава': 'Монтаж ёмкости',
                      'АС.ТТ/поз.1.1/АОВ, монтаж лотка': 'Монтаж ёмкости',
                      'СС/поз.1.1/СБП. Монтаж кабеля': 'Монтаж силового кабеля',
                      'СС/поз.1.1/ПС. Монтаж кабеля': 'Монтаж силового кабеля',
                      'СС/поз.1.1/СКС. Установка коробов': 'Монтаж оборудования',
                      'СС/поз.1.1/СКС. Монтаж кабеля': 'Монтаж силового кабеля',
                      'СС/поз.1.1/ГГС. Монтаж кабеля': 'Монтаж силового кабеля',
                      'СС/поз.1.1/ГГС. Устройство трубы гофрированной с держателями': 'Монтаж ёмкости',
                      'СС/поз.1.1/ГГС. Установка распределительных коробов': 'Монтаж оборудования',
                      'СС/поз.1.1/СКС. Монтаж блока оптического': 'Монтаж блоков ФБС',
                      'СС/поз.1.1/СКС. Монтаж адаптеров, пигтейл, патч корд': 'Монтаж щита пожарного с комплектующими',
                      'СС/поз.1.1/ЛВС. Установка шкафа Rittal': 'Монтаж оборудования',
                      'СС/поз.1.1/ЛВС. Установка коммутаторов и модуля': 'Монтаж оборудования',
                      'СС/поз.1.1/СБП. Монтаж источника бесперебойного питания': 'Преобразователь, блоки питания, источники бесперебойного питания',
                      'СС/поз.1.1/СБП. Монтаж карты управления и мониторинга': 'Монтаж шкафа управления электрообогревом',
                      'СС/поз.1.1/СКС. Установка коробок с розеткой': 'Монтаж щита пожарного с комплектующими',
                      'СС/поз.1.1/ЛВС. Электрическая проверка и настройка': 'Проверка на герметичность ЗПТ',
                      'СС/поз.1.1/СТС. Установка аппаратов телефонных': 'Монтаж оборудования',
                      'СС/поз.1.1/СТС. Проверка и настройка АТС': 'Проверка на герметичность ЗПТ',
                      'СС/поз.1.1/ГГС. Установка громкоговорителей, IP- пульта': 'Монтаж оборудования',
                      'СС/поз.1.1/ГГС. Монтаж ящик распределительный Rittal': 'Монтаж ёмкости',
                      'Монтаж МК крепления Профлиста цоколь (Швеллер 100*50*4)': 'Монтаж кровельного покрытия из профлиста',
                      'Монтаж кронштейнов Кр1': 'Монтаж ёмкости',
                      'Зашивка цоколя профлистом С8-1150-0,7': 'Монтаж кровельного покрытия из профлиста',
                      'Монтаж цветных кассет на фасаде здания': 'Монтаж щита пожарного с комплектующими',
                      'Монтаж нащельников и герметизация': 'Монтаж кровли',
                      'Демонтаж нащельников, с учетом герметика': 'Монтаж кровли',
                      'Монтаж светильников на фасаде Глобус G300 - 8 шт., двухсторонний - 8 шт.': 'Монтаж щита пожарного с комплектующими',
                      'Монтаж светового короба СК-8 "Общежитие №3"': 'Монтаж лотков и коробов',
                      'Монтаж м/к (решетки, ограждения)': 'Монтаж щита пожарного с комплектующими',
                      'Демонтаж м/к (решетки, ограждения)': 'Монтаж щита пожарного с комплектующими',
                      'Монтаж МК крепления Плофлиста цоколя': 'Монтаж кровельного покрытия из профлиста',
                      'Зашивка цоколя профлистом': 'Монтаж кровельного покрытия из профлиста',
                      'Подшивка козырька': 'Электрические проводки в щитах и пультах шкафных и панельных',
                      'Монтаж решёток для витражей': 'Монтаж щита пожарного с комплектующими',
                      'АКЗ МК входной группы': 'АКЗ боковой поверхности металических свай',
                      'Монтаж Профлиста фронтона С8-1150-0.7': 'Монтаж кровельного покрытия из профлиста',
                      'Монтаж гофры': 'Монтаж ёмкости',
                      'Монтаж каб.канал': 'Монтаж ёмкости',
                      'Монтаж кабеля 5х6': 'Монтаж силового кабеля',
                      'Монтаж кабеля 3х2.5': 'Монтаж силового кабеля'}


@contextmanager
def elapsed_timer(lbl, is_print):
    start = default_timer()
    elapser = lambda: default_timer() - start
    yield lambda: elapser()
    end = default_timer()
    elapser = lambda: end - start
    if is_print:
        print(f'{lbl}: {round(end - start, 2)} sec')


def project_root() -> Path:
    """Returns project root folder."""
    return Path(__file__).parent.parent
