Skip to content

Releases: WoolenSweater/rosstat-flc

1.3.1: Доработка лексера и парсера контролей для избавления от конфликтов ге…

11 Nov 09:23
Compare
Choose a tag to compare
  • Небольшая доработка лексера и парсера контролей.
    • При генерации правил больше не возникают конфликты, которые до этого решались автоматически ply'ем.
  • Исправил ошибку при проверке котроля в формуле которого указан раздел отсутствующий в отчёте и не описанный в самом шаблоне.
  • Поправил лицензию, дополнил README и setup.py.

1.3.0: Исправлена ошибка из-за которой при проверках контролей со спецификам…

09 Nov 08:21
Compare
Choose a tag to compare
  • Выполненные доработки снизили кол-во ложных результатов проверок по сравнению с версией 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). Реализовал добав…

11 Jan 07:37
Compare
Choose a tag to compare
  • Исправил ошибку проверки значения на вхождение в диапазон когда границы диапазона являются числами с точкой.
  • Исправил метод применения функций к элементу (Elem). Из-за передачи самого элемента в функцию, к нему применялись все действия подряд, давая на выходе неверный результат. Теперь для каждого действия передаётся копия самого элемента.
  • Исправил разбор формулы, где логическому элементу добавляется функция.
    • Так же реализовал применение этих функции к левому операнду.

1.2.5: Исправил ошибку получения набора параметров для определения специфик …

12 Nov 07:25
Compare
Choose a tag to compare
  • Исправил ошибку из-за которой не удавалось получить набор параметров для определения специфик строки.
  • Исправил ошибку проверки формата ячейки если значения в ней нет. Теперь для проверки берётся дефолтное значение из схемы если оно там есть.
  • Правки не влияющие на работоспособность и нацеленные на облегчение отладки.
    • Поправил передачу параметров при инициализации элемента Elem. Конвертация в set строки, приводила к разбиению кодов длиной более одного символа.
    • Добавил __repr__ для Nullablefloat, который явно вызывается при принте элемента и возвращает значение 'null' если объект инициализирован без передачи значения.

1.2.4: Исправил ошибку фильтрации строк по спецификам и проверку контроля с …

03 Nov 13:21
Compare
Choose a tag to compare
  • Исправил ошибку при проверке контроля с формулой вида SUM{}|=|1|=|SUM{}.
  • Исправил ошибку из-за которой при фильтрации строк по спецификам не возвращалась ни одна строка.
    • Причина была в том, что не учитывалась возможность дефолтного значения специфик для строк отчёта где они явно не указаны.

1.2.3: Исправил разбор формулы контроля/условия и проверку дубликатов строк

02 Aug 08:01
Compare
Choose a tag to compare
  • Исправил разбор формулы контроля/условия. В них так же есть коды вида "01", тогда как в отчёте в коде нет нуля.
  • Исправил проверку дубликатов строк. Ошибкой было считать дубли по всему отчёту. Теперь они считаются в рамках каждого раздела.

1.2.2: Исправил ошибку из-за которой значение, которое должно было быть NULL…

30 Jul 06:41
Compare
Choose a tag to compare

Причиной было то, что строки заполнялись колонками со значением 0, которое, очевидно, не NULL. Значение не мешало подсчётам, кроме случаев когда в формуле контроля есть метод isnull. Решением стало создание своего класса обёртки над типом float, который хранит признак NULL и передаёт его при математичеких операциях результату вычислений.

1.2.1: Дополнил сообщения об ошибках проверки полей заголовка названиями пол…

20 Apr 06:27
Compare
Choose a tag to compare
  • В сообщениях об ошибках проверки полей заголовка теперь возвращаются названия полей, где это возможно, и их идентификатор.
  • Исправил ошибку проверки периода контроля в формуле которого есть оператор "<>".
  • Исправил проверку отчёта в графе которого есть значение, которое нельзя привести к числу. Значение будет выставлено в None.

1.2.0: Изменение логики итерации по строкам раздела и обработке пустых строк…

13 Apr 14:04
Compare
Choose a tag to compare
  • Изменение логики итерации по строкам раздела и обработке пустых строк.
    • Методы items и get_rows секции больше не принимают словарь специфик. Фильтрация будет происходить снаружи.
    • Метод get_rows возвращает список с одной пустой строкой "заглушкой" если эта строка отсутствует в отчёте.
    • Метод проверки строки на соответствие спицификам перенес из Section в Row и переименовал в filter.
    • Из класса ElemList удалены методы заполнения строки элементами заглушками если вернулся пустой список, так как get_rows теперь всегда вернёт хотя бы одну строку. Колонками её заполнит метод, который обрабатывает не пустой список.
  • Исправил ошибку проверки формата отчёта по схемам в которых отсутствуют параметры, определяющие формат проверок для специфики указанной секции и строки.
  • Сделал хэлпер ограниченно имитирующий MultiDict из одноименной библиотеки. Помогает в работе с мультистроками.
  • Отрефакторил метод _zip. Вынес каждый шаг в отдельный метод для читабельности.
  • Перед логической проверкой теперь происходит проверка, что ни один элемент не пустой. Иначе будет возбуждено исключение NoElemToCompareError.
  • Методы проверки контролей условий и правил обёрнуты декораторами для отлова исключения NoElemToCompareError. Декоратор возвращает пустой список если поймает его.
  • Поправил проверку специфики на вхождение в пересечение справочников. Ранее проверялось лишь вхождение в справочинк приложение.

1.1.1: Исправил ошибки разбора контролей и формулы проверки периода с пробел…

07 Apr 14:15
Compare
Choose a tag to compare
  • Исправил ошибку разбора контролей с пробелами в операторах сравнения.
  • Исправил ошибку разбора контролей с символами переноса строк в кодах/спецификах.
  • Исправил ошибку разбора формулы проверки периода. Появились формулы со значениями вида "01". Требуется приводить к числу, избавляясь от нуля.
  • Исправил ошибку сравнения элементов. Теперь после сравнения, левый элемент, кроме списка контролей, получает и значение правого элемента.