Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

v0.5.4 (unreleased)

Bug fix release

Fixed

v0.5.4 (2021-11-13)

Bug fix release

Fixed

Use an alternative implementation of QName for lxml versions v4.2 and earlier (rather than v4.0).

Other

Change in the documentation:

  • Fix a broken and redirected links in the documentation.

  • Add the missing documentation for the benker.schemas module.

  • Correct the TOC in the API documentation.

  • Remove 3.10 from the dependency matrix (not yet validated).

  • Improve the layout of the API documentation.

v0.5.3 (2021-11-11)

Bug fix release

Fixed

Fix #13: ooxml2formex4 conversion – Loss of image calls in table conversion.

  • Modification of the OOXML parser to improve empty cells detection for Formex4 conversion (<IE/> tags management).

  • Modification of the Formex4 builder to better deal with empty cells (management of <IE/> tags).

  • Change in the CALS parser: improved empty cells detection for Formex4 conversion (<IE/> tag management).

v0.5.2 (2019-11-25)

Bug fix release

Fixed

  • Documentation: improve API documentation for CALS table builder.

  • Change in the Formex/CALS builders and parsers: Add support for the @cals:cellstyle attribute (extension). This attribute is required for two-way conversion of Formex tables to CALS and vice versa. If the CELL/@TYPE and the ROW/@TYPE are different, we add a specific “cellstyle” style. This style will keep the CELL/@TYPE value.

  • Fix in calstblx.xsd: change the definition of tgroup: tfoot may be placed after tbody (extension).

v0.5.1 (2019-11-12)

Bug fix release

Changed

Add the parse_width() function used to parse a width and return the value and its unit.

Fixed

  • Documentation: add missing link to convert_cals2formex in the main page.

  • Fix #4: Remove superfluous attributes in cals2formex.

    Change in the FormexBuilder class: Add the drop_superfluous_attrs() method: drop superfluous CALS-like attributes at the end of the Formex building.

  • Fix #5: The title generation should be optional.

    Change in the Formex4Builder class: Add the detect_titles option: if this option is enable, a title will be generated if the first row contains an unique cell with centered text. The detect_titles options is disable by default.

  • Change in the Formex4Builder class: Allow empty strings for cals_ns and cals_prefix options.

  • Fix #6: Formex 2 Cals conversion: missing entry/@valign.

    Change in the FormexParser class: The “vertical-align” style is built from the @cals:valign attribute.

    Change in the CalsParser class: The “vertical-align” style is built from the @cals:valign attribute.

    Change in the FormexBuilder class: The @cals:valign attribute is built from the “vertical-align” style.

    Change in the CalsBuilder class: The @cals:valign attribute is built from the “vertical-align” style.

  • Fix #7: Formex 2 Cals conversion: missing table/@width.

    Change in the CalsBuilder class: Add support for the @width attribute (table width).

    Change in the FormexBuilder class: Add support for the @width CALS-like attribute (table width).

  • Minor change in the OoxmlParser class: XML indentation between cell paragraphs is ignored.

  • Fix #9: Cals 2 Formex conversion: Text and PIs lost in entries.

    Add the append_cell_elements() method: Append XML elements, PIs or texts to a cell element.

    Change in the CalsBuilder and FormexBuilder classes: Preserve processing instruction in cell content.

  • Fix #10: Formex 2 Cals conversion: GR.NOTES should be preserved.

    Change in FormexParser class: GR.NOTES elements can be embedded if the embed_gr_notes options is True.

    Change in the FormexBuilder class: During GR.NOTES extraction, existing GR.NOTES are moved before the CORPUS (or created if missing).

    Change in the convert_formex2cals() function: Add the embed_gr_notes options to allow GR.NOTES element embedding.

  • Fix #11: Cals 2 Formex conversion: missing CORPUS/@width.

    Change in the CalsParser class: Add the width_unit option, and add support for the @cals:width attribute (table width).

  • Fix #12: Cals 2 Formex conversion: missing colspec attributes.

    Change in the FormexBuilder class: Add support for CALS-like attributes: @colnum, @align, @colsep, and @rowsep in the colspec element.

    Change in the CalsBuilder class: The @colsep and @rowsep attributes are generated.

Other

v0.5.0 (2019-09-25)

Minor release

Changed

  • Refactoring (rename “Formex4” to “Formex”):

    • the module benker/builders/formex4.py is renamed benker/builders/formex.py,

    • the module benker/converters/ooxml2formex4.py is renamed benker/converters/ooxml2formex.py,

    • the module benker/parsers/formex4.py is renamed benker/parsers/formex.py,

    • the class Formex4Builder is renamed FormexBuilder,

    • the class Ooxml2Formex4Converter is renamed Ooxml2FormexConverter,

    • the function convert_ooxml2formex4 is renamed convert_ooxml2formex,

    • the class Formex4Parser is renamed FormexParser,

  • Change in the class Table: add the method fill_missing() to fill the missing cells in a table.

  • Change in the class CalsBuilder: Add support for the @cals:rowstyle attribute (extension). The @colnum and @align attributes are generated for the <colspec> element. The new options cals_ns and cals_prefix allow the used of namespaces in CALS. The option tgroup_sorting can be used to sort the thead, tbody and tfoot elements.

  • Change in the method parse_file: Always generate the XML declaration in the destination file.

