Сообщения

Сообщения за июнь, 2021

Отложенная проверка аннотаци

  Неоднократно у меня возникала проблема в очерёдности положения классов в модуле при аннотации типа в методах. Самый простой пример: class A: def __init__(self): pass def allocate(self, line: OrderLine) -str: return None class OrderLine: pass a = A() a.allocate(OrderLine()) при запуске получим Traceback (most recent call last): File "C:\PKM74_dev_76\tests\ex_future.py", line 2, in <module> class A: File "C:\PKM74_dev_76\tests\ex_future.py", line 6, in A def allocate(self, line: OrderLine) -> str: NameError: name 'OrderLine' is not defined Процесс завершается с кодом выхода из 1 Вроде как надо перетащить  OrderLine  выше  A . Есть способ проще, прописать в начале файла from __future__ import annotations получится так from __future__ import annotations class A: def __init__(self): pass def allocate(self, line: OrderLine) -> str: return None class OrderLine: pass a = A() a.al...

Как рисовать схемы текстом при помощи сервиса PlantUML

Изображение
 Полезная статья https://forworktests.blogspot.com/2019/11/plantuml.html Справочное руководство  http://plantuml.com/ru/guide Стандартные библиотеки https://github.com/plantuml-stdlib/C4-PlantUML  для таких картинок @startuml !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml actor MR3 actor User participant WebServer participant ProtoLib participant K3MebelMac participant K3MebelPython User-> ProtoLib: Выбирает ID прототипа с которым работает ProtoLib-> User: Открывает карточку редактирования параметров прототипа User-> ProtoLib: Изменяет значения в карточке и жмёт "Ок" note left Данные из 3CAD end note MR3-[#0000FF]-> WebServer: POST ID прототипа + значения ProtoLib->K3MebelMac:Имя вызываемого макроса K3MebelMac-[#0000FF]->K3MebelPython:Запускает процесс построения WebServer-[#0000FF]->ProtoLib K3MebelPython->K3MebelPython:Построение K3MebelPython-[#0000FF]->WebServer:Строковое представлени...

EventDispatcher и Observer

 Про EventDispatcher ...  я упоминал  сишную статью  https://www.pvsm.ru/c-3/14183 ... в этом примере класс диспетчера является наследуемым - это очень странно, т. к. он знает только о срезе каких-то событиях, а не о всех — не совсем понятно для какой цели это нужно, выглядит будто задел под многопоточность, чтобы не было состояние гонки при параллельном оповещении... ...ну в таком случае можно просто поднять независимые экземпляры в терминологии внедрения зависимостей - not shared service ...

MS SQL Server на локальном компьютере с Win7 и проблема с подключением

Изображение
  В результате установок MS SQL Server на локальном компьютере с Win7 получили проблему .... Не удается запустить экземпляр  LocalDB , устанавливал и переустанавливал его снова и снова. Имею такую ошибку : Похожая тема обсуждалась  здесь Помогло это решение. Беречь было нечего! When all else fails and you don't care about data loss, delete and recreate your LocalDB\v11.0 database! At the command prompt sqllocaldb delete v11.0 sqllocaldb create v11.0

Присоединение к LocalDb MS SQL

Предыстория такова:  Работаем с К3Мебель версии 8.0. Требуется соединиться с локальной базой, которая теперь MS SQL LocalDB для автоматизации процесса обновления и добавления записей. Соединение при помощи  pyodbc >>> import pyodbc >>> connectionString=r"DRIVER={SQL Server Native Client 11.0};SERVER=(LocalDB)\v11.0;DATABASE=c:\K3-PKM-80_\Base\17.01.2021 21.11.21\NGuidesSQLNew.mdf;" >>> conx = pyodbc.connect(connectionString) >>> cursor = conx.cursor() >>> cursor.execute('SELECT * FROM NNomenclature ') <pyodbc.Cursor object at 0x02F68720> >>> for row in cursor: ... print('---', row) ... ------ (36, 'Бумага', 16, 79, None, 9, 67.0, 2, None, 'DFAA21D5-3BD7-45FA-B120-1CACEAA30688', 0) --- (37, 'Шпагат', 16, 79, None, 9, 95.0, 3, None, '2601BC12-C6E7-4D1F-8005-2623E7937512', 0) --- (45, 'Мел закр.', 16, 79, None, 4, 15.93, 4, None, 'EAB70030-25B6-4250...