Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package lttoolbox for openSUSE:Factory checked in at 2026-05-17 18:56:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/lttoolbox (Old) and /work/SRC/openSUSE:Factory/.lttoolbox.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "lttoolbox" Sun May 17 18:56:45 2026 rev:9 rq:1353554 version:3.8.3 Changes: -------- --- /work/SRC/openSUSE:Factory/lttoolbox/lttoolbox.changes 2025-08-15 21:53:56.136798365 +0200 +++ /work/SRC/openSUSE:Factory/.lttoolbox.new.1966/lttoolbox.changes 2026-05-17 18:57:00.204740178 +0200 @@ -1,0 +2,7 @@ +Sat May 16 00:14:25 UTC 2026 - Jan Engelhardt <[email protected]> + +- Update to release 3.8.3 + * Drop stray \t in ATT printing + * Allow C2Y, C23, C++26 compilation modes + +------------------------------------------------------------------- Old: ---- v3.8.2.tar.gz New: ---- v3.8.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ lttoolbox.spec ++++++ --- /var/tmp/diff_new_pack.wB0UBm/_old 2026-05-17 18:57:00.892768248 +0200 +++ /var/tmp/diff_new_pack.wB0UBm/_new 2026-05-17 18:57:00.892768248 +0200 @@ -1,7 +1,7 @@ # # spec file for package lttoolbox # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,14 +18,15 @@ Name: lttoolbox %define lname liblttoolbox3 -Version: 3.8.2 +Version: 3.8.3 Release: 0 Summary: Toolbox for lexical processing and morphological analysis License: GPL-2.0-or-later Group: Productivity/Scientific/Other URL: https://apertium.org/ Source: https://github.com/apertium/lttoolbox/archive/v%version.tar.gz -BuildRequires: cmake +BuildRequires: cmake-full +BuildRequires: boost-devel BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: utfcpp-devel ++++++ _scmsync.obsinfo ++++++ --- /var/tmp/diff_new_pack.wB0UBm/_old 2026-05-17 18:57:00.932769880 +0200 +++ /var/tmp/diff_new_pack.wB0UBm/_new 2026-05-17 18:57:00.936770043 +0200 @@ -1,5 +1,5 @@ -mtime: 1755216500 -commit: e7c4e7f11ff6dc5f215fdfe8a303bf852a5c239f80cdc483b46d6ff5f149144e +mtime: 1778956576 +commit: e81c23fe3ac91b9e7b97049657abb945b352888f16c298be1eb319845b0fb76f url: https://src.opensuse.org/jengelh/lttoolbox revision: master ++++++ build.specials.obscpio ++++++ ++++++ build.specials.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/.gitignore new/.gitignore --- old/.gitignore 1970-01-01 01:00:00.000000000 +0100 +++ new/.gitignore 2026-05-16 20:36:16.000000000 +0200 @@ -0,0 +1 @@ +.osc ++++++ v3.8.2.tar.gz -> v3.8.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/.github/workflows/build.yaml new/lttoolbox-3.8.3/.github/workflows/build.yaml --- old/lttoolbox-3.8.2/.github/workflows/build.yaml 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/.github/workflows/build.yaml 2026-05-07 19:02:21.000000000 +0200 @@ -10,7 +10,7 @@ - name: dependencies run: | sudo apt-get -qy update - sudo apt-get -qfy install --no-install-recommends build-essential cmake pkg-config libutfcpp-dev libxml2-dev libxml2-utils python3-dev python3-setuptools swig + sudo apt-get -qfy install --no-install-recommends build-essential cmake pkg-config libboost-dev libutfcpp-dev libxml2-dev libxml2-utils python3-dev python3-setuptools swig - name: configure run: cmake -DENABLE_PYTHON_BINDINGS=ON . - name: build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/CMakeLists.txt new/lttoolbox-3.8.3/CMakeLists.txt --- old/lttoolbox-3.8.2/CMakeLists.txt 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/CMakeLists.txt 2026-05-07 19:02:21.000000000 +0200 @@ -1,7 +1,7 @@ -cmake_minimum_required(VERSION 3.12 FATAL_ERROR) +cmake_minimum_required(VERSION 3.20 FATAL_ERROR) cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}) project(lttoolbox - VERSION 3.8.2 + VERSION 3.8.3 LANGUAGES CXX C ) set(VERSION ${PROJECT_VERSION}) @@ -57,7 +57,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_FLAGS_COMMON} -fvisibility-inlines-hidden") # Enable latest possible C standard - foreach(flag "-std=c2x" "-std=c11" "-std=c1x" "-std=c99") + foreach(flag "-std=c2y" "-std=c23" "-std=c2x" "-std=c11" "-std=c1x" "-std=c99") string(REGEX REPLACE "[^a-z0-9]" "-" _flag ${flag}) CHECK_C_COMPILER_FLAG(${flag} COMPILER_SUPPORTS_${_flag}) if(COMPILER_SUPPORTS_${_flag}) @@ -67,7 +67,7 @@ endforeach() # Require latest possible C++ standard - foreach(flag "-std=c++23" "-std=c++2b" "-std=c++20" "-std=c++2a" "-std=c++17") + foreach(flag "-std=c++26" "-std=c++2c" "-std=c++23" "-std=c++2b" "-std=c++20" "-std=c++2a" "-std=c++17") string(REGEX REPLACE "[^a-z0-9]" "-" _flag ${flag}) CHECK_CXX_COMPILER_FLAG(${flag} COMPILER_SUPPORTS_${_flag}) if(COMPILER_SUPPORTS_${_flag}) @@ -84,8 +84,8 @@ # Generate pkg-config file set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix "\${prefix}") -set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") -set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +cmake_path(APPEND libdir "\${exec_prefix}" "${CMAKE_INSTALL_LIBDIR}") +cmake_path(APPEND includedir "\${prefix}" "${CMAKE_INSTALL_INCLUDEDIR}") configure_file(lttoolbox.pc.in lttoolbox.pc @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/lttoolbox.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig/") @@ -137,11 +137,16 @@ # ICU find_package(ICU COMPONENTS i18n io uc REQUIRED) +include_directories(${ICU_INCLUDE_DIRS}) # utf8cpp / utfcpp find_path(UTFCPP_INCLUDE_DIRS utf8.h PATH_SUFFIXES utf8cpp utfcpp utf8 REQUIRED) include_directories(${UTFCPP_INCLUDE_DIRS}) +# Boost +find_package(Boost 1.58.0 REQUIRED) +include_directories(${Boost_INCLUDE_DIRS}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}) if(BUILD_TESTING) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/att_compiler.cc new/lttoolbox-3.8.3/lttoolbox/att_compiler.cc --- old/lttoolbox-3.8.2/lttoolbox/att_compiler.cc 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/att_compiler.cc 2026-05-07 19:02:21.000000000 +0200 @@ -19,9 +19,9 @@ #include <lttoolbox/alphabet.h> #include <lttoolbox/transducer.h> #include <lttoolbox/compression.h> -#include <lttoolbox/string_utils.h> #include <lttoolbox/file_utils.h> #include <algorithm> +#include <limits> #include <stack> #include <unicode/uchar.h> #include <unicode/ustring.h> @@ -141,6 +141,53 @@ } } +/* + * ICU number parsing does a lot of locale handling and this tends to + * dominate the runtime of lt-comp. Since we always force the locale + * to be C.UTF-8, we can make stronger assumptions leading to a + * ~2000x speedup for stoi and ~500x for stod relative to StringUtils. + * - DGS 2025-08-29 + */ + +int fast_stoi(UString s) { + int ret = 0; + for (size_t i = 0; i < s.size(); i++) { + if (s[i] < '0' || s[i] > '9') throw std::invalid_argument("bad int"); + ret *= 10; + ret += (s[i] - '0'); + } + return ret; +} + +double fast_stod(UString s) { + if (s.size() == 0) throw std::invalid_argument("empty string"); + double sign = 1; + size_t i = 0; + if (s[i] == '-') { + i++; + sign = -1; + } + if (i == s.size()) throw std::invalid_argument("no number"); + if (i + 3 == s.size() && s[i] == 'i' && s[i+1] == 'n' && s[i+2] == 'f') { + return sign * std::numeric_limits<double>::infinity(); + } + double ret = 0; + for (; i < s.size(); i++) { + if (s[i] == '.') break; + if (s[i] < '0' || s[i] > '9') throw std::invalid_argument("bad digit"); + ret *= 10; + ret += (s[i] - '0'); + } + i++; + double mul = 0.1; + for (; i < s.size(); i++) { + if (s[i] < '0' || s[i] > '9') throw std::invalid_argument("bad digit"); + ret += (s[i] - '0') * mul; + mul *= 0.1; + } + return sign * ret; +} + void AttCompiler::parse(std::string const &file_name, bool read_rl) { @@ -208,7 +255,7 @@ } try { - from = StringUtils::stoi(tokens[0]) + state_id_offset; + from = fast_stoi(tokens[0]) + state_id_offset; } catch (const std::invalid_argument& e) { std::cerr << "Error: invalid source state in file '" << file_name << "' on line " << line_number << "." << std::endl; exit(EXIT_FAILURE); @@ -233,7 +280,7 @@ if (tokens.size() > 1) { try { - weight = StringUtils::stod(tokens[1]); + weight = fast_stod(tokens[1]); } catch (const std::invalid_argument& e) { std::cerr << "Error: invalid weight in file '" << file_name << "' on line " << line_number << "." << std::endl; exit(EXIT_FAILURE); @@ -248,7 +295,7 @@ else { try { - to = StringUtils::stoi(tokens[1]) + state_id_offset; + to = fast_stoi(tokens[1]) + state_id_offset; } catch (const std::invalid_argument& e) { std::cerr << "Error: invalid target state in file '" << file_name << "' on line " << line_number << "." << std::endl; exit(EXIT_FAILURE); @@ -269,7 +316,7 @@ if(tokens.size() > 4) { try { - weight = StringUtils::stod(tokens[4]); + weight = fast_stod(tokens[4]); } catch (const std::invalid_argument& e) { std::cerr << "Error: invalid weight in file '" << file_name << "' on line " << line_number << "." << std::endl; exit(EXIT_FAILURE); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/compression.h new/lttoolbox-3.8.3/lttoolbox/compression.h --- old/lttoolbox-3.8.2/lttoolbox/compression.h 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/compression.h 2026-05-07 19:02:21.000000000 +0200 @@ -23,6 +23,7 @@ #include <stdexcept> #include <lttoolbox/ustring.h> #include <lttoolbox/my_stdio.h> +#include <boost/endian/conversion.hpp> // Global lttoolbox features constexpr char HEADER_LTTOOLBOX[4]{'L', 'T', 'T', 'B'}; @@ -53,24 +54,15 @@ } template<typename Stream, typename Value> -inline auto write_u64_le(Stream& out, const Value& value) { +inline auto write_u64_be(Stream& out, const Value& value) { uint64_t v = static_cast<uint64_t>(value); - v = - ((v & 0xFF) << 56) | - ((v & 0xFF00) << 40) | - ((v & 0xFF0000) << 24) | - ((v & 0xFF000000) << 8) | - ((v & 0xFF00000000) >> 8) | - ((v & 0xFF0000000000) >> 24) | - ((v & 0xFF000000000000) >> 40) | - ((v & 0xFF00000000000000) >> 56) - ; + boost::endian::native_to_big_inplace(v); return write_u64(out, v); } template<typename Stream> -inline auto write_le(Stream& out, uint64_t value) { - return write_u64_le(out, value); +inline auto write_be(Stream& out, uint64_t value) { + return write_u64_be(out, value); } @@ -89,34 +81,25 @@ } template<typename Stream> -inline auto read_u64_le(Stream& in) { +inline auto read_u64_be(Stream& in) { uint64_t v = read_u64(in); - v = - ((v & 0xFF00000000000000) >> 56) | - ((v & 0xFF000000000000) >> 40) | - ((v & 0xFF0000000000) >> 24) | - ((v & 0xFF00000000) >> 8) | - ((v & 0xFF000000) << 8) | - ((v & 0xFF0000) << 24) | - ((v & 0xFF00) << 40) | - ((v & 0xFF) << 56) - ; + boost::endian::big_to_native_inplace(v); return v; } template<typename Stream> -inline auto read_le(Stream& in, uint64_t) { - return read_u64_le(in); +inline auto read_be(Stream& in, uint64_t) { + return read_u64_be(in); } template<typename Value = void> -inline auto read_le(FILE *in) { - return read_le(in, Value{}); +inline auto read_be(FILE *in) { + return read_be(in, Value{}); } template<typename Value = void> -inline auto read_le(std::istream& in) { - return read_le(in, Value{}); +inline auto read_be(std::istream& in) { + return read_be(in, Value{}); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/file_utils.cc new/lttoolbox-3.8.3/lttoolbox/file_utils.cc --- old/lttoolbox-3.8.2/lttoolbox/file_utils.cc 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/file_utils.cc 2026-05-07 19:02:21.000000000 +0200 @@ -72,7 +72,7 @@ { fwrite_unlocked(HEADER_LTTOOLBOX, 1, 4, output); uint64_t features = 0; - write_le(output, features); + write_be(output, features); Compression::string_write(letters, output); alpha.write(output); @@ -101,7 +101,7 @@ char header[4]{}; fread_unlocked(header, 1, 4, input); if (strncmp(header, HEADER_LTTOOLBOX, 4) == 0) { - auto features = read_le<uint64_t>(input); + auto features = read_be<uint64_t>(input); if (features >= LTF_UNKNOWN) { throw std::runtime_error("FST has features that are unknown to this version of lttoolbox - upgrade!"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/lt-proc.1 new/lttoolbox-3.8.3/lttoolbox/lt-proc.1 --- old/lttoolbox-3.8.2/lttoolbox/lt-proc.1 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/lt-proc.1 2026-05-07 19:02:21.000000000 +0200 @@ -103,6 +103,10 @@ .Fl p , with surface forms, and if the lexical form is not found in the bilingual dictionary, it outputs the surface form of the word. +.It Fl O , Fl Fl surf-bilingual-keep +As with +.Fl o , +but also outputs the surface form before the readings. .It Fl c , Fl Fl case-sensitive Use the literal case of the incoming characters .It Fl d , Fl Fl debugged-gen diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/tmx_compiler.cc new/lttoolbox-3.8.3/lttoolbox/tmx_compiler.cc --- old/lttoolbox-3.8.2/lttoolbox/tmx_compiler.cc 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/tmx_compiler.cc 2026-05-07 19:02:21.000000000 +0200 @@ -417,7 +417,7 @@ { fwrite_unlocked(HEADER_LTTOOLBOX, 1, 4, output); uint64_t features = 0; - write_le(output, features); + write_be(output, features); // letters (empty to keep the file format) Compression::multibyte_write(0, output); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/trans_exe.cc new/lttoolbox-3.8.3/lttoolbox/trans_exe.cc --- old/lttoolbox-3.8.2/lttoolbox/trans_exe.cc 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/trans_exe.cc 2026-05-07 19:02:21.000000000 +0200 @@ -73,7 +73,7 @@ char header[4]{}; fread_unlocked(header, 1, 4, input); if (strncmp(header, HEADER_TRANSDUCER, 4) == 0) { - auto features = read_le<uint64_t>(input); + auto features = read_be<uint64_t>(input); if (features >= TDF_UNKNOWN) { throw std::runtime_error("Transducer has features that are unknown to this version of lttoolbox - upgrade!"); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/transducer.cc new/lttoolbox-3.8.3/lttoolbox/transducer.cc --- old/lttoolbox-3.8.2/lttoolbox/transducer.cc 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/transducer.cc 2026-05-07 19:02:21.000000000 +0200 @@ -535,7 +535,7 @@ if (write_weights) { features |= TDF_WEIGHTS; } - write_le(output, features); + write_be(output, features); Compression::multibyte_write(initial, output); Compression::multibyte_write(finals.size(), output); @@ -590,7 +590,7 @@ char header[4]{}; fread_unlocked(header, 1, 4, input); if (strncmp(header, HEADER_TRANSDUCER, 4) == 0) { - auto features = read_le<uint64_t>(input); + auto features = read_be<uint64_t>(input); if (features >= TDF_UNKNOWN) { throw std::runtime_error("Transducer has features that are unknown to this version of lttoolbox - upgrade!"); } @@ -766,7 +766,7 @@ alphabet.getSymbol(r, t.second); escapeSymbol(r, hfst); u_fprintf(output, "%S\t", r.c_str()); - u_fprintf(output, "%f\t\n", it2.second.second); + u_fprintf(output, "%f\n", it2.second.second); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/lttoolbox/ustring.h new/lttoolbox-3.8.3/lttoolbox/ustring.h --- old/lttoolbox-3.8.2/lttoolbox/ustring.h 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/lttoolbox/ustring.h 2026-05-07 19:02:21.000000000 +0200 @@ -26,6 +26,7 @@ #include <vector> #include <cstdint> #include <iomanip> +#include <ostream> typedef std::basic_string<UChar> UString; typedef std::basic_string_view<UChar> UStringView; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/python/setup.py.in new/lttoolbox-3.8.3/python/setup.py.in --- old/lttoolbox-3.8.2/python/setup.py.in 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/python/setup.py.in 2026-05-07 19:02:21.000000000 +0200 @@ -17,7 +17,7 @@ language='c++', sources=['lttoolbox.i'], swig_opts = ["-c++", '-I..', "-I@top_srcdir@", "-Wall"], - include_dirs=['@top_srcdir@', '@top_srcdir@/lttoolbox'] + '@LIBXML_CFLAGS@'.replace('-I', '').split() + '@ICU_CFLAGS@'.replace('-I', '').split(), + include_dirs=['@top_srcdir@', '@top_srcdir@/lttoolbox'] + '@LIBXML_CFLAGS@'.replace('-I', '').split() + '@ICU_CFLAGS@'.replace('-I', '').split() + '@UTFCPP_INCLUDE_DIRS@'.replace('-I', '').split(), library_dirs=['@BUILD_LIBDIR@'], libraries=['lttoolbox', 'xml2', 'icuio', 'icui18n', 'icuuc', 'icudata'], extra_compile_args=compile_args, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/tests/lt_comp/__init__.py new/lttoolbox-3.8.3/tests/lt_comp/__init__.py --- old/lttoolbox-3.8.2/tests/lt_comp/__init__.py 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/tests/lt_comp/__init__.py 2026-05-07 19:02:21.000000000 +0200 @@ -51,23 +51,23 @@ class CompLSX(unittest.TestCase, PrintTest): printdix = "data/basic.lsx" - expectedOutput = '''0 1 <ANY_CHAR> <ANY_CHAR> 0.000000\t -1 1 <ANY_CHAR> <ANY_CHAR> 0.000000\t -1 2 <vblex> <vblex> 0.000000\t -2 3 <ANY_TAG> <ANY_TAG> 0.000000\t -3 3 <ANY_TAG> <ANY_TAG> 0.000000\t -3 4 <$> <prn> 0.000000\t -4 5 p <$> 0.000000\t -5 6 r ε 0.000000\t -6 7 p ε 0.000000\t -7 8 e ε 0.000000\t -8 9 r ε 0.000000\t -9 10 s ε 0.000000\t -10 11 <prn> ε 0.000000\t -11 12 <$> ε 0.000000\t -12 14 ε ε 0.000000\t -12 13 <$> <$> 0.000000\t -13 14 ε ε 0.000000\t + expectedOutput = '''0 1 <ANY_CHAR> <ANY_CHAR> 0.000000 +1 1 <ANY_CHAR> <ANY_CHAR> 0.000000 +1 2 <vblex> <vblex> 0.000000 +2 3 <ANY_TAG> <ANY_TAG> 0.000000 +3 3 <ANY_TAG> <ANY_TAG> 0.000000 +3 4 <$> <prn> 0.000000 +4 5 p <$> 0.000000 +5 6 r ε 0.000000 +6 7 p ε 0.000000 +7 8 e ε 0.000000 +8 9 r ε 0.000000 +9 10 s ε 0.000000 +10 11 <prn> ε 0.000000 +11 12 <$> ε 0.000000 +12 14 ε ε 0.000000 +12 13 <$> <$> 0.000000 +13 14 ε ε 0.000000 14 0.000000 ''' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lttoolbox-3.8.2/tests/lt_print/__init__.py new/lttoolbox-3.8.3/tests/lt_print/__init__.py --- old/lttoolbox-3.8.2/tests/lt_print/__init__.py 2025-08-04 20:29:18.000000000 +0200 +++ new/lttoolbox-3.8.3/tests/lt_print/__init__.py 2026-05-07 19:02:21.000000000 +0200 @@ -6,36 +6,36 @@ class NonWeightedFst(unittest.TestCase, PrintTest): printdix = "data/biproc-skips-tags-mono.dix" printdir = "lr" - expectedOutput = "0\t1\tv\tv\t0.000000\t\n1\t2\ti\ti\t0.000000\t\n2\t3\th\th\t0.000000\t\n3\t4\tk\tk\t0.000000\t\n4\t5\ti\ti\t0.000000\t\n5\t6\t<KEPT>\t<KEPT>\t0.000000\t\n6\t10\t\u03b5\t\u03b5\t0.000000\t\n6\t7\t<MATCHSOFAR>\t<MATCHSOFAR>\t0.000000\t\n7\t8\t<STILLMATCHING>\t<STILLMATCHING>\t0.000000\t\n8\t9\t<NONMATCHL>\t<NONMATCHR>\t0.000000\t\n9\t10\t\u03b5\t\u03b5\t0.000000\t\n10\t0.000000\n" + expectedOutput = "0\t1\tv\tv\t0.000000\n1\t2\ti\ti\t0.000000\n2\t3\th\th\t0.000000\n3\t4\tk\tk\t0.000000\n4\t5\ti\ti\t0.000000\n5\t6\t<KEPT>\t<KEPT>\t0.000000\n6\t10\t\u03b5\t\u03b5\t0.000000\n6\t7\t<MATCHSOFAR>\t<MATCHSOFAR>\t0.000000\n7\t8\t<STILLMATCHING>\t<STILLMATCHING>\t0.000000\n8\t9\t<NONMATCHL>\t<NONMATCHR>\t0.000000\n9\t10\t\u03b5\t\u03b5\t0.000000\n10\t0.000000\n" class WeightedFst(unittest.TestCase, PrintTest): printdix = "data/cat-weight.att" printdir = "lr" - expectedOutput = "0\t1\tc\tc\t4.567895\t\n1\t2\ta\ta\t0.989532\t\n2\t3\tt\tt\t2.796193\t\n3\t4\tε\t+\t0.824564\t\n4\t5\tε\tn\t1.824564\t\n4\t5\tε\tv\t2.856296\t\n5\t0.525487\n" + expectedOutput = "0\t1\tc\tc\t4.567895\n1\t2\ta\ta\t0.989532\n2\t3\tt\tt\t2.796193\n3\t4\tε\t+\t0.824564\n4\t5\tε\tn\t1.824564\n4\t5\tε\tv\t2.856296\n5\t0.525487\n" class NegativeWeightedFst(unittest.TestCase, PrintTest): printdix = "data/cat-weight-negative.att" printdir = "lr" - expectedOutput = "0\t1\tc\tc\t4.567895\t\n1\t2\ta\ta\t0.989532\t\n2\t3\tt\tt\t2.796193\t\n3\t4\tε\t+\t-0.824564\t\n4\t5\tε\tn\t1.824564\t\n4\t5\tε\tv\t2.856296\t\n5\t-0.525487\n" + expectedOutput = "0\t1\tc\tc\t4.567895\n1\t2\ta\ta\t0.989532\n2\t3\tt\tt\t2.796193\n3\t4\tε\t+\t-0.824564\n4\t5\tε\tn\t1.824564\n4\t5\tε\tv\t2.856296\n5\t-0.525487\n" class MulticharCompFst(unittest.TestCase, PrintTest): printdix = "data/multichar.att" printdir = "lr" - expectedOutput = "0\t1\tא\tא\t0.000000\t\n1\t2\tε\tַ\t0.000000\t\n2\t3\tε\tן\t0.000000\t\n3\t4\tε\t<blah>\t0.000000\t\n4\t0.000000\n" + expectedOutput = "0\t1\tא\tא\t0.000000\n1\t2\tε\tַ\t0.000000\n2\t3\tε\tן\t0.000000\n3\t4\tε\t<blah>\t0.000000\n4\t0.000000\n" class SectionsFst(unittest.TestCase, PrintTest): printdix = "data/sections.dix" printdir = "lr" - expectedOutput = """0\t1\t.\t.\t0.000000\t -1\t2\tε\t<sent>\t0.000000\t + expectedOutput = """0\t1\t.\t.\t0.000000 +1\t2\tε\t<sent>\t0.000000 2\t0.000000 -- -0\t1\tX\tX\t0.000000\t -1\t2\tε\t<np>\t0.000000\t +0\t1\tX\tX\t0.000000 +1\t2\tε\t<np>\t0.000000 2\t0.000000 """