Added

  • Change in the converter: convert_ooxml2formex(): Add the option use_cals (and related options: cals_ns, cals_prefix and width_unit): This options is used to generate additional CALS-like elements and attributes to simplify the layout of Formex document in typesetting systems.

  • Add support for the Table/Cell shading in the OOXML parser.

  • Add support for bgcolor (Table/Cell background color) in the CALS builder.

  • Add support for bgcolor (Table/Cell background color) in the Formex 4 builder (only with the use_cals option).

  • New parser: CalsParser: CALS tables parser.

Fixed

  • Change in the builder CalsBuilder: the possible values for row/cell nature is “header”, “body” and “footer” (instead of “head”, “body”, “foot”).

  • Fix in the class OoxmlParser: rows with missing cells are filled with empty cells of the same nature as the row.

Other

  • Fix an issue with the AppVeyor build: upgrade setuptools version in appveyor.yml, change the Tox configuration: set py27,py34,py35: pip >= 9.0.3, < 19.2.

  • Change the project‘s slogan: “Easily convert your CALS, HTML, Formex 4, Office Open XML (docx) tables from one format to another.”

  • Change Tox configuration file to test the library with lxml v4.3 on Python 3.4 (support for Python 3.4 was removed in lxml v4.4).

  • Change Tox configuration file to test the library on Python 3.8.

  • Change the Travis CI configuration to build on Python 3.7 and 3.8-dev.

  • Change in the documentation: fix a broken and redirected links in the documentation.

v0.4.4 (2021-11-10)

Bug fix release

Fixed

Fix #13: ooxml2formex4 conversion – Loss of image calls in table conversion.

  • Modification of the OOXML parser to improve empty cells detection for Formex4 conversion (<IE/> tags management).

  • Modification of the Formex4 builder to better deal with empty cells (management of <IE/> tags).

v0.4.3 (2019-10-15)

Bug fix release

Fixed

Fix #5: The title generation should be optional.

  • Change in the Formex4Builder class: Add the detect_titles option: if this option is enable, a title will be generated if the first row contains an unique cell with centered text. The detect_titles options is disable by default.

Other

Change in the documentation: update the URL of the Formex documentation, use: https://op.europa.eu/en/web/eu-vocabularies/formex/.

v0.4.2 (2019-06-06)

Bug fix release

Fixed

Fix #1: Cell nature should inherit row nature by default.

  • Change in the class Styled: The default value of the nature parameter is None (instead of “body”).

  • Change in the methods insert_cell() and insert_cell() The nature of a cell is inherited from its parent’s row (or column).

Other

  • Change the requirements for Sphinx: add ‘requests[security]’ for Python 2.7.

  • Fix an issue with the AppVeyor build: change the Tox configuration: set py27,py34,py35: pip >= 9.0.3.

v0.4.1 (2019-04-24)

Bug fix release

Fixed

  • Change in the parser OoxmlParser: fix the ‘x-sect-cols’ value extraction when the w:sectPr is missing (use “1” by default).

  • Fix the Formex4 builder Formex4Builder: Generate a <IE/> element if the cell content (the string representation) is empty.

v0.4.0 (2019-04-23)

Feature release

Added

  • New converter: convert_ooxml2formex4(): Convert Office Open XML (OOXML) tables to Formex4 tables.

  • New builder: Formex4Builder: Formex4 builder used to convert tables into TBL elements.

  • Change in the parser OoxmlParser:

    • The section width and height are now stored in the ‘x-sect-size’ table style (units in ‘pt’).

  • Change in the builder BaseBuilder: Add the method finalize_tree(): Give the opportunity to finalize the resulting tree structure.

v0.3.0 (2019-02-16)

Feature release

Added

  • Change in the parser OoxmlParser:

    • Parse cell w:tcPr/w:vAlign values.

    • Parse paragraph alignments to calculate cell horizontal alignments.

    • Parse cell w:tcPr/w:tcBorders values to extract border styles.

  • Change in the builder benker.builders.cals.CalsBuilder:

    • Generate entry/@valign attributes.

    • Generate entry/@align attributes.

    • Generate entry/@colsep and entry/@rowsep attributes.

Changed

v0.2.2 (2018-12-15)

Bug fix release

Added

Fixed

  • Fix the implementation of parse_table(): use a new implementation of lxml.etree.iterwalk if using lxml < 4.2.1.

Other

  • Change Tox configuration file to test the library with lxml v3 and v4.

  • Add a changelog in the documentation.

v0.2.1 (2018-11-27)

Fixed

Other

  • Change link to PyPi project to “https://pypi.org/project/Benker/”.

  • Add the README to the documentation.

  • Add configuration files for TravisCI and AppVeyor.

v0.2.0 (2018-11-26)

Changed

  • Update project configuration

  • Add missing __init__.py file in tests directory: it is required for test modules import.

Fixed

  • Fix unit tests (Python 2.7).

  • Fix flakes8 problems.

  • Fix implementation of the Grid class for Python 2.7 (remove annotation). And minor fixes.

  • Remove pipenv configuration files.

  • Fix project configuration.

v0.1.0 (2018-11-26)

  • First version of Benker.