Releases: WoolenSweater/rosstat-flc
Releases · WoolenSweater/rosstat-flc
1.3.1
- Небольшая доработка лексера и парсера контролей.
- При генерации правил больше не возникают конфликты, которые до этого решались автоматически ply'ем.
- Исправил ошибку при проверке котроля в формуле которого указан раздел отсутствующий в отчёте и не описанный в самом шаблоне.
- Поправил лицензию, дополнил README и setup.py.
1.3.0
- Выполненные доработки снизили кол-во ложных результатов проверок по сравнению с версией 1.2.6.
- Парсер отчёта.
- Выполнен полный рефакторинг модуля.
- Все классы обзавелись методом iter взамен items для итерации по их элементам. Метод вобрал в себя функции прежнего items, а так же часть условий болтавшихся в классе
ElemList
, включая возврат "заглушек" если элемента(-ов) нет. - В
Row
метод filter переименован в match, условия стали понятнее. - В
Row
метод добавления колонки (графы) добавляет в словарь не значение, а именованный кортежColumn
одно из полей которого хранит код этой колонки. - В
Report
метод чтения заголовков создаёт список именованных кортежейTitle
, вместо обычного кортежа из двух элементов. - Удалены бесполезные флаги.
- Список элементов распаршенной формулы контроля (
ElemList
).- Убрана конвертация списка кодов в множество (set).
- Для единообразия, разделы теперь так же храняться в классе списком.
- Списки отдельно взятых специфик теперь храняться отдельными полями (s1, s2, s3).
- Специфики теперь подготавливаются не до чтения отчёта, а в процессе, для каждой строки.
- Механизм получения параметров и каталогов для "развертывания" специфик переехал в класс
Specific
. - Единожды подготовленные специфики сохраняются в словарь для последующего использования.
- Механизм получения параметров и каталогов для "развертывания" специфик переехал в класс
- При чтении отчёта добавлена проверка наличия описания формата для строки, если формата нет, проверка прекращается.
- Небольшой рефакториг методов класса
ElemLogic
. - Вспомогательные классы.
- В
SchemaFormats
добавлен отдельный метод проверки наличия формата для строки. Необходим для пропуска контролей в которых указаны строки, для которых нет формата. - В
SchemaFormats
методы получения кода и параметров специфики больше не принимают и не возвращают код колонки если не найден код специфики.- Спорная ситуация. В формуле контроля есть специфики, но в блоке форматов нет ноды с типом S, указывающим на код колонки с атрибутом справочника.
- В
NestedDefaultdict
метод getall переименован в get, новый getall просто возвращает список всех значений.
- В
- Везде где проводилась работа со спецификами, вместо индекса используется сам ключ специфики (s1, s2, s3).
- Исправлена ошибка из-за которой при проверках контролей со спецификами стали учитываться строки без специфик.
- Оказалось, что более нет необходимости в проверках на "игнорируемые" специфики при итерации по строкам.
1.2.6
- Исправил ошибку проверки значения на вхождение в диапазон когда границы диапазона являются числами с точкой.
- Исправил метод применения функций к элементу (Elem). Из-за передачи самого элемента в функцию, к нему применялись все действия подряд, давая на выходе неверный результат. Теперь для каждого действия передаётся копия самого элемента.
- Исправил разбор формулы, где логическому элементу добавляется функция.
- Так же реализовал применение этих функции к левому операнду.
1.2.5
- Исправил ошибку из-за которой не удавалось получить набор параметров для определения специфик строки.
- Исправил ошибку проверки формата ячейки если значения в ней нет. Теперь для проверки берётся дефолтное значение из схемы если оно там есть.
- Правки не влияющие на работоспособность и нацеленные на облегчение отладки.
- Поправил передачу параметров при инициализации элемента
Elem
. Конвертация вset
строки, приводила к разбиению кодов длиной более одного символа. - Добавил
__repr__
дляNullablefloat
, который явно вызывается при принте элемента и возвращает значение 'null' если объект инициализирован без передачи значения.
- Поправил передачу параметров при инициализации элемента
1.2.4
- Исправил ошибку при проверке контроля с формулой вида
SUM{}|=|1|=|SUM{}
. - Исправил ошибку из-за которой при фильтрации строк по спецификам не возвращалась ни одна строка.
- Причина была в том, что не учитывалась возможность дефолтного значения специфик для строк отчёта где они явно не указаны.
1.2.3: Исправил разбор формулы контроля/условия и проверку дубликатов строк
- Исправил разбор формулы контроля/условия. В них так же есть коды вида "01", тогда как в отчёте в коде нет нуля.
- Исправил проверку дубликатов строк. Ошибкой было считать дубли по всему отчёту. Теперь они считаются в рамках каждого раздела.
1.2.2
Причиной было то, что строки заполнялись колонками со значением 0, которое, очевидно, не NULL. Значение не мешало подсчётам, кроме случаев когда в формуле контроля есть метод isnull. Решением стало создание своего класса обёртки над типом float, который хранит признак NULL и передаёт его при математичеких операциях результату вычислений.
1.2.1
- В сообщениях об ошибках проверки полей заголовка теперь возвращаются названия полей, где это возможно, и их идентификатор.
- Исправил ошибку проверки периода контроля в формуле которого есть оператор "<>".
- Исправил проверку отчёта в графе которого есть значение, которое нельзя привести к числу. Значение будет выставлено в None.
1.2.0
- Изменение логики итерации по строкам раздела и обработке пустых строк.
- Методы
items
иget_rows
секции больше не принимают словарь специфик. Фильтрация будет происходить снаружи. - Метод
get_rows
возвращает список с одной пустой строкой "заглушкой" если эта строка отсутствует в отчёте. - Метод проверки строки на соответствие спицификам перенес из
Section
вRow
и переименовал вfilter
. - Из класса
ElemList
удалены методы заполнения строки элементами заглушками если вернулся пустой список, так какget_rows
теперь всегда вернёт хотя бы одну строку. Колонками её заполнит метод, который обрабатывает не пустой список.
- Методы
- Исправил ошибку проверки формата отчёта по схемам в которых отсутствуют параметры, определяющие формат проверок для специфики указанной секции и строки.
- Сделал хэлпер ограниченно имитирующий
MultiDict
из одноименной библиотеки. Помогает в работе с мультистроками. - Отрефакторил метод
_zip
. Вынес каждый шаг в отдельный метод для читабельности. - Перед логической проверкой теперь происходит проверка, что ни один элемент не пустой. Иначе будет возбуждено исключение
NoElemToCompareError
. - Методы проверки контролей условий и правил обёрнуты декораторами для отлова исключения
NoElemToCompareError
. Декоратор возвращает пустой список если поймает его. - Поправил проверку специфики на вхождение в пересечение справочников. Ранее проверялось лишь вхождение в справочинк приложение.
1.1.1
- Исправил ошибку разбора контролей с пробелами в операторах сравнения.
- Исправил ошибку разбора контролей с символами переноса строк в кодах/спецификах.
- Исправил ошибку разбора формулы проверки периода. Появились формулы со значениями вида "01". Требуется приводить к числу, избавляясь от нуля.
- Исправил ошибку сравнения элементов. Теперь после сравнения, левый элемент, кроме списка контролей, получает и значение правого элемента.