From b23b906a332fe8161dc46f164f513904712124d0 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Mon, 11 May 2026 15:10:45 +0200 Subject: [PATCH 1/8] Add Python examples for KNI usage Add Python implementations demonstrating single-table and multi-table recoding with the Khiops Native Interface (KNI). New files: - python/KNI.py: Complete ctypes wrapper for KhiopsNativeInterface library with automatic library discovery (KNI_HOME, system paths) - python/KNIRecodeFile.py: Single-table recoding example - python/KNIRecodeMTFiles.py: Multi-table recoding example with support for secondary tables and external tables Features: - Cross-platform support (Windows, Linux, macOS) - Flexible library loading with multiple search strategies - Complete API coverage including multi-table operations - Command-line interface with argparse for multi-table example - Error handling with descriptive messages Requirements: Python 3.6+ and KNI shared library installed --- README.md | 92 ++++++-- python/KNI.py | 430 +++++++++++++++++++++++++++++++++++++ python/KNIRecodeFile.py | 168 +++++++++++++++ python/KNIRecodeMTFiles.py | 332 ++++++++++++++++++++++++++++ 4 files changed, 1010 insertions(+), 12 deletions(-) create mode 100755 python/KNI.py create mode 100755 python/KNIRecodeFile.py create mode 100755 python/KNIRecodeMTFiles.py diff --git a/README.md b/README.md index c9d8bc2..fe9b5eb 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# Khiops Native Interface v11.0.0 +# Khiops Native Interface v11.0.1-a.5 This project provides all the basics to use the Khiops Native Interface (KNI): installation and examples. -The purpose of KNI is to allow a deeper integration of Khiops in information systems, by mean of the C programming language, using a shared library (`.dll` in Windows, `.so` in Linux). This relates specially to the problem of model deployment, which otherwise requires the use of input and output data files when using directly the Khiops tool in batch mode. See Khiops Guide for an introduction to dictionary files, dictionaries, database files and deployment. +The purpose of KNI is to allow a deeper integration of Khiops in information systems, by means of the C programming language, using a shared library (`.dll` in Windows, `.so` in Linux). This relates especially to the problem of model deployment, which otherwise requires the use of input and output data files when using directly the Khiops tool in batch mode. See Khiops Guide for an introduction to dictionary files, dictionaries, database files and deployment. -The Khiops deployment API is thus made public through a shared library. Therefore, a Khiops model can be deployed directly from any programming language, such as C, C++, Java, Python, Matlab, etc. This enables real time model deployment without the overhead of temporary data files or launching executables. This is critical for certain applications, such as marketing or targeted advertising on the web.. +The Khiops deployment API is thus made public through a shared library. Therefore, a Khiops model can be deployed directly from any programming language, such as C, C++, Java, Python, Matlab, etc. This enables real-time model deployment without the overhead of temporary data files or launching executables. This is critical for certain applications, such as marketing or targeted advertising on the web. All KNI functions are C functions for easy use with other programming languages. They return a positive or zero value in case of success, and a negative error code in case of failure. @@ -14,15 +14,32 @@ See [KhiopsNativeInterface.h](include/KhiopsNativeInterface.h) for a detailed de > [!CAUTION] > The functions are not reentrant (thread-safe): the library can be used simultaneously by several executables, but not simultaneously by several threads in the same executable. +## Table of Contents + +- [KNI installation](#kni-installation) + - [Windows](#windows) + - [Linux](#linux) +- [Application examples](#application-examples) +- [Example with C](#example-with-c) + - [Building the examples](#building-the-examples) + - [Launch](#launch) +- [Example with Java](#example-with-java) + - [Building the examples](#building-the-examples-1) + - [Launch](#launch-1) +- [Example with Python](#example-with-python) + - [Requirements](#requirements) + - [Scripts](#scripts) + - [Launch](#launch-2) + # KNI installation ## Windows -Download [KNI-11.0.0.zip](https://github.com/KhiopsML/khiops/releases/tag/11.0.0/KNI-11.0.0.zip) and extract it to your machine. Set the environment variable `KNI_HOME` to the extracted directory. This variable is used in the following examples. +Download [KNI-11.0.1-a.5.zip](https://github.com/KhiopsML/khiops/releases/tag/11.0.1/KNI-11.0.1-a.5.zip) and extract it to your machine. Set the environment variable `KNI_HOME` to the extracted directory. This variable is used in the following examples. ## Linux -On Linux, go to the [release page](https://github.com/KhiopsML/khiops/releases/tag/11.0.0/) and download the KNI package. The name of the package begins with **kni** and ends with the **code name** of the OS. The code name is in the release file of the distribution (here, it is "jammy"): +On Linux, go to the [release page](https://github.com/KhiopsML/khiops/releases/tag/11.0.1/) and download the KNI package. The name of the package begins with **kni** and ends with the **code name** of the OS. The code name is in the release file of the distribution (here, it is "jammy"): ```bash $ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.4 LTS" @@ -46,7 +63,7 @@ Download the package according to the code name of your OS and install it with ` Application examples are available in this repository. The main branch corresponds to the latest version of KNI. To explore older versions, switch between branches, which are named after their respective versions. -Both examples in C and Java produce a sample binary `KNIRecodeFile`. It recodes an input file to an output file, using a Khiops dictionary from a dictionary file. +Examples in C, Java, and Python demonstrate how to use KNI. The main example, `KNIRecodeFile`, recodes an input file to an output file using a Khiops dictionary from a dictionary file. ```bash KNIRecodeFile [Error file] @@ -55,14 +72,14 @@ KNIRecodeFile [Error f # The error file may be useful for debugging purposes. It is optional and may be empty. ``` -A more complex example (available only in C) is `KNIRecodeMTFiles`, it recodes the input files of multi-table dataset to a single output file. +A more complex example (available in C and Python) is `KNIRecodeMTFiles`, which recodes the input files of a multi-table dataset to a single output file. ```bash KNIRecodeMTFiles -d: [-f: -i: [...] - -s: < file name> ... + -s: ... -x: -o: [-e: ] @@ -71,7 +88,7 @@ KNIRecodeMTFiles # Example with C -The files are located in [cpp directory](cpp/). They allow to build `KNIRecodeFile` and `KNIRecodeMTFiles`. +The files are located in [cpp directory](cpp/). They allow you to build `KNIRecodeFile` and `KNIRecodeMTFiles`. ## Building the examples @@ -103,12 +120,12 @@ Recode the "Splice Junction" multi-table dataset using the `SNB_SpliceJunction` ```bash KNIRecodeMTFiles -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction \ - -i .data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction.txt + -i data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction.txt ``` # Example with Java -The files are located in [java directory](java/). They allow to build `KNIRecodeFile.jar`. This example use [JNA](https://github.com/twall/jna#readme) to make calls to KhiopsNativeInterface.so/dll from Java. +The files are located in [java directory](java/). They allow you to build `KNIRecodeFile.jar`. This example uses [JNA](https://github.com/twall/jna#readme) to make calls to KhiopsNativeInterface.so/dll from Java. ## Building the examples @@ -122,7 +139,7 @@ jar cf kni.jar -C java KNI.class -C java KNIRecodeFile.class ## Launch -Recodes the "Iris" dataset from the data directory using the `SNB_Iris` classifier dictionary. +Recode the "Iris" dataset from the data directory using the `SNB_Iris` classifier dictionary. On Linux: @@ -138,3 +155,54 @@ set path=%KNI_HOME%/bin;%path% java -cp kni.jar;jna.jar KNIRecodeFile data/ModelingIris.kdic SNB_Iris ^ data/Iris.txt R_Iris_java.txt ``` + +# Example with Python + +The files are located in [python directory](python/). They use Python's `ctypes` to call the KhiopsNativeInterface shared library directly. + +## Requirements + +- Python 3.6 or later +- The KNI shared library must be installed and accessible (via `KNI_HOME` environment variable or standard system paths) + +## Scripts + +- `KNI.py`: Python wrapper for KhiopsNativeInterface using ctypes +- `KNIRecodeFile.py`: Single-table recoding example +- `KNIRecodeMTFiles.py`: Multi-table recoding example + +## Launch + +Recode the "Iris" dataset from the data directory using the `SNB_Iris` classifier dictionary. + +On Linux: + +```bash +python3 python/KNIRecodeFile.py data/ModelingIris.kdic SNB_Iris \ + data/Iris.txt R_Iris_python.txt +``` + +On Windows: + +```cmd +set path=%KNI_HOME%/bin;%path% +python python\KNIRecodeFile.py data/ModelingIris.kdic SNB_Iris ^ + data/Iris.txt R_Iris_python.txt +``` + +For the multi-table "Splice Junction" example: + +On Linux: + +```bash +python3 python/KNIRecodeMTFiles.py -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction \ + -i data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction_python.txt +``` + +On Windows: + +```cmd +set path=%KNI_HOME%/bin;%path% +python python\KNIRecodeMTFiles.py -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction ^ + -i data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction_python.txt +``` diff --git a/python/KNI.py b/python/KNI.py new file mode 100755 index 0000000..8c3c28c --- /dev/null +++ b/python/KNI.py @@ -0,0 +1,430 @@ +# Copyright (c) 2023-2026 Orange. All rights reserved. +# This software is distributed under the BSD 3-Clause-clear License, the text of which is available +# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. + +""" +Khiops Native Interface (KNI) Python wrapper using ctypes. + +This module provides a Python interface to the Khiops Native Interface (KNI) C library, +allowing direct deployment of Khiops models without temporary files. +""" + +import ctypes +import platform +import sys +from pathlib import Path + + +class KNI: + """Python wrapper for Khiops Native Interface using ctypes.""" + + # Error codes + KNI_OK = 0 + KNI_ErrorRunningFunction = -1 + KNI_ErrorDictionaryFileName = -2 + KNI_ErrorDictionaryMissingFile = -3 + KNI_ErrorDictionaryFileFormat = -4 + KNI_ErrorDictionaryName = -5 + KNI_ErrorMissingDictionary = -6 + KNI_ErrorTooManyStreams = -7 + KNI_ErrorStreamHeaderLine = -8 + KNI_ErrorFieldSeparator = -9 + KNI_ErrorStreamHandle = -10 + KNI_ErrorStreamOpened = -11 + KNI_ErrorStreamNotOpened = -12 + KNI_ErrorStreamInputRecord = -13 + KNI_ErrorStreamInputRead = -14 + KNI_ErrorStreamOutputRecord = -15 + KNI_ErrorMissingSecondaryHeader = -16 + KNI_ErrorMissingExternalTable = -17 + KNI_ErrorDataRoot = -18 + KNI_ErrorDataPath = -19 + KNI_ErrorDataTableFile = -20 + KNI_ErrorLoadDataTable = -21 + KNI_ErrorMemoryOverflow = -22 + KNI_ErrorStreamOpening = -23 + KNI_ErrorStreamOpeningNotFinished = -24 + KNI_ErrorLogFile = -25 + + # Constants + KNI_MaxStreamNumber = 512 + KNI_DefaultMaxStreamMemory = 100 + KNI_MaxPathNameLength = 1024 + KNI_MaxDictionaryNameLength = 128 + KNI_MaxRecordLength = 8 * 1024 * 1024 # 8 MB + + def __init__(self, library_path=None): + """ + Initialize the KNI wrapper. + + Args: + library_path: Optional path to the KNI shared library. + If None, attempts to locate it automatically. + """ + self._lib = self._load_library(library_path) + self._setup_functions() + + def _load_library(self, library_path): + """Load the KNI shared library.""" + if library_path: + return ctypes.CDLL(str(library_path)) + + # Try to locate library automatically + system = platform.system() + if system == "Windows": + lib_name = "KhiopsNativeInterface.dll" + elif system == "Linux": + lib_name = "libKhiopsNativeInterface.so" + elif system == "Darwin": # macOS + lib_name = "libKhiopsNativeInterface.dylib" + else: + raise RuntimeError(f"Unsupported platform: {system}") + + # Try different search strategies + try: + # First, try loading directly (will use system paths) + return ctypes.CDLL(lib_name) + except OSError: + # Try to find in KNI_HOME environment variable + import os + + kni_home = os.environ.get("KNI_HOME") + if kni_home: + kni_home_path = Path(kni_home) + + # Try multiple potential locations within KNI_HOME + potential_paths = [ + kni_home_path + / lib_name, # KNI_HOME directly (if set to lib/bin directory) + ] + + if system == "Windows": + potential_paths.extend( + [ + kni_home_path / "bin" / lib_name, + kni_home_path / "lib" / lib_name, + ] + ) + else: + potential_paths.extend( + [ + kni_home_path / "lib" / lib_name, + kni_home_path / "bin" / lib_name, + ] + ) + + for lib_path in potential_paths: + if lib_path.exists(): + return ctypes.CDLL(str(lib_path)) + + # Try standard installation paths + if system == "Linux": + standard_paths = [ + f"/usr/lib/{lib_name}", + f"/usr/local/lib/{lib_name}", + ] + for path in standard_paths: + try: + return ctypes.CDLL(path) + except OSError: + continue + + raise RuntimeError( + f"Could not find {lib_name}. " + "Please set KNI_HOME environment variable or provide library_path." + ) + + def _setup_functions(self): + """Setup function signatures for KNI library functions.""" + # KNIGetVersion + self._lib.KNIGetVersion.argtypes = [] + self._lib.KNIGetVersion.restype = ctypes.c_int + + # KNIGetFullVersion + self._lib.KNIGetFullVersion.argtypes = [] + self._lib.KNIGetFullVersion.restype = ctypes.c_char_p + + # KNISetLogFileName + self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p] + self._lib.KNISetLogFileName.restype = ctypes.c_int + + # KNIOpenStream + self._lib.KNIOpenStream.argtypes = [ + ctypes.c_char_p, # sDictionaryFileName + ctypes.c_char_p, # sDictionaryName + ctypes.c_char_p, # sStreamHeaderLine + ctypes.c_char, # cFieldSeparator + ] + self._lib.KNIOpenStream.restype = ctypes.c_int + + # KNICloseStream + self._lib.KNICloseStream.argtypes = [ctypes.c_int] + self._lib.KNICloseStream.restype = ctypes.c_int + + # KNIRecodeStreamRecord + self._lib.KNIRecodeStreamRecord.argtypes = [ + ctypes.c_int, # hStream + ctypes.c_char_p, # sInputRecord + ctypes.c_char_p, # sOutputRecord + ctypes.c_int, # nOutputMaxLength + ] + self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int + + # Multi-table functions + # KNISetSecondaryHeaderLine + self._lib.KNISetSecondaryHeaderLine.argtypes = [ + ctypes.c_int, # hStream + ctypes.c_char_p, # sDataPath + ctypes.c_char_p, # sStreamSecondaryHeaderLine + ] + self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int + + # KNISetExternalTable + self._lib.KNISetExternalTable.argtypes = [ + ctypes.c_int, # hStream + ctypes.c_char_p, # sDataRoot + ctypes.c_char_p, # sDataPath + ctypes.c_char_p, # sDataTableFileName + ] + self._lib.KNISetExternalTable.restype = ctypes.c_int + + # KNIFinishOpeningStream + self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int] + self._lib.KNIFinishOpeningStream.restype = ctypes.c_int + + # KNISetSecondaryInputRecord + self._lib.KNISetSecondaryInputRecord.argtypes = [ + ctypes.c_int, # hStream + ctypes.c_char_p, # sDataPath + ctypes.c_char_p, # sStreamSecondaryInputRecord + ] + self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int + + # Advanced parameters + # KNIGetStreamMaxMemory + self._lib.KNIGetStreamMaxMemory.argtypes = [] + self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int + + # KNISetStreamMaxMemory + self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int] + self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int + + def get_version(self): + """Get KNI version as integer (10*major + minor).""" + return self._lib.KNIGetVersion() + + def get_full_version(self): + """Get KNI full version string.""" + return self._lib.KNIGetFullVersion().decode("utf-8") + + def set_log_file_name(self, log_file_name): + """ + Set the log file name for error messages. + + Args: + log_file_name: Path to log file (empty string for no logging) + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNISetLogFileName(log_file_name.encode("utf-8")) + + def open_stream( + self, dictionary_file_name, dictionary_name, header_line, field_separator="\t" + ): + """ + Open a KNI stream for recoding. + + Args: + dictionary_file_name: Path to the dictionary file + dictionary_name: Name of the dictionary to use + header_line: Header line with field names + field_separator: Character used to separate fields (default: tab) + + Returns: + Positive stream handle on success, negative error code on failure + """ + return self._lib.KNIOpenStream( + dictionary_file_name.encode("utf-8"), + dictionary_name.encode("utf-8"), + header_line.encode("utf-8"), + ( + field_separator.encode("utf-8")[0] + if isinstance(field_separator, str) + else field_separator + ), + ) + + def close_stream(self, stream_handle): + """ + Close a KNI stream. + + Args: + stream_handle: Handle returned by open_stream + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNICloseStream(stream_handle) + + def recode_stream_record(self, stream_handle, input_record, max_output_length=None): + """ + Recode an input record using the stream's dictionary. + + Args: + stream_handle: Handle returned by open_stream + input_record: Input record string + max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) + + Returns: + Tuple (return_code, output_record) + - return_code: KNI_OK on success, negative error code on failure + - output_record: Recoded output string (empty on failure) + """ + if max_output_length is None: + max_output_length = self.KNI_MaxRecordLength + + output_buffer = ctypes.create_string_buffer(max_output_length) + ret_code = self._lib.KNIRecodeStreamRecord( + stream_handle, + input_record.encode("utf-8"), + output_buffer, + max_output_length, + ) + + if ret_code == self.KNI_OK: + return ret_code, output_buffer.value.decode("utf-8") + else: + return ret_code, "" + + def set_secondary_header_line(self, stream_handle, data_path, header_line): + """ + Set the header line of a secondary table (multi-table only). + + Args: + stream_handle: Handle returned by open_stream + data_path: Data path identifying the secondary table + header_line: Header line with field names + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNISetSecondaryHeaderLine( + stream_handle, data_path.encode("utf-8"), header_line.encode("utf-8") + ) + + def set_external_table( + self, stream_handle, data_root, data_path, data_table_file_name + ): + """ + Set the name of a data file for an external table (multi-table only). + + Args: + stream_handle: Handle returned by open_stream + data_root: Root dictionary of the external table + data_path: Data path for secondary external tables (empty for root) + data_table_file_name: Path to the external table data file + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNISetExternalTable( + stream_handle, + data_root.encode("utf-8"), + data_path.encode("utf-8"), + data_table_file_name.encode("utf-8"), + ) + + def finish_opening_stream(self, stream_handle): + """ + Finish opening a stream (multi-table only). + + Must be called after all secondary headers and external tables are set. + + Args: + stream_handle: Handle returned by open_stream + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNIFinishOpeningStream(stream_handle) + + def set_secondary_input_record(self, stream_handle, data_path, input_record): + """ + Set a secondary input record for multi-table recoding. + + All secondary records must be set before recoding the primary record. + + Args: + stream_handle: Handle returned by open_stream + data_path: Data path identifying the secondary table + input_record: Secondary input record string + + Returns: + KNI_OK on success, negative error code on failure + """ + return self._lib.KNISetSecondaryInputRecord( + stream_handle, data_path.encode("utf-8"), input_record.encode("utf-8") + ) + + def get_stream_max_memory(self): + """ + Get the maximum amount of memory (in MB) for stream opening. + + Returns: + Maximum memory in MB + """ + return self._lib.KNIGetStreamMaxMemory() + + def set_stream_max_memory(self, max_mb): + """ + Set the maximum amount of memory (in MB) for stream opening. + + Args: + max_mb: Maximum memory in MB + + Returns: + Accepted value (bounded by system limits) + """ + return self._lib.KNISetStreamMaxMemory(max_mb) + + @staticmethod + def get_error_message(error_code): + """ + Get a human-readable error message for an error code. + + Args: + error_code: KNI error code + + Returns: + Error message string + """ + error_messages = { + KNI.KNI_OK: "Success", + KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running", + KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name", + KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist", + KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format", + KNI.KNI_ErrorDictionaryName: "Bad dictionary name", + KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file", + KNI.KNI_ErrorTooManyStreams: "Too many streams opened", + KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line", + KNI.KNI_ErrorFieldSeparator: "Bad field separator", + KNI.KNI_ErrorStreamHandle: "Bad stream handle", + KNI.KNI_ErrorStreamOpened: "Stream already opened", + KNI.KNI_ErrorStreamNotOpened: "Stream not opened", + KNI.KNI_ErrorStreamInputRecord: "Bad input record", + KNI.KNI_ErrorStreamInputRead: "Problem reading input record", + KNI.KNI_ErrorStreamOutputRecord: "Output record too long", + KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header", + KNI.KNI_ErrorMissingExternalTable: "Missing external table", + KNI.KNI_ErrorDataRoot: "Bad data root", + KNI.KNI_ErrorDataPath: "Bad data path", + KNI.KNI_ErrorDataTableFile: "Bad data table file", + KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables", + KNI.KNI_ErrorMemoryOverflow: "Memory overflow", + KNI.KNI_ErrorStreamOpening: "Stream could not be opened", + KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished", + KNI.KNI_ErrorLogFile: "Bad error file", + } + return error_messages.get(error_code, f"Unknown error code: {error_code}") diff --git a/python/KNIRecodeFile.py b/python/KNIRecodeFile.py new file mode 100755 index 0000000..3361946 --- /dev/null +++ b/python/KNIRecodeFile.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023-2026 Orange. All rights reserved. +# This software is distributed under the BSD 3-Clause-clear License, the text of which is available +# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. + +""" +KNIRecodeFile: Recode an input file to an output file using a Khiops dictionary. + +This script demonstrates the use of the Khiops Native Interface (KNI) from Python +to deploy a Khiops model for real-time scoring without temporary files. +""" + +import sys +from pathlib import Path +from KNI import KNI + + +def recode_file( + dictionary_file_name, + dictionary_name, + input_file_name, + output_file_name, + error_file_name="", +): + """ + Recode an input file to an output file using a Khiops dictionary. + + Args: + dictionary_file_name: Path to the dictionary file + dictionary_name: Name of the dictionary to use + input_file_name: Path to input file (must have header line) + output_file_name: Path to output file + error_file_name: Optional path to error log file (empty for no logging) + + Returns: + 0 on success, negative error code on failure + """ + # Initialize KNI + try: + kni = KNI() + except Exception as e: + print(f"Error: Failed to load KNI library: {e}", file=sys.stderr) + return -1 + + # Set error log file + if error_file_name: + ret_code = kni.set_log_file_name(error_file_name) + if ret_code != KNI.KNI_OK: + print( + f"Warning: Failed to set log file: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + + print(f"\nRecode records of {input_file_name} to {output_file_name}") + + try: + # Open input and output files + with open(input_file_name, "r", encoding="utf-8") as input_file, open( + output_file_name, "w", encoding="utf-8" + ) as output_file: + + # Read header line + header_line = input_file.readline().rstrip("\n\r") + if not header_line: + print("Error: Empty input file", file=sys.stderr) + return -1 + + # Open KNI stream + stream_handle = kni.open_stream( + dictionary_file_name, dictionary_name, header_line, "\t" + ) + + if stream_handle < 0: + print( + f"Error: Open stream failed: {kni.get_error_message(stream_handle)}", + file=sys.stderr, + ) + return stream_handle + + # Process all records + record_number = 0 + for line_number, line in enumerate(input_file, start=2): + # Remove trailing newline/carriage return + input_record = line.rstrip("\n\r") + + # Skip empty lines + if not input_record: + continue + + # Recode the record + ret_code, output_record = kni.recode_stream_record( + stream_handle, input_record + ) + + if ret_code == KNI.KNI_OK: + # Write output record + output_file.write(output_record + "\n") + record_number += 1 + else: + print( + f"Error: Recode failed at line {line_number}: " + f"{kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + kni.close_stream(stream_handle) + return ret_code + + # Close stream + ret_code = kni.close_stream(stream_handle) + if ret_code != KNI.KNI_OK: + print( + f"Error: Close stream failed: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + return ret_code + + print(f"{record_number} records recoded") + return 0 + + except FileNotFoundError as e: + print(f"Error: File not found: {e.filename}", file=sys.stderr) + return -1 + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + return -1 + + +def main(): + """Main entry point for command-line execution.""" + # Check command-line arguments + if len(sys.argv) < 5: + print( + "Usage: KNIRecodeFile " + " [Error file]", + file=sys.stderr, + ) + print( + "\nThe input file must have a header line, describing the structure " + "of all its instances.", + file=sys.stderr, + ) + print("The input and output files have a tabular format.", file=sys.stderr) + print( + "The error file may be useful for debugging purposes. " + "It is optional and may be empty.", + file=sys.stderr, + ) + return 1 + + # Parse arguments + dictionary_file = sys.argv[1] + dictionary_name = sys.argv[2] + input_file = sys.argv[3] + output_file = sys.argv[4] + error_file = sys.argv[5] if len(sys.argv) > 5 else "" + + # Execute recoding + ret_code = recode_file( + dictionary_file, dictionary_name, input_file, output_file, error_file + ) + + if ret_code != 0: + return 1 + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/python/KNIRecodeMTFiles.py b/python/KNIRecodeMTFiles.py new file mode 100755 index 0000000..186ce5e --- /dev/null +++ b/python/KNIRecodeMTFiles.py @@ -0,0 +1,332 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023-2026 Orange. All rights reserved. +# This software is distributed under the BSD 3-Clause-clear License, the text of which is available +# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. + +""" +KNIRecodeMTFiles: Recode multi-table input files using a Khiops dictionary. + +This script demonstrates multi-table recoding with the Khiops Native Interface (KNI) +from Python. It supports secondary tables and external tables. +""" + +import sys +import argparse +from pathlib import Path +from KNI import KNI + + +def recode_mt_files( + dictionary_file, + dictionary_name, + input_specs, + secondary_specs, + external_specs, + output_file, + field_separator="\t", + error_file="", + max_memory=None, +): + """ + Recode multi-table input files to a single output file. + + Args: + dictionary_file: Path to the dictionary file + dictionary_name: Name of the dictionary to use + input_specs: Dict with 'file': input file path, 'keys': list of key column indices (1-based) + secondary_specs: List of dicts with 'path': data path, 'file': file path, 'keys': key indices + external_specs: List of dicts with 'root': data root, 'path': data path, 'file': file path + output_file: Path to output file + field_separator: Character to separate fields + error_file: Optional path to error log file + max_memory: Optional maximum memory in MB + + Returns: + 0 on success, negative error code on failure + """ + # Initialize KNI + try: + kni = KNI() + except Exception as e: + print(f"Error: Failed to load KNI library: {e}", file=sys.stderr) + return -1 + + # Set error log file + if error_file: + kni.set_log_file_name(error_file) + + # Set max memory if specified + if max_memory: + actual_memory = kni.set_stream_max_memory(max_memory) + print(f"Stream max memory set to {actual_memory} MB") + + print(f"\nRecode multi-table data to {output_file}") + + try: + # Read headers from all input files + input_file_path = input_specs["file"] + with open(input_file_path, "r", encoding="utf-8") as f: + main_header = f.readline().rstrip("\n\r") + + # Open stream with main table header + stream_handle = kni.open_stream( + dictionary_file, dictionary_name, main_header, field_separator + ) + + if stream_handle < 0: + print( + f"Error: Open stream failed: {kni.get_error_message(stream_handle)}", + file=sys.stderr, + ) + return stream_handle + + # Set secondary table headers + secondary_files = {} + for spec in secondary_specs: + data_path = spec["path"] + sec_file = spec["file"] + + with open(sec_file, "r", encoding="utf-8") as f: + sec_header = f.readline().rstrip("\n\r") + + ret_code = kni.set_secondary_header_line( + stream_handle, data_path, sec_header + ) + if ret_code != KNI.KNI_OK: + print( + f"Error: Set secondary header failed for {data_path}: " + f"{kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + kni.close_stream(stream_handle) + return ret_code + + # Store opened file for reading records + secondary_files[data_path] = { + "file": open(sec_file, "r", encoding="utf-8"), + "keys": spec["keys"], + "records": {}, + } + # Skip header + secondary_files[data_path]["file"].readline() + + # Set external tables + for spec in external_specs: + ret_code = kni.set_external_table( + stream_handle, spec["root"], spec.get("path", ""), spec["file"] + ) + if ret_code != KNI.KNI_OK: + print( + f"Error: Set external table failed: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + for sf in secondary_files.values(): + sf["file"].close() + kni.close_stream(stream_handle) + return ret_code + + # Finish opening stream (required for multi-table) + ret_code = kni.finish_opening_stream(stream_handle) + if ret_code != KNI.KNI_OK: + print( + f"Error: Finish opening stream failed: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + for sf in secondary_files.values(): + sf["file"].close() + kni.close_stream(stream_handle) + return ret_code + + # Load all secondary records into memory indexed by key + for data_path, sec_info in secondary_files.items(): + print(f"Loading secondary table: {data_path}") + for line in sec_info["file"]: + record = line.rstrip("\n\r") + if not record: + continue + + # Extract key from record + fields = record.split(field_separator) + key_values = [fields[idx - 1] for idx in sec_info["keys"]] + key = tuple(key_values) + + # Store record by key (support multiple records per key) + if key not in sec_info["records"]: + sec_info["records"][key] = [] + sec_info["records"][key].append(record) + + sec_info["file"].close() + + # Process main table records + record_number = 0 + with open(input_file_path, "r", encoding="utf-8") as main_file, open( + output_file, "w", encoding="utf-8" + ) as out_file: + + # Skip header (already read) + main_file.readline() + + for line_number, line in enumerate(main_file, start=2): + main_record = line.rstrip("\n\r") + if not main_record: + continue + + # Extract key from main record + main_fields = main_record.split(field_separator) + main_key = tuple([main_fields[idx - 1] for idx in input_specs["keys"]]) + + # Set all secondary records matching the main record key + for data_path, sec_info in secondary_files.items(): + matching_records = sec_info["records"].get(main_key, []) + for sec_record in matching_records: + ret_code = kni.set_secondary_input_record( + stream_handle, data_path, sec_record + ) + if ret_code != KNI.KNI_OK: + print( + f"Error: Set secondary record failed at line {line_number}: " + f"{kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + kni.close_stream(stream_handle) + return ret_code + + # Recode the main record + ret_code, output_record = kni.recode_stream_record( + stream_handle, main_record + ) + if ret_code == KNI.KNI_OK: + out_file.write(output_record + "\n") + record_number += 1 + else: + print( + f"Error: Recode failed at line {line_number}: " + f"{kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + kni.close_stream(stream_handle) + return ret_code + + # Close stream + ret_code = kni.close_stream(stream_handle) + if ret_code != KNI.KNI_OK: + print( + f"Error: Close stream failed: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) + return ret_code + + print(f"{record_number} records recoded") + return 0 + + except FileNotFoundError as e: + print(f"Error: File not found: {e.filename}", file=sys.stderr) + return -1 + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + import traceback + + traceback.print_exc() + return -1 + + +def main(): + """Main entry point for command-line execution.""" + parser = argparse.ArgumentParser( + description="Recode multi-table input files using a Khiops dictionary.", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Example: + KNIRecodeMTFiles -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction \\ + -i data/SpliceJunction.txt 1 \\ + -s DNA data/SpliceJunctionDNA.txt 1 \\ + -o R_SpliceJunction.txt + """, + ) + + parser.add_argument( + "-d", + "--dictionary", + nargs=2, + required=True, + metavar=("FILE", "NAME"), + help="Dictionary file and dictionary name", + ) + parser.add_argument( + "-f", + "--field-separator", + default="\t", + help="Field separator character (default: tab)", + ) + parser.add_argument( + "-i", + "--input", + nargs="+", + required=True, + metavar="ARG", + help="Input file name followed by key column indices (1-based): FILE KEY...", + ) + parser.add_argument( + "-s", + "--secondary", + action="append", + nargs="+", + metavar="ARG", + help="Secondary data path, file name, and key indices: PATH FILE KEY...", + ) + parser.add_argument( + "-x", + "--external", + action="append", + nargs=3, + metavar=("ROOT", "PATH", "FILE"), + help="External data root, path, and file name: ROOT PATH FILE", + ) + parser.add_argument("-o", "--output", required=True, help="Output file name") + parser.add_argument( + "-e", "--error-file", default="", help="Error log file name (optional)" + ) + parser.add_argument("-m", "--max-memory", type=int, help="Maximum memory in MB") + + args = parser.parse_args() + + # Parse input specification + input_file = args.input[0] + key_indices = [int(k) for k in args.input[1:]] + input_specs = {"file": input_file, "keys": key_indices} + + # Parse secondary specifications + secondary_specs = [] + if args.secondary: + for sec in args.secondary: + data_path = sec[0] + sec_file = sec[1] + sec_keys = [int(k) for k in sec[2:]] + secondary_specs.append( + {"path": data_path, "file": sec_file, "keys": sec_keys} + ) + + # Parse external specifications + external_specs = [] + if args.external: + for ext in args.external: + external_specs.append({"root": ext[0], "path": ext[1], "file": ext[2]}) + + # Execute recoding + ret_code = recode_mt_files( + args.dictionary[0], + args.dictionary[1], + input_specs, + secondary_specs, + external_specs, + args.output, + args.field_separator, + args.error_file, + args.max_memory, + ) + + return 1 if ret_code != 0 else 0 + + +if __name__ == "__main__": + sys.exit(main()) From 47b6876ca07d690a595669d613ae5c8770af7665 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Tue, 12 May 2026 14:50:05 +0200 Subject: [PATCH 2/8] After review --- .gitignore | 1 + python/KNI.py | 240 ++++++++++++++++++++++++++----------- python/KNIRecodeFile.py | 178 ++++++++++++++------------- python/KNIRecodeMTFiles.py | 180 ++++++++++++++-------------- 4 files changed, 355 insertions(+), 244 deletions(-) diff --git a/.gitignore b/.gitignore index 1d74e21..dbd5f30 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .vscode/ +python/__pycache__/ diff --git a/python/KNI.py b/python/KNI.py index 8c3c28c..dfc1714 100755 --- a/python/KNI.py +++ b/python/KNI.py @@ -12,6 +12,7 @@ import ctypes import platform import sys +import os from pathlib import Path @@ -86,48 +87,11 @@ def _load_library(self, library_path): return ctypes.CDLL(lib_name) except OSError: # Try to find in KNI_HOME environment variable - import os - kni_home = os.environ.get("KNI_HOME") if kni_home: - kni_home_path = Path(kni_home) - - # Try multiple potential locations within KNI_HOME - potential_paths = [ - kni_home_path - / lib_name, # KNI_HOME directly (if set to lib/bin directory) - ] - - if system == "Windows": - potential_paths.extend( - [ - kni_home_path / "bin" / lib_name, - kni_home_path / "lib" / lib_name, - ] - ) - else: - potential_paths.extend( - [ - kni_home_path / "lib" / lib_name, - kni_home_path / "bin" / lib_name, - ] - ) - - for lib_path in potential_paths: - if lib_path.exists(): - return ctypes.CDLL(str(lib_path)) - - # Try standard installation paths - if system == "Linux": - standard_paths = [ - f"/usr/lib/{lib_name}", - f"/usr/local/lib/{lib_name}", - ] - for path in standard_paths: - try: - return ctypes.CDLL(path) - except OSError: - continue + lib_path = os.path.join(kni_home, lib_name) + if os.path.exists(lib_path): + return ctypes.CDLL(lib_path) raise RuntimeError( f"Could not find {lib_name}. " @@ -222,12 +186,20 @@ def set_log_file_name(self, log_file_name): Set the log file name for error messages. Args: - log_file_name: Path to log file (empty string for no logging) + log_file_name: Path to log file (str or bytes, empty string for no logging) Returns: KNI_OK on success, negative error code on failure """ - return self._lib.KNISetLogFileName(log_file_name.encode("utf-8")) + if isinstance(log_file_name, str): + log_file_name_bytes = log_file_name.encode("utf-8") + elif isinstance(log_file_name, bytes): + log_file_name_bytes = log_file_name + else: + raise TypeError( + f"log_file_name must be str or bytes, not {type(log_file_name).__name__}" + ) + return self._lib.KNISetLogFileName(log_file_name_bytes) def open_stream( self, dictionary_file_name, dictionary_name, header_line, field_separator="\t" @@ -236,23 +208,55 @@ def open_stream( Open a KNI stream for recoding. Args: - dictionary_file_name: Path to the dictionary file - dictionary_name: Name of the dictionary to use - header_line: Header line with field names - field_separator: Character used to separate fields (default: tab) + dictionary_file_name: Path to the dictionary file (str or bytes) + dictionary_name: Name of the dictionary to use (str or bytes) + header_line: Header line with field names (str or bytes) + field_separator: Character used to separate fields (str or bytes, default: tab) Returns: Positive stream handle on success, negative error code on failure """ + # Type checking and conversion + if isinstance(dictionary_file_name, str): + dictionary_file_name_bytes = dictionary_file_name.encode("utf-8") + elif isinstance(dictionary_file_name, bytes): + dictionary_file_name_bytes = dictionary_file_name + else: + raise TypeError( + f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}" + ) + if isinstance(dictionary_name, str): + dictionary_name_bytes = dictionary_name.encode("utf-8") + elif isinstance(dictionary_name, bytes): + dictionary_name_bytes = dictionary_name + else: + raise TypeError( + f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}" + ) + if isinstance(header_line, str): + header_line_bytes = header_line.encode("utf-8") + elif isinstance(header_line, bytes): + header_line_bytes = header_line + else: + raise TypeError( + f"header_line must be str or bytes, not {type(header_line).__name__}" + ) + + # Convert field_separator to a single byte + if isinstance(field_separator, str): + field_separator_byte = field_separator.encode("utf-8")[0] + elif isinstance(field_separator, bytes): + field_separator_byte = field_separator[0] + else: + raise TypeError( + f"field_separator must be str or bytes, not {type(field_separator).__name__}" + ) + return self._lib.KNIOpenStream( - dictionary_file_name.encode("utf-8"), - dictionary_name.encode("utf-8"), - header_line.encode("utf-8"), - ( - field_separator.encode("utf-8")[0] - if isinstance(field_separator, str) - else field_separator - ), + dictionary_file_name_bytes, + dictionary_name_bytes, + header_line_bytes, + field_separator_byte, ) def close_stream(self, stream_handle): @@ -265,6 +269,10 @@ def close_stream(self, stream_handle): Returns: KNI_OK on success, negative error code on failure """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) return self._lib.KNICloseStream(stream_handle) def recode_stream_record(self, stream_handle, input_record, max_output_length=None): @@ -273,21 +281,37 @@ def recode_stream_record(self, stream_handle, input_record, max_output_length=No Args: stream_handle: Handle returned by open_stream - input_record: Input record string + input_record: Input record string or bytes max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) Returns: Tuple (return_code, output_record) - return_code: KNI_OK on success, negative error code on failure - - output_record: Recoded output string (empty on failure) + - output_record: Recoded output string (None on failure) """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) + if isinstance(input_record, str): + input_record_bytes = input_record.encode("utf-8") + elif isinstance(input_record, bytes): + input_record_bytes = input_record + else: + raise TypeError( + f"input_record must be str or bytes, not {type(input_record).__name__}" + ) if max_output_length is None: max_output_length = self.KNI_MaxRecordLength + elif not isinstance(max_output_length, int): + raise TypeError( + f"max_output_length must be int or None, not {type(max_output_length).__name__}" + ) output_buffer = ctypes.create_string_buffer(max_output_length) ret_code = self._lib.KNIRecodeStreamRecord( stream_handle, - input_record.encode("utf-8"), + input_record_bytes, output_buffer, max_output_length, ) @@ -295,7 +319,7 @@ def recode_stream_record(self, stream_handle, input_record, max_output_length=No if ret_code == self.KNI_OK: return ret_code, output_buffer.value.decode("utf-8") else: - return ret_code, "" + return ret_code, None def set_secondary_header_line(self, stream_handle, data_path, header_line): """ @@ -303,14 +327,34 @@ def set_secondary_header_line(self, stream_handle, data_path, header_line): Args: stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table - header_line: Header line with field names + data_path: Data path identifying the secondary table (str or bytes) + header_line: Header line with field names (str or bytes) Returns: KNI_OK on success, negative error code on failure """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) + if isinstance(data_path, str): + data_path_bytes = data_path.encode("utf-8") + elif isinstance(data_path, bytes): + data_path_bytes = data_path + else: + raise TypeError( + f"data_path must be str or bytes, not {type(data_path).__name__}" + ) + if isinstance(header_line, str): + header_line_bytes = header_line.encode("utf-8") + elif isinstance(header_line, bytes): + header_line_bytes = header_line + else: + raise TypeError( + f"header_line must be str or bytes, not {type(header_line).__name__}" + ) return self._lib.KNISetSecondaryHeaderLine( - stream_handle, data_path.encode("utf-8"), header_line.encode("utf-8") + stream_handle, data_path_bytes, header_line_bytes ) def set_external_table( @@ -321,18 +365,46 @@ def set_external_table( Args: stream_handle: Handle returned by open_stream - data_root: Root dictionary of the external table - data_path: Data path for secondary external tables (empty for root) - data_table_file_name: Path to the external table data file + data_root: Root dictionary of the external table (str or bytes) + data_path: Data path for secondary external tables (str or bytes, empty for root) + data_table_file_name: Path to the external table data file (str or bytes) Returns: KNI_OK on success, negative error code on failure """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) + if isinstance(data_root, str): + data_root_bytes = data_root.encode("utf-8") + elif isinstance(data_root, bytes): + data_root_bytes = data_root + else: + raise TypeError( + f"data_root must be str or bytes, not {type(data_root).__name__}" + ) + if isinstance(data_path, str): + data_path_bytes = data_path.encode("utf-8") + elif isinstance(data_path, bytes): + data_path_bytes = data_path + else: + raise TypeError( + f"data_path must be str or bytes, not {type(data_path).__name__}" + ) + if isinstance(data_table_file_name, str): + data_table_file_name_bytes = data_table_file_name.encode("utf-8") + elif isinstance(data_table_file_name, bytes): + data_table_file_name_bytes = data_table_file_name + else: + raise TypeError( + f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}" + ) return self._lib.KNISetExternalTable( stream_handle, - data_root.encode("utf-8"), - data_path.encode("utf-8"), - data_table_file_name.encode("utf-8"), + data_root_bytes, + data_path_bytes, + data_table_file_name_bytes, ) def finish_opening_stream(self, stream_handle): @@ -347,6 +419,10 @@ def finish_opening_stream(self, stream_handle): Returns: KNI_OK on success, negative error code on failure """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) return self._lib.KNIFinishOpeningStream(stream_handle) def set_secondary_input_record(self, stream_handle, data_path, input_record): @@ -357,14 +433,34 @@ def set_secondary_input_record(self, stream_handle, data_path, input_record): Args: stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table - input_record: Secondary input record string + data_path: Data path identifying the secondary table (str or bytes) + input_record: Secondary input record string or bytes Returns: KNI_OK on success, negative error code on failure """ + if not isinstance(stream_handle, int): + raise TypeError( + f"stream_handle must be int, not {type(stream_handle).__name__}" + ) + if isinstance(data_path, str): + data_path_bytes = data_path.encode("utf-8") + elif isinstance(data_path, bytes): + data_path_bytes = data_path + else: + raise TypeError( + f"data_path must be str or bytes, not {type(data_path).__name__}" + ) + if isinstance(input_record, str): + input_record_bytes = input_record.encode("utf-8") + elif isinstance(input_record, bytes): + input_record_bytes = input_record + else: + raise TypeError( + f"input_record must be str or bytes, not {type(input_record).__name__}" + ) return self._lib.KNISetSecondaryInputRecord( - stream_handle, data_path.encode("utf-8"), input_record.encode("utf-8") + stream_handle, data_path_bytes, input_record_bytes ) def get_stream_max_memory(self): @@ -386,6 +482,8 @@ def set_stream_max_memory(self, max_mb): Returns: Accepted value (bounded by system limits) """ + if not isinstance(max_mb, int): + raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}") return self._lib.KNISetStreamMaxMemory(max_mb) @staticmethod @@ -399,6 +497,8 @@ def get_error_message(error_code): Returns: Error message string """ + if not isinstance(error_code, int): + raise TypeError(f"error_code must be int, not {type(error_code).__name__}") error_messages = { KNI.KNI_OK: "Success", KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running", diff --git a/python/KNIRecodeFile.py b/python/KNIRecodeFile.py index 3361946..3574a41 100755 --- a/python/KNIRecodeFile.py +++ b/python/KNIRecodeFile.py @@ -11,10 +11,18 @@ """ import sys -from pathlib import Path +import argparse from KNI import KNI +class KNIError(Exception): + """Exception raised for KNI errors.""" + + def __init__(self, message, error_code=None): + super().__init__(message) + self.error_code = error_code + + def recode_file( dictionary_file_name, dictionary_name, @@ -32,15 +40,13 @@ def recode_file( output_file_name: Path to output file error_file_name: Optional path to error log file (empty for no logging) - Returns: - 0 on success, negative error code on failure + Raises: + KNIError: If any KNI operation fails + FileNotFoundError: If input file is not found + ValueError: If input file is empty or invalid """ # Initialize KNI - try: - kni = KNI() - except Exception as e: - print(f"Error: Failed to load KNI library: {e}", file=sys.stderr) - return -1 + kni = KNI() # Set error log file if error_file_name: @@ -53,35 +59,33 @@ def recode_file( print(f"\nRecode records of {input_file_name} to {output_file_name}") - try: - # Open input and output files - with open(input_file_name, "r", encoding="utf-8") as input_file, open( - output_file_name, "w", encoding="utf-8" - ) as output_file: - - # Read header line - header_line = input_file.readline().rstrip("\n\r") - if not header_line: - print("Error: Empty input file", file=sys.stderr) - return -1 - - # Open KNI stream - stream_handle = kni.open_stream( - dictionary_file_name, dictionary_name, header_line, "\t" - ) + # Open input and output files + with open(input_file_name, "r", encoding="utf-8") as input_file, open( + output_file_name, "w", encoding="utf-8" + ) as output_file: - if stream_handle < 0: - print( - f"Error: Open stream failed: {kni.get_error_message(stream_handle)}", - file=sys.stderr, - ) - return stream_handle + # Read header line + header_line = input_file.readline().rstrip() + if not header_line: + raise ValueError("Empty input file") + # Open KNI stream + stream_handle = kni.open_stream( + dictionary_file_name, dictionary_name, header_line, "\t" + ) + + if stream_handle < 0: + raise KNIError( + f"Open stream failed: {kni.get_error_message(stream_handle)}", + stream_handle, + ) + + try: # Process all records record_number = 0 for line_number, line in enumerate(input_file, start=2): - # Remove trailing newline/carriage return - input_record = line.rstrip("\n\r") + # Remove trailing whitespace + input_record = line.rstrip() # Skip empty lines if not input_record: @@ -94,74 +98,82 @@ def recode_file( if ret_code == KNI.KNI_OK: # Write output record - output_file.write(output_record + "\n") + output_file.write(f"{output_record}\n") record_number += 1 else: - print( - f"Error: Recode failed at line {line_number}: " + raise KNIError( + f"Recode failed at line {line_number}: " f"{kni.get_error_message(ret_code)}", - file=sys.stderr, + ret_code, ) - kni.close_stream(stream_handle) - return ret_code - + finally: # Close stream ret_code = kni.close_stream(stream_handle) if ret_code != KNI.KNI_OK: - print( - f"Error: Close stream failed: {kni.get_error_message(ret_code)}", - file=sys.stderr, + raise KNIError( + f"Close stream failed: {kni.get_error_message(ret_code)}", + ret_code, ) - return ret_code - - print(f"{record_number} records recoded") - return 0 - except FileNotFoundError as e: - print(f"Error: File not found: {e.filename}", file=sys.stderr) - return -1 - except Exception as e: - print(f"Error: {e}", file=sys.stderr) - return -1 + print(f"{record_number} records recoded") def main(): """Main entry point for command-line execution.""" - # Check command-line arguments - if len(sys.argv) < 5: - print( - "Usage: KNIRecodeFile " - " [Error file]", - file=sys.stderr, - ) - print( - "\nThe input file must have a header line, describing the structure " - "of all its instances.", - file=sys.stderr, - ) - print("The input and output files have a tabular format.", file=sys.stderr) - print( - "The error file may be useful for debugging purposes. " - "It is optional and may be empty.", - file=sys.stderr, - ) - return 1 - - # Parse arguments - dictionary_file = sys.argv[1] - dictionary_name = sys.argv[2] - input_file = sys.argv[3] - output_file = sys.argv[4] - error_file = sys.argv[5] if len(sys.argv) > 5 else "" + parser = argparse.ArgumentParser( + description="Recode an input file to an output file using a Khiops dictionary.", + epilog="The input file must have a header line, describing the structure of all its instances. " + "The input and output files have a tabular format. " + "The error file may be useful for debugging purposes.", + ) - # Execute recoding - ret_code = recode_file( - dictionary_file, dictionary_name, input_file, output_file, error_file + parser.add_argument( + "dictionary_file", + help="Path to the dictionary file", + ) + parser.add_argument( + "dictionary_name", + help="Name of the dictionary to use", + ) + parser.add_argument( + "input_file", + help="Path to input file (must have header line)", ) + parser.add_argument( + "output_file", + help="Path to output file", + ) + parser.add_argument( + "error_file", + nargs="?", + default="", + help="Optional path to error log file (empty for no logging)", + ) + + args = parser.parse_args() - if ret_code != 0: + # Execute recoding + try: + recode_file( + args.dictionary_file, + args.dictionary_name, + args.input_file, + args.output_file, + args.error_file, + ) + return 0 + except KNIError as e: + print(f"Error: {e}", file=sys.stderr) + return 1 + except FileNotFoundError as e: + print(f"Error: File not found: {e.filename}", file=sys.stderr) + return 1 + except ValueError as e: + print(f"Error: {e}", file=sys.stderr) + return 1 + except Exception as e: + print(f"Error: {e}", file=sys.stderr) return 1 - return 0 if __name__ == "__main__": diff --git a/python/KNIRecodeMTFiles.py b/python/KNIRecodeMTFiles.py index 186ce5e..74b73b0 100755 --- a/python/KNIRecodeMTFiles.py +++ b/python/KNIRecodeMTFiles.py @@ -12,10 +12,17 @@ import sys import argparse -from pathlib import Path from KNI import KNI +class KNIError(Exception): + """Exception raised for KNI errors.""" + + def __init__(self, message, error_code=None): + super().__init__(message) + self.error_code = error_code + + def recode_mt_files( dictionary_file, dictionary_name, @@ -41,19 +48,21 @@ def recode_mt_files( error_file: Optional path to error log file max_memory: Optional maximum memory in MB - Returns: - 0 on success, negative error code on failure + Raises: + KNIError: If any KNI operation fails + FileNotFoundError: If input file is not found """ # Initialize KNI - try: - kni = KNI() - except Exception as e: - print(f"Error: Failed to load KNI library: {e}", file=sys.stderr) - return -1 + kni = KNI() # Set error log file if error_file: - kni.set_log_file_name(error_file) + ret_code = kni.set_log_file_name(error_file) + if ret_code != KNI.KNI_OK: + print( + f"Warning: Failed to set log file: {kni.get_error_message(ret_code)}", + file=sys.stderr, + ) # Set max memory if specified if max_memory: @@ -62,24 +71,23 @@ def recode_mt_files( print(f"\nRecode multi-table data to {output_file}") - try: - # Read headers from all input files - input_file_path = input_specs["file"] - with open(input_file_path, "r", encoding="utf-8") as f: - main_header = f.readline().rstrip("\n\r") - - # Open stream with main table header - stream_handle = kni.open_stream( - dictionary_file, dictionary_name, main_header, field_separator - ) + # Read headers from all input files + input_file_path = input_specs["file"] + with open(input_file_path, "r", encoding="utf-8") as f: + main_header = f.readline().rstrip() - if stream_handle < 0: - print( - f"Error: Open stream failed: {kni.get_error_message(stream_handle)}", - file=sys.stderr, - ) - return stream_handle + # Open stream with main table header + stream_handle = kni.open_stream( + dictionary_file, dictionary_name, main_header, field_separator + ) + + if stream_handle < 0: + raise KNIError( + f"Open stream failed: {kni.get_error_message(stream_handle)}", + stream_handle, + ) + try: # Set secondary table headers secondary_files = {} for spec in secondary_specs: @@ -87,19 +95,17 @@ def recode_mt_files( sec_file = spec["file"] with open(sec_file, "r", encoding="utf-8") as f: - sec_header = f.readline().rstrip("\n\r") + sec_header = f.readline().rstrip() ret_code = kni.set_secondary_header_line( stream_handle, data_path, sec_header ) if ret_code != KNI.KNI_OK: - print( - f"Error: Set secondary header failed for {data_path}: " + raise KNIError( + f"Set secondary header failed for {data_path}: " f"{kni.get_error_message(ret_code)}", - file=sys.stderr, + ret_code, ) - kni.close_stream(stream_handle) - return ret_code # Store opened file for reading records secondary_files[data_path] = { @@ -116,32 +122,24 @@ def recode_mt_files( stream_handle, spec["root"], spec.get("path", ""), spec["file"] ) if ret_code != KNI.KNI_OK: - print( - f"Error: Set external table failed: {kni.get_error_message(ret_code)}", - file=sys.stderr, + raise KNIError( + f"Set external table failed: {kni.get_error_message(ret_code)}", + ret_code, ) - for sf in secondary_files.values(): - sf["file"].close() - kni.close_stream(stream_handle) - return ret_code # Finish opening stream (required for multi-table) ret_code = kni.finish_opening_stream(stream_handle) if ret_code != KNI.KNI_OK: - print( - f"Error: Finish opening stream failed: {kni.get_error_message(ret_code)}", - file=sys.stderr, + raise KNIError( + f"Finish opening stream failed: {kni.get_error_message(ret_code)}", + ret_code, ) - for sf in secondary_files.values(): - sf["file"].close() - kni.close_stream(stream_handle) - return ret_code # Load all secondary records into memory indexed by key for data_path, sec_info in secondary_files.items(): print(f"Loading secondary table: {data_path}") for line in sec_info["file"]: - record = line.rstrip("\n\r") + record = line.rstrip() if not record: continue @@ -163,11 +161,13 @@ def recode_mt_files( output_file, "w", encoding="utf-8" ) as out_file: - # Skip header (already read) - main_file.readline() + for line_number, line in enumerate(main_file, start=1): + # Skip header + if line_number == 1: + continue - for line_number, line in enumerate(main_file, start=2): - main_record = line.rstrip("\n\r") + # Get main record + main_record = line.rstrip() if not main_record: continue @@ -183,51 +183,40 @@ def recode_mt_files( stream_handle, data_path, sec_record ) if ret_code != KNI.KNI_OK: - print( - f"Error: Set secondary record failed at line {line_number}: " + raise KNIError( + f"Set secondary record failed at line {line_number}: " f"{kni.get_error_message(ret_code)}", - file=sys.stderr, + ret_code, ) - kni.close_stream(stream_handle) - return ret_code # Recode the main record ret_code, output_record = kni.recode_stream_record( stream_handle, main_record ) if ret_code == KNI.KNI_OK: - out_file.write(output_record + "\n") + out_file.write(f"{output_record}\n") record_number += 1 else: - print( - f"Error: Recode failed at line {line_number}: " + raise KNIError( + f"Recode failed at line {line_number}: " f"{kni.get_error_message(ret_code)}", - file=sys.stderr, + ret_code, ) - kni.close_stream(stream_handle) - return ret_code + + print(f"{record_number} records recoded") + finally: + # Close any open secondary files + for sec_info in secondary_files.values(): + if not sec_info["file"].closed: + sec_info["file"].close() # Close stream ret_code = kni.close_stream(stream_handle) if ret_code != KNI.KNI_OK: - print( - f"Error: Close stream failed: {kni.get_error_message(ret_code)}", - file=sys.stderr, + raise KNIError( + f"Close stream failed: {kni.get_error_message(ret_code)}", + ret_code, ) - return ret_code - - print(f"{record_number} records recoded") - return 0 - - except FileNotFoundError as e: - print(f"Error: File not found: {e.filename}", file=sys.stderr) - return -1 - except Exception as e: - print(f"Error: {e}", file=sys.stderr) - import traceback - - traceback.print_exc() - return -1 def main(): @@ -313,19 +302,28 @@ def main(): external_specs.append({"root": ext[0], "path": ext[1], "file": ext[2]}) # Execute recoding - ret_code = recode_mt_files( - args.dictionary[0], - args.dictionary[1], - input_specs, - secondary_specs, - external_specs, - args.output, - args.field_separator, - args.error_file, - args.max_memory, - ) - - return 1 if ret_code != 0 else 0 + try: + recode_mt_files( + args.dictionary[0], + args.dictionary[1], + input_specs, + secondary_specs, + external_specs, + args.output, + args.field_separator, + args.error_file, + args.max_memory, + ) + return 0 + except KNIError as e: + print(f"Error: {e}", file=sys.stderr) + return 1 + except FileNotFoundError as e: + print(f"Error: File not found: {e.filename}", file=sys.stderr) + return 1 + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + return 1 if __name__ == "__main__": From e352da5dd814689f6bb4fbb3a803bda34f44aafb Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Tue, 12 May 2026 15:03:52 +0200 Subject: [PATCH 3/8] Refactor Python API to use exceptions instead of return codes This commit modernizes the Python KNI wrapper to follow Pythonic conventions by using exceptions for error handling instead of C-style return codes. Changes to KNI.py: - Add KNIError exception class with error_code attribute - Refactor all methods to raise KNIError on failure instead of returning error codes - open_stream() now returns stream_handle directly (raises on error) - recode_stream_record() now returns output string directly (no tuple) - Add comprehensive type checking for all method parameters - Extend all string parameters to accept both str and bytes types - Simplify library path resolution to use KNI_HOME/ only Changes to KNIRecodeFile.py: - Import KNIError from KNI module - Remove all error code checking (if ret_code != KNI.KNI_OK) - Simplify to direct method calls with exception handling - Fix field separator bug: change "\\t" to "\t" for proper tab character - Add comprehensive exception handling in main() Changes to KNIRecodeMTFiles.py: - Import KNIError from KNI module - Remove all error code checking throughout - Simplify stream setup and record processing loops - Clean exception handling throughout Benefits: - More Pythonic and easier to read - Cleaner code with less boilerplate - Better integration with Python's try/except patterns - Type safety with parameter validation - Support for both str and bytes in string parameters --- python/KNI.py | 112 ++++++++++++++++++++++++++++--------- python/KNIRecodeFile.py | 49 +++------------- python/KNIRecodeMTFiles.py | 77 ++++--------------------- 3 files changed, 103 insertions(+), 135 deletions(-) diff --git a/python/KNI.py b/python/KNI.py index dfc1714..41924ad 100755 --- a/python/KNI.py +++ b/python/KNI.py @@ -16,6 +16,14 @@ from pathlib import Path +class KNIError(Exception): + """Exception raised for KNI errors.""" + + def __init__(self, message, error_code=None): + super().__init__(message) + self.error_code = error_code + + class KNI: """Python wrapper for Khiops Native Interface using ctypes.""" @@ -188,8 +196,9 @@ def set_log_file_name(self, log_file_name): Args: log_file_name: Path to log file (str or bytes, empty string for no logging) - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If setting log file fails + TypeError: If log_file_name is not str or bytes """ if isinstance(log_file_name, str): log_file_name_bytes = log_file_name.encode("utf-8") @@ -199,7 +208,12 @@ def set_log_file_name(self, log_file_name): raise TypeError( f"log_file_name must be str or bytes, not {type(log_file_name).__name__}" ) - return self._lib.KNISetLogFileName(log_file_name_bytes) + ret_code = self._lib.KNISetLogFileName(log_file_name_bytes) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to set log file: {self.get_error_message(ret_code)}", + ret_code, + ) def open_stream( self, dictionary_file_name, dictionary_name, header_line, field_separator="\t" @@ -214,7 +228,11 @@ def open_stream( field_separator: Character used to separate fields (str or bytes, default: tab) Returns: - Positive stream handle on success, negative error code on failure + Stream handle (positive integer) + + Raises: + KNIError: If opening stream fails + TypeError: If arguments have invalid types """ # Type checking and conversion if isinstance(dictionary_file_name, str): @@ -252,12 +270,18 @@ def open_stream( f"field_separator must be str or bytes, not {type(field_separator).__name__}" ) - return self._lib.KNIOpenStream( + stream_handle = self._lib.KNIOpenStream( dictionary_file_name_bytes, dictionary_name_bytes, header_line_bytes, field_separator_byte, ) + if stream_handle < 0: + raise KNIError( + f"Failed to open stream: {self.get_error_message(stream_handle)}", + stream_handle, + ) + return stream_handle def close_stream(self, stream_handle): """ @@ -266,14 +290,20 @@ def close_stream(self, stream_handle): Args: stream_handle: Handle returned by open_stream - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If closing stream fails + TypeError: If stream_handle is not int """ if not isinstance(stream_handle, int): raise TypeError( f"stream_handle must be int, not {type(stream_handle).__name__}" ) - return self._lib.KNICloseStream(stream_handle) + ret_code = self._lib.KNICloseStream(stream_handle) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to close stream: {self.get_error_message(ret_code)}", + ret_code, + ) def recode_stream_record(self, stream_handle, input_record, max_output_length=None): """ @@ -285,9 +315,11 @@ def recode_stream_record(self, stream_handle, input_record, max_output_length=No max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) Returns: - Tuple (return_code, output_record) - - return_code: KNI_OK on success, negative error code on failure - - output_record: Recoded output string (None on failure) + Recoded output string + + Raises: + KNIError: If recoding fails + TypeError: If arguments have invalid types """ if not isinstance(stream_handle, int): raise TypeError( @@ -316,10 +348,12 @@ def recode_stream_record(self, stream_handle, input_record, max_output_length=No max_output_length, ) - if ret_code == self.KNI_OK: - return ret_code, output_buffer.value.decode("utf-8") - else: - return ret_code, None + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to recode record: {self.get_error_message(ret_code)}", + ret_code, + ) + return output_buffer.value.decode("utf-8") def set_secondary_header_line(self, stream_handle, data_path, header_line): """ @@ -330,8 +364,9 @@ def set_secondary_header_line(self, stream_handle, data_path, header_line): data_path: Data path identifying the secondary table (str or bytes) header_line: Header line with field names (str or bytes) - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If setting secondary header fails + TypeError: If arguments have invalid types """ if not isinstance(stream_handle, int): raise TypeError( @@ -353,9 +388,14 @@ def set_secondary_header_line(self, stream_handle, data_path, header_line): raise TypeError( f"header_line must be str or bytes, not {type(header_line).__name__}" ) - return self._lib.KNISetSecondaryHeaderLine( + ret_code = self._lib.KNISetSecondaryHeaderLine( stream_handle, data_path_bytes, header_line_bytes ) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to set secondary header line: {self.get_error_message(ret_code)}", + ret_code, + ) def set_external_table( self, stream_handle, data_root, data_path, data_table_file_name @@ -369,8 +409,9 @@ def set_external_table( data_path: Data path for secondary external tables (str or bytes, empty for root) data_table_file_name: Path to the external table data file (str or bytes) - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If setting external table fails + TypeError: If arguments have invalid types """ if not isinstance(stream_handle, int): raise TypeError( @@ -400,12 +441,17 @@ def set_external_table( raise TypeError( f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}" ) - return self._lib.KNISetExternalTable( + ret_code = self._lib.KNISetExternalTable( stream_handle, data_root_bytes, data_path_bytes, data_table_file_name_bytes, ) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to set external table: {self.get_error_message(ret_code)}", + ret_code, + ) def finish_opening_stream(self, stream_handle): """ @@ -416,14 +462,20 @@ def finish_opening_stream(self, stream_handle): Args: stream_handle: Handle returned by open_stream - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If finishing opening stream fails + TypeError: If stream_handle is not int """ if not isinstance(stream_handle, int): raise TypeError( f"stream_handle must be int, not {type(stream_handle).__name__}" ) - return self._lib.KNIFinishOpeningStream(stream_handle) + ret_code = self._lib.KNIFinishOpeningStream(stream_handle) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to finish opening stream: {self.get_error_message(ret_code)}", + ret_code, + ) def set_secondary_input_record(self, stream_handle, data_path, input_record): """ @@ -436,8 +488,9 @@ def set_secondary_input_record(self, stream_handle, data_path, input_record): data_path: Data path identifying the secondary table (str or bytes) input_record: Secondary input record string or bytes - Returns: - KNI_OK on success, negative error code on failure + Raises: + KNIError: If setting secondary input record fails + TypeError: If arguments have invalid types """ if not isinstance(stream_handle, int): raise TypeError( @@ -459,9 +512,14 @@ def set_secondary_input_record(self, stream_handle, data_path, input_record): raise TypeError( f"input_record must be str or bytes, not {type(input_record).__name__}" ) - return self._lib.KNISetSecondaryInputRecord( + ret_code = self._lib.KNISetSecondaryInputRecord( stream_handle, data_path_bytes, input_record_bytes ) + if ret_code != self.KNI_OK: + raise KNIError( + f"Failed to set secondary input record: {self.get_error_message(ret_code)}", + ret_code, + ) def get_stream_max_memory(self): """ diff --git a/python/KNIRecodeFile.py b/python/KNIRecodeFile.py index 3574a41..ddcb704 100755 --- a/python/KNIRecodeFile.py +++ b/python/KNIRecodeFile.py @@ -12,15 +12,7 @@ import sys import argparse -from KNI import KNI - - -class KNIError(Exception): - """Exception raised for KNI errors.""" - - def __init__(self, message, error_code=None): - super().__init__(message) - self.error_code = error_code +from KNI import KNI, KNIError def recode_file( @@ -50,12 +42,7 @@ def recode_file( # Set error log file if error_file_name: - ret_code = kni.set_log_file_name(error_file_name) - if ret_code != KNI.KNI_OK: - print( - f"Warning: Failed to set log file: {kni.get_error_message(ret_code)}", - file=sys.stderr, - ) + kni.set_log_file_name(error_file_name) print(f"\nRecode records of {input_file_name} to {output_file_name}") @@ -74,12 +61,6 @@ def recode_file( dictionary_file_name, dictionary_name, header_line, "\t" ) - if stream_handle < 0: - raise KNIError( - f"Open stream failed: {kni.get_error_message(stream_handle)}", - stream_handle, - ) - try: # Process all records record_number = 0 @@ -92,28 +73,14 @@ def recode_file( continue # Recode the record - ret_code, output_record = kni.recode_stream_record( - stream_handle, input_record - ) - - if ret_code == KNI.KNI_OK: - # Write output record - output_file.write(f"{output_record}\n") - record_number += 1 - else: - raise KNIError( - f"Recode failed at line {line_number}: " - f"{kni.get_error_message(ret_code)}", - ret_code, - ) + output_record = kni.recode_stream_record(stream_handle, input_record) + + # Write output record + output_file.write(f"{output_record}\n") + record_number += 1 finally: # Close stream - ret_code = kni.close_stream(stream_handle) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Close stream failed: {kni.get_error_message(ret_code)}", - ret_code, - ) + kni.close_stream(stream_handle) print(f"{record_number} records recoded") diff --git a/python/KNIRecodeMTFiles.py b/python/KNIRecodeMTFiles.py index 74b73b0..b7748dd 100755 --- a/python/KNIRecodeMTFiles.py +++ b/python/KNIRecodeMTFiles.py @@ -12,15 +12,7 @@ import sys import argparse -from KNI import KNI - - -class KNIError(Exception): - """Exception raised for KNI errors.""" - - def __init__(self, message, error_code=None): - super().__init__(message) - self.error_code = error_code +from KNI import KNI, KNIError def recode_mt_files( @@ -57,12 +49,7 @@ def recode_mt_files( # Set error log file if error_file: - ret_code = kni.set_log_file_name(error_file) - if ret_code != KNI.KNI_OK: - print( - f"Warning: Failed to set log file: {kni.get_error_message(ret_code)}", - file=sys.stderr, - ) + kni.set_log_file_name(error_file) # Set max memory if specified if max_memory: @@ -81,12 +68,6 @@ def recode_mt_files( dictionary_file, dictionary_name, main_header, field_separator ) - if stream_handle < 0: - raise KNIError( - f"Open stream failed: {kni.get_error_message(stream_handle)}", - stream_handle, - ) - try: # Set secondary table headers secondary_files = {} @@ -97,15 +78,7 @@ def recode_mt_files( with open(sec_file, "r", encoding="utf-8") as f: sec_header = f.readline().rstrip() - ret_code = kni.set_secondary_header_line( - stream_handle, data_path, sec_header - ) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Set secondary header failed for {data_path}: " - f"{kni.get_error_message(ret_code)}", - ret_code, - ) + kni.set_secondary_header_line(stream_handle, data_path, sec_header) # Store opened file for reading records secondary_files[data_path] = { @@ -118,22 +91,12 @@ def recode_mt_files( # Set external tables for spec in external_specs: - ret_code = kni.set_external_table( + kni.set_external_table( stream_handle, spec["root"], spec.get("path", ""), spec["file"] ) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Set external table failed: {kni.get_error_message(ret_code)}", - ret_code, - ) # Finish opening stream (required for multi-table) - ret_code = kni.finish_opening_stream(stream_handle) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Finish opening stream failed: {kni.get_error_message(ret_code)}", - ret_code, - ) + kni.finish_opening_stream(stream_handle) # Load all secondary records into memory indexed by key for data_path, sec_info in secondary_files.items(): @@ -179,29 +142,14 @@ def recode_mt_files( for data_path, sec_info in secondary_files.items(): matching_records = sec_info["records"].get(main_key, []) for sec_record in matching_records: - ret_code = kni.set_secondary_input_record( + kni.set_secondary_input_record( stream_handle, data_path, sec_record ) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Set secondary record failed at line {line_number}: " - f"{kni.get_error_message(ret_code)}", - ret_code, - ) # Recode the main record - ret_code, output_record = kni.recode_stream_record( - stream_handle, main_record - ) - if ret_code == KNI.KNI_OK: - out_file.write(f"{output_record}\n") - record_number += 1 - else: - raise KNIError( - f"Recode failed at line {line_number}: " - f"{kni.get_error_message(ret_code)}", - ret_code, - ) + output_record = kni.recode_stream_record(stream_handle, main_record) + out_file.write(f"{output_record}\n") + record_number += 1 print(f"{record_number} records recoded") finally: @@ -211,12 +159,7 @@ def recode_mt_files( sec_info["file"].close() # Close stream - ret_code = kni.close_stream(stream_handle) - if ret_code != KNI.KNI_OK: - raise KNIError( - f"Close stream failed: {kni.get_error_message(ret_code)}", - ret_code, - ) + kni.close_stream(stream_handle) def main(): From fc91638ff94ddf099e992abda5c28b7ef5535d5a Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Tue, 12 May 2026 15:23:41 +0200 Subject: [PATCH 4/8] Update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fe9b5eb..6bd7cd1 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ The purpose of KNI is to allow a deeper integration of Khiops in information sys The Khiops deployment API is thus made public through a shared library. Therefore, a Khiops model can be deployed directly from any programming language, such as C, C++, Java, Python, Matlab, etc. This enables real-time model deployment without the overhead of temporary data files or launching executables. This is critical for certain applications, such as marketing or targeted advertising on the web. -All KNI functions are C functions for easy use with other programming languages. They return a positive or zero value in case of success, and a negative error code in case of failure. +All KNI functions are C functions for easy use with other programming languages. The API is compatible with ANSI C (C89/C90) and later standards. They return a positive or zero value in case of success, and a negative error code in case of failure. See [KhiopsNativeInterface.h](include/KhiopsNativeInterface.h) for a detailed description of KNI functions. @@ -162,7 +162,7 @@ The files are located in [python directory](python/). They use Python's `ctypes` ## Requirements -- Python 3.6 or later +- Python 3.10 or later - The KNI shared library must be installed and accessible (via `KNI_HOME` environment variable or standard system paths) ## Scripts From 83f95808b5846d683b366612f8621b2120fd3971 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Mon, 18 May 2026 15:27:42 +0200 Subject: [PATCH 5/8] Add new khiops-kni Python package --- .gitignore | 1 + README.md | 2 + cpp/KNIRecodeFile.c | 2 +- cpp/KNIRecodeFile.h | 2 +- cpp/KNIRecodeMTFiles.c | 2 +- cpp/KNIRecodeMTFiles.h | 2 +- include/KhiopsNativeInterface.h | 2 +- python/KNIRecodeFile.py | 2 +- python/KNIRecodeMTFiles.py | 2 +- python/docs/index.html | 7 + python/docs/kni.html | 2008 +++++++++++++++++++++++++++++++ python/docs/search.js | 46 + 12 files changed, 2071 insertions(+), 7 deletions(-) create mode 100644 python/docs/index.html create mode 100644 python/docs/kni.html create mode 100644 python/docs/search.js diff --git a/.gitignore b/.gitignore index dbd5f30..f86c322 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .vscode/ python/__pycache__/ +.DS_Store diff --git a/README.md b/README.md index 6bd7cd1..d399513 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,8 @@ The files are located in [python directory](python/). They use Python's `ctypes` - `KNIRecodeFile.py`: Single-table recoding example - `KNIRecodeMTFiles.py`: Multi-table recoding example +**API Documentation**: See [Python API Reference](python/docs/index.html) for detailed documentation of the `kni` module. +For detailed API documentation, see the [Python API Reference](python/docs/index.html) ## Launch Recode the "Iris" dataset from the data directory using the `SNB_Iris` classifier dictionary. diff --git a/cpp/KNIRecodeFile.c b/cpp/KNIRecodeFile.c index 20f6cf8..a661649 100644 --- a/cpp/KNIRecodeFile.c +++ b/cpp/KNIRecodeFile.c @@ -1,4 +1,4 @@ -// Copyright (c) 2023-2025 Orange. All rights reserved. +// Copyright (c) 2023-2026 Orange. All rights reserved. // This software is distributed under the BSD 3-Clause-clear License, the text of which is available // at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. diff --git a/cpp/KNIRecodeFile.h b/cpp/KNIRecodeFile.h index aa51f80..45343e7 100644 --- a/cpp/KNIRecodeFile.h +++ b/cpp/KNIRecodeFile.h @@ -1,4 +1,4 @@ -// Copyright (c) 2023-2025 Orange. All rights reserved. +// Copyright (c) 2023-2026 Orange. All rights reserved. // This software is distributed under the BSD 3-Clause-clear License, the text of which is available // at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. diff --git a/cpp/KNIRecodeMTFiles.c b/cpp/KNIRecodeMTFiles.c index f7ba0e3..e6da558 100644 --- a/cpp/KNIRecodeMTFiles.c +++ b/cpp/KNIRecodeMTFiles.c @@ -1,4 +1,4 @@ -// Copyright (c) 2023-2025 Orange. All rights reserved. +// Copyright (c) 2023-2026 Orange. All rights reserved. // This software is distributed under the BSD 3-Clause-clear License, the text of which is available // at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. diff --git a/cpp/KNIRecodeMTFiles.h b/cpp/KNIRecodeMTFiles.h index c062db7..6d2fbaf 100644 --- a/cpp/KNIRecodeMTFiles.h +++ b/cpp/KNIRecodeMTFiles.h @@ -1,4 +1,4 @@ -// Copyright (c) 2023-2025 Orange. All rights reserved. +// Copyright (c) 2023-2026 Orange. All rights reserved. // This software is distributed under the BSD 3-Clause-clear License, the text of which is available // at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. diff --git a/include/KhiopsNativeInterface.h b/include/KhiopsNativeInterface.h index 6c50058..2d8b610 100644 --- a/include/KhiopsNativeInterface.h +++ b/include/KhiopsNativeInterface.h @@ -1,4 +1,4 @@ -// Copyright (c) 2023-2025 Orange. All rights reserved. +// Copyright (c) 2023-2026 Orange. All rights reserved. // This software is distributed under the BSD 3-Clause-clear License, the text of which is available // at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. diff --git a/python/KNIRecodeFile.py b/python/KNIRecodeFile.py index ddcb704..f226622 100755 --- a/python/KNIRecodeFile.py +++ b/python/KNIRecodeFile.py @@ -12,7 +12,7 @@ import sys import argparse -from KNI import KNI, KNIError +from kni import KNI, KNIError def recode_file( diff --git a/python/KNIRecodeMTFiles.py b/python/KNIRecodeMTFiles.py index b7748dd..84d5311 100755 --- a/python/KNIRecodeMTFiles.py +++ b/python/KNIRecodeMTFiles.py @@ -12,7 +12,7 @@ import sys import argparse -from KNI import KNI, KNIError +from kni import KNI, KNIError def recode_mt_files( diff --git a/python/docs/index.html b/python/docs/index.html new file mode 100644 index 0000000..0cb5d1b --- /dev/null +++ b/python/docs/index.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/python/docs/kni.html b/python/docs/kni.html new file mode 100644 index 0000000..7492c1e --- /dev/null +++ b/python/docs/kni.html @@ -0,0 +1,2008 @@ + + + + + + + kni API documentation + + + + + + + + + +
+
+

+kni

+ +

Khiops Native Interface (KNI) Python Package

+ +

This package provides Python bindings for the Khiops Native Interface (KNI), +enabling direct deployment of Khiops models from Python without temporary files.

+
+ + + + + +
 1# Copyright (c) 2023-2026 Orange. All rights reserved.
+ 2# This software is distributed under the BSD 3-Clause-clear License, the text of which is available
+ 3# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details.
+ 4
+ 5"""
+ 6Khiops Native Interface (KNI) Python Package
+ 7
+ 8This package provides Python bindings for the Khiops Native Interface (KNI),
+ 9enabling direct deployment of Khiops models from Python without temporary files.
+10"""
+11
+12from .kni import KNI, KNIError
+13
+14__all__ = ["KNI", "KNIError"]
+15
+16# Get version from package metadata (set by scikit-build-core during wheel building)
+17try:
+18    from importlib.metadata import version
+19
+20    __version__ = version("khiops-kni")
+21except Exception:
+22    # Fallback for development installations
+23    __version__ = "0.0.0.dev0"
+
+ + +
+
+ +
+ + class + KNI: + + + +
+ +
 28class KNI:
+ 29    """Python wrapper for Khiops Native Interface using ctypes."""
+ 30
+ 31    # Error codes
+ 32    KNI_OK = 0
+ 33    KNI_ErrorRunningFunction = -1
+ 34    KNI_ErrorDictionaryFileName = -2
+ 35    KNI_ErrorDictionaryMissingFile = -3
+ 36    KNI_ErrorDictionaryFileFormat = -4
+ 37    KNI_ErrorDictionaryName = -5
+ 38    KNI_ErrorMissingDictionary = -6
+ 39    KNI_ErrorTooManyStreams = -7
+ 40    KNI_ErrorStreamHeaderLine = -8
+ 41    KNI_ErrorFieldSeparator = -9
+ 42    KNI_ErrorStreamHandle = -10
+ 43    KNI_ErrorStreamOpened = -11
+ 44    KNI_ErrorStreamNotOpened = -12
+ 45    KNI_ErrorStreamInputRecord = -13
+ 46    KNI_ErrorStreamInputRead = -14
+ 47    KNI_ErrorStreamOutputRecord = -15
+ 48    KNI_ErrorMissingSecondaryHeader = -16
+ 49    KNI_ErrorMissingExternalTable = -17
+ 50    KNI_ErrorDataRoot = -18
+ 51    KNI_ErrorDataPath = -19
+ 52    KNI_ErrorDataTableFile = -20
+ 53    KNI_ErrorLoadDataTable = -21
+ 54    KNI_ErrorMemoryOverflow = -22
+ 55    KNI_ErrorStreamOpening = -23
+ 56    KNI_ErrorStreamOpeningNotFinished = -24
+ 57    KNI_ErrorLogFile = -25
+ 58
+ 59    # Constants
+ 60    KNI_MaxStreamNumber = 512
+ 61    KNI_DefaultMaxStreamMemory = 100
+ 62    KNI_MaxPathNameLength = 1024
+ 63    KNI_MaxDictionaryNameLength = 128
+ 64    KNI_MaxRecordLength = 8 * 1024 * 1024  # 8 MB
+ 65
+ 66    def __init__(self, library_path=None):
+ 67        """
+ 68        Initialize the KNI wrapper.
+ 69
+ 70        Args:
+ 71            library_path: Optional path to the KNI shared library.
+ 72                         If None, attempts to locate it automatically.
+ 73        """
+ 74        self._lib = self._load_library(library_path)
+ 75        self._setup_functions()
+ 76
+ 77    def _load_library(self, library_path):
+ 78        """Load the KNI shared library."""
+ 79        if library_path:
+ 80            return ctypes.CDLL(str(library_path))
+ 81
+ 82        # Try to locate library automatically
+ 83        system = platform.system()
+ 84        if system == "Windows":
+ 85            lib_name = "KhiopsNativeInterface.dll"
+ 86        elif system == "Linux":
+ 87            lib_name = "libKhiopsNativeInterface.so"
+ 88        elif system == "Darwin":  # macOS
+ 89            lib_name = "libKhiopsNativeInterface.dylib"
+ 90        else:
+ 91            raise RuntimeError(f"Unsupported platform: {system}")
+ 92
+ 93        # Try different search strategies
+ 94        try:
+ 95            # First, try loading directly (will use system paths)
+ 96            return ctypes.CDLL(lib_name)
+ 97        except OSError:
+ 98            # Try to find in KNI_HOME environment variable
+ 99            kni_home = os.environ.get("KNI_HOME")
+100            if kni_home:
+101                lib_path = os.path.join(kni_home, lib_name)
+102                if os.path.exists(lib_path):
+103                    return ctypes.CDLL(lib_path)
+104
+105            raise RuntimeError(
+106                f"Could not find {lib_name}. "
+107                "Please set KNI_HOME environment variable or provide library_path."
+108            )
+109
+110    def _setup_functions(self):
+111        """Setup function signatures for KNI library functions."""
+112        # KNIGetVersion
+113        self._lib.KNIGetVersion.argtypes = []
+114        self._lib.KNIGetVersion.restype = ctypes.c_int
+115
+116        # KNIGetFullVersion
+117        self._lib.KNIGetFullVersion.argtypes = []
+118        self._lib.KNIGetFullVersion.restype = ctypes.c_char_p
+119
+120        # KNISetLogFileName
+121        self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p]
+122        self._lib.KNISetLogFileName.restype = ctypes.c_int
+123
+124        # KNIOpenStream
+125        self._lib.KNIOpenStream.argtypes = [
+126            ctypes.c_char_p,  # sDictionaryFileName
+127            ctypes.c_char_p,  # sDictionaryName
+128            ctypes.c_char_p,  # sStreamHeaderLine
+129            ctypes.c_char,  # cFieldSeparator
+130        ]
+131        self._lib.KNIOpenStream.restype = ctypes.c_int
+132
+133        # KNICloseStream
+134        self._lib.KNICloseStream.argtypes = [ctypes.c_int]
+135        self._lib.KNICloseStream.restype = ctypes.c_int
+136
+137        # KNIRecodeStreamRecord
+138        self._lib.KNIRecodeStreamRecord.argtypes = [
+139            ctypes.c_int,  # hStream
+140            ctypes.c_char_p,  # sInputRecord
+141            ctypes.c_char_p,  # sOutputRecord
+142            ctypes.c_int,  # nOutputMaxLength
+143        ]
+144        self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int
+145
+146        # Multi-table functions
+147        # KNISetSecondaryHeaderLine
+148        self._lib.KNISetSecondaryHeaderLine.argtypes = [
+149            ctypes.c_int,  # hStream
+150            ctypes.c_char_p,  # sDataPath
+151            ctypes.c_char_p,  # sStreamSecondaryHeaderLine
+152        ]
+153        self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int
+154
+155        # KNISetExternalTable
+156        self._lib.KNISetExternalTable.argtypes = [
+157            ctypes.c_int,  # hStream
+158            ctypes.c_char_p,  # sDataRoot
+159            ctypes.c_char_p,  # sDataPath
+160            ctypes.c_char_p,  # sDataTableFileName
+161        ]
+162        self._lib.KNISetExternalTable.restype = ctypes.c_int
+163
+164        # KNIFinishOpeningStream
+165        self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int]
+166        self._lib.KNIFinishOpeningStream.restype = ctypes.c_int
+167
+168        # KNISetSecondaryInputRecord
+169        self._lib.KNISetSecondaryInputRecord.argtypes = [
+170            ctypes.c_int,  # hStream
+171            ctypes.c_char_p,  # sDataPath
+172            ctypes.c_char_p,  # sStreamSecondaryInputRecord
+173        ]
+174        self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int
+175
+176        # Advanced parameters
+177        # KNIGetStreamMaxMemory
+178        self._lib.KNIGetStreamMaxMemory.argtypes = []
+179        self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int
+180
+181        # KNISetStreamMaxMemory
+182        self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int]
+183        self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int
+184
+185    def get_version(self):
+186        """Get KNI version as integer (10*major + minor)."""
+187        return self._lib.KNIGetVersion()
+188
+189    def get_full_version(self):
+190        """Get KNI full version string."""
+191        return self._lib.KNIGetFullVersion().decode("utf-8")
+192
+193    def set_log_file_name(self, log_file_name):
+194        """
+195        Set the log file name for error messages.
+196
+197        Args:
+198            log_file_name: Path to log file (str or bytes, empty string for no logging)
+199
+200        Raises:
+201            KNIError: If setting log file fails
+202            TypeError: If log_file_name is not str or bytes
+203        """
+204        if isinstance(log_file_name, str):
+205            log_file_name_bytes = log_file_name.encode("utf-8")
+206        elif isinstance(log_file_name, bytes):
+207            log_file_name_bytes = log_file_name
+208        else:
+209            raise TypeError(
+210                f"log_file_name must be str or bytes, not {type(log_file_name).__name__}"
+211            )
+212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
+213        if ret_code != self.KNI_OK:
+214            raise KNIError(
+215                f"Failed to set log file: {self.get_error_message(ret_code)}",
+216                ret_code,
+217            )
+218
+219    def open_stream(
+220        self, dictionary_file_name, dictionary_name, header_line, field_separator="\t"
+221    ):
+222        """
+223        Open a KNI stream for recoding.
+224
+225        Args:
+226            dictionary_file_name: Path to the dictionary file (str or bytes)
+227            dictionary_name: Name of the dictionary to use (str or bytes)
+228            header_line: Header line with field names (str or bytes)
+229            field_separator: Character used to separate fields (str or bytes, default: tab)
+230
+231        Returns:
+232            Stream handle (positive integer)
+233
+234        Raises:
+235            KNIError: If opening stream fails
+236            TypeError: If arguments have invalid types
+237        """
+238        # Type checking and conversion
+239        if isinstance(dictionary_file_name, str):
+240            dictionary_file_name_bytes = dictionary_file_name.encode("utf-8")
+241        elif isinstance(dictionary_file_name, bytes):
+242            dictionary_file_name_bytes = dictionary_file_name
+243        else:
+244            raise TypeError(
+245                f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}"
+246            )
+247        if isinstance(dictionary_name, str):
+248            dictionary_name_bytes = dictionary_name.encode("utf-8")
+249        elif isinstance(dictionary_name, bytes):
+250            dictionary_name_bytes = dictionary_name
+251        else:
+252            raise TypeError(
+253                f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}"
+254            )
+255        if isinstance(header_line, str):
+256            header_line_bytes = header_line.encode("utf-8")
+257        elif isinstance(header_line, bytes):
+258            header_line_bytes = header_line
+259        else:
+260            raise TypeError(
+261                f"header_line must be str or bytes, not {type(header_line).__name__}"
+262            )
+263
+264        # Convert field_separator to a single byte
+265        if isinstance(field_separator, str):
+266            field_separator_byte = field_separator.encode("utf-8")[0]
+267        elif isinstance(field_separator, bytes):
+268            field_separator_byte = field_separator[0]
+269        else:
+270            raise TypeError(
+271                f"field_separator must be str or bytes, not {type(field_separator).__name__}"
+272            )
+273
+274        stream_handle = self._lib.KNIOpenStream(
+275            dictionary_file_name_bytes,
+276            dictionary_name_bytes,
+277            header_line_bytes,
+278            field_separator_byte,
+279        )
+280        if stream_handle < 0:
+281            raise KNIError(
+282                f"Failed to open stream: {self.get_error_message(stream_handle)}",
+283                stream_handle,
+284            )
+285        return stream_handle
+286
+287    def close_stream(self, stream_handle):
+288        """
+289        Close a KNI stream.
+290
+291        Args:
+292            stream_handle: Handle returned by open_stream
+293
+294        Raises:
+295            KNIError: If closing stream fails
+296            TypeError: If stream_handle is not int
+297        """
+298        if not isinstance(stream_handle, int):
+299            raise TypeError(
+300                f"stream_handle must be int, not {type(stream_handle).__name__}"
+301            )
+302        ret_code = self._lib.KNICloseStream(stream_handle)
+303        if ret_code != self.KNI_OK:
+304            raise KNIError(
+305                f"Failed to close stream: {self.get_error_message(ret_code)}",
+306                ret_code,
+307            )
+308
+309    def recode_stream_record(self, stream_handle, input_record, max_output_length=None):
+310        """
+311        Recode an input record using the stream's dictionary.
+312
+313        Args:
+314            stream_handle: Handle returned by open_stream
+315            input_record: Input record string or bytes
+316            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
+317
+318        Returns:
+319            Recoded output string
+320
+321        Raises:
+322            KNIError: If recoding fails
+323            TypeError: If arguments have invalid types
+324        """
+325        if not isinstance(stream_handle, int):
+326            raise TypeError(
+327                f"stream_handle must be int, not {type(stream_handle).__name__}"
+328            )
+329        if isinstance(input_record, str):
+330            input_record_bytes = input_record.encode("utf-8")
+331        elif isinstance(input_record, bytes):
+332            input_record_bytes = input_record
+333        else:
+334            raise TypeError(
+335                f"input_record must be str or bytes, not {type(input_record).__name__}"
+336            )
+337        if max_output_length is None:
+338            max_output_length = self.KNI_MaxRecordLength
+339        elif not isinstance(max_output_length, int):
+340            raise TypeError(
+341                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
+342            )
+343
+344        output_buffer = ctypes.create_string_buffer(max_output_length)
+345        ret_code = self._lib.KNIRecodeStreamRecord(
+346            stream_handle,
+347            input_record_bytes,
+348            output_buffer,
+349            max_output_length,
+350        )
+351
+352        if ret_code != self.KNI_OK:
+353            raise KNIError(
+354                f"Failed to recode record: {self.get_error_message(ret_code)}",
+355                ret_code,
+356            )
+357        return output_buffer.value.decode("utf-8")
+358
+359    def set_secondary_header_line(self, stream_handle, data_path, header_line):
+360        """
+361        Set the header line of a secondary table (multi-table only).
+362
+363        Args:
+364            stream_handle: Handle returned by open_stream
+365            data_path: Data path identifying the secondary table (str or bytes)
+366            header_line: Header line with field names (str or bytes)
+367
+368        Raises:
+369            KNIError: If setting secondary header fails
+370            TypeError: If arguments have invalid types
+371        """
+372        if not isinstance(stream_handle, int):
+373            raise TypeError(
+374                f"stream_handle must be int, not {type(stream_handle).__name__}"
+375            )
+376        if isinstance(data_path, str):
+377            data_path_bytes = data_path.encode("utf-8")
+378        elif isinstance(data_path, bytes):
+379            data_path_bytes = data_path
+380        else:
+381            raise TypeError(
+382                f"data_path must be str or bytes, not {type(data_path).__name__}"
+383            )
+384        if isinstance(header_line, str):
+385            header_line_bytes = header_line.encode("utf-8")
+386        elif isinstance(header_line, bytes):
+387            header_line_bytes = header_line
+388        else:
+389            raise TypeError(
+390                f"header_line must be str or bytes, not {type(header_line).__name__}"
+391            )
+392        ret_code = self._lib.KNISetSecondaryHeaderLine(
+393            stream_handle, data_path_bytes, header_line_bytes
+394        )
+395        if ret_code != self.KNI_OK:
+396            raise KNIError(
+397                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
+398                ret_code,
+399            )
+400
+401    def set_external_table(
+402        self, stream_handle, data_root, data_path, data_table_file_name
+403    ):
+404        """
+405        Set the name of a data file for an external table (multi-table only).
+406
+407        Args:
+408            stream_handle: Handle returned by open_stream
+409            data_root: Root dictionary of the external table (str or bytes)
+410            data_path: Data path for secondary external tables (str or bytes, empty for root)
+411            data_table_file_name: Path to the external table data file (str or bytes)
+412
+413        Raises:
+414            KNIError: If setting external table fails
+415            TypeError: If arguments have invalid types
+416        """
+417        if not isinstance(stream_handle, int):
+418            raise TypeError(
+419                f"stream_handle must be int, not {type(stream_handle).__name__}"
+420            )
+421        if isinstance(data_root, str):
+422            data_root_bytes = data_root.encode("utf-8")
+423        elif isinstance(data_root, bytes):
+424            data_root_bytes = data_root
+425        else:
+426            raise TypeError(
+427                f"data_root must be str or bytes, not {type(data_root).__name__}"
+428            )
+429        if isinstance(data_path, str):
+430            data_path_bytes = data_path.encode("utf-8")
+431        elif isinstance(data_path, bytes):
+432            data_path_bytes = data_path
+433        else:
+434            raise TypeError(
+435                f"data_path must be str or bytes, not {type(data_path).__name__}"
+436            )
+437        if isinstance(data_table_file_name, str):
+438            data_table_file_name_bytes = data_table_file_name.encode("utf-8")
+439        elif isinstance(data_table_file_name, bytes):
+440            data_table_file_name_bytes = data_table_file_name
+441        else:
+442            raise TypeError(
+443                f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}"
+444            )
+445        ret_code = self._lib.KNISetExternalTable(
+446            stream_handle,
+447            data_root_bytes,
+448            data_path_bytes,
+449            data_table_file_name_bytes,
+450        )
+451        if ret_code != self.KNI_OK:
+452            raise KNIError(
+453                f"Failed to set external table: {self.get_error_message(ret_code)}",
+454                ret_code,
+455            )
+456
+457    def finish_opening_stream(self, stream_handle):
+458        """
+459        Finish opening a stream (multi-table only).
+460
+461        Must be called after all secondary headers and external tables are set.
+462
+463        Args:
+464            stream_handle: Handle returned by open_stream
+465
+466        Raises:
+467            KNIError: If finishing opening stream fails
+468            TypeError: If stream_handle is not int
+469        """
+470        if not isinstance(stream_handle, int):
+471            raise TypeError(
+472                f"stream_handle must be int, not {type(stream_handle).__name__}"
+473            )
+474        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
+475        if ret_code != self.KNI_OK:
+476            raise KNIError(
+477                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
+478                ret_code,
+479            )
+480
+481    def set_secondary_input_record(self, stream_handle, data_path, input_record):
+482        """
+483        Set a secondary input record for multi-table recoding.
+484
+485        All secondary records must be set before recoding the primary record.
+486
+487        Args:
+488            stream_handle: Handle returned by open_stream
+489            data_path: Data path identifying the secondary table (str or bytes)
+490            input_record: Secondary input record string or bytes
+491
+492        Raises:
+493            KNIError: If setting secondary input record fails
+494            TypeError: If arguments have invalid types
+495        """
+496        if not isinstance(stream_handle, int):
+497            raise TypeError(
+498                f"stream_handle must be int, not {type(stream_handle).__name__}"
+499            )
+500        if isinstance(data_path, str):
+501            data_path_bytes = data_path.encode("utf-8")
+502        elif isinstance(data_path, bytes):
+503            data_path_bytes = data_path
+504        else:
+505            raise TypeError(
+506                f"data_path must be str or bytes, not {type(data_path).__name__}"
+507            )
+508        if isinstance(input_record, str):
+509            input_record_bytes = input_record.encode("utf-8")
+510        elif isinstance(input_record, bytes):
+511            input_record_bytes = input_record
+512        else:
+513            raise TypeError(
+514                f"input_record must be str or bytes, not {type(input_record).__name__}"
+515            )
+516        ret_code = self._lib.KNISetSecondaryInputRecord(
+517            stream_handle, data_path_bytes, input_record_bytes
+518        )
+519        if ret_code != self.KNI_OK:
+520            raise KNIError(
+521                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
+522                ret_code,
+523            )
+524
+525    def get_stream_max_memory(self):
+526        """
+527        Get the maximum amount of memory (in MB) for stream opening.
+528
+529        Returns:
+530            Maximum memory in MB
+531        """
+532        return self._lib.KNIGetStreamMaxMemory()
+533
+534    def set_stream_max_memory(self, max_mb):
+535        """
+536        Set the maximum amount of memory (in MB) for stream opening.
+537
+538        Args:
+539            max_mb: Maximum memory in MB
+540
+541        Returns:
+542            Accepted value (bounded by system limits)
+543        """
+544        if not isinstance(max_mb, int):
+545            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
+546        return self._lib.KNISetStreamMaxMemory(max_mb)
+547
+548    @staticmethod
+549    def get_error_message(error_code):
+550        """
+551        Get a human-readable error message for an error code.
+552
+553        Args:
+554            error_code: KNI error code
+555
+556        Returns:
+557            Error message string
+558        """
+559        if not isinstance(error_code, int):
+560            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
+561        error_messages = {
+562            KNI.KNI_OK: "Success",
+563            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
+564            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
+565            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
+566            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
+567            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
+568            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
+569            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
+570            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
+571            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
+572            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
+573            KNI.KNI_ErrorStreamOpened: "Stream already opened",
+574            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
+575            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
+576            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
+577            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
+578            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
+579            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
+580            KNI.KNI_ErrorDataRoot: "Bad data root",
+581            KNI.KNI_ErrorDataPath: "Bad data path",
+582            KNI.KNI_ErrorDataTableFile: "Bad data table file",
+583            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
+584            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
+585            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
+586            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
+587            KNI.KNI_ErrorLogFile: "Bad error file",
+588        }
+589        return error_messages.get(error_code, f"Unknown error code: {error_code}")
+
+ + +

Python wrapper for Khiops Native Interface using ctypes.

+
+ + +
+ +
+ + KNI(library_path=None) + + + +
+ +
66    def __init__(self, library_path=None):
+67        """
+68        Initialize the KNI wrapper.
+69
+70        Args:
+71            library_path: Optional path to the KNI shared library.
+72                         If None, attempts to locate it automatically.
+73        """
+74        self._lib = self._load_library(library_path)
+75        self._setup_functions()
+
+ + +

Initialize the KNI wrapper.

+ +

Args: + library_path: Optional path to the KNI shared library. + If None, attempts to locate it automatically.

+
+ + +
+
+
+ KNI_OK = +0 + + +
+ + + + +
+
+
+ KNI_ErrorRunningFunction = +-1 + + +
+ + + + +
+
+
+ KNI_ErrorDictionaryFileName = +-2 + + +
+ + + + +
+
+
+ KNI_ErrorDictionaryMissingFile = +-3 + + +
+ + + + +
+
+
+ KNI_ErrorDictionaryFileFormat = +-4 + + +
+ + + + +
+
+
+ KNI_ErrorDictionaryName = +-5 + + +
+ + + + +
+
+
+ KNI_ErrorMissingDictionary = +-6 + + +
+ + + + +
+
+
+ KNI_ErrorTooManyStreams = +-7 + + +
+ + + + +
+
+
+ KNI_ErrorStreamHeaderLine = +-8 + + +
+ + + + +
+
+
+ KNI_ErrorFieldSeparator = +-9 + + +
+ + + + +
+
+
+ KNI_ErrorStreamHandle = +-10 + + +
+ + + + +
+
+
+ KNI_ErrorStreamOpened = +-11 + + +
+ + + + +
+
+
+ KNI_ErrorStreamNotOpened = +-12 + + +
+ + + + +
+
+
+ KNI_ErrorStreamInputRecord = +-13 + + +
+ + + + +
+
+
+ KNI_ErrorStreamInputRead = +-14 + + +
+ + + + +
+
+
+ KNI_ErrorStreamOutputRecord = +-15 + + +
+ + + + +
+
+
+ KNI_ErrorMissingSecondaryHeader = +-16 + + +
+ + + + +
+
+
+ KNI_ErrorMissingExternalTable = +-17 + + +
+ + + + +
+
+
+ KNI_ErrorDataRoot = +-18 + + +
+ + + + +
+
+
+ KNI_ErrorDataPath = +-19 + + +
+ + + + +
+
+
+ KNI_ErrorDataTableFile = +-20 + + +
+ + + + +
+
+
+ KNI_ErrorLoadDataTable = +-21 + + +
+ + + + +
+
+
+ KNI_ErrorMemoryOverflow = +-22 + + +
+ + + + +
+
+
+ KNI_ErrorStreamOpening = +-23 + + +
+ + + + +
+
+
+ KNI_ErrorStreamOpeningNotFinished = +-24 + + +
+ + + + +
+
+
+ KNI_ErrorLogFile = +-25 + + +
+ + + + +
+
+
+ KNI_MaxStreamNumber = +512 + + +
+ + + + +
+
+
+ KNI_DefaultMaxStreamMemory = +100 + + +
+ + + + +
+
+
+ KNI_MaxPathNameLength = +1024 + + +
+ + + + +
+
+
+ KNI_MaxDictionaryNameLength = +128 + + +
+ + + + +
+
+
+ KNI_MaxRecordLength = +8388608 + + +
+ + + + +
+
+ +
+ + def + get_version(self): + + + +
+ +
185    def get_version(self):
+186        """Get KNI version as integer (10*major + minor)."""
+187        return self._lib.KNIGetVersion()
+
+ + +

Get KNI version as integer (10*major + minor).

+
+ + +
+
+ +
+ + def + get_full_version(self): + + + +
+ +
189    def get_full_version(self):
+190        """Get KNI full version string."""
+191        return self._lib.KNIGetFullVersion().decode("utf-8")
+
+ + +

Get KNI full version string.

+
+ + +
+
+ +
+ + def + set_log_file_name(self, log_file_name): + + + +
+ +
193    def set_log_file_name(self, log_file_name):
+194        """
+195        Set the log file name for error messages.
+196
+197        Args:
+198            log_file_name: Path to log file (str or bytes, empty string for no logging)
+199
+200        Raises:
+201            KNIError: If setting log file fails
+202            TypeError: If log_file_name is not str or bytes
+203        """
+204        if isinstance(log_file_name, str):
+205            log_file_name_bytes = log_file_name.encode("utf-8")
+206        elif isinstance(log_file_name, bytes):
+207            log_file_name_bytes = log_file_name
+208        else:
+209            raise TypeError(
+210                f"log_file_name must be str or bytes, not {type(log_file_name).__name__}"
+211            )
+212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
+213        if ret_code != self.KNI_OK:
+214            raise KNIError(
+215                f"Failed to set log file: {self.get_error_message(ret_code)}",
+216                ret_code,
+217            )
+
+ + +

Set the log file name for error messages.

+ +

Args: + log_file_name: Path to log file (str or bytes, empty string for no logging)

+ +

Raises: + KNIError: If setting log file fails + TypeError: If log_file_name is not str or bytes

+
+ + +
+
+ +
+ + def + open_stream( self, dictionary_file_name, dictionary_name, header_line, field_separator='\t'): + + + +
+ +
219    def open_stream(
+220        self, dictionary_file_name, dictionary_name, header_line, field_separator="\t"
+221    ):
+222        """
+223        Open a KNI stream for recoding.
+224
+225        Args:
+226            dictionary_file_name: Path to the dictionary file (str or bytes)
+227            dictionary_name: Name of the dictionary to use (str or bytes)
+228            header_line: Header line with field names (str or bytes)
+229            field_separator: Character used to separate fields (str or bytes, default: tab)
+230
+231        Returns:
+232            Stream handle (positive integer)
+233
+234        Raises:
+235            KNIError: If opening stream fails
+236            TypeError: If arguments have invalid types
+237        """
+238        # Type checking and conversion
+239        if isinstance(dictionary_file_name, str):
+240            dictionary_file_name_bytes = dictionary_file_name.encode("utf-8")
+241        elif isinstance(dictionary_file_name, bytes):
+242            dictionary_file_name_bytes = dictionary_file_name
+243        else:
+244            raise TypeError(
+245                f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}"
+246            )
+247        if isinstance(dictionary_name, str):
+248            dictionary_name_bytes = dictionary_name.encode("utf-8")
+249        elif isinstance(dictionary_name, bytes):
+250            dictionary_name_bytes = dictionary_name
+251        else:
+252            raise TypeError(
+253                f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}"
+254            )
+255        if isinstance(header_line, str):
+256            header_line_bytes = header_line.encode("utf-8")
+257        elif isinstance(header_line, bytes):
+258            header_line_bytes = header_line
+259        else:
+260            raise TypeError(
+261                f"header_line must be str or bytes, not {type(header_line).__name__}"
+262            )
+263
+264        # Convert field_separator to a single byte
+265        if isinstance(field_separator, str):
+266            field_separator_byte = field_separator.encode("utf-8")[0]
+267        elif isinstance(field_separator, bytes):
+268            field_separator_byte = field_separator[0]
+269        else:
+270            raise TypeError(
+271                f"field_separator must be str or bytes, not {type(field_separator).__name__}"
+272            )
+273
+274        stream_handle = self._lib.KNIOpenStream(
+275            dictionary_file_name_bytes,
+276            dictionary_name_bytes,
+277            header_line_bytes,
+278            field_separator_byte,
+279        )
+280        if stream_handle < 0:
+281            raise KNIError(
+282                f"Failed to open stream: {self.get_error_message(stream_handle)}",
+283                stream_handle,
+284            )
+285        return stream_handle
+
+ + +

Open a KNI stream for recoding.

+ +

Args: + dictionary_file_name: Path to the dictionary file (str or bytes) + dictionary_name: Name of the dictionary to use (str or bytes) + header_line: Header line with field names (str or bytes) + field_separator: Character used to separate fields (str or bytes, default: tab)

+ +

Returns: + Stream handle (positive integer)

+ +

Raises: + KNIError: If opening stream fails + TypeError: If arguments have invalid types

+
+ + +
+
+ +
+ + def + close_stream(self, stream_handle): + + + +
+ +
287    def close_stream(self, stream_handle):
+288        """
+289        Close a KNI stream.
+290
+291        Args:
+292            stream_handle: Handle returned by open_stream
+293
+294        Raises:
+295            KNIError: If closing stream fails
+296            TypeError: If stream_handle is not int
+297        """
+298        if not isinstance(stream_handle, int):
+299            raise TypeError(
+300                f"stream_handle must be int, not {type(stream_handle).__name__}"
+301            )
+302        ret_code = self._lib.KNICloseStream(stream_handle)
+303        if ret_code != self.KNI_OK:
+304            raise KNIError(
+305                f"Failed to close stream: {self.get_error_message(ret_code)}",
+306                ret_code,
+307            )
+
+ + +

Close a KNI stream.

+ +

Args: + stream_handle: Handle returned by open_stream

+ +

Raises: + KNIError: If closing stream fails + TypeError: If stream_handle is not int

+
+ + +
+
+ +
+ + def + recode_stream_record(self, stream_handle, input_record, max_output_length=None): + + + +
+ +
309    def recode_stream_record(self, stream_handle, input_record, max_output_length=None):
+310        """
+311        Recode an input record using the stream's dictionary.
+312
+313        Args:
+314            stream_handle: Handle returned by open_stream
+315            input_record: Input record string or bytes
+316            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
+317
+318        Returns:
+319            Recoded output string
+320
+321        Raises:
+322            KNIError: If recoding fails
+323            TypeError: If arguments have invalid types
+324        """
+325        if not isinstance(stream_handle, int):
+326            raise TypeError(
+327                f"stream_handle must be int, not {type(stream_handle).__name__}"
+328            )
+329        if isinstance(input_record, str):
+330            input_record_bytes = input_record.encode("utf-8")
+331        elif isinstance(input_record, bytes):
+332            input_record_bytes = input_record
+333        else:
+334            raise TypeError(
+335                f"input_record must be str or bytes, not {type(input_record).__name__}"
+336            )
+337        if max_output_length is None:
+338            max_output_length = self.KNI_MaxRecordLength
+339        elif not isinstance(max_output_length, int):
+340            raise TypeError(
+341                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
+342            )
+343
+344        output_buffer = ctypes.create_string_buffer(max_output_length)
+345        ret_code = self._lib.KNIRecodeStreamRecord(
+346            stream_handle,
+347            input_record_bytes,
+348            output_buffer,
+349            max_output_length,
+350        )
+351
+352        if ret_code != self.KNI_OK:
+353            raise KNIError(
+354                f"Failed to recode record: {self.get_error_message(ret_code)}",
+355                ret_code,
+356            )
+357        return output_buffer.value.decode("utf-8")
+
+ + +

Recode an input record using the stream's dictionary.

+ +

Args: + stream_handle: Handle returned by open_stream + input_record: Input record string or bytes + max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

+ +

Returns: + Recoded output string

+ +

Raises: + KNIError: If recoding fails + TypeError: If arguments have invalid types

+
+ + +
+
+ +
+ + def + set_secondary_header_line(self, stream_handle, data_path, header_line): + + + +
+ +
359    def set_secondary_header_line(self, stream_handle, data_path, header_line):
+360        """
+361        Set the header line of a secondary table (multi-table only).
+362
+363        Args:
+364            stream_handle: Handle returned by open_stream
+365            data_path: Data path identifying the secondary table (str or bytes)
+366            header_line: Header line with field names (str or bytes)
+367
+368        Raises:
+369            KNIError: If setting secondary header fails
+370            TypeError: If arguments have invalid types
+371        """
+372        if not isinstance(stream_handle, int):
+373            raise TypeError(
+374                f"stream_handle must be int, not {type(stream_handle).__name__}"
+375            )
+376        if isinstance(data_path, str):
+377            data_path_bytes = data_path.encode("utf-8")
+378        elif isinstance(data_path, bytes):
+379            data_path_bytes = data_path
+380        else:
+381            raise TypeError(
+382                f"data_path must be str or bytes, not {type(data_path).__name__}"
+383            )
+384        if isinstance(header_line, str):
+385            header_line_bytes = header_line.encode("utf-8")
+386        elif isinstance(header_line, bytes):
+387            header_line_bytes = header_line
+388        else:
+389            raise TypeError(
+390                f"header_line must be str or bytes, not {type(header_line).__name__}"
+391            )
+392        ret_code = self._lib.KNISetSecondaryHeaderLine(
+393            stream_handle, data_path_bytes, header_line_bytes
+394        )
+395        if ret_code != self.KNI_OK:
+396            raise KNIError(
+397                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
+398                ret_code,
+399            )
+
+ + +

Set the header line of a secondary table (multi-table only).

+ +

Args: + stream_handle: Handle returned by open_stream + data_path: Data path identifying the secondary table (str or bytes) + header_line: Header line with field names (str or bytes)

+ +

Raises: + KNIError: If setting secondary header fails + TypeError: If arguments have invalid types

+
+ + +
+
+ +
+ + def + set_external_table(self, stream_handle, data_root, data_path, data_table_file_name): + + + +
+ +
401    def set_external_table(
+402        self, stream_handle, data_root, data_path, data_table_file_name
+403    ):
+404        """
+405        Set the name of a data file for an external table (multi-table only).
+406
+407        Args:
+408            stream_handle: Handle returned by open_stream
+409            data_root: Root dictionary of the external table (str or bytes)
+410            data_path: Data path for secondary external tables (str or bytes, empty for root)
+411            data_table_file_name: Path to the external table data file (str or bytes)
+412
+413        Raises:
+414            KNIError: If setting external table fails
+415            TypeError: If arguments have invalid types
+416        """
+417        if not isinstance(stream_handle, int):
+418            raise TypeError(
+419                f"stream_handle must be int, not {type(stream_handle).__name__}"
+420            )
+421        if isinstance(data_root, str):
+422            data_root_bytes = data_root.encode("utf-8")
+423        elif isinstance(data_root, bytes):
+424            data_root_bytes = data_root
+425        else:
+426            raise TypeError(
+427                f"data_root must be str or bytes, not {type(data_root).__name__}"
+428            )
+429        if isinstance(data_path, str):
+430            data_path_bytes = data_path.encode("utf-8")
+431        elif isinstance(data_path, bytes):
+432            data_path_bytes = data_path
+433        else:
+434            raise TypeError(
+435                f"data_path must be str or bytes, not {type(data_path).__name__}"
+436            )
+437        if isinstance(data_table_file_name, str):
+438            data_table_file_name_bytes = data_table_file_name.encode("utf-8")
+439        elif isinstance(data_table_file_name, bytes):
+440            data_table_file_name_bytes = data_table_file_name
+441        else:
+442            raise TypeError(
+443                f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}"
+444            )
+445        ret_code = self._lib.KNISetExternalTable(
+446            stream_handle,
+447            data_root_bytes,
+448            data_path_bytes,
+449            data_table_file_name_bytes,
+450        )
+451        if ret_code != self.KNI_OK:
+452            raise KNIError(
+453                f"Failed to set external table: {self.get_error_message(ret_code)}",
+454                ret_code,
+455            )
+
+ + +

Set the name of a data file for an external table (multi-table only).

+ +

Args: + stream_handle: Handle returned by open_stream + data_root: Root dictionary of the external table (str or bytes) + data_path: Data path for secondary external tables (str or bytes, empty for root) + data_table_file_name: Path to the external table data file (str or bytes)

+ +

Raises: + KNIError: If setting external table fails + TypeError: If arguments have invalid types

+
+ + +
+
+ +
+ + def + finish_opening_stream(self, stream_handle): + + + +
+ +
457    def finish_opening_stream(self, stream_handle):
+458        """
+459        Finish opening a stream (multi-table only).
+460
+461        Must be called after all secondary headers and external tables are set.
+462
+463        Args:
+464            stream_handle: Handle returned by open_stream
+465
+466        Raises:
+467            KNIError: If finishing opening stream fails
+468            TypeError: If stream_handle is not int
+469        """
+470        if not isinstance(stream_handle, int):
+471            raise TypeError(
+472                f"stream_handle must be int, not {type(stream_handle).__name__}"
+473            )
+474        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
+475        if ret_code != self.KNI_OK:
+476            raise KNIError(
+477                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
+478                ret_code,
+479            )
+
+ + +

Finish opening a stream (multi-table only).

+ +

Must be called after all secondary headers and external tables are set.

+ +

Args: + stream_handle: Handle returned by open_stream

+ +

Raises: + KNIError: If finishing opening stream fails + TypeError: If stream_handle is not int

+
+ + +
+
+ +
+ + def + set_secondary_input_record(self, stream_handle, data_path, input_record): + + + +
+ +
481    def set_secondary_input_record(self, stream_handle, data_path, input_record):
+482        """
+483        Set a secondary input record for multi-table recoding.
+484
+485        All secondary records must be set before recoding the primary record.
+486
+487        Args:
+488            stream_handle: Handle returned by open_stream
+489            data_path: Data path identifying the secondary table (str or bytes)
+490            input_record: Secondary input record string or bytes
+491
+492        Raises:
+493            KNIError: If setting secondary input record fails
+494            TypeError: If arguments have invalid types
+495        """
+496        if not isinstance(stream_handle, int):
+497            raise TypeError(
+498                f"stream_handle must be int, not {type(stream_handle).__name__}"
+499            )
+500        if isinstance(data_path, str):
+501            data_path_bytes = data_path.encode("utf-8")
+502        elif isinstance(data_path, bytes):
+503            data_path_bytes = data_path
+504        else:
+505            raise TypeError(
+506                f"data_path must be str or bytes, not {type(data_path).__name__}"
+507            )
+508        if isinstance(input_record, str):
+509            input_record_bytes = input_record.encode("utf-8")
+510        elif isinstance(input_record, bytes):
+511            input_record_bytes = input_record
+512        else:
+513            raise TypeError(
+514                f"input_record must be str or bytes, not {type(input_record).__name__}"
+515            )
+516        ret_code = self._lib.KNISetSecondaryInputRecord(
+517            stream_handle, data_path_bytes, input_record_bytes
+518        )
+519        if ret_code != self.KNI_OK:
+520            raise KNIError(
+521                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
+522                ret_code,
+523            )
+
+ + +

Set a secondary input record for multi-table recoding.

+ +

All secondary records must be set before recoding the primary record.

+ +

Args: + stream_handle: Handle returned by open_stream + data_path: Data path identifying the secondary table (str or bytes) + input_record: Secondary input record string or bytes

+ +

Raises: + KNIError: If setting secondary input record fails + TypeError: If arguments have invalid types

+
+ + +
+
+ +
+ + def + get_stream_max_memory(self): + + + +
+ +
525    def get_stream_max_memory(self):
+526        """
+527        Get the maximum amount of memory (in MB) for stream opening.
+528
+529        Returns:
+530            Maximum memory in MB
+531        """
+532        return self._lib.KNIGetStreamMaxMemory()
+
+ + +

Get the maximum amount of memory (in MB) for stream opening.

+ +

Returns: + Maximum memory in MB

+
+ + +
+
+ +
+ + def + set_stream_max_memory(self, max_mb): + + + +
+ +
534    def set_stream_max_memory(self, max_mb):
+535        """
+536        Set the maximum amount of memory (in MB) for stream opening.
+537
+538        Args:
+539            max_mb: Maximum memory in MB
+540
+541        Returns:
+542            Accepted value (bounded by system limits)
+543        """
+544        if not isinstance(max_mb, int):
+545            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
+546        return self._lib.KNISetStreamMaxMemory(max_mb)
+
+ + +

Set the maximum amount of memory (in MB) for stream opening.

+ +

Args: + max_mb: Maximum memory in MB

+ +

Returns: + Accepted value (bounded by system limits)

+
+ + +
+
+ +
+
@staticmethod
+ + def + get_error_message(error_code): + + + +
+ +
548    @staticmethod
+549    def get_error_message(error_code):
+550        """
+551        Get a human-readable error message for an error code.
+552
+553        Args:
+554            error_code: KNI error code
+555
+556        Returns:
+557            Error message string
+558        """
+559        if not isinstance(error_code, int):
+560            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
+561        error_messages = {
+562            KNI.KNI_OK: "Success",
+563            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
+564            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
+565            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
+566            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
+567            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
+568            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
+569            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
+570            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
+571            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
+572            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
+573            KNI.KNI_ErrorStreamOpened: "Stream already opened",
+574            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
+575            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
+576            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
+577            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
+578            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
+579            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
+580            KNI.KNI_ErrorDataRoot: "Bad data root",
+581            KNI.KNI_ErrorDataPath: "Bad data path",
+582            KNI.KNI_ErrorDataTableFile: "Bad data table file",
+583            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
+584            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
+585            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
+586            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
+587            KNI.KNI_ErrorLogFile: "Bad error file",
+588        }
+589        return error_messages.get(error_code, f"Unknown error code: {error_code}")
+
+ + +

Get a human-readable error message for an error code.

+ +

Args: + error_code: KNI error code

+ +

Returns: + Error message string

+
+ + +
+
+
+ +
+ + class + KNIError(builtins.Exception): + + + +
+ +
20class KNIError(Exception):
+21    """Exception raised for KNI errors."""
+22
+23    def __init__(self, message, error_code=None):
+24        super().__init__(message)
+25        self.error_code = error_code
+
+ + +

Exception raised for KNI errors.

+
+ + +
+ +
+ + KNIError(message, error_code=None) + + + +
+ +
23    def __init__(self, message, error_code=None):
+24        super().__init__(message)
+25        self.error_code = error_code
+
+ + + + +
+
+
+ error_code + + +
+ + + + +
+
+
+ + \ No newline at end of file diff --git a/python/docs/search.js b/python/docs/search.js new file mode 100644 index 0000000..6b2cf79 --- /dev/null +++ b/python/docs/search.js @@ -0,0 +1,46 @@ +window.pdocSearch = (function(){ +/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oKhiops Native Interface (KNI) Python Package

\n\n

This package provides Python bindings for the Khiops Native Interface (KNI),\nenabling direct deployment of Khiops models from Python without temporary files.

\n"}, "kni.KNI": {"fullname": "kni.KNI", "modulename": "kni", "qualname": "KNI", "kind": "class", "doc": "

Python wrapper for Khiops Native Interface using ctypes.

\n"}, "kni.KNI.__init__": {"fullname": "kni.KNI.__init__", "modulename": "kni", "qualname": "KNI.__init__", "kind": "function", "doc": "

Initialize the KNI wrapper.

\n\n

Args:\n library_path: Optional path to the KNI shared library.\n If None, attempts to locate it automatically.

\n", "signature": "(library_path=None)"}, "kni.KNI.KNI_OK": {"fullname": "kni.KNI.KNI_OK", "modulename": "kni", "qualname": "KNI.KNI_OK", "kind": "variable", "doc": "

\n", "default_value": "0"}, "kni.KNI.KNI_ErrorRunningFunction": {"fullname": "kni.KNI.KNI_ErrorRunningFunction", "modulename": "kni", "qualname": "KNI.KNI_ErrorRunningFunction", "kind": "variable", "doc": "

\n", "default_value": "-1"}, "kni.KNI.KNI_ErrorDictionaryFileName": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileName", "kind": "variable", "doc": "

\n", "default_value": "-2"}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"fullname": "kni.KNI.KNI_ErrorDictionaryMissingFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryMissingFile", "kind": "variable", "doc": "

\n", "default_value": "-3"}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileFormat", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileFormat", "kind": "variable", "doc": "

\n", "default_value": "-4"}, "kni.KNI.KNI_ErrorDictionaryName": {"fullname": "kni.KNI.KNI_ErrorDictionaryName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryName", "kind": "variable", "doc": "

\n", "default_value": "-5"}, "kni.KNI.KNI_ErrorMissingDictionary": {"fullname": "kni.KNI.KNI_ErrorMissingDictionary", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingDictionary", "kind": "variable", "doc": "

\n", "default_value": "-6"}, "kni.KNI.KNI_ErrorTooManyStreams": {"fullname": "kni.KNI.KNI_ErrorTooManyStreams", "modulename": "kni", "qualname": "KNI.KNI_ErrorTooManyStreams", "kind": "variable", "doc": "

\n", "default_value": "-7"}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"fullname": "kni.KNI.KNI_ErrorStreamHeaderLine", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHeaderLine", "kind": "variable", "doc": "

\n", "default_value": "-8"}, "kni.KNI.KNI_ErrorFieldSeparator": {"fullname": "kni.KNI.KNI_ErrorFieldSeparator", "modulename": "kni", "qualname": "KNI.KNI_ErrorFieldSeparator", "kind": "variable", "doc": "

\n", "default_value": "-9"}, "kni.KNI.KNI_ErrorStreamHandle": {"fullname": "kni.KNI.KNI_ErrorStreamHandle", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHandle", "kind": "variable", "doc": "

\n", "default_value": "-10"}, "kni.KNI.KNI_ErrorStreamOpened": {"fullname": "kni.KNI.KNI_ErrorStreamOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpened", "kind": "variable", "doc": "

\n", "default_value": "-11"}, "kni.KNI.KNI_ErrorStreamNotOpened": {"fullname": "kni.KNI.KNI_ErrorStreamNotOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamNotOpened", "kind": "variable", "doc": "

\n", "default_value": "-12"}, "kni.KNI.KNI_ErrorStreamInputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamInputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRecord", "kind": "variable", "doc": "

\n", "default_value": "-13"}, "kni.KNI.KNI_ErrorStreamInputRead": {"fullname": "kni.KNI.KNI_ErrorStreamInputRead", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRead", "kind": "variable", "doc": "

\n", "default_value": "-14"}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamOutputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOutputRecord", "kind": "variable", "doc": "

\n", "default_value": "-15"}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"fullname": "kni.KNI.KNI_ErrorMissingSecondaryHeader", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingSecondaryHeader", "kind": "variable", "doc": "

\n", "default_value": "-16"}, "kni.KNI.KNI_ErrorMissingExternalTable": {"fullname": "kni.KNI.KNI_ErrorMissingExternalTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingExternalTable", "kind": "variable", "doc": "

\n", "default_value": "-17"}, "kni.KNI.KNI_ErrorDataRoot": {"fullname": "kni.KNI.KNI_ErrorDataRoot", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataRoot", "kind": "variable", "doc": "

\n", "default_value": "-18"}, "kni.KNI.KNI_ErrorDataPath": {"fullname": "kni.KNI.KNI_ErrorDataPath", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataPath", "kind": "variable", "doc": "

\n", "default_value": "-19"}, "kni.KNI.KNI_ErrorDataTableFile": {"fullname": "kni.KNI.KNI_ErrorDataTableFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataTableFile", "kind": "variable", "doc": "

\n", "default_value": "-20"}, "kni.KNI.KNI_ErrorLoadDataTable": {"fullname": "kni.KNI.KNI_ErrorLoadDataTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorLoadDataTable", "kind": "variable", "doc": "

\n", "default_value": "-21"}, "kni.KNI.KNI_ErrorMemoryOverflow": {"fullname": "kni.KNI.KNI_ErrorMemoryOverflow", "modulename": "kni", "qualname": "KNI.KNI_ErrorMemoryOverflow", "kind": "variable", "doc": "

\n", "default_value": "-22"}, "kni.KNI.KNI_ErrorStreamOpening": {"fullname": "kni.KNI.KNI_ErrorStreamOpening", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpening", "kind": "variable", "doc": "

\n", "default_value": "-23"}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"fullname": "kni.KNI.KNI_ErrorStreamOpeningNotFinished", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpeningNotFinished", "kind": "variable", "doc": "

\n", "default_value": "-24"}, "kni.KNI.KNI_ErrorLogFile": {"fullname": "kni.KNI.KNI_ErrorLogFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorLogFile", "kind": "variable", "doc": "

\n", "default_value": "-25"}, "kni.KNI.KNI_MaxStreamNumber": {"fullname": "kni.KNI.KNI_MaxStreamNumber", "modulename": "kni", "qualname": "KNI.KNI_MaxStreamNumber", "kind": "variable", "doc": "

\n", "default_value": "512"}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"fullname": "kni.KNI.KNI_DefaultMaxStreamMemory", "modulename": "kni", "qualname": "KNI.KNI_DefaultMaxStreamMemory", "kind": "variable", "doc": "

\n", "default_value": "100"}, "kni.KNI.KNI_MaxPathNameLength": {"fullname": "kni.KNI.KNI_MaxPathNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxPathNameLength", "kind": "variable", "doc": "

\n", "default_value": "1024"}, "kni.KNI.KNI_MaxDictionaryNameLength": {"fullname": "kni.KNI.KNI_MaxDictionaryNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxDictionaryNameLength", "kind": "variable", "doc": "

\n", "default_value": "128"}, "kni.KNI.KNI_MaxRecordLength": {"fullname": "kni.KNI.KNI_MaxRecordLength", "modulename": "kni", "qualname": "KNI.KNI_MaxRecordLength", "kind": "variable", "doc": "

\n", "default_value": "8388608"}, "kni.KNI.get_version": {"fullname": "kni.KNI.get_version", "modulename": "kni", "qualname": "KNI.get_version", "kind": "function", "doc": "

Get KNI version as integer (10*major + minor).

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.get_full_version": {"fullname": "kni.KNI.get_full_version", "modulename": "kni", "qualname": "KNI.get_full_version", "kind": "function", "doc": "

Get KNI full version string.

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.set_log_file_name": {"fullname": "kni.KNI.set_log_file_name", "modulename": "kni", "qualname": "KNI.set_log_file_name", "kind": "function", "doc": "

Set the log file name for error messages.

\n\n

Args:\n log_file_name: Path to log file (str or bytes, empty string for no logging)

\n\n

Raises:\n KNIError: If setting log file fails\n TypeError: If log_file_name is not str or bytes

\n", "signature": "(self, log_file_name):", "funcdef": "def"}, "kni.KNI.open_stream": {"fullname": "kni.KNI.open_stream", "modulename": "kni", "qualname": "KNI.open_stream", "kind": "function", "doc": "

Open a KNI stream for recoding.

\n\n

Args:\n dictionary_file_name: Path to the dictionary file (str or bytes)\n dictionary_name: Name of the dictionary to use (str or bytes)\n header_line: Header line with field names (str or bytes)\n field_separator: Character used to separate fields (str or bytes, default: tab)

\n\n

Returns:\n Stream handle (positive integer)

\n\n

Raises:\n KNIError: If opening stream fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tdictionary_file_name,\tdictionary_name,\theader_line,\tfield_separator='\\t'):", "funcdef": "def"}, "kni.KNI.close_stream": {"fullname": "kni.KNI.close_stream", "modulename": "kni", "qualname": "KNI.close_stream", "kind": "function", "doc": "

Close a KNI stream.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If closing stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle):", "funcdef": "def"}, "kni.KNI.recode_stream_record": {"fullname": "kni.KNI.recode_stream_record", "modulename": "kni", "qualname": "KNI.recode_stream_record", "kind": "function", "doc": "

Recode an input record using the stream's dictionary.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n input_record: Input record string or bytes\n max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

\n\n

Returns:\n Recoded output string

\n\n

Raises:\n KNIError: If recoding fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, input_record, max_output_length=None):", "funcdef": "def"}, "kni.KNI.set_secondary_header_line": {"fullname": "kni.KNI.set_secondary_header_line", "modulename": "kni", "qualname": "KNI.set_secondary_header_line", "kind": "function", "doc": "

Set the header line of a secondary table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n header_line: Header line with field names (str or bytes)

\n\n

Raises:\n KNIError: If setting secondary header fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_path, header_line):", "funcdef": "def"}, "kni.KNI.set_external_table": {"fullname": "kni.KNI.set_external_table", "modulename": "kni", "qualname": "KNI.set_external_table", "kind": "function", "doc": "

Set the name of a data file for an external table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_root: Root dictionary of the external table (str or bytes)\n data_path: Data path for secondary external tables (str or bytes, empty for root)\n data_table_file_name: Path to the external table data file (str or bytes)

\n\n

Raises:\n KNIError: If setting external table fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_root, data_path, data_table_file_name):", "funcdef": "def"}, "kni.KNI.finish_opening_stream": {"fullname": "kni.KNI.finish_opening_stream", "modulename": "kni", "qualname": "KNI.finish_opening_stream", "kind": "function", "doc": "

Finish opening a stream (multi-table only).

\n\n

Must be called after all secondary headers and external tables are set.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If finishing opening stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle):", "funcdef": "def"}, "kni.KNI.set_secondary_input_record": {"fullname": "kni.KNI.set_secondary_input_record", "modulename": "kni", "qualname": "KNI.set_secondary_input_record", "kind": "function", "doc": "

Set a secondary input record for multi-table recoding.

\n\n

All secondary records must be set before recoding the primary record.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n input_record: Secondary input record string or bytes

\n\n

Raises:\n KNIError: If setting secondary input record fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_path, input_record):", "funcdef": "def"}, "kni.KNI.get_stream_max_memory": {"fullname": "kni.KNI.get_stream_max_memory", "modulename": "kni", "qualname": "KNI.get_stream_max_memory", "kind": "function", "doc": "

Get the maximum amount of memory (in MB) for stream opening.

\n\n

Returns:\n Maximum memory in MB

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.set_stream_max_memory": {"fullname": "kni.KNI.set_stream_max_memory", "modulename": "kni", "qualname": "KNI.set_stream_max_memory", "kind": "function", "doc": "

Set the maximum amount of memory (in MB) for stream opening.

\n\n

Args:\n max_mb: Maximum memory in MB

\n\n

Returns:\n Accepted value (bounded by system limits)

\n", "signature": "(self, max_mb):", "funcdef": "def"}, "kni.KNI.get_error_message": {"fullname": "kni.KNI.get_error_message", "modulename": "kni", "qualname": "KNI.get_error_message", "kind": "function", "doc": "

Get a human-readable error message for an error code.

\n\n

Args:\n error_code: KNI error code

\n\n

Returns:\n Error message string

\n", "signature": "(error_code):", "funcdef": "def"}, "kni.KNIError": {"fullname": "kni.KNIError", "modulename": "kni", "qualname": "KNIError", "kind": "class", "doc": "

Exception raised for KNI errors.

\n", "bases": "builtins.Exception"}, "kni.KNIError.__init__": {"fullname": "kni.KNIError.__init__", "modulename": "kni", "qualname": "KNIError.__init__", "kind": "function", "doc": "

\n", "signature": "(message, error_code=None)"}, "kni.KNIError.error_code": {"fullname": "kni.KNIError.error_code", "modulename": "kni", "qualname": "KNIError.error_code", "kind": "variable", "doc": "

\n"}}, "docInfo": {"kni": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 33}, "kni.KNI": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "kni.KNI.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 15, "bases": 0, "doc": 27}, "kni.KNI.KNI_OK": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorRunningFunction": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingDictionary": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorTooManyStreams": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorFieldSeparator": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHandle": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamNotOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRead": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingExternalTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataRoot": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataPath": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataTableFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLoadDataTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMemoryOverflow": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpening": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLogFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxStreamNumber": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxPathNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxDictionaryNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxRecordLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.get_version": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "kni.KNI.get_full_version": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "kni.KNI.set_log_file_name": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 18, "bases": 0, "doc": 49}, "kni.KNI.open_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 79}, "kni.KNI.close_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 32}, "kni.KNI.recode_stream_record": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 59}, "kni.KNI.set_secondary_header_line": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 61}, "kni.KNI.set_external_table": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 82}, "kni.KNI.finish_opening_stream": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 51}, "kni.KNI.set_secondary_input_record": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 71}, "kni.KNI.get_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 21}, "kni.KNI.set_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 33}, "kni.KNI.get_error_message": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 12, "bases": 0, "doc": 27}, "kni.KNIError": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "kni.KNIError.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "kni.KNIError.error_code": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 50, "save": true}, "index": {"qualname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}, "kni.KNI.KNI_OK": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.4142135623730951}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 46, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "fullname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 1.4142135623730951}, "kni.KNI.get_full_version": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1.4142135623730951}, "kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 50, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "1": {"0": {"0": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}, "2": {"4": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}, "2": {"8": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}, "8": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}, "2": {"0": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}, "2": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}, "5": {"1": {"2": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}, "8": {"3": {"8": {"8": {"6": {"0": {"8": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 25}}, "signature": {"root": {"3": {"9": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.__init__": {"tf": 3.4641016151377544}, "kni.KNI.get_version": {"tf": 3.1622776601683795}, "kni.KNI.get_full_version": {"tf": 3.1622776601683795}, "kni.KNI.set_log_file_name": {"tf": 3.7416573867739413}, "kni.KNI.open_stream": {"tf": 6.4031242374328485}, "kni.KNI.close_stream": {"tf": 3.7416573867739413}, "kni.KNI.recode_stream_record": {"tf": 5.0990195135927845}, "kni.KNI.set_secondary_header_line": {"tf": 4.69041575982343}, "kni.KNI.set_external_table": {"tf": 5.0990195135927845}, "kni.KNI.finish_opening_stream": {"tf": 3.7416573867739413}, "kni.KNI.set_secondary_input_record": {"tf": 4.69041575982343}, "kni.KNI.get_stream_max_memory": {"tf": 3.1622776601683795}, "kni.KNI.set_stream_max_memory": {"tf": 3.7416573867739413}, "kni.KNI.get_error_message": {"tf": 3.1622776601683795}, "kni.KNIError.__init__": {"tf": 4}}, "df": 15, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 12}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}, "b": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.__init__": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}}}, "doc": {"root": {"1": {"0": {"docs": {}, "df": 0, "*": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {"kni": {"tf": 2.23606797749979}, "kni.KNI": {"tf": 1.7320508075688772}, "kni.KNI.__init__": {"tf": 2.449489742783178}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 2}, "kni.KNI.get_full_version": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 2.8284271247461903}, "kni.KNI.open_stream": {"tf": 3.3166247903554}, "kni.KNI.close_stream": {"tf": 2.6457513110645907}, "kni.KNI.recode_stream_record": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_header_line": {"tf": 2.8284271247461903}, "kni.KNI.set_external_table": {"tf": 2.8284271247461903}, "kni.KNI.finish_opening_stream": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_input_record": {"tf": 3.1622776601683795}, "kni.KNI.get_stream_max_memory": {"tf": 2.23606797749979}, "kni.KNI.set_stream_max_memory": {"tf": 2.8284271247461903}, "kni.KNI.get_error_message": {"tf": 2.6457513110645907}, "kni.KNIError": {"tf": 1.7320508075688772}, "kni.KNIError.__init__": {"tf": 1.7320508075688772}, "kni.KNIError.error_code": {"tf": 1.7320508075688772}}, "df": 50, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.7320508075688772}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2}}, "df": 2}}}}, "f": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 9}, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni": {"tf": 1}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 10}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 4}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 10}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 2.23606797749979}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"kni": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}, "b": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.7320508075688772}}, "df": 2}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}, "n": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 3, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}}, "df": 1, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.close_stream": {"tf": 2.23606797749979}, "kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 2.23606797749979}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 9}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 4}}}}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}, "d": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 2}}, "df": 2, "s": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1.7320508075688772}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + + // mirrored in build-search-index.js (part 1) + // Also split on html tags. this is a cheap heuristic, but good enough. + elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); + + let searchIndex; + if (docs._isPrebuiltIndex) { + console.info("using precompiled search index"); + searchIndex = elasticlunr.Index.load(docs); + } else { + console.time("building search index"); + // mirrored in build-search-index.js (part 2) + searchIndex = elasticlunr(function () { + this.pipeline.remove(elasticlunr.stemmer); + this.pipeline.remove(elasticlunr.stopWordFilter); + this.addField("qualname"); + this.addField("fullname"); + this.addField("annotation"); + this.addField("default_value"); + this.addField("signature"); + this.addField("bases"); + this.addField("doc"); + this.setRef("fullname"); + }); + for (let doc of docs) { + searchIndex.addDoc(doc); + } + console.timeEnd("building search index"); + } + + return (term) => searchIndex.search(term, { + fields: { + qualname: {boost: 4}, + fullname: {boost: 2}, + annotation: {boost: 2}, + default_value: {boost: 2}, + signature: {boost: 2}, + bases: {boost: 2}, + doc: {boost: 1}, + }, + expand: true + }); +})(); \ No newline at end of file From 70e8735d1eac746ac2cebadfa9ec34bea85c14b8 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Tue, 19 May 2026 13:30:34 +0200 Subject: [PATCH 6/8] Improve documentation and API --- README.md | 39 +- python/KNI.py | 588 -------------- python/docs/kni.html | 1798 +++++++++++++++++++---------------------- python/docs/search.js | 2 +- 4 files changed, 848 insertions(+), 1579 deletions(-) delete mode 100755 python/KNI.py diff --git a/README.md b/README.md index d399513..7e80bc0 100644 --- a/README.md +++ b/README.md @@ -158,53 +158,38 @@ java -cp kni.jar;jna.jar KNIRecodeFile data/ModelingIris.kdic SNB_Iris ^ # Example with Python -The files are located in [python directory](python/). They use Python's `ctypes` to call the KhiopsNativeInterface shared library directly. +The files are located in [python directory](python/). They use the `kni` Python package from the pip package `khiops-kni` to call the KhiopsNativeInterface shared library. ## Requirements -- Python 3.10 or later -- The KNI shared library must be installed and accessible (via `KNI_HOME` environment variable or standard system paths) +- Python 3.9 or later +- The `khiops-kni` package: + +```bash +pip install khiops-kni +``` + +This installs both the `kni` Python module and the KhiopsNativeInterface shared library. No `KNI_HOME` environment variable is needed. ## Scripts -- `KNI.py`: Python wrapper for KhiopsNativeInterface using ctypes - `KNIRecodeFile.py`: Single-table recoding example - `KNIRecodeMTFiles.py`: Multi-table recoding example **API Documentation**: See [Python API Reference](python/docs/index.html) for detailed documentation of the `kni` module. -For detailed API documentation, see the [Python API Reference](python/docs/index.html) + ## Launch Recode the "Iris" dataset from the data directory using the `SNB_Iris` classifier dictionary. -On Linux: - ```bash -python3 python/KNIRecodeFile.py data/ModelingIris.kdic SNB_Iris \ +python python/KNIRecodeFile.py data/ModelingIris.kdic SNB_Iris \ data/Iris.txt R_Iris_python.txt ``` -On Windows: - -```cmd -set path=%KNI_HOME%/bin;%path% -python python\KNIRecodeFile.py data/ModelingIris.kdic SNB_Iris ^ - data/Iris.txt R_Iris_python.txt -``` - For the multi-table "Splice Junction" example: -On Linux: - ```bash -python3 python/KNIRecodeMTFiles.py -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction \ +python python/KNIRecodeMTFiles.py -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction \ -i data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction_python.txt ``` - -On Windows: - -```cmd -set path=%KNI_HOME%/bin;%path% -python python\KNIRecodeMTFiles.py -d data/ModelingSpliceJunction.kdic SNB_SpliceJunction ^ - -i data/SpliceJunction.txt 1 -s DNA data/SpliceJunctionDNA.txt 1 -o R_SpliceJunction_python.txt -``` diff --git a/python/KNI.py b/python/KNI.py deleted file mode 100755 index 41924ad..0000000 --- a/python/KNI.py +++ /dev/null @@ -1,588 +0,0 @@ -# Copyright (c) 2023-2026 Orange. All rights reserved. -# This software is distributed under the BSD 3-Clause-clear License, the text of which is available -# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details. - -""" -Khiops Native Interface (KNI) Python wrapper using ctypes. - -This module provides a Python interface to the Khiops Native Interface (KNI) C library, -allowing direct deployment of Khiops models without temporary files. -""" - -import ctypes -import platform -import sys -import os -from pathlib import Path - - -class KNIError(Exception): - """Exception raised for KNI errors.""" - - def __init__(self, message, error_code=None): - super().__init__(message) - self.error_code = error_code - - -class KNI: - """Python wrapper for Khiops Native Interface using ctypes.""" - - # Error codes - KNI_OK = 0 - KNI_ErrorRunningFunction = -1 - KNI_ErrorDictionaryFileName = -2 - KNI_ErrorDictionaryMissingFile = -3 - KNI_ErrorDictionaryFileFormat = -4 - KNI_ErrorDictionaryName = -5 - KNI_ErrorMissingDictionary = -6 - KNI_ErrorTooManyStreams = -7 - KNI_ErrorStreamHeaderLine = -8 - KNI_ErrorFieldSeparator = -9 - KNI_ErrorStreamHandle = -10 - KNI_ErrorStreamOpened = -11 - KNI_ErrorStreamNotOpened = -12 - KNI_ErrorStreamInputRecord = -13 - KNI_ErrorStreamInputRead = -14 - KNI_ErrorStreamOutputRecord = -15 - KNI_ErrorMissingSecondaryHeader = -16 - KNI_ErrorMissingExternalTable = -17 - KNI_ErrorDataRoot = -18 - KNI_ErrorDataPath = -19 - KNI_ErrorDataTableFile = -20 - KNI_ErrorLoadDataTable = -21 - KNI_ErrorMemoryOverflow = -22 - KNI_ErrorStreamOpening = -23 - KNI_ErrorStreamOpeningNotFinished = -24 - KNI_ErrorLogFile = -25 - - # Constants - KNI_MaxStreamNumber = 512 - KNI_DefaultMaxStreamMemory = 100 - KNI_MaxPathNameLength = 1024 - KNI_MaxDictionaryNameLength = 128 - KNI_MaxRecordLength = 8 * 1024 * 1024 # 8 MB - - def __init__(self, library_path=None): - """ - Initialize the KNI wrapper. - - Args: - library_path: Optional path to the KNI shared library. - If None, attempts to locate it automatically. - """ - self._lib = self._load_library(library_path) - self._setup_functions() - - def _load_library(self, library_path): - """Load the KNI shared library.""" - if library_path: - return ctypes.CDLL(str(library_path)) - - # Try to locate library automatically - system = platform.system() - if system == "Windows": - lib_name = "KhiopsNativeInterface.dll" - elif system == "Linux": - lib_name = "libKhiopsNativeInterface.so" - elif system == "Darwin": # macOS - lib_name = "libKhiopsNativeInterface.dylib" - else: - raise RuntimeError(f"Unsupported platform: {system}") - - # Try different search strategies - try: - # First, try loading directly (will use system paths) - return ctypes.CDLL(lib_name) - except OSError: - # Try to find in KNI_HOME environment variable - kni_home = os.environ.get("KNI_HOME") - if kni_home: - lib_path = os.path.join(kni_home, lib_name) - if os.path.exists(lib_path): - return ctypes.CDLL(lib_path) - - raise RuntimeError( - f"Could not find {lib_name}. " - "Please set KNI_HOME environment variable or provide library_path." - ) - - def _setup_functions(self): - """Setup function signatures for KNI library functions.""" - # KNIGetVersion - self._lib.KNIGetVersion.argtypes = [] - self._lib.KNIGetVersion.restype = ctypes.c_int - - # KNIGetFullVersion - self._lib.KNIGetFullVersion.argtypes = [] - self._lib.KNIGetFullVersion.restype = ctypes.c_char_p - - # KNISetLogFileName - self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p] - self._lib.KNISetLogFileName.restype = ctypes.c_int - - # KNIOpenStream - self._lib.KNIOpenStream.argtypes = [ - ctypes.c_char_p, # sDictionaryFileName - ctypes.c_char_p, # sDictionaryName - ctypes.c_char_p, # sStreamHeaderLine - ctypes.c_char, # cFieldSeparator - ] - self._lib.KNIOpenStream.restype = ctypes.c_int - - # KNICloseStream - self._lib.KNICloseStream.argtypes = [ctypes.c_int] - self._lib.KNICloseStream.restype = ctypes.c_int - - # KNIRecodeStreamRecord - self._lib.KNIRecodeStreamRecord.argtypes = [ - ctypes.c_int, # hStream - ctypes.c_char_p, # sInputRecord - ctypes.c_char_p, # sOutputRecord - ctypes.c_int, # nOutputMaxLength - ] - self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int - - # Multi-table functions - # KNISetSecondaryHeaderLine - self._lib.KNISetSecondaryHeaderLine.argtypes = [ - ctypes.c_int, # hStream - ctypes.c_char_p, # sDataPath - ctypes.c_char_p, # sStreamSecondaryHeaderLine - ] - self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int - - # KNISetExternalTable - self._lib.KNISetExternalTable.argtypes = [ - ctypes.c_int, # hStream - ctypes.c_char_p, # sDataRoot - ctypes.c_char_p, # sDataPath - ctypes.c_char_p, # sDataTableFileName - ] - self._lib.KNISetExternalTable.restype = ctypes.c_int - - # KNIFinishOpeningStream - self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int] - self._lib.KNIFinishOpeningStream.restype = ctypes.c_int - - # KNISetSecondaryInputRecord - self._lib.KNISetSecondaryInputRecord.argtypes = [ - ctypes.c_int, # hStream - ctypes.c_char_p, # sDataPath - ctypes.c_char_p, # sStreamSecondaryInputRecord - ] - self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int - - # Advanced parameters - # KNIGetStreamMaxMemory - self._lib.KNIGetStreamMaxMemory.argtypes = [] - self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int - - # KNISetStreamMaxMemory - self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int] - self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int - - def get_version(self): - """Get KNI version as integer (10*major + minor).""" - return self._lib.KNIGetVersion() - - def get_full_version(self): - """Get KNI full version string.""" - return self._lib.KNIGetFullVersion().decode("utf-8") - - def set_log_file_name(self, log_file_name): - """ - Set the log file name for error messages. - - Args: - log_file_name: Path to log file (str or bytes, empty string for no logging) - - Raises: - KNIError: If setting log file fails - TypeError: If log_file_name is not str or bytes - """ - if isinstance(log_file_name, str): - log_file_name_bytes = log_file_name.encode("utf-8") - elif isinstance(log_file_name, bytes): - log_file_name_bytes = log_file_name - else: - raise TypeError( - f"log_file_name must be str or bytes, not {type(log_file_name).__name__}" - ) - ret_code = self._lib.KNISetLogFileName(log_file_name_bytes) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to set log file: {self.get_error_message(ret_code)}", - ret_code, - ) - - def open_stream( - self, dictionary_file_name, dictionary_name, header_line, field_separator="\t" - ): - """ - Open a KNI stream for recoding. - - Args: - dictionary_file_name: Path to the dictionary file (str or bytes) - dictionary_name: Name of the dictionary to use (str or bytes) - header_line: Header line with field names (str or bytes) - field_separator: Character used to separate fields (str or bytes, default: tab) - - Returns: - Stream handle (positive integer) - - Raises: - KNIError: If opening stream fails - TypeError: If arguments have invalid types - """ - # Type checking and conversion - if isinstance(dictionary_file_name, str): - dictionary_file_name_bytes = dictionary_file_name.encode("utf-8") - elif isinstance(dictionary_file_name, bytes): - dictionary_file_name_bytes = dictionary_file_name - else: - raise TypeError( - f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}" - ) - if isinstance(dictionary_name, str): - dictionary_name_bytes = dictionary_name.encode("utf-8") - elif isinstance(dictionary_name, bytes): - dictionary_name_bytes = dictionary_name - else: - raise TypeError( - f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}" - ) - if isinstance(header_line, str): - header_line_bytes = header_line.encode("utf-8") - elif isinstance(header_line, bytes): - header_line_bytes = header_line - else: - raise TypeError( - f"header_line must be str or bytes, not {type(header_line).__name__}" - ) - - # Convert field_separator to a single byte - if isinstance(field_separator, str): - field_separator_byte = field_separator.encode("utf-8")[0] - elif isinstance(field_separator, bytes): - field_separator_byte = field_separator[0] - else: - raise TypeError( - f"field_separator must be str or bytes, not {type(field_separator).__name__}" - ) - - stream_handle = self._lib.KNIOpenStream( - dictionary_file_name_bytes, - dictionary_name_bytes, - header_line_bytes, - field_separator_byte, - ) - if stream_handle < 0: - raise KNIError( - f"Failed to open stream: {self.get_error_message(stream_handle)}", - stream_handle, - ) - return stream_handle - - def close_stream(self, stream_handle): - """ - Close a KNI stream. - - Args: - stream_handle: Handle returned by open_stream - - Raises: - KNIError: If closing stream fails - TypeError: If stream_handle is not int - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - ret_code = self._lib.KNICloseStream(stream_handle) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to close stream: {self.get_error_message(ret_code)}", - ret_code, - ) - - def recode_stream_record(self, stream_handle, input_record, max_output_length=None): - """ - Recode an input record using the stream's dictionary. - - Args: - stream_handle: Handle returned by open_stream - input_record: Input record string or bytes - max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) - - Returns: - Recoded output string - - Raises: - KNIError: If recoding fails - TypeError: If arguments have invalid types - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - if isinstance(input_record, str): - input_record_bytes = input_record.encode("utf-8") - elif isinstance(input_record, bytes): - input_record_bytes = input_record - else: - raise TypeError( - f"input_record must be str or bytes, not {type(input_record).__name__}" - ) - if max_output_length is None: - max_output_length = self.KNI_MaxRecordLength - elif not isinstance(max_output_length, int): - raise TypeError( - f"max_output_length must be int or None, not {type(max_output_length).__name__}" - ) - - output_buffer = ctypes.create_string_buffer(max_output_length) - ret_code = self._lib.KNIRecodeStreamRecord( - stream_handle, - input_record_bytes, - output_buffer, - max_output_length, - ) - - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to recode record: {self.get_error_message(ret_code)}", - ret_code, - ) - return output_buffer.value.decode("utf-8") - - def set_secondary_header_line(self, stream_handle, data_path, header_line): - """ - Set the header line of a secondary table (multi-table only). - - Args: - stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table (str or bytes) - header_line: Header line with field names (str or bytes) - - Raises: - KNIError: If setting secondary header fails - TypeError: If arguments have invalid types - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - if isinstance(data_path, str): - data_path_bytes = data_path.encode("utf-8") - elif isinstance(data_path, bytes): - data_path_bytes = data_path - else: - raise TypeError( - f"data_path must be str or bytes, not {type(data_path).__name__}" - ) - if isinstance(header_line, str): - header_line_bytes = header_line.encode("utf-8") - elif isinstance(header_line, bytes): - header_line_bytes = header_line - else: - raise TypeError( - f"header_line must be str or bytes, not {type(header_line).__name__}" - ) - ret_code = self._lib.KNISetSecondaryHeaderLine( - stream_handle, data_path_bytes, header_line_bytes - ) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to set secondary header line: {self.get_error_message(ret_code)}", - ret_code, - ) - - def set_external_table( - self, stream_handle, data_root, data_path, data_table_file_name - ): - """ - Set the name of a data file for an external table (multi-table only). - - Args: - stream_handle: Handle returned by open_stream - data_root: Root dictionary of the external table (str or bytes) - data_path: Data path for secondary external tables (str or bytes, empty for root) - data_table_file_name: Path to the external table data file (str or bytes) - - Raises: - KNIError: If setting external table fails - TypeError: If arguments have invalid types - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - if isinstance(data_root, str): - data_root_bytes = data_root.encode("utf-8") - elif isinstance(data_root, bytes): - data_root_bytes = data_root - else: - raise TypeError( - f"data_root must be str or bytes, not {type(data_root).__name__}" - ) - if isinstance(data_path, str): - data_path_bytes = data_path.encode("utf-8") - elif isinstance(data_path, bytes): - data_path_bytes = data_path - else: - raise TypeError( - f"data_path must be str or bytes, not {type(data_path).__name__}" - ) - if isinstance(data_table_file_name, str): - data_table_file_name_bytes = data_table_file_name.encode("utf-8") - elif isinstance(data_table_file_name, bytes): - data_table_file_name_bytes = data_table_file_name - else: - raise TypeError( - f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}" - ) - ret_code = self._lib.KNISetExternalTable( - stream_handle, - data_root_bytes, - data_path_bytes, - data_table_file_name_bytes, - ) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to set external table: {self.get_error_message(ret_code)}", - ret_code, - ) - - def finish_opening_stream(self, stream_handle): - """ - Finish opening a stream (multi-table only). - - Must be called after all secondary headers and external tables are set. - - Args: - stream_handle: Handle returned by open_stream - - Raises: - KNIError: If finishing opening stream fails - TypeError: If stream_handle is not int - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - ret_code = self._lib.KNIFinishOpeningStream(stream_handle) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to finish opening stream: {self.get_error_message(ret_code)}", - ret_code, - ) - - def set_secondary_input_record(self, stream_handle, data_path, input_record): - """ - Set a secondary input record for multi-table recoding. - - All secondary records must be set before recoding the primary record. - - Args: - stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table (str or bytes) - input_record: Secondary input record string or bytes - - Raises: - KNIError: If setting secondary input record fails - TypeError: If arguments have invalid types - """ - if not isinstance(stream_handle, int): - raise TypeError( - f"stream_handle must be int, not {type(stream_handle).__name__}" - ) - if isinstance(data_path, str): - data_path_bytes = data_path.encode("utf-8") - elif isinstance(data_path, bytes): - data_path_bytes = data_path - else: - raise TypeError( - f"data_path must be str or bytes, not {type(data_path).__name__}" - ) - if isinstance(input_record, str): - input_record_bytes = input_record.encode("utf-8") - elif isinstance(input_record, bytes): - input_record_bytes = input_record - else: - raise TypeError( - f"input_record must be str or bytes, not {type(input_record).__name__}" - ) - ret_code = self._lib.KNISetSecondaryInputRecord( - stream_handle, data_path_bytes, input_record_bytes - ) - if ret_code != self.KNI_OK: - raise KNIError( - f"Failed to set secondary input record: {self.get_error_message(ret_code)}", - ret_code, - ) - - def get_stream_max_memory(self): - """ - Get the maximum amount of memory (in MB) for stream opening. - - Returns: - Maximum memory in MB - """ - return self._lib.KNIGetStreamMaxMemory() - - def set_stream_max_memory(self, max_mb): - """ - Set the maximum amount of memory (in MB) for stream opening. - - Args: - max_mb: Maximum memory in MB - - Returns: - Accepted value (bounded by system limits) - """ - if not isinstance(max_mb, int): - raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}") - return self._lib.KNISetStreamMaxMemory(max_mb) - - @staticmethod - def get_error_message(error_code): - """ - Get a human-readable error message for an error code. - - Args: - error_code: KNI error code - - Returns: - Error message string - """ - if not isinstance(error_code, int): - raise TypeError(f"error_code must be int, not {type(error_code).__name__}") - error_messages = { - KNI.KNI_OK: "Success", - KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running", - KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name", - KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist", - KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format", - KNI.KNI_ErrorDictionaryName: "Bad dictionary name", - KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file", - KNI.KNI_ErrorTooManyStreams: "Too many streams opened", - KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line", - KNI.KNI_ErrorFieldSeparator: "Bad field separator", - KNI.KNI_ErrorStreamHandle: "Bad stream handle", - KNI.KNI_ErrorStreamOpened: "Stream already opened", - KNI.KNI_ErrorStreamNotOpened: "Stream not opened", - KNI.KNI_ErrorStreamInputRecord: "Bad input record", - KNI.KNI_ErrorStreamInputRead: "Problem reading input record", - KNI.KNI_ErrorStreamOutputRecord: "Output record too long", - KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header", - KNI.KNI_ErrorMissingExternalTable: "Missing external table", - KNI.KNI_ErrorDataRoot: "Bad data root", - KNI.KNI_ErrorDataPath: "Bad data path", - KNI.KNI_ErrorDataTableFile: "Bad data table file", - KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables", - KNI.KNI_ErrorMemoryOverflow: "Memory overflow", - KNI.KNI_ErrorStreamOpening: "Stream could not be opened", - KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished", - KNI.KNI_ErrorLogFile: "Bad error file", - } - return error_messages.get(error_code, f"Unknown error code: {error_code}") diff --git a/python/docs/kni.html b/python/docs/kni.html index 7492c1e..8a1f5ef 100644 --- a/python/docs/kni.html +++ b/python/docs/kni.html @@ -240,190 +240,189 @@

-
 28class KNI:
- 29    """Python wrapper for Khiops Native Interface using ctypes."""
- 30
- 31    # Error codes
- 32    KNI_OK = 0
- 33    KNI_ErrorRunningFunction = -1
- 34    KNI_ErrorDictionaryFileName = -2
- 35    KNI_ErrorDictionaryMissingFile = -3
- 36    KNI_ErrorDictionaryFileFormat = -4
- 37    KNI_ErrorDictionaryName = -5
- 38    KNI_ErrorMissingDictionary = -6
- 39    KNI_ErrorTooManyStreams = -7
- 40    KNI_ErrorStreamHeaderLine = -8
- 41    KNI_ErrorFieldSeparator = -9
- 42    KNI_ErrorStreamHandle = -10
- 43    KNI_ErrorStreamOpened = -11
- 44    KNI_ErrorStreamNotOpened = -12
- 45    KNI_ErrorStreamInputRecord = -13
- 46    KNI_ErrorStreamInputRead = -14
- 47    KNI_ErrorStreamOutputRecord = -15
- 48    KNI_ErrorMissingSecondaryHeader = -16
- 49    KNI_ErrorMissingExternalTable = -17
- 50    KNI_ErrorDataRoot = -18
- 51    KNI_ErrorDataPath = -19
- 52    KNI_ErrorDataTableFile = -20
- 53    KNI_ErrorLoadDataTable = -21
- 54    KNI_ErrorMemoryOverflow = -22
- 55    KNI_ErrorStreamOpening = -23
- 56    KNI_ErrorStreamOpeningNotFinished = -24
- 57    KNI_ErrorLogFile = -25
- 58
- 59    # Constants
- 60    KNI_MaxStreamNumber = 512
- 61    KNI_DefaultMaxStreamMemory = 100
- 62    KNI_MaxPathNameLength = 1024
- 63    KNI_MaxDictionaryNameLength = 128
- 64    KNI_MaxRecordLength = 8 * 1024 * 1024  # 8 MB
- 65
- 66    def __init__(self, library_path=None):
- 67        """
- 68        Initialize the KNI wrapper.
- 69
- 70        Args:
- 71            library_path: Optional path to the KNI shared library.
- 72                         If None, attempts to locate it automatically.
- 73        """
- 74        self._lib = self._load_library(library_path)
- 75        self._setup_functions()
- 76
- 77    def _load_library(self, library_path):
- 78        """Load the KNI shared library."""
- 79        if library_path:
- 80            return ctypes.CDLL(str(library_path))
- 81
- 82        # Try to locate library automatically
- 83        system = platform.system()
- 84        if system == "Windows":
- 85            lib_name = "KhiopsNativeInterface.dll"
- 86        elif system == "Linux":
- 87            lib_name = "libKhiopsNativeInterface.so"
- 88        elif system == "Darwin":  # macOS
- 89            lib_name = "libKhiopsNativeInterface.dylib"
- 90        else:
- 91            raise RuntimeError(f"Unsupported platform: {system}")
- 92
- 93        # Try different search strategies
- 94        try:
- 95            # First, try loading directly (will use system paths)
- 96            return ctypes.CDLL(lib_name)
- 97        except OSError:
- 98            # Try to find in KNI_HOME environment variable
- 99            kni_home = os.environ.get("KNI_HOME")
-100            if kni_home:
-101                lib_path = os.path.join(kni_home, lib_name)
-102                if os.path.exists(lib_path):
-103                    return ctypes.CDLL(lib_path)
-104
-105            raise RuntimeError(
-106                f"Could not find {lib_name}. "
-107                "Please set KNI_HOME environment variable or provide library_path."
-108            )
-109
-110    def _setup_functions(self):
-111        """Setup function signatures for KNI library functions."""
-112        # KNIGetVersion
-113        self._lib.KNIGetVersion.argtypes = []
-114        self._lib.KNIGetVersion.restype = ctypes.c_int
+            
 29class KNI:
+ 30    """Python wrapper for Khiops Native Interface using ctypes."""
+ 31
+ 32    # Error codes
+ 33    KNI_OK = 0
+ 34    KNI_ErrorRunningFunction = -1
+ 35    KNI_ErrorDictionaryFileName = -2
+ 36    KNI_ErrorDictionaryMissingFile = -3
+ 37    KNI_ErrorDictionaryFileFormat = -4
+ 38    KNI_ErrorDictionaryName = -5
+ 39    KNI_ErrorMissingDictionary = -6
+ 40    KNI_ErrorTooManyStreams = -7
+ 41    KNI_ErrorStreamHeaderLine = -8
+ 42    KNI_ErrorFieldSeparator = -9
+ 43    KNI_ErrorStreamHandle = -10
+ 44    KNI_ErrorStreamOpened = -11
+ 45    KNI_ErrorStreamNotOpened = -12
+ 46    KNI_ErrorStreamInputRecord = -13
+ 47    KNI_ErrorStreamInputRead = -14
+ 48    KNI_ErrorStreamOutputRecord = -15
+ 49    KNI_ErrorMissingSecondaryHeader = -16
+ 50    KNI_ErrorMissingExternalTable = -17
+ 51    KNI_ErrorDataRoot = -18
+ 52    KNI_ErrorDataPath = -19
+ 53    KNI_ErrorDataTableFile = -20
+ 54    KNI_ErrorLoadDataTable = -21
+ 55    KNI_ErrorMemoryOverflow = -22
+ 56    KNI_ErrorStreamOpening = -23
+ 57    KNI_ErrorStreamOpeningNotFinished = -24
+ 58    KNI_ErrorLogFile = -25
+ 59
+ 60    # Constants
+ 61    KNI_MaxStreamNumber = 512
+ 62    KNI_DefaultMaxStreamMemory = 100
+ 63    KNI_MaxPathNameLength = 1024
+ 64    KNI_MaxDictionaryNameLength = 128
+ 65    KNI_MaxRecordLength = 8 * 1024 * 1024  # 8 MB
+ 66
+ 67    def __init__(self, library_path: str | bytes | Path | None = None):
+ 68        """
+ 69        Initialize the KNI wrapper.
+ 70
+ 71        Args:
+ 72            library_path: Optional path to the KNI shared library (str, bytes, or
+ 73                         pathlib.Path). If None, attempts to locate it automatically.
+ 74        """
+ 75        self._lib = self._load_library(library_path)
+ 76        self._setup_function_signatures()
+ 77
+ 78    def _load_library(self, library_path: str | bytes | Path | None):
+ 79        """Load the KNI shared library."""
+ 80        if library_path:
+ 81            return ctypes.CDLL(os.fsdecode(library_path))
+ 82
+ 83        # Try to locate library automatically
+ 84        system = platform.system()
+ 85        if system == "Windows":
+ 86            lib_name = "KhiopsNativeInterface.dll"
+ 87        elif system == "Linux":
+ 88            lib_name = "libKhiopsNativeInterface.so"
+ 89        elif system == "Darwin":  # macOS
+ 90            lib_name = "libKhiopsNativeInterface.dylib"
+ 91        else:
+ 92            raise RuntimeError(f"Unsupported platform: {system}")
+ 93
+ 94        # When installed via pip, the shared library is placed in the Python
+ 95        # scripts directory (bin/ on Unix, Scripts/ on Windows)
+ 96        scripts_dir = sysconfig.get_path("scripts")
+ 97        if scripts_dir:
+ 98            lib_path = Path(scripts_dir) / lib_name
+ 99            if lib_path.exists():
+100                return ctypes.CDLL(str(lib_path))
+101
+102        raise RuntimeError(
+103            f"Could not find {lib_name}. Reinstall the khiops-kni package."
+104        )
+105
+106    def _setup_function_signatures(self):
+107        """Setup function signatures for KNI library functions."""
+108        # KNIGetVersion
+109        self._lib.KNIGetVersion.argtypes = []
+110        self._lib.KNIGetVersion.restype = ctypes.c_int
+111
+112        # KNIGetFullVersion
+113        self._lib.KNIGetFullVersion.argtypes = []
+114        self._lib.KNIGetFullVersion.restype = ctypes.c_char_p
 115
-116        # KNIGetFullVersion
-117        self._lib.KNIGetFullVersion.argtypes = []
-118        self._lib.KNIGetFullVersion.restype = ctypes.c_char_p
+116        # KNISetLogFileName
+117        self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p]
+118        self._lib.KNISetLogFileName.restype = ctypes.c_int
 119
-120        # KNISetLogFileName
-121        self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p]
-122        self._lib.KNISetLogFileName.restype = ctypes.c_int
-123
-124        # KNIOpenStream
-125        self._lib.KNIOpenStream.argtypes = [
-126            ctypes.c_char_p,  # sDictionaryFileName
-127            ctypes.c_char_p,  # sDictionaryName
-128            ctypes.c_char_p,  # sStreamHeaderLine
-129            ctypes.c_char,  # cFieldSeparator
-130        ]
-131        self._lib.KNIOpenStream.restype = ctypes.c_int
+120        # KNIOpenStream
+121        self._lib.KNIOpenStream.argtypes = [
+122            ctypes.c_char_p,  # sDictionaryFileName
+123            ctypes.c_char_p,  # sDictionaryName
+124            ctypes.c_char_p,  # sStreamHeaderLine
+125            ctypes.c_char,  # cFieldSeparator
+126        ]
+127        self._lib.KNIOpenStream.restype = ctypes.c_int
+128
+129        # KNICloseStream
+130        self._lib.KNICloseStream.argtypes = [ctypes.c_int]
+131        self._lib.KNICloseStream.restype = ctypes.c_int
 132
-133        # KNICloseStream
-134        self._lib.KNICloseStream.argtypes = [ctypes.c_int]
-135        self._lib.KNICloseStream.restype = ctypes.c_int
-136
-137        # KNIRecodeStreamRecord
-138        self._lib.KNIRecodeStreamRecord.argtypes = [
-139            ctypes.c_int,  # hStream
-140            ctypes.c_char_p,  # sInputRecord
-141            ctypes.c_char_p,  # sOutputRecord
-142            ctypes.c_int,  # nOutputMaxLength
-143        ]
-144        self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int
-145
-146        # Multi-table functions
-147        # KNISetSecondaryHeaderLine
-148        self._lib.KNISetSecondaryHeaderLine.argtypes = [
-149            ctypes.c_int,  # hStream
-150            ctypes.c_char_p,  # sDataPath
-151            ctypes.c_char_p,  # sStreamSecondaryHeaderLine
-152        ]
-153        self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int
-154
-155        # KNISetExternalTable
-156        self._lib.KNISetExternalTable.argtypes = [
-157            ctypes.c_int,  # hStream
-158            ctypes.c_char_p,  # sDataRoot
-159            ctypes.c_char_p,  # sDataPath
-160            ctypes.c_char_p,  # sDataTableFileName
-161        ]
-162        self._lib.KNISetExternalTable.restype = ctypes.c_int
+133        # KNIRecodeStreamRecord
+134        self._lib.KNIRecodeStreamRecord.argtypes = [
+135            ctypes.c_int,  # hStream
+136            ctypes.c_char_p,  # sInputRecord
+137            ctypes.c_char_p,  # sOutputRecord
+138            ctypes.c_int,  # nOutputMaxLength
+139        ]
+140        self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int
+141
+142        # Multi-table functions
+143        # KNISetSecondaryHeaderLine
+144        self._lib.KNISetSecondaryHeaderLine.argtypes = [
+145            ctypes.c_int,  # hStream
+146            ctypes.c_char_p,  # sDataPath
+147            ctypes.c_char_p,  # sStreamSecondaryHeaderLine
+148        ]
+149        self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int
+150
+151        # KNISetExternalTable
+152        self._lib.KNISetExternalTable.argtypes = [
+153            ctypes.c_int,  # hStream
+154            ctypes.c_char_p,  # sDataRoot
+155            ctypes.c_char_p,  # sDataPath
+156            ctypes.c_char_p,  # sDataTableFileName
+157        ]
+158        self._lib.KNISetExternalTable.restype = ctypes.c_int
+159
+160        # KNIFinishOpeningStream
+161        self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int]
+162        self._lib.KNIFinishOpeningStream.restype = ctypes.c_int
 163
-164        # KNIFinishOpeningStream
-165        self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int]
-166        self._lib.KNIFinishOpeningStream.restype = ctypes.c_int
-167
-168        # KNISetSecondaryInputRecord
-169        self._lib.KNISetSecondaryInputRecord.argtypes = [
-170            ctypes.c_int,  # hStream
-171            ctypes.c_char_p,  # sDataPath
-172            ctypes.c_char_p,  # sStreamSecondaryInputRecord
-173        ]
-174        self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int
-175
-176        # Advanced parameters
-177        # KNIGetStreamMaxMemory
-178        self._lib.KNIGetStreamMaxMemory.argtypes = []
-179        self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int
+164        # KNISetSecondaryInputRecord
+165        self._lib.KNISetSecondaryInputRecord.argtypes = [
+166            ctypes.c_int,  # hStream
+167            ctypes.c_char_p,  # sDataPath
+168            ctypes.c_char_p,  # sStreamSecondaryInputRecord
+169        ]
+170        self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int
+171
+172        # Advanced parameters
+173        # KNIGetStreamMaxMemory
+174        self._lib.KNIGetStreamMaxMemory.argtypes = []
+175        self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int
+176
+177        # KNISetStreamMaxMemory
+178        self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int]
+179        self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int
 180
-181        # KNISetStreamMaxMemory
-182        self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int]
-183        self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int
-184
-185    def get_version(self):
-186        """Get KNI version as integer (10*major + minor)."""
-187        return self._lib.KNIGetVersion()
-188
-189    def get_full_version(self):
-190        """Get KNI full version string."""
-191        return self._lib.KNIGetFullVersion().decode("utf-8")
-192
-193    def set_log_file_name(self, log_file_name):
-194        """
-195        Set the log file name for error messages.
-196
-197        Args:
-198            log_file_name: Path to log file (str or bytes, empty string for no logging)
+181    @staticmethod
+182    def _to_bytes(value: str | bytes, param_name: str) -> bytes:
+183        """Encode a str or bytes parameter to UTF-8 bytes."""
+184        if isinstance(value, str):
+185            return value.encode("utf-8")
+186        if isinstance(value, bytes):
+187            return value
+188        raise TypeError(
+189            f"{param_name} must be str or bytes, not {type(value).__name__}"
+190        )
+191
+192    def get_version(self) -> int:
+193        """Get KNI version as integer (10*major + minor)."""
+194        return self._lib.KNIGetVersion()
+195
+196    def get_full_version(self) -> str:
+197        """Get KNI full version string."""
+198        return self._lib.KNIGetFullVersion().decode("utf-8")
 199
-200        Raises:
-201            KNIError: If setting log file fails
-202            TypeError: If log_file_name is not str or bytes
-203        """
-204        if isinstance(log_file_name, str):
-205            log_file_name_bytes = log_file_name.encode("utf-8")
-206        elif isinstance(log_file_name, bytes):
-207            log_file_name_bytes = log_file_name
-208        else:
-209            raise TypeError(
-210                f"log_file_name must be str or bytes, not {type(log_file_name).__name__}"
-211            )
+200    def set_log_file_name(self, log_file_name: str | bytes) -> None:
+201        """
+202        Set the log file name for error messages.
+203
+204        Args:
+205            log_file_name: Path to log file (str or bytes, empty string for no logging)
+206
+207        Raises:
+208            KNIError: If setting log file fails
+209            TypeError: If log_file_name is not str or bytes
+210        """
+211        log_file_name_bytes = self._to_bytes(log_file_name, "log_file_name")
 212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
 213        if ret_code != self.KNI_OK:
 214            raise KNIError(
@@ -432,376 +431,316 @@ 

217 ) 218 219 def open_stream( -220 self, dictionary_file_name, dictionary_name, header_line, field_separator="\t" -221 ): -222 """ -223 Open a KNI stream for recoding. -224 -225 Args: -226 dictionary_file_name: Path to the dictionary file (str or bytes) -227 dictionary_name: Name of the dictionary to use (str or bytes) -228 header_line: Header line with field names (str or bytes) -229 field_separator: Character used to separate fields (str or bytes, default: tab) -230 -231 Returns: -232 Stream handle (positive integer) -233 -234 Raises: -235 KNIError: If opening stream fails -236 TypeError: If arguments have invalid types -237 """ -238 # Type checking and conversion -239 if isinstance(dictionary_file_name, str): -240 dictionary_file_name_bytes = dictionary_file_name.encode("utf-8") -241 elif isinstance(dictionary_file_name, bytes): -242 dictionary_file_name_bytes = dictionary_file_name -243 else: -244 raise TypeError( -245 f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}" -246 ) -247 if isinstance(dictionary_name, str): -248 dictionary_name_bytes = dictionary_name.encode("utf-8") -249 elif isinstance(dictionary_name, bytes): -250 dictionary_name_bytes = dictionary_name -251 else: -252 raise TypeError( -253 f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}" -254 ) -255 if isinstance(header_line, str): -256 header_line_bytes = header_line.encode("utf-8") -257 elif isinstance(header_line, bytes): -258 header_line_bytes = header_line -259 else: -260 raise TypeError( -261 f"header_line must be str or bytes, not {type(header_line).__name__}" -262 ) -263 -264 # Convert field_separator to a single byte -265 if isinstance(field_separator, str): -266 field_separator_byte = field_separator.encode("utf-8")[0] -267 elif isinstance(field_separator, bytes): -268 field_separator_byte = field_separator[0] -269 else: -270 raise TypeError( -271 f"field_separator must be str or bytes, not {type(field_separator).__name__}" -272 ) -273 -274 stream_handle = self._lib.KNIOpenStream( -275 dictionary_file_name_bytes, -276 dictionary_name_bytes, -277 header_line_bytes, -278 field_separator_byte, -279 ) -280 if stream_handle < 0: -281 raise KNIError( -282 f"Failed to open stream: {self.get_error_message(stream_handle)}", -283 stream_handle, -284 ) -285 return stream_handle -286 -287 def close_stream(self, stream_handle): -288 """ -289 Close a KNI stream. -290 -291 Args: -292 stream_handle: Handle returned by open_stream -293 -294 Raises: -295 KNIError: If closing stream fails -296 TypeError: If stream_handle is not int -297 """ -298 if not isinstance(stream_handle, int): -299 raise TypeError( -300 f"stream_handle must be int, not {type(stream_handle).__name__}" -301 ) -302 ret_code = self._lib.KNICloseStream(stream_handle) -303 if ret_code != self.KNI_OK: -304 raise KNIError( -305 f"Failed to close stream: {self.get_error_message(ret_code)}", -306 ret_code, -307 ) -308 -309 def recode_stream_record(self, stream_handle, input_record, max_output_length=None): -310 """ -311 Recode an input record using the stream's dictionary. -312 -313 Args: -314 stream_handle: Handle returned by open_stream -315 input_record: Input record string or bytes -316 max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) -317 -318 Returns: -319 Recoded output string -320 -321 Raises: -322 KNIError: If recoding fails -323 TypeError: If arguments have invalid types -324 """ -325 if not isinstance(stream_handle, int): -326 raise TypeError( -327 f"stream_handle must be int, not {type(stream_handle).__name__}" -328 ) -329 if isinstance(input_record, str): -330 input_record_bytes = input_record.encode("utf-8") -331 elif isinstance(input_record, bytes): -332 input_record_bytes = input_record -333 else: -334 raise TypeError( -335 f"input_record must be str or bytes, not {type(input_record).__name__}" -336 ) -337 if max_output_length is None: -338 max_output_length = self.KNI_MaxRecordLength -339 elif not isinstance(max_output_length, int): -340 raise TypeError( -341 f"max_output_length must be int or None, not {type(max_output_length).__name__}" -342 ) +220 self, +221 dictionary_file_path: str | bytes | Path, +222 dictionary_name: str | bytes, +223 header_line: str | bytes, +224 field_separator: str | bytes = "\t", +225 ) -> int: +226 """ +227 Open a KNI stream for recoding. +228 +229 Args: +230 dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path) +231 dictionary_name: Name of the dictionary to use (str or bytes) +232 header_line: Header line with field names (str or bytes) +233 field_separator: Character used to separate fields (str or bytes, default: tab) +234 +235 Returns: +236 Stream handle (positive integer) +237 +238 Raises: +239 KNIError: If opening stream fails +240 TypeError: If arguments have invalid types +241 """ +242 # Type checking and conversion +243 if isinstance(dictionary_file_path, Path): +244 dictionary_file_path = str(dictionary_file_path) +245 dictionary_file_path_bytes = self._to_bytes( +246 dictionary_file_path, "dictionary_file_path" +247 ) +248 dictionary_name_bytes = self._to_bytes(dictionary_name, "dictionary_name") +249 header_line_bytes = self._to_bytes(header_line, "header_line") +250 field_separator_bytes = self._to_bytes(field_separator, "field_separator") +251 if len(field_separator_bytes) == 0: +252 raise ValueError("field_separator must not be empty") +253 field_separator_byte = field_separator_bytes[0] +254 +255 stream_handle = self._lib.KNIOpenStream( +256 dictionary_file_path_bytes, +257 dictionary_name_bytes, +258 header_line_bytes, +259 field_separator_byte, +260 ) +261 if stream_handle < 0: +262 raise KNIError( +263 f"Failed to open stream: {self.get_error_message(stream_handle)}", +264 stream_handle, +265 ) +266 return stream_handle +267 +268 def close_stream(self, stream_handle: int) -> None: +269 """ +270 Close a KNI stream. +271 +272 Args: +273 stream_handle: Handle returned by open_stream +274 +275 Raises: +276 KNIError: If closing stream fails +277 TypeError: If stream_handle is not int +278 """ +279 if not isinstance(stream_handle, int): +280 raise TypeError( +281 f"stream_handle must be int, not {type(stream_handle).__name__}" +282 ) +283 ret_code = self._lib.KNICloseStream(stream_handle) +284 if ret_code != self.KNI_OK: +285 raise KNIError( +286 f"Failed to close stream: {self.get_error_message(ret_code)}", +287 ret_code, +288 ) +289 +290 def recode_stream_record( +291 self, +292 stream_handle: int, +293 input_record: str | bytes, +294 max_output_length: int | None = None, +295 ) -> str: +296 """ +297 Recode an input record using the stream's dictionary. +298 +299 Args: +300 stream_handle: Handle returned by open_stream +301 input_record: Input record string or bytes +302 max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength) +303 +304 Returns: +305 Recoded output string +306 +307 Raises: +308 KNIError: If recoding fails +309 TypeError: If arguments have invalid types +310 """ +311 if not isinstance(stream_handle, int): +312 raise TypeError( +313 f"stream_handle must be int, not {type(stream_handle).__name__}" +314 ) +315 input_record_bytes = self._to_bytes(input_record, "input_record") +316 if max_output_length is None: +317 max_output_length = self.KNI_MaxRecordLength +318 elif not isinstance(max_output_length, int): +319 raise TypeError( +320 f"max_output_length must be int or None, not {type(max_output_length).__name__}" +321 ) +322 +323 output_buffer = ctypes.create_string_buffer(max_output_length) +324 ret_code = self._lib.KNIRecodeStreamRecord( +325 stream_handle, +326 input_record_bytes, +327 output_buffer, +328 max_output_length, +329 ) +330 +331 if ret_code != self.KNI_OK: +332 raise KNIError( +333 f"Failed to recode record: {self.get_error_message(ret_code)}", +334 ret_code, +335 ) +336 return output_buffer.value.decode("utf-8") +337 +338 def set_secondary_header_line( +339 self, stream_handle: int, data_path: str | bytes, header_line: str | bytes +340 ) -> None: +341 """ +342 Set the header line of a secondary table (multi-table only). 343 -344 output_buffer = ctypes.create_string_buffer(max_output_length) -345 ret_code = self._lib.KNIRecodeStreamRecord( -346 stream_handle, -347 input_record_bytes, -348 output_buffer, -349 max_output_length, -350 ) -351 -352 if ret_code != self.KNI_OK: -353 raise KNIError( -354 f"Failed to recode record: {self.get_error_message(ret_code)}", -355 ret_code, +344 Args: +345 stream_handle: Handle returned by open_stream +346 data_path: Data path identifying the secondary table (str or bytes) +347 header_line: Header line with field names (str or bytes) +348 +349 Raises: +350 KNIError: If setting secondary header fails +351 TypeError: If arguments have invalid types +352 """ +353 if not isinstance(stream_handle, int): +354 raise TypeError( +355 f"stream_handle must be int, not {type(stream_handle).__name__}" 356 ) -357 return output_buffer.value.decode("utf-8") -358 -359 def set_secondary_header_line(self, stream_handle, data_path, header_line): -360 """ -361 Set the header line of a secondary table (multi-table only). -362 -363 Args: -364 stream_handle: Handle returned by open_stream -365 data_path: Data path identifying the secondary table (str or bytes) -366 header_line: Header line with field names (str or bytes) +357 data_path_bytes = self._to_bytes(data_path, "data_path") +358 header_line_bytes = self._to_bytes(header_line, "header_line") +359 ret_code = self._lib.KNISetSecondaryHeaderLine( +360 stream_handle, data_path_bytes, header_line_bytes +361 ) +362 if ret_code != self.KNI_OK: +363 raise KNIError( +364 f"Failed to set secondary header line: {self.get_error_message(ret_code)}", +365 ret_code, +366 ) 367 -368 Raises: -369 KNIError: If setting secondary header fails -370 TypeError: If arguments have invalid types -371 """ -372 if not isinstance(stream_handle, int): -373 raise TypeError( -374 f"stream_handle must be int, not {type(stream_handle).__name__}" -375 ) -376 if isinstance(data_path, str): -377 data_path_bytes = data_path.encode("utf-8") -378 elif isinstance(data_path, bytes): -379 data_path_bytes = data_path -380 else: -381 raise TypeError( -382 f"data_path must be str or bytes, not {type(data_path).__name__}" -383 ) -384 if isinstance(header_line, str): -385 header_line_bytes = header_line.encode("utf-8") -386 elif isinstance(header_line, bytes): -387 header_line_bytes = header_line -388 else: +368 def set_external_table( +369 self, +370 stream_handle: int, +371 data_root: str | bytes, +372 data_path: str | bytes, +373 data_table_file_name: str | bytes, +374 ) -> None: +375 """ +376 Set the name of a data file for an external table (multi-table only). +377 +378 Args: +379 stream_handle: Handle returned by open_stream +380 data_root: Root dictionary of the external table (str or bytes) +381 data_path: Data path for secondary external tables (str or bytes, empty for root) +382 data_table_file_name: Path to the external table data file (str or bytes) +383 +384 Raises: +385 KNIError: If setting external table fails +386 TypeError: If arguments have invalid types +387 """ +388 if not isinstance(stream_handle, int): 389 raise TypeError( -390 f"header_line must be str or bytes, not {type(header_line).__name__}" +390 f"stream_handle must be int, not {type(stream_handle).__name__}" 391 ) -392 ret_code = self._lib.KNISetSecondaryHeaderLine( -393 stream_handle, data_path_bytes, header_line_bytes -394 ) -395 if ret_code != self.KNI_OK: -396 raise KNIError( -397 f"Failed to set secondary header line: {self.get_error_message(ret_code)}", -398 ret_code, -399 ) -400 -401 def set_external_table( -402 self, stream_handle, data_root, data_path, data_table_file_name -403 ): -404 """ -405 Set the name of a data file for an external table (multi-table only). -406 -407 Args: -408 stream_handle: Handle returned by open_stream -409 data_root: Root dictionary of the external table (str or bytes) -410 data_path: Data path for secondary external tables (str or bytes, empty for root) -411 data_table_file_name: Path to the external table data file (str or bytes) +392 data_root_bytes = self._to_bytes(data_root, "data_root") +393 data_path_bytes = self._to_bytes(data_path, "data_path") +394 data_table_file_name_bytes = self._to_bytes( +395 data_table_file_name, "data_table_file_name" +396 ) +397 ret_code = self._lib.KNISetExternalTable( +398 stream_handle, +399 data_root_bytes, +400 data_path_bytes, +401 data_table_file_name_bytes, +402 ) +403 if ret_code != self.KNI_OK: +404 raise KNIError( +405 f"Failed to set external table: {self.get_error_message(ret_code)}", +406 ret_code, +407 ) +408 +409 def finish_opening_stream(self, stream_handle: int) -> None: +410 """ +411 Finish opening a stream (multi-table only). 412 -413 Raises: -414 KNIError: If setting external table fails -415 TypeError: If arguments have invalid types -416 """ -417 if not isinstance(stream_handle, int): -418 raise TypeError( -419 f"stream_handle must be int, not {type(stream_handle).__name__}" -420 ) -421 if isinstance(data_root, str): -422 data_root_bytes = data_root.encode("utf-8") -423 elif isinstance(data_root, bytes): -424 data_root_bytes = data_root -425 else: -426 raise TypeError( -427 f"data_root must be str or bytes, not {type(data_root).__name__}" -428 ) -429 if isinstance(data_path, str): -430 data_path_bytes = data_path.encode("utf-8") -431 elif isinstance(data_path, bytes): -432 data_path_bytes = data_path -433 else: -434 raise TypeError( -435 f"data_path must be str or bytes, not {type(data_path).__name__}" -436 ) -437 if isinstance(data_table_file_name, str): -438 data_table_file_name_bytes = data_table_file_name.encode("utf-8") -439 elif isinstance(data_table_file_name, bytes): -440 data_table_file_name_bytes = data_table_file_name -441 else: -442 raise TypeError( -443 f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}" -444 ) -445 ret_code = self._lib.KNISetExternalTable( -446 stream_handle, -447 data_root_bytes, -448 data_path_bytes, -449 data_table_file_name_bytes, -450 ) -451 if ret_code != self.KNI_OK: -452 raise KNIError( -453 f"Failed to set external table: {self.get_error_message(ret_code)}", -454 ret_code, -455 ) -456 -457 def finish_opening_stream(self, stream_handle): -458 """ -459 Finish opening a stream (multi-table only). -460 -461 Must be called after all secondary headers and external tables are set. -462 -463 Args: -464 stream_handle: Handle returned by open_stream -465 -466 Raises: -467 KNIError: If finishing opening stream fails -468 TypeError: If stream_handle is not int -469 """ -470 if not isinstance(stream_handle, int): -471 raise TypeError( -472 f"stream_handle must be int, not {type(stream_handle).__name__}" -473 ) -474 ret_code = self._lib.KNIFinishOpeningStream(stream_handle) -475 if ret_code != self.KNI_OK: -476 raise KNIError( -477 f"Failed to finish opening stream: {self.get_error_message(ret_code)}", -478 ret_code, -479 ) +413 Must be called after all secondary headers and external tables are set. +414 +415 Args: +416 stream_handle: Handle returned by open_stream +417 +418 Raises: +419 KNIError: If finishing opening stream fails +420 TypeError: If stream_handle is not int +421 """ +422 if not isinstance(stream_handle, int): +423 raise TypeError( +424 f"stream_handle must be int, not {type(stream_handle).__name__}" +425 ) +426 ret_code = self._lib.KNIFinishOpeningStream(stream_handle) +427 if ret_code != self.KNI_OK: +428 raise KNIError( +429 f"Failed to finish opening stream: {self.get_error_message(ret_code)}", +430 ret_code, +431 ) +432 +433 def set_secondary_input_record( +434 self, stream_handle: int, data_path: str | bytes, input_record: str | bytes +435 ) -> None: +436 """ +437 Set a secondary input record for multi-table recoding. +438 +439 All secondary records must be set before recoding the primary record. +440 +441 Args: +442 stream_handle: Handle returned by open_stream +443 data_path: Data path identifying the secondary table (str or bytes) +444 input_record: Secondary input record string or bytes +445 +446 Raises: +447 KNIError: If setting secondary input record fails +448 TypeError: If arguments have invalid types +449 """ +450 if not isinstance(stream_handle, int): +451 raise TypeError( +452 f"stream_handle must be int, not {type(stream_handle).__name__}" +453 ) +454 data_path_bytes = self._to_bytes(data_path, "data_path") +455 input_record_bytes = self._to_bytes(input_record, "input_record") +456 ret_code = self._lib.KNISetSecondaryInputRecord( +457 stream_handle, data_path_bytes, input_record_bytes +458 ) +459 if ret_code != self.KNI_OK: +460 raise KNIError( +461 f"Failed to set secondary input record: {self.get_error_message(ret_code)}", +462 ret_code, +463 ) +464 +465 def get_stream_max_memory(self) -> int: +466 """ +467 Get the maximum amount of memory (in MB) for stream opening. +468 +469 Returns: +470 Maximum memory in MB +471 """ +472 return self._lib.KNIGetStreamMaxMemory() +473 +474 def set_stream_max_memory(self, max_mb: int) -> int: +475 """ +476 Set the maximum amount of memory (in MB) for stream opening. +477 +478 Args: +479 max_mb: Maximum memory in MB 480 -481 def set_secondary_input_record(self, stream_handle, data_path, input_record): -482 """ -483 Set a secondary input record for multi-table recoding. -484 -485 All secondary records must be set before recoding the primary record. -486 -487 Args: -488 stream_handle: Handle returned by open_stream -489 data_path: Data path identifying the secondary table (str or bytes) -490 input_record: Secondary input record string or bytes -491 -492 Raises: -493 KNIError: If setting secondary input record fails -494 TypeError: If arguments have invalid types -495 """ -496 if not isinstance(stream_handle, int): -497 raise TypeError( -498 f"stream_handle must be int, not {type(stream_handle).__name__}" -499 ) -500 if isinstance(data_path, str): -501 data_path_bytes = data_path.encode("utf-8") -502 elif isinstance(data_path, bytes): -503 data_path_bytes = data_path -504 else: -505 raise TypeError( -506 f"data_path must be str or bytes, not {type(data_path).__name__}" -507 ) -508 if isinstance(input_record, str): -509 input_record_bytes = input_record.encode("utf-8") -510 elif isinstance(input_record, bytes): -511 input_record_bytes = input_record -512 else: -513 raise TypeError( -514 f"input_record must be str or bytes, not {type(input_record).__name__}" -515 ) -516 ret_code = self._lib.KNISetSecondaryInputRecord( -517 stream_handle, data_path_bytes, input_record_bytes -518 ) -519 if ret_code != self.KNI_OK: -520 raise KNIError( -521 f"Failed to set secondary input record: {self.get_error_message(ret_code)}", -522 ret_code, -523 ) -524 -525 def get_stream_max_memory(self): -526 """ -527 Get the maximum amount of memory (in MB) for stream opening. -528 -529 Returns: -530 Maximum memory in MB -531 """ -532 return self._lib.KNIGetStreamMaxMemory() -533 -534 def set_stream_max_memory(self, max_mb): -535 """ -536 Set the maximum amount of memory (in MB) for stream opening. -537 -538 Args: -539 max_mb: Maximum memory in MB -540 -541 Returns: -542 Accepted value (bounded by system limits) -543 """ -544 if not isinstance(max_mb, int): -545 raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}") -546 return self._lib.KNISetStreamMaxMemory(max_mb) -547 -548 @staticmethod -549 def get_error_message(error_code): -550 """ -551 Get a human-readable error message for an error code. -552 -553 Args: -554 error_code: KNI error code -555 -556 Returns: -557 Error message string -558 """ -559 if not isinstance(error_code, int): -560 raise TypeError(f"error_code must be int, not {type(error_code).__name__}") -561 error_messages = { -562 KNI.KNI_OK: "Success", -563 KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running", -564 KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name", -565 KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist", -566 KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format", -567 KNI.KNI_ErrorDictionaryName: "Bad dictionary name", -568 KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file", -569 KNI.KNI_ErrorTooManyStreams: "Too many streams opened", -570 KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line", -571 KNI.KNI_ErrorFieldSeparator: "Bad field separator", -572 KNI.KNI_ErrorStreamHandle: "Bad stream handle", -573 KNI.KNI_ErrorStreamOpened: "Stream already opened", -574 KNI.KNI_ErrorStreamNotOpened: "Stream not opened", -575 KNI.KNI_ErrorStreamInputRecord: "Bad input record", -576 KNI.KNI_ErrorStreamInputRead: "Problem reading input record", -577 KNI.KNI_ErrorStreamOutputRecord: "Output record too long", -578 KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header", -579 KNI.KNI_ErrorMissingExternalTable: "Missing external table", -580 KNI.KNI_ErrorDataRoot: "Bad data root", -581 KNI.KNI_ErrorDataPath: "Bad data path", -582 KNI.KNI_ErrorDataTableFile: "Bad data table file", -583 KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables", -584 KNI.KNI_ErrorMemoryOverflow: "Memory overflow", -585 KNI.KNI_ErrorStreamOpening: "Stream could not be opened", -586 KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished", -587 KNI.KNI_ErrorLogFile: "Bad error file", -588 } -589 return error_messages.get(error_code, f"Unknown error code: {error_code}") +481 Returns: +482 Accepted value (bounded by system limits) +483 """ +484 if not isinstance(max_mb, int): +485 raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}") +486 return self._lib.KNISetStreamMaxMemory(max_mb) +487 +488 @staticmethod +489 def get_error_message(error_code: int) -> str: +490 """ +491 Get a human-readable error message for an error code. +492 +493 Args: +494 error_code: KNI error code +495 +496 Returns: +497 Error message string +498 """ +499 if not isinstance(error_code, int): +500 raise TypeError(f"error_code must be int, not {type(error_code).__name__}") +501 error_messages = { +502 KNI.KNI_OK: "Success", +503 KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running", +504 KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name", +505 KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist", +506 KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format", +507 KNI.KNI_ErrorDictionaryName: "Bad dictionary name", +508 KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file", +509 KNI.KNI_ErrorTooManyStreams: "Too many streams opened", +510 KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line", +511 KNI.KNI_ErrorFieldSeparator: "Bad field separator", +512 KNI.KNI_ErrorStreamHandle: "Bad stream handle", +513 KNI.KNI_ErrorStreamOpened: "Stream already opened", +514 KNI.KNI_ErrorStreamNotOpened: "Stream not opened", +515 KNI.KNI_ErrorStreamInputRecord: "Bad input record", +516 KNI.KNI_ErrorStreamInputRead: "Problem reading input record", +517 KNI.KNI_ErrorStreamOutputRecord: "Output record too long", +518 KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header", +519 KNI.KNI_ErrorMissingExternalTable: "Missing external table", +520 KNI.KNI_ErrorDataRoot: "Bad data root", +521 KNI.KNI_ErrorDataPath: "Bad data path", +522 KNI.KNI_ErrorDataTableFile: "Bad data table file", +523 KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables", +524 KNI.KNI_ErrorMemoryOverflow: "Memory overflow", +525 KNI.KNI_ErrorStreamOpening: "Stream could not be opened", +526 KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished", +527 KNI.KNI_ErrorLogFile: "Bad error file", +528 } +529 return error_messages.get(error_code, f"Unknown error code: {error_code}")

@@ -813,30 +752,30 @@

- KNI(library_path=None) + KNI(library_path: str | bytes | pathlib.Path | None = None)
-
66    def __init__(self, library_path=None):
-67        """
-68        Initialize the KNI wrapper.
-69
-70        Args:
-71            library_path: Optional path to the KNI shared library.
-72                         If None, attempts to locate it automatically.
-73        """
-74        self._lib = self._load_library(library_path)
-75        self._setup_functions()
+            
67    def __init__(self, library_path: str | bytes | Path | None = None):
+68        """
+69        Initialize the KNI wrapper.
+70
+71        Args:
+72            library_path: Optional path to the KNI shared library (str, bytes, or
+73                         pathlib.Path). If None, attempts to locate it automatically.
+74        """
+75        self._lib = self._load_library(library_path)
+76        self._setup_function_signatures()
 

Initialize the KNI wrapper.

Args: - library_path: Optional path to the KNI shared library. - If None, attempts to locate it automatically.

+ library_path: Optional path to the KNI shared library (str, bytes, or + pathlib.Path). If None, attempts to locate it automatically.

@@ -1218,15 +1157,15 @@

def - get_version(self): + get_version(self) -> int:
-
185    def get_version(self):
-186        """Get KNI version as integer (10*major + minor)."""
-187        return self._lib.KNIGetVersion()
+            
192    def get_version(self) -> int:
+193        """Get KNI version as integer (10*major + minor)."""
+194        return self._lib.KNIGetVersion()
 
@@ -1240,15 +1179,15 @@

def - get_full_version(self): + get_full_version(self) -> str:
-
189    def get_full_version(self):
-190        """Get KNI full version string."""
-191        return self._lib.KNIGetFullVersion().decode("utf-8")
+            
196    def get_full_version(self) -> str:
+197        """Get KNI full version string."""
+198        return self._lib.KNIGetFullVersion().decode("utf-8")
 
@@ -1262,31 +1201,24 @@

def - set_log_file_name(self, log_file_name): + set_log_file_name(self, log_file_name: str | bytes) -> None:
-
193    def set_log_file_name(self, log_file_name):
-194        """
-195        Set the log file name for error messages.
-196
-197        Args:
-198            log_file_name: Path to log file (str or bytes, empty string for no logging)
-199
-200        Raises:
-201            KNIError: If setting log file fails
-202            TypeError: If log_file_name is not str or bytes
-203        """
-204        if isinstance(log_file_name, str):
-205            log_file_name_bytes = log_file_name.encode("utf-8")
-206        elif isinstance(log_file_name, bytes):
-207            log_file_name_bytes = log_file_name
-208        else:
-209            raise TypeError(
-210                f"log_file_name must be str or bytes, not {type(log_file_name).__name__}"
-211            )
+            
200    def set_log_file_name(self, log_file_name: str | bytes) -> None:
+201        """
+202        Set the log file name for error messages.
+203
+204        Args:
+205            log_file_name: Path to log file (str or bytes, empty string for no logging)
+206
+207        Raises:
+208            KNIError: If setting log file fails
+209            TypeError: If log_file_name is not str or bytes
+210        """
+211        log_file_name_bytes = self._to_bytes(log_file_name, "log_file_name")
 212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
 213        if ret_code != self.KNI_OK:
 214            raise KNIError(
@@ -1313,86 +1245,67 @@ 

def - open_stream( self, dictionary_file_name, dictionary_name, header_line, field_separator='\t'): + open_stream( self, dictionary_file_path: str | bytes | pathlib.Path, dictionary_name: str | bytes, header_line: str | bytes, field_separator: str | bytes = '\t') -> int:
219    def open_stream(
-220        self, dictionary_file_name, dictionary_name, header_line, field_separator="\t"
-221    ):
-222        """
-223        Open a KNI stream for recoding.
-224
-225        Args:
-226            dictionary_file_name: Path to the dictionary file (str or bytes)
-227            dictionary_name: Name of the dictionary to use (str or bytes)
-228            header_line: Header line with field names (str or bytes)
-229            field_separator: Character used to separate fields (str or bytes, default: tab)
-230
-231        Returns:
-232            Stream handle (positive integer)
-233
-234        Raises:
-235            KNIError: If opening stream fails
-236            TypeError: If arguments have invalid types
-237        """
-238        # Type checking and conversion
-239        if isinstance(dictionary_file_name, str):
-240            dictionary_file_name_bytes = dictionary_file_name.encode("utf-8")
-241        elif isinstance(dictionary_file_name, bytes):
-242            dictionary_file_name_bytes = dictionary_file_name
-243        else:
-244            raise TypeError(
-245                f"dictionary_file_name must be str or bytes, not {type(dictionary_file_name).__name__}"
-246            )
-247        if isinstance(dictionary_name, str):
-248            dictionary_name_bytes = dictionary_name.encode("utf-8")
-249        elif isinstance(dictionary_name, bytes):
-250            dictionary_name_bytes = dictionary_name
-251        else:
-252            raise TypeError(
-253                f"dictionary_name must be str or bytes, not {type(dictionary_name).__name__}"
-254            )
-255        if isinstance(header_line, str):
-256            header_line_bytes = header_line.encode("utf-8")
-257        elif isinstance(header_line, bytes):
-258            header_line_bytes = header_line
-259        else:
-260            raise TypeError(
-261                f"header_line must be str or bytes, not {type(header_line).__name__}"
-262            )
-263
-264        # Convert field_separator to a single byte
-265        if isinstance(field_separator, str):
-266            field_separator_byte = field_separator.encode("utf-8")[0]
-267        elif isinstance(field_separator, bytes):
-268            field_separator_byte = field_separator[0]
-269        else:
-270            raise TypeError(
-271                f"field_separator must be str or bytes, not {type(field_separator).__name__}"
-272            )
-273
-274        stream_handle = self._lib.KNIOpenStream(
-275            dictionary_file_name_bytes,
-276            dictionary_name_bytes,
-277            header_line_bytes,
-278            field_separator_byte,
-279        )
-280        if stream_handle < 0:
-281            raise KNIError(
-282                f"Failed to open stream: {self.get_error_message(stream_handle)}",
-283                stream_handle,
-284            )
-285        return stream_handle
+220        self,
+221        dictionary_file_path: str | bytes | Path,
+222        dictionary_name: str | bytes,
+223        header_line: str | bytes,
+224        field_separator: str | bytes = "\t",
+225    ) -> int:
+226        """
+227        Open a KNI stream for recoding.
+228
+229        Args:
+230            dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path)
+231            dictionary_name: Name of the dictionary to use (str or bytes)
+232            header_line: Header line with field names (str or bytes)
+233            field_separator: Character used to separate fields (str or bytes, default: tab)
+234
+235        Returns:
+236            Stream handle (positive integer)
+237
+238        Raises:
+239            KNIError: If opening stream fails
+240            TypeError: If arguments have invalid types
+241        """
+242        # Type checking and conversion
+243        if isinstance(dictionary_file_path, Path):
+244            dictionary_file_path = str(dictionary_file_path)
+245        dictionary_file_path_bytes = self._to_bytes(
+246            dictionary_file_path, "dictionary_file_path"
+247        )
+248        dictionary_name_bytes = self._to_bytes(dictionary_name, "dictionary_name")
+249        header_line_bytes = self._to_bytes(header_line, "header_line")
+250        field_separator_bytes = self._to_bytes(field_separator, "field_separator")
+251        if len(field_separator_bytes) == 0:
+252            raise ValueError("field_separator must not be empty")
+253        field_separator_byte = field_separator_bytes[0]
+254
+255        stream_handle = self._lib.KNIOpenStream(
+256            dictionary_file_path_bytes,
+257            dictionary_name_bytes,
+258            header_line_bytes,
+259            field_separator_byte,
+260        )
+261        if stream_handle < 0:
+262            raise KNIError(
+263                f"Failed to open stream: {self.get_error_message(stream_handle)}",
+264                stream_handle,
+265            )
+266        return stream_handle
 

Open a KNI stream for recoding.

Args: - dictionary_file_name: Path to the dictionary file (str or bytes) + dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path) dictionary_name: Name of the dictionary to use (str or bytes) header_line: Header line with field names (str or bytes) field_separator: Character used to separate fields (str or bytes, default: tab)

@@ -1412,33 +1325,33 @@

def - close_stream(self, stream_handle): + close_stream(self, stream_handle: int) -> None:
-
287    def close_stream(self, stream_handle):
-288        """
-289        Close a KNI stream.
-290
-291        Args:
-292            stream_handle: Handle returned by open_stream
-293
-294        Raises:
-295            KNIError: If closing stream fails
-296            TypeError: If stream_handle is not int
-297        """
-298        if not isinstance(stream_handle, int):
-299            raise TypeError(
-300                f"stream_handle must be int, not {type(stream_handle).__name__}"
-301            )
-302        ret_code = self._lib.KNICloseStream(stream_handle)
-303        if ret_code != self.KNI_OK:
-304            raise KNIError(
-305                f"Failed to close stream: {self.get_error_message(ret_code)}",
-306                ret_code,
-307            )
+            
268    def close_stream(self, stream_handle: int) -> None:
+269        """
+270        Close a KNI stream.
+271
+272        Args:
+273            stream_handle: Handle returned by open_stream
+274
+275        Raises:
+276            KNIError: If closing stream fails
+277            TypeError: If stream_handle is not int
+278        """
+279        if not isinstance(stream_handle, int):
+280            raise TypeError(
+281                f"stream_handle must be int, not {type(stream_handle).__name__}"
+282            )
+283        ret_code = self._lib.KNICloseStream(stream_handle)
+284        if ret_code != self.KNI_OK:
+285            raise KNIError(
+286                f"Failed to close stream: {self.get_error_message(ret_code)}",
+287                ret_code,
+288            )
 
@@ -1459,61 +1372,59 @@

def - recode_stream_record(self, stream_handle, input_record, max_output_length=None): + recode_stream_record( self, stream_handle: int, input_record: str | bytes, max_output_length: int | None = None) -> str:
-
309    def recode_stream_record(self, stream_handle, input_record, max_output_length=None):
-310        """
-311        Recode an input record using the stream's dictionary.
-312
-313        Args:
-314            stream_handle: Handle returned by open_stream
-315            input_record: Input record string or bytes
-316            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
-317
-318        Returns:
-319            Recoded output string
-320
-321        Raises:
-322            KNIError: If recoding fails
-323            TypeError: If arguments have invalid types
-324        """
-325        if not isinstance(stream_handle, int):
-326            raise TypeError(
-327                f"stream_handle must be int, not {type(stream_handle).__name__}"
-328            )
-329        if isinstance(input_record, str):
-330            input_record_bytes = input_record.encode("utf-8")
-331        elif isinstance(input_record, bytes):
-332            input_record_bytes = input_record
-333        else:
-334            raise TypeError(
-335                f"input_record must be str or bytes, not {type(input_record).__name__}"
-336            )
-337        if max_output_length is None:
-338            max_output_length = self.KNI_MaxRecordLength
-339        elif not isinstance(max_output_length, int):
-340            raise TypeError(
-341                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
-342            )
-343
-344        output_buffer = ctypes.create_string_buffer(max_output_length)
-345        ret_code = self._lib.KNIRecodeStreamRecord(
-346            stream_handle,
-347            input_record_bytes,
-348            output_buffer,
-349            max_output_length,
-350        )
-351
-352        if ret_code != self.KNI_OK:
-353            raise KNIError(
-354                f"Failed to recode record: {self.get_error_message(ret_code)}",
-355                ret_code,
-356            )
-357        return output_buffer.value.decode("utf-8")
+            
290    def recode_stream_record(
+291        self,
+292        stream_handle: int,
+293        input_record: str | bytes,
+294        max_output_length: int | None = None,
+295    ) -> str:
+296        """
+297        Recode an input record using the stream's dictionary.
+298
+299        Args:
+300            stream_handle: Handle returned by open_stream
+301            input_record: Input record string or bytes
+302            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
+303
+304        Returns:
+305            Recoded output string
+306
+307        Raises:
+308            KNIError: If recoding fails
+309            TypeError: If arguments have invalid types
+310        """
+311        if not isinstance(stream_handle, int):
+312            raise TypeError(
+313                f"stream_handle must be int, not {type(stream_handle).__name__}"
+314            )
+315        input_record_bytes = self._to_bytes(input_record, "input_record")
+316        if max_output_length is None:
+317            max_output_length = self.KNI_MaxRecordLength
+318        elif not isinstance(max_output_length, int):
+319            raise TypeError(
+320                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
+321            )
+322
+323        output_buffer = ctypes.create_string_buffer(max_output_length)
+324        ret_code = self._lib.KNIRecodeStreamRecord(
+325            stream_handle,
+326            input_record_bytes,
+327            output_buffer,
+328            max_output_length,
+329        )
+330
+331        if ret_code != self.KNI_OK:
+332            raise KNIError(
+333                f"Failed to recode record: {self.get_error_message(ret_code)}",
+334                ret_code,
+335            )
+336        return output_buffer.value.decode("utf-8")
 
@@ -1539,53 +1450,41 @@

def - set_secondary_header_line(self, stream_handle, data_path, header_line): + set_secondary_header_line( self, stream_handle: int, data_path: str | bytes, header_line: str | bytes) -> None:
-
359    def set_secondary_header_line(self, stream_handle, data_path, header_line):
-360        """
-361        Set the header line of a secondary table (multi-table only).
-362
-363        Args:
-364            stream_handle: Handle returned by open_stream
-365            data_path: Data path identifying the secondary table (str or bytes)
-366            header_line: Header line with field names (str or bytes)
-367
-368        Raises:
-369            KNIError: If setting secondary header fails
-370            TypeError: If arguments have invalid types
-371        """
-372        if not isinstance(stream_handle, int):
-373            raise TypeError(
-374                f"stream_handle must be int, not {type(stream_handle).__name__}"
-375            )
-376        if isinstance(data_path, str):
-377            data_path_bytes = data_path.encode("utf-8")
-378        elif isinstance(data_path, bytes):
-379            data_path_bytes = data_path
-380        else:
-381            raise TypeError(
-382                f"data_path must be str or bytes, not {type(data_path).__name__}"
-383            )
-384        if isinstance(header_line, str):
-385            header_line_bytes = header_line.encode("utf-8")
-386        elif isinstance(header_line, bytes):
-387            header_line_bytes = header_line
-388        else:
-389            raise TypeError(
-390                f"header_line must be str or bytes, not {type(header_line).__name__}"
-391            )
-392        ret_code = self._lib.KNISetSecondaryHeaderLine(
-393            stream_handle, data_path_bytes, header_line_bytes
-394        )
-395        if ret_code != self.KNI_OK:
-396            raise KNIError(
-397                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
-398                ret_code,
-399            )
+            
338    def set_secondary_header_line(
+339        self, stream_handle: int, data_path: str | bytes, header_line: str | bytes
+340    ) -> None:
+341        """
+342        Set the header line of a secondary table (multi-table only).
+343
+344        Args:
+345            stream_handle: Handle returned by open_stream
+346            data_path: Data path identifying the secondary table (str or bytes)
+347            header_line: Header line with field names (str or bytes)
+348
+349        Raises:
+350            KNIError: If setting secondary header fails
+351            TypeError: If arguments have invalid types
+352        """
+353        if not isinstance(stream_handle, int):
+354            raise TypeError(
+355                f"stream_handle must be int, not {type(stream_handle).__name__}"
+356            )
+357        data_path_bytes = self._to_bytes(data_path, "data_path")
+358        header_line_bytes = self._to_bytes(header_line, "header_line")
+359        ret_code = self._lib.KNISetSecondaryHeaderLine(
+360            stream_handle, data_path_bytes, header_line_bytes
+361        )
+362        if ret_code != self.KNI_OK:
+363            raise KNIError(
+364                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
+365                ret_code,
+366            )
 
@@ -1608,67 +1507,52 @@

def - set_external_table(self, stream_handle, data_root, data_path, data_table_file_name): + set_external_table( self, stream_handle: int, data_root: str | bytes, data_path: str | bytes, data_table_file_name: str | bytes) -> None:
-
401    def set_external_table(
-402        self, stream_handle, data_root, data_path, data_table_file_name
-403    ):
-404        """
-405        Set the name of a data file for an external table (multi-table only).
-406
-407        Args:
-408            stream_handle: Handle returned by open_stream
-409            data_root: Root dictionary of the external table (str or bytes)
-410            data_path: Data path for secondary external tables (str or bytes, empty for root)
-411            data_table_file_name: Path to the external table data file (str or bytes)
-412
-413        Raises:
-414            KNIError: If setting external table fails
-415            TypeError: If arguments have invalid types
-416        """
-417        if not isinstance(stream_handle, int):
-418            raise TypeError(
-419                f"stream_handle must be int, not {type(stream_handle).__name__}"
-420            )
-421        if isinstance(data_root, str):
-422            data_root_bytes = data_root.encode("utf-8")
-423        elif isinstance(data_root, bytes):
-424            data_root_bytes = data_root
-425        else:
-426            raise TypeError(
-427                f"data_root must be str or bytes, not {type(data_root).__name__}"
-428            )
-429        if isinstance(data_path, str):
-430            data_path_bytes = data_path.encode("utf-8")
-431        elif isinstance(data_path, bytes):
-432            data_path_bytes = data_path
-433        else:
-434            raise TypeError(
-435                f"data_path must be str or bytes, not {type(data_path).__name__}"
-436            )
-437        if isinstance(data_table_file_name, str):
-438            data_table_file_name_bytes = data_table_file_name.encode("utf-8")
-439        elif isinstance(data_table_file_name, bytes):
-440            data_table_file_name_bytes = data_table_file_name
-441        else:
-442            raise TypeError(
-443                f"data_table_file_name must be str or bytes, not {type(data_table_file_name).__name__}"
-444            )
-445        ret_code = self._lib.KNISetExternalTable(
-446            stream_handle,
-447            data_root_bytes,
-448            data_path_bytes,
-449            data_table_file_name_bytes,
-450        )
-451        if ret_code != self.KNI_OK:
-452            raise KNIError(
-453                f"Failed to set external table: {self.get_error_message(ret_code)}",
-454                ret_code,
-455            )
+            
368    def set_external_table(
+369        self,
+370        stream_handle: int,
+371        data_root: str | bytes,
+372        data_path: str | bytes,
+373        data_table_file_name: str | bytes,
+374    ) -> None:
+375        """
+376        Set the name of a data file for an external table (multi-table only).
+377
+378        Args:
+379            stream_handle: Handle returned by open_stream
+380            data_root: Root dictionary of the external table (str or bytes)
+381            data_path: Data path for secondary external tables (str or bytes, empty for root)
+382            data_table_file_name: Path to the external table data file (str or bytes)
+383
+384        Raises:
+385            KNIError: If setting external table fails
+386            TypeError: If arguments have invalid types
+387        """
+388        if not isinstance(stream_handle, int):
+389            raise TypeError(
+390                f"stream_handle must be int, not {type(stream_handle).__name__}"
+391            )
+392        data_root_bytes = self._to_bytes(data_root, "data_root")
+393        data_path_bytes = self._to_bytes(data_path, "data_path")
+394        data_table_file_name_bytes = self._to_bytes(
+395            data_table_file_name, "data_table_file_name"
+396        )
+397        ret_code = self._lib.KNISetExternalTable(
+398            stream_handle,
+399            data_root_bytes,
+400            data_path_bytes,
+401            data_table_file_name_bytes,
+402        )
+403        if ret_code != self.KNI_OK:
+404            raise KNIError(
+405                f"Failed to set external table: {self.get_error_message(ret_code)}",
+406                ret_code,
+407            )
 
@@ -1692,35 +1576,35 @@

def - finish_opening_stream(self, stream_handle): + finish_opening_stream(self, stream_handle: int) -> None:
-
457    def finish_opening_stream(self, stream_handle):
-458        """
-459        Finish opening a stream (multi-table only).
-460
-461        Must be called after all secondary headers and external tables are set.
-462
-463        Args:
-464            stream_handle: Handle returned by open_stream
-465
-466        Raises:
-467            KNIError: If finishing opening stream fails
-468            TypeError: If stream_handle is not int
-469        """
-470        if not isinstance(stream_handle, int):
-471            raise TypeError(
-472                f"stream_handle must be int, not {type(stream_handle).__name__}"
-473            )
-474        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
-475        if ret_code != self.KNI_OK:
-476            raise KNIError(
-477                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
-478                ret_code,
-479            )
+            
409    def finish_opening_stream(self, stream_handle: int) -> None:
+410        """
+411        Finish opening a stream (multi-table only).
+412
+413        Must be called after all secondary headers and external tables are set.
+414
+415        Args:
+416            stream_handle: Handle returned by open_stream
+417
+418        Raises:
+419            KNIError: If finishing opening stream fails
+420            TypeError: If stream_handle is not int
+421        """
+422        if not isinstance(stream_handle, int):
+423            raise TypeError(
+424                f"stream_handle must be int, not {type(stream_handle).__name__}"
+425            )
+426        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
+427        if ret_code != self.KNI_OK:
+428            raise KNIError(
+429                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
+430                ret_code,
+431            )
 
@@ -1743,55 +1627,43 @@

def - set_secondary_input_record(self, stream_handle, data_path, input_record): + set_secondary_input_record( self, stream_handle: int, data_path: str | bytes, input_record: str | bytes) -> None:
-
481    def set_secondary_input_record(self, stream_handle, data_path, input_record):
-482        """
-483        Set a secondary input record for multi-table recoding.
-484
-485        All secondary records must be set before recoding the primary record.
-486
-487        Args:
-488            stream_handle: Handle returned by open_stream
-489            data_path: Data path identifying the secondary table (str or bytes)
-490            input_record: Secondary input record string or bytes
-491
-492        Raises:
-493            KNIError: If setting secondary input record fails
-494            TypeError: If arguments have invalid types
-495        """
-496        if not isinstance(stream_handle, int):
-497            raise TypeError(
-498                f"stream_handle must be int, not {type(stream_handle).__name__}"
-499            )
-500        if isinstance(data_path, str):
-501            data_path_bytes = data_path.encode("utf-8")
-502        elif isinstance(data_path, bytes):
-503            data_path_bytes = data_path
-504        else:
-505            raise TypeError(
-506                f"data_path must be str or bytes, not {type(data_path).__name__}"
-507            )
-508        if isinstance(input_record, str):
-509            input_record_bytes = input_record.encode("utf-8")
-510        elif isinstance(input_record, bytes):
-511            input_record_bytes = input_record
-512        else:
-513            raise TypeError(
-514                f"input_record must be str or bytes, not {type(input_record).__name__}"
-515            )
-516        ret_code = self._lib.KNISetSecondaryInputRecord(
-517            stream_handle, data_path_bytes, input_record_bytes
-518        )
-519        if ret_code != self.KNI_OK:
-520            raise KNIError(
-521                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
-522                ret_code,
-523            )
+            
433    def set_secondary_input_record(
+434        self, stream_handle: int, data_path: str | bytes, input_record: str | bytes
+435    ) -> None:
+436        """
+437        Set a secondary input record for multi-table recoding.
+438
+439        All secondary records must be set before recoding the primary record.
+440
+441        Args:
+442            stream_handle: Handle returned by open_stream
+443            data_path: Data path identifying the secondary table (str or bytes)
+444            input_record: Secondary input record string or bytes
+445
+446        Raises:
+447            KNIError: If setting secondary input record fails
+448            TypeError: If arguments have invalid types
+449        """
+450        if not isinstance(stream_handle, int):
+451            raise TypeError(
+452                f"stream_handle must be int, not {type(stream_handle).__name__}"
+453            )
+454        data_path_bytes = self._to_bytes(data_path, "data_path")
+455        input_record_bytes = self._to_bytes(input_record, "input_record")
+456        ret_code = self._lib.KNISetSecondaryInputRecord(
+457            stream_handle, data_path_bytes, input_record_bytes
+458        )
+459        if ret_code != self.KNI_OK:
+460            raise KNIError(
+461                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
+462                ret_code,
+463            )
 
@@ -1816,20 +1688,20 @@

def - get_stream_max_memory(self): + get_stream_max_memory(self) -> int:
-
525    def get_stream_max_memory(self):
-526        """
-527        Get the maximum amount of memory (in MB) for stream opening.
-528
-529        Returns:
-530            Maximum memory in MB
-531        """
-532        return self._lib.KNIGetStreamMaxMemory()
+            
465    def get_stream_max_memory(self) -> int:
+466        """
+467        Get the maximum amount of memory (in MB) for stream opening.
+468
+469        Returns:
+470            Maximum memory in MB
+471        """
+472        return self._lib.KNIGetStreamMaxMemory()
 
@@ -1846,25 +1718,25 @@

def - set_stream_max_memory(self, max_mb): + set_stream_max_memory(self, max_mb: int) -> int:
-
534    def set_stream_max_memory(self, max_mb):
-535        """
-536        Set the maximum amount of memory (in MB) for stream opening.
-537
-538        Args:
-539            max_mb: Maximum memory in MB
-540
-541        Returns:
-542            Accepted value (bounded by system limits)
-543        """
-544        if not isinstance(max_mb, int):
-545            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
-546        return self._lib.KNISetStreamMaxMemory(max_mb)
+            
474    def set_stream_max_memory(self, max_mb: int) -> int:
+475        """
+476        Set the maximum amount of memory (in MB) for stream opening.
+477
+478        Args:
+479            max_mb: Maximum memory in MB
+480
+481        Returns:
+482            Accepted value (bounded by system limits)
+483        """
+484        if not isinstance(max_mb, int):
+485            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
+486        return self._lib.KNISetStreamMaxMemory(max_mb)
 
@@ -1885,54 +1757,54 @@

@staticmethod
def - get_error_message(error_code): + get_error_message(error_code: int) -> str:

-
548    @staticmethod
-549    def get_error_message(error_code):
-550        """
-551        Get a human-readable error message for an error code.
-552
-553        Args:
-554            error_code: KNI error code
-555
-556        Returns:
-557            Error message string
-558        """
-559        if not isinstance(error_code, int):
-560            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
-561        error_messages = {
-562            KNI.KNI_OK: "Success",
-563            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
-564            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
-565            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
-566            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
-567            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
-568            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
-569            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
-570            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
-571            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
-572            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
-573            KNI.KNI_ErrorStreamOpened: "Stream already opened",
-574            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
-575            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
-576            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
-577            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
-578            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
-579            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
-580            KNI.KNI_ErrorDataRoot: "Bad data root",
-581            KNI.KNI_ErrorDataPath: "Bad data path",
-582            KNI.KNI_ErrorDataTableFile: "Bad data table file",
-583            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
-584            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
-585            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
-586            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
-587            KNI.KNI_ErrorLogFile: "Bad error file",
-588        }
-589        return error_messages.get(error_code, f"Unknown error code: {error_code}")
+            
488    @staticmethod
+489    def get_error_message(error_code: int) -> str:
+490        """
+491        Get a human-readable error message for an error code.
+492
+493        Args:
+494            error_code: KNI error code
+495
+496        Returns:
+497            Error message string
+498        """
+499        if not isinstance(error_code, int):
+500            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
+501        error_messages = {
+502            KNI.KNI_OK: "Success",
+503            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
+504            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
+505            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
+506            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
+507            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
+508            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
+509            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
+510            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
+511            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
+512            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
+513            KNI.KNI_ErrorStreamOpened: "Stream already opened",
+514            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
+515            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
+516            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
+517            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
+518            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
+519            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
+520            KNI.KNI_ErrorDataRoot: "Bad data root",
+521            KNI.KNI_ErrorDataPath: "Bad data path",
+522            KNI.KNI_ErrorDataTableFile: "Bad data table file",
+523            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
+524            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
+525            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
+526            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
+527            KNI.KNI_ErrorLogFile: "Bad error file",
+528        }
+529        return error_messages.get(error_code, f"Unknown error code: {error_code}")
 
@@ -1959,12 +1831,12 @@

-
20class KNIError(Exception):
-21    """Exception raised for KNI errors."""
-22
-23    def __init__(self, message, error_code=None):
-24        super().__init__(message)
-25        self.error_code = error_code
+            
21class KNIError(Exception):
+22    """Exception raised for KNI errors."""
+23
+24    def __init__(self, message, error_code=None):
+25        super().__init__(message)
+26        self.error_code = error_code
 
@@ -1982,9 +1854,9 @@

-
23    def __init__(self, message, error_code=None):
-24        super().__init__(message)
-25        self.error_code = error_code
+            
24    def __init__(self, message, error_code=None):
+25        super().__init__(message)
+26        self.error_code = error_code
 
diff --git a/python/docs/search.js b/python/docs/search.js index 6b2cf79..f3f8e1d 100644 --- a/python/docs/search.js +++ b/python/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oKhiops Native Interface (KNI) Python Package

\n\n

This package provides Python bindings for the Khiops Native Interface (KNI),\nenabling direct deployment of Khiops models from Python without temporary files.

\n"}, "kni.KNI": {"fullname": "kni.KNI", "modulename": "kni", "qualname": "KNI", "kind": "class", "doc": "

Python wrapper for Khiops Native Interface using ctypes.

\n"}, "kni.KNI.__init__": {"fullname": "kni.KNI.__init__", "modulename": "kni", "qualname": "KNI.__init__", "kind": "function", "doc": "

Initialize the KNI wrapper.

\n\n

Args:\n library_path: Optional path to the KNI shared library.\n If None, attempts to locate it automatically.

\n", "signature": "(library_path=None)"}, "kni.KNI.KNI_OK": {"fullname": "kni.KNI.KNI_OK", "modulename": "kni", "qualname": "KNI.KNI_OK", "kind": "variable", "doc": "

\n", "default_value": "0"}, "kni.KNI.KNI_ErrorRunningFunction": {"fullname": "kni.KNI.KNI_ErrorRunningFunction", "modulename": "kni", "qualname": "KNI.KNI_ErrorRunningFunction", "kind": "variable", "doc": "

\n", "default_value": "-1"}, "kni.KNI.KNI_ErrorDictionaryFileName": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileName", "kind": "variable", "doc": "

\n", "default_value": "-2"}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"fullname": "kni.KNI.KNI_ErrorDictionaryMissingFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryMissingFile", "kind": "variable", "doc": "

\n", "default_value": "-3"}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileFormat", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileFormat", "kind": "variable", "doc": "

\n", "default_value": "-4"}, "kni.KNI.KNI_ErrorDictionaryName": {"fullname": "kni.KNI.KNI_ErrorDictionaryName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryName", "kind": "variable", "doc": "

\n", "default_value": "-5"}, "kni.KNI.KNI_ErrorMissingDictionary": {"fullname": "kni.KNI.KNI_ErrorMissingDictionary", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingDictionary", "kind": "variable", "doc": "

\n", "default_value": "-6"}, "kni.KNI.KNI_ErrorTooManyStreams": {"fullname": "kni.KNI.KNI_ErrorTooManyStreams", "modulename": "kni", "qualname": "KNI.KNI_ErrorTooManyStreams", "kind": "variable", "doc": "

\n", "default_value": "-7"}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"fullname": "kni.KNI.KNI_ErrorStreamHeaderLine", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHeaderLine", "kind": "variable", "doc": "

\n", "default_value": "-8"}, "kni.KNI.KNI_ErrorFieldSeparator": {"fullname": "kni.KNI.KNI_ErrorFieldSeparator", "modulename": "kni", "qualname": "KNI.KNI_ErrorFieldSeparator", "kind": "variable", "doc": "

\n", "default_value": "-9"}, "kni.KNI.KNI_ErrorStreamHandle": {"fullname": "kni.KNI.KNI_ErrorStreamHandle", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHandle", "kind": "variable", "doc": "

\n", "default_value": "-10"}, "kni.KNI.KNI_ErrorStreamOpened": {"fullname": "kni.KNI.KNI_ErrorStreamOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpened", "kind": "variable", "doc": "

\n", "default_value": "-11"}, "kni.KNI.KNI_ErrorStreamNotOpened": {"fullname": "kni.KNI.KNI_ErrorStreamNotOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamNotOpened", "kind": "variable", "doc": "

\n", "default_value": "-12"}, "kni.KNI.KNI_ErrorStreamInputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamInputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRecord", "kind": "variable", "doc": "

\n", "default_value": "-13"}, "kni.KNI.KNI_ErrorStreamInputRead": {"fullname": "kni.KNI.KNI_ErrorStreamInputRead", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRead", "kind": "variable", "doc": "

\n", "default_value": "-14"}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamOutputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOutputRecord", "kind": "variable", "doc": "

\n", "default_value": "-15"}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"fullname": "kni.KNI.KNI_ErrorMissingSecondaryHeader", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingSecondaryHeader", "kind": "variable", "doc": "

\n", "default_value": "-16"}, "kni.KNI.KNI_ErrorMissingExternalTable": {"fullname": "kni.KNI.KNI_ErrorMissingExternalTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingExternalTable", "kind": "variable", "doc": "

\n", "default_value": "-17"}, "kni.KNI.KNI_ErrorDataRoot": {"fullname": "kni.KNI.KNI_ErrorDataRoot", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataRoot", "kind": "variable", "doc": "

\n", "default_value": "-18"}, "kni.KNI.KNI_ErrorDataPath": {"fullname": "kni.KNI.KNI_ErrorDataPath", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataPath", "kind": "variable", "doc": "

\n", "default_value": "-19"}, "kni.KNI.KNI_ErrorDataTableFile": {"fullname": "kni.KNI.KNI_ErrorDataTableFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataTableFile", "kind": "variable", "doc": "

\n", "default_value": "-20"}, "kni.KNI.KNI_ErrorLoadDataTable": {"fullname": "kni.KNI.KNI_ErrorLoadDataTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorLoadDataTable", "kind": "variable", "doc": "

\n", "default_value": "-21"}, "kni.KNI.KNI_ErrorMemoryOverflow": {"fullname": "kni.KNI.KNI_ErrorMemoryOverflow", "modulename": "kni", "qualname": "KNI.KNI_ErrorMemoryOverflow", "kind": "variable", "doc": "

\n", "default_value": "-22"}, "kni.KNI.KNI_ErrorStreamOpening": {"fullname": "kni.KNI.KNI_ErrorStreamOpening", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpening", "kind": "variable", "doc": "

\n", "default_value": "-23"}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"fullname": "kni.KNI.KNI_ErrorStreamOpeningNotFinished", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpeningNotFinished", "kind": "variable", "doc": "

\n", "default_value": "-24"}, "kni.KNI.KNI_ErrorLogFile": {"fullname": "kni.KNI.KNI_ErrorLogFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorLogFile", "kind": "variable", "doc": "

\n", "default_value": "-25"}, "kni.KNI.KNI_MaxStreamNumber": {"fullname": "kni.KNI.KNI_MaxStreamNumber", "modulename": "kni", "qualname": "KNI.KNI_MaxStreamNumber", "kind": "variable", "doc": "

\n", "default_value": "512"}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"fullname": "kni.KNI.KNI_DefaultMaxStreamMemory", "modulename": "kni", "qualname": "KNI.KNI_DefaultMaxStreamMemory", "kind": "variable", "doc": "

\n", "default_value": "100"}, "kni.KNI.KNI_MaxPathNameLength": {"fullname": "kni.KNI.KNI_MaxPathNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxPathNameLength", "kind": "variable", "doc": "

\n", "default_value": "1024"}, "kni.KNI.KNI_MaxDictionaryNameLength": {"fullname": "kni.KNI.KNI_MaxDictionaryNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxDictionaryNameLength", "kind": "variable", "doc": "

\n", "default_value": "128"}, "kni.KNI.KNI_MaxRecordLength": {"fullname": "kni.KNI.KNI_MaxRecordLength", "modulename": "kni", "qualname": "KNI.KNI_MaxRecordLength", "kind": "variable", "doc": "

\n", "default_value": "8388608"}, "kni.KNI.get_version": {"fullname": "kni.KNI.get_version", "modulename": "kni", "qualname": "KNI.get_version", "kind": "function", "doc": "

Get KNI version as integer (10*major + minor).

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.get_full_version": {"fullname": "kni.KNI.get_full_version", "modulename": "kni", "qualname": "KNI.get_full_version", "kind": "function", "doc": "

Get KNI full version string.

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.set_log_file_name": {"fullname": "kni.KNI.set_log_file_name", "modulename": "kni", "qualname": "KNI.set_log_file_name", "kind": "function", "doc": "

Set the log file name for error messages.

\n\n

Args:\n log_file_name: Path to log file (str or bytes, empty string for no logging)

\n\n

Raises:\n KNIError: If setting log file fails\n TypeError: If log_file_name is not str or bytes

\n", "signature": "(self, log_file_name):", "funcdef": "def"}, "kni.KNI.open_stream": {"fullname": "kni.KNI.open_stream", "modulename": "kni", "qualname": "KNI.open_stream", "kind": "function", "doc": "

Open a KNI stream for recoding.

\n\n

Args:\n dictionary_file_name: Path to the dictionary file (str or bytes)\n dictionary_name: Name of the dictionary to use (str or bytes)\n header_line: Header line with field names (str or bytes)\n field_separator: Character used to separate fields (str or bytes, default: tab)

\n\n

Returns:\n Stream handle (positive integer)

\n\n

Raises:\n KNIError: If opening stream fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tdictionary_file_name,\tdictionary_name,\theader_line,\tfield_separator='\\t'):", "funcdef": "def"}, "kni.KNI.close_stream": {"fullname": "kni.KNI.close_stream", "modulename": "kni", "qualname": "KNI.close_stream", "kind": "function", "doc": "

Close a KNI stream.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If closing stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle):", "funcdef": "def"}, "kni.KNI.recode_stream_record": {"fullname": "kni.KNI.recode_stream_record", "modulename": "kni", "qualname": "KNI.recode_stream_record", "kind": "function", "doc": "

Recode an input record using the stream's dictionary.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n input_record: Input record string or bytes\n max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

\n\n

Returns:\n Recoded output string

\n\n

Raises:\n KNIError: If recoding fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, input_record, max_output_length=None):", "funcdef": "def"}, "kni.KNI.set_secondary_header_line": {"fullname": "kni.KNI.set_secondary_header_line", "modulename": "kni", "qualname": "KNI.set_secondary_header_line", "kind": "function", "doc": "

Set the header line of a secondary table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n header_line: Header line with field names (str or bytes)

\n\n

Raises:\n KNIError: If setting secondary header fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_path, header_line):", "funcdef": "def"}, "kni.KNI.set_external_table": {"fullname": "kni.KNI.set_external_table", "modulename": "kni", "qualname": "KNI.set_external_table", "kind": "function", "doc": "

Set the name of a data file for an external table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_root: Root dictionary of the external table (str or bytes)\n data_path: Data path for secondary external tables (str or bytes, empty for root)\n data_table_file_name: Path to the external table data file (str or bytes)

\n\n

Raises:\n KNIError: If setting external table fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_root, data_path, data_table_file_name):", "funcdef": "def"}, "kni.KNI.finish_opening_stream": {"fullname": "kni.KNI.finish_opening_stream", "modulename": "kni", "qualname": "KNI.finish_opening_stream", "kind": "function", "doc": "

Finish opening a stream (multi-table only).

\n\n

Must be called after all secondary headers and external tables are set.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If finishing opening stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle):", "funcdef": "def"}, "kni.KNI.set_secondary_input_record": {"fullname": "kni.KNI.set_secondary_input_record", "modulename": "kni", "qualname": "KNI.set_secondary_input_record", "kind": "function", "doc": "

Set a secondary input record for multi-table recoding.

\n\n

All secondary records must be set before recoding the primary record.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n input_record: Secondary input record string or bytes

\n\n

Raises:\n KNIError: If setting secondary input record fails\n TypeError: If arguments have invalid types

\n", "signature": "(self, stream_handle, data_path, input_record):", "funcdef": "def"}, "kni.KNI.get_stream_max_memory": {"fullname": "kni.KNI.get_stream_max_memory", "modulename": "kni", "qualname": "KNI.get_stream_max_memory", "kind": "function", "doc": "

Get the maximum amount of memory (in MB) for stream opening.

\n\n

Returns:\n Maximum memory in MB

\n", "signature": "(self):", "funcdef": "def"}, "kni.KNI.set_stream_max_memory": {"fullname": "kni.KNI.set_stream_max_memory", "modulename": "kni", "qualname": "KNI.set_stream_max_memory", "kind": "function", "doc": "

Set the maximum amount of memory (in MB) for stream opening.

\n\n

Args:\n max_mb: Maximum memory in MB

\n\n

Returns:\n Accepted value (bounded by system limits)

\n", "signature": "(self, max_mb):", "funcdef": "def"}, "kni.KNI.get_error_message": {"fullname": "kni.KNI.get_error_message", "modulename": "kni", "qualname": "KNI.get_error_message", "kind": "function", "doc": "

Get a human-readable error message for an error code.

\n\n

Args:\n error_code: KNI error code

\n\n

Returns:\n Error message string

\n", "signature": "(error_code):", "funcdef": "def"}, "kni.KNIError": {"fullname": "kni.KNIError", "modulename": "kni", "qualname": "KNIError", "kind": "class", "doc": "

Exception raised for KNI errors.

\n", "bases": "builtins.Exception"}, "kni.KNIError.__init__": {"fullname": "kni.KNIError.__init__", "modulename": "kni", "qualname": "KNIError.__init__", "kind": "function", "doc": "

\n", "signature": "(message, error_code=None)"}, "kni.KNIError.error_code": {"fullname": "kni.KNIError.error_code", "modulename": "kni", "qualname": "KNIError.error_code", "kind": "variable", "doc": "

\n"}}, "docInfo": {"kni": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 33}, "kni.KNI": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "kni.KNI.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 15, "bases": 0, "doc": 27}, "kni.KNI.KNI_OK": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorRunningFunction": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingDictionary": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorTooManyStreams": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorFieldSeparator": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHandle": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamNotOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRead": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingExternalTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataRoot": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataPath": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataTableFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLoadDataTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMemoryOverflow": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpening": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLogFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxStreamNumber": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxPathNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxDictionaryNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxRecordLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.get_version": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 11}, "kni.KNI.get_full_version": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "kni.KNI.set_log_file_name": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 18, "bases": 0, "doc": 49}, "kni.KNI.open_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 54, "bases": 0, "doc": 79}, "kni.KNI.close_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 32}, "kni.KNI.recode_stream_record": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 35, "bases": 0, "doc": 59}, "kni.KNI.set_secondary_header_line": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 61}, "kni.KNI.set_external_table": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 37, "bases": 0, "doc": 82}, "kni.KNI.finish_opening_stream": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 51}, "kni.KNI.set_secondary_input_record": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 29, "bases": 0, "doc": 71}, "kni.KNI.get_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 21}, "kni.KNI.set_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 33}, "kni.KNI.get_error_message": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 12, "bases": 0, "doc": 27}, "kni.KNIError": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "kni.KNIError.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "kni.KNIError.error_code": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 50, "save": true}, "index": {"qualname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}, "kni.KNI.KNI_OK": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.4142135623730951}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 46, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "fullname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 1.4142135623730951}, "kni.KNI.get_full_version": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1.4142135623730951}, "kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 50, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "1": {"0": {"0": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}, "2": {"4": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}, "2": {"8": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}, "8": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}, "2": {"0": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}, "2": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}, "5": {"1": {"2": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}, "8": {"3": {"8": {"8": {"6": {"0": {"8": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 25}}, "signature": {"root": {"3": {"9": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.__init__": {"tf": 3.4641016151377544}, "kni.KNI.get_version": {"tf": 3.1622776601683795}, "kni.KNI.get_full_version": {"tf": 3.1622776601683795}, "kni.KNI.set_log_file_name": {"tf": 3.7416573867739413}, "kni.KNI.open_stream": {"tf": 6.4031242374328485}, "kni.KNI.close_stream": {"tf": 3.7416573867739413}, "kni.KNI.recode_stream_record": {"tf": 5.0990195135927845}, "kni.KNI.set_secondary_header_line": {"tf": 4.69041575982343}, "kni.KNI.set_external_table": {"tf": 5.0990195135927845}, "kni.KNI.finish_opening_stream": {"tf": 3.7416573867739413}, "kni.KNI.set_secondary_input_record": {"tf": 4.69041575982343}, "kni.KNI.get_stream_max_memory": {"tf": 3.1622776601683795}, "kni.KNI.set_stream_max_memory": {"tf": 3.7416573867739413}, "kni.KNI.get_error_message": {"tf": 3.1622776601683795}, "kni.KNIError.__init__": {"tf": 4}}, "df": 15, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 3}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 12}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}, "b": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.__init__": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}}}, "doc": {"root": {"1": {"0": {"docs": {}, "df": 0, "*": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {"kni": {"tf": 2.23606797749979}, "kni.KNI": {"tf": 1.7320508075688772}, "kni.KNI.__init__": {"tf": 2.449489742783178}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 2}, "kni.KNI.get_full_version": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 2.8284271247461903}, "kni.KNI.open_stream": {"tf": 3.3166247903554}, "kni.KNI.close_stream": {"tf": 2.6457513110645907}, "kni.KNI.recode_stream_record": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_header_line": {"tf": 2.8284271247461903}, "kni.KNI.set_external_table": {"tf": 2.8284271247461903}, "kni.KNI.finish_opening_stream": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_input_record": {"tf": 3.1622776601683795}, "kni.KNI.get_stream_max_memory": {"tf": 2.23606797749979}, "kni.KNI.set_stream_max_memory": {"tf": 2.8284271247461903}, "kni.KNI.get_error_message": {"tf": 2.6457513110645907}, "kni.KNIError": {"tf": 1.7320508075688772}, "kni.KNIError.__init__": {"tf": 1.7320508075688772}, "kni.KNIError.error_code": {"tf": 1.7320508075688772}}, "df": 50, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.7320508075688772}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2}}, "df": 2}}}}, "f": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 9}, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni": {"tf": 1}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 10}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 4}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 10}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 2.23606797749979}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"kni": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}, "b": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.7320508075688772}}, "df": 2}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}, "n": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 3, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}}, "df": 1, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.close_stream": {"tf": 2.23606797749979}, "kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 2.23606797749979}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 9}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 4}}}}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}, "d": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 2}}, "df": 2, "s": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1.7320508075688772}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"kni": {"fullname": "kni", "modulename": "kni", "kind": "module", "doc": "

Khiops Native Interface (KNI) Python Package

\n\n

This package provides Python bindings for the Khiops Native Interface (KNI),\nenabling direct deployment of Khiops models from Python without temporary files.

\n"}, "kni.KNI": {"fullname": "kni.KNI", "modulename": "kni", "qualname": "KNI", "kind": "class", "doc": "

Python wrapper for Khiops Native Interface using ctypes.

\n"}, "kni.KNI.__init__": {"fullname": "kni.KNI.__init__", "modulename": "kni", "qualname": "KNI.__init__", "kind": "function", "doc": "

Initialize the KNI wrapper.

\n\n

Args:\n library_path: Optional path to the KNI shared library (str, bytes, or\n pathlib.Path). If None, attempts to locate it automatically.

\n", "signature": "(library_path: str | bytes | pathlib.Path | None = None)"}, "kni.KNI.KNI_OK": {"fullname": "kni.KNI.KNI_OK", "modulename": "kni", "qualname": "KNI.KNI_OK", "kind": "variable", "doc": "

\n", "default_value": "0"}, "kni.KNI.KNI_ErrorRunningFunction": {"fullname": "kni.KNI.KNI_ErrorRunningFunction", "modulename": "kni", "qualname": "KNI.KNI_ErrorRunningFunction", "kind": "variable", "doc": "

\n", "default_value": "-1"}, "kni.KNI.KNI_ErrorDictionaryFileName": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileName", "kind": "variable", "doc": "

\n", "default_value": "-2"}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"fullname": "kni.KNI.KNI_ErrorDictionaryMissingFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryMissingFile", "kind": "variable", "doc": "

\n", "default_value": "-3"}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileFormat", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileFormat", "kind": "variable", "doc": "

\n", "default_value": "-4"}, "kni.KNI.KNI_ErrorDictionaryName": {"fullname": "kni.KNI.KNI_ErrorDictionaryName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryName", "kind": "variable", "doc": "

\n", "default_value": "-5"}, "kni.KNI.KNI_ErrorMissingDictionary": {"fullname": "kni.KNI.KNI_ErrorMissingDictionary", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingDictionary", "kind": "variable", "doc": "

\n", "default_value": "-6"}, "kni.KNI.KNI_ErrorTooManyStreams": {"fullname": "kni.KNI.KNI_ErrorTooManyStreams", "modulename": "kni", "qualname": "KNI.KNI_ErrorTooManyStreams", "kind": "variable", "doc": "

\n", "default_value": "-7"}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"fullname": "kni.KNI.KNI_ErrorStreamHeaderLine", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHeaderLine", "kind": "variable", "doc": "

\n", "default_value": "-8"}, "kni.KNI.KNI_ErrorFieldSeparator": {"fullname": "kni.KNI.KNI_ErrorFieldSeparator", "modulename": "kni", "qualname": "KNI.KNI_ErrorFieldSeparator", "kind": "variable", "doc": "

\n", "default_value": "-9"}, "kni.KNI.KNI_ErrorStreamHandle": {"fullname": "kni.KNI.KNI_ErrorStreamHandle", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHandle", "kind": "variable", "doc": "

\n", "default_value": "-10"}, "kni.KNI.KNI_ErrorStreamOpened": {"fullname": "kni.KNI.KNI_ErrorStreamOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpened", "kind": "variable", "doc": "

\n", "default_value": "-11"}, "kni.KNI.KNI_ErrorStreamNotOpened": {"fullname": "kni.KNI.KNI_ErrorStreamNotOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamNotOpened", "kind": "variable", "doc": "

\n", "default_value": "-12"}, "kni.KNI.KNI_ErrorStreamInputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamInputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRecord", "kind": "variable", "doc": "

\n", "default_value": "-13"}, "kni.KNI.KNI_ErrorStreamInputRead": {"fullname": "kni.KNI.KNI_ErrorStreamInputRead", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRead", "kind": "variable", "doc": "

\n", "default_value": "-14"}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamOutputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOutputRecord", "kind": "variable", "doc": "

\n", "default_value": "-15"}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"fullname": "kni.KNI.KNI_ErrorMissingSecondaryHeader", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingSecondaryHeader", "kind": "variable", "doc": "

\n", "default_value": "-16"}, "kni.KNI.KNI_ErrorMissingExternalTable": {"fullname": "kni.KNI.KNI_ErrorMissingExternalTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingExternalTable", "kind": "variable", "doc": "

\n", "default_value": "-17"}, "kni.KNI.KNI_ErrorDataRoot": {"fullname": "kni.KNI.KNI_ErrorDataRoot", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataRoot", "kind": "variable", "doc": "

\n", "default_value": "-18"}, "kni.KNI.KNI_ErrorDataPath": {"fullname": "kni.KNI.KNI_ErrorDataPath", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataPath", "kind": "variable", "doc": "

\n", "default_value": "-19"}, "kni.KNI.KNI_ErrorDataTableFile": {"fullname": "kni.KNI.KNI_ErrorDataTableFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataTableFile", "kind": "variable", "doc": "

\n", "default_value": "-20"}, "kni.KNI.KNI_ErrorLoadDataTable": {"fullname": "kni.KNI.KNI_ErrorLoadDataTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorLoadDataTable", "kind": "variable", "doc": "

\n", "default_value": "-21"}, "kni.KNI.KNI_ErrorMemoryOverflow": {"fullname": "kni.KNI.KNI_ErrorMemoryOverflow", "modulename": "kni", "qualname": "KNI.KNI_ErrorMemoryOverflow", "kind": "variable", "doc": "

\n", "default_value": "-22"}, "kni.KNI.KNI_ErrorStreamOpening": {"fullname": "kni.KNI.KNI_ErrorStreamOpening", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpening", "kind": "variable", "doc": "

\n", "default_value": "-23"}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"fullname": "kni.KNI.KNI_ErrorStreamOpeningNotFinished", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpeningNotFinished", "kind": "variable", "doc": "

\n", "default_value": "-24"}, "kni.KNI.KNI_ErrorLogFile": {"fullname": "kni.KNI.KNI_ErrorLogFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorLogFile", "kind": "variable", "doc": "

\n", "default_value": "-25"}, "kni.KNI.KNI_MaxStreamNumber": {"fullname": "kni.KNI.KNI_MaxStreamNumber", "modulename": "kni", "qualname": "KNI.KNI_MaxStreamNumber", "kind": "variable", "doc": "

\n", "default_value": "512"}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"fullname": "kni.KNI.KNI_DefaultMaxStreamMemory", "modulename": "kni", "qualname": "KNI.KNI_DefaultMaxStreamMemory", "kind": "variable", "doc": "

\n", "default_value": "100"}, "kni.KNI.KNI_MaxPathNameLength": {"fullname": "kni.KNI.KNI_MaxPathNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxPathNameLength", "kind": "variable", "doc": "

\n", "default_value": "1024"}, "kni.KNI.KNI_MaxDictionaryNameLength": {"fullname": "kni.KNI.KNI_MaxDictionaryNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxDictionaryNameLength", "kind": "variable", "doc": "

\n", "default_value": "128"}, "kni.KNI.KNI_MaxRecordLength": {"fullname": "kni.KNI.KNI_MaxRecordLength", "modulename": "kni", "qualname": "KNI.KNI_MaxRecordLength", "kind": "variable", "doc": "

\n", "default_value": "8388608"}, "kni.KNI.get_version": {"fullname": "kni.KNI.get_version", "modulename": "kni", "qualname": "KNI.get_version", "kind": "function", "doc": "

Get KNI version as integer (10*major + minor).

\n", "signature": "(self) -> int:", "funcdef": "def"}, "kni.KNI.get_full_version": {"fullname": "kni.KNI.get_full_version", "modulename": "kni", "qualname": "KNI.get_full_version", "kind": "function", "doc": "

Get KNI full version string.

\n", "signature": "(self) -> str:", "funcdef": "def"}, "kni.KNI.set_log_file_name": {"fullname": "kni.KNI.set_log_file_name", "modulename": "kni", "qualname": "KNI.set_log_file_name", "kind": "function", "doc": "

Set the log file name for error messages.

\n\n

Args:\n log_file_name: Path to log file (str or bytes, empty string for no logging)

\n\n

Raises:\n KNIError: If setting log file fails\n TypeError: If log_file_name is not str or bytes

\n", "signature": "(self, log_file_name: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.open_stream": {"fullname": "kni.KNI.open_stream", "modulename": "kni", "qualname": "KNI.open_stream", "kind": "function", "doc": "

Open a KNI stream for recoding.

\n\n

Args:\n dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path)\n dictionary_name: Name of the dictionary to use (str or bytes)\n header_line: Header line with field names (str or bytes)\n field_separator: Character used to separate fields (str or bytes, default: tab)

\n\n

Returns:\n Stream handle (positive integer)

\n\n

Raises:\n KNIError: If opening stream fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tdictionary_file_path: str | bytes | pathlib.Path,\tdictionary_name: str | bytes,\theader_line: str | bytes,\tfield_separator: str | bytes = '\\t') -> int:", "funcdef": "def"}, "kni.KNI.close_stream": {"fullname": "kni.KNI.close_stream", "modulename": "kni", "qualname": "KNI.close_stream", "kind": "function", "doc": "

Close a KNI stream.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If closing stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle: int) -> None:", "funcdef": "def"}, "kni.KNI.recode_stream_record": {"fullname": "kni.KNI.recode_stream_record", "modulename": "kni", "qualname": "KNI.recode_stream_record", "kind": "function", "doc": "

Recode an input record using the stream's dictionary.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n input_record: Input record string or bytes\n max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

\n\n

Returns:\n Recoded output string

\n\n

Raises:\n KNIError: If recoding fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tinput_record: str | bytes,\tmax_output_length: int | None = None) -> str:", "funcdef": "def"}, "kni.KNI.set_secondary_header_line": {"fullname": "kni.KNI.set_secondary_header_line", "modulename": "kni", "qualname": "KNI.set_secondary_header_line", "kind": "function", "doc": "

Set the header line of a secondary table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n header_line: Header line with field names (str or bytes)

\n\n

Raises:\n KNIError: If setting secondary header fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_path: str | bytes,\theader_line: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.set_external_table": {"fullname": "kni.KNI.set_external_table", "modulename": "kni", "qualname": "KNI.set_external_table", "kind": "function", "doc": "

Set the name of a data file for an external table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_root: Root dictionary of the external table (str or bytes)\n data_path: Data path for secondary external tables (str or bytes, empty for root)\n data_table_file_name: Path to the external table data file (str or bytes)

\n\n

Raises:\n KNIError: If setting external table fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_root: str | bytes,\tdata_path: str | bytes,\tdata_table_file_name: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.finish_opening_stream": {"fullname": "kni.KNI.finish_opening_stream", "modulename": "kni", "qualname": "KNI.finish_opening_stream", "kind": "function", "doc": "

Finish opening a stream (multi-table only).

\n\n

Must be called after all secondary headers and external tables are set.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If finishing opening stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle: int) -> None:", "funcdef": "def"}, "kni.KNI.set_secondary_input_record": {"fullname": "kni.KNI.set_secondary_input_record", "modulename": "kni", "qualname": "KNI.set_secondary_input_record", "kind": "function", "doc": "

Set a secondary input record for multi-table recoding.

\n\n

All secondary records must be set before recoding the primary record.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n input_record: Secondary input record string or bytes

\n\n

Raises:\n KNIError: If setting secondary input record fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_path: str | bytes,\tinput_record: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.get_stream_max_memory": {"fullname": "kni.KNI.get_stream_max_memory", "modulename": "kni", "qualname": "KNI.get_stream_max_memory", "kind": "function", "doc": "

Get the maximum amount of memory (in MB) for stream opening.

\n\n

Returns:\n Maximum memory in MB

\n", "signature": "(self) -> int:", "funcdef": "def"}, "kni.KNI.set_stream_max_memory": {"fullname": "kni.KNI.set_stream_max_memory", "modulename": "kni", "qualname": "KNI.set_stream_max_memory", "kind": "function", "doc": "

Set the maximum amount of memory (in MB) for stream opening.

\n\n

Args:\n max_mb: Maximum memory in MB

\n\n

Returns:\n Accepted value (bounded by system limits)

\n", "signature": "(self, max_mb: int) -> int:", "funcdef": "def"}, "kni.KNI.get_error_message": {"fullname": "kni.KNI.get_error_message", "modulename": "kni", "qualname": "KNI.get_error_message", "kind": "function", "doc": "

Get a human-readable error message for an error code.

\n\n

Args:\n error_code: KNI error code

\n\n

Returns:\n Error message string

\n", "signature": "(error_code: int) -> str:", "funcdef": "def"}, "kni.KNIError": {"fullname": "kni.KNIError", "modulename": "kni", "qualname": "KNIError", "kind": "class", "doc": "

Exception raised for KNI errors.

\n", "bases": "builtins.Exception"}, "kni.KNIError.__init__": {"fullname": "kni.KNIError.__init__", "modulename": "kni", "qualname": "KNIError.__init__", "kind": "function", "doc": "

\n", "signature": "(message, error_code=None)"}, "kni.KNIError.error_code": {"fullname": "kni.KNIError.error_code", "modulename": "kni", "qualname": "KNIError.error_code", "kind": "variable", "doc": "

\n"}}, "docInfo": {"kni": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 33}, "kni.KNI": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "kni.KNI.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 32}, "kni.KNI.KNI_OK": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorRunningFunction": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingDictionary": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorTooManyStreams": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorFieldSeparator": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHandle": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamNotOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRead": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingExternalTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataRoot": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataPath": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataTableFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLoadDataTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMemoryOverflow": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpening": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLogFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxStreamNumber": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxPathNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxDictionaryNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxRecordLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.get_version": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 11}, "kni.KNI.get_full_version": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 8}, "kni.KNI.set_log_file_name": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 49}, "kni.KNI.open_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 114, "bases": 0, "doc": 81}, "kni.KNI.close_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 32}, "kni.KNI.recode_stream_record": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 59}, "kni.KNI.set_secondary_header_line": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 61}, "kni.KNI.set_external_table": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 82}, "kni.KNI.finish_opening_stream": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 51}, "kni.KNI.set_secondary_input_record": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 71}, "kni.KNI.get_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 21}, "kni.KNI.set_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 33}, "kni.KNI.get_error_message": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 27}, "kni.KNIError": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "kni.KNIError.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "kni.KNIError.error_code": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 50, "save": true}, "index": {"qualname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}, "kni.KNI.KNI_OK": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.4142135623730951}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 46, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "fullname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 1.4142135623730951}, "kni.KNI.get_full_version": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1.4142135623730951}, "kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 50, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "1": {"0": {"0": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}, "2": {"4": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}, "2": {"8": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}, "8": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}, "2": {"0": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}, "2": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}, "5": {"1": {"2": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}, "8": {"3": {"8": {"8": {"6": {"0": {"8": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 25}}, "signature": {"root": {"3": {"9": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.__init__": {"tf": 6.082762530298219}, "kni.KNI.get_version": {"tf": 3.4641016151377544}, "kni.KNI.get_full_version": {"tf": 3.4641016151377544}, "kni.KNI.set_log_file_name": {"tf": 5}, "kni.KNI.open_stream": {"tf": 9.486832980505138}, "kni.KNI.close_stream": {"tf": 4.47213595499958}, "kni.KNI.recode_stream_record": {"tf": 7.483314773547883}, "kni.KNI.set_secondary_header_line": {"tf": 7.0710678118654755}, "kni.KNI.set_external_table": {"tf": 8}, "kni.KNI.finish_opening_stream": {"tf": 4.47213595499958}, "kni.KNI.set_secondary_input_record": {"tf": 7.0710678118654755}, "kni.KNI.get_stream_max_memory": {"tf": 3.4641016151377544}, "kni.KNI.set_stream_max_memory": {"tf": 4.47213595499958}, "kni.KNI.get_error_message": {"tf": 4}, "kni.KNIError.__init__": {"tf": 4}}, "df": 15, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 12}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 9}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}, "b": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.__init__": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}}}, "doc": {"root": {"1": {"0": {"docs": {}, "df": 0, "*": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {"kni": {"tf": 2.23606797749979}, "kni.KNI": {"tf": 1.7320508075688772}, "kni.KNI.__init__": {"tf": 2.449489742783178}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 2}, "kni.KNI.get_full_version": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 2.8284271247461903}, "kni.KNI.open_stream": {"tf": 3.3166247903554}, "kni.KNI.close_stream": {"tf": 2.6457513110645907}, "kni.KNI.recode_stream_record": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_header_line": {"tf": 2.8284271247461903}, "kni.KNI.set_external_table": {"tf": 2.8284271247461903}, "kni.KNI.finish_opening_stream": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_input_record": {"tf": 3.1622776601683795}, "kni.KNI.get_stream_max_memory": {"tf": 2.23606797749979}, "kni.KNI.set_stream_max_memory": {"tf": 2.8284271247461903}, "kni.KNI.get_error_message": {"tf": 2.6457513110645907}, "kni.KNIError": {"tf": 1.7320508075688772}, "kni.KNIError.__init__": {"tf": 1.7320508075688772}, "kni.KNIError.error_code": {"tf": 1.7320508075688772}}, "df": 50, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.7320508075688772}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2}}, "df": 2}}}}, "f": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 9}, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni": {"tf": 1}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 10}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 4}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 10}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 2.23606797749979}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"kni": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}, "b": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.7320508075688772}}, "df": 2}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}, "n": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 3, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}}, "df": 1, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.close_stream": {"tf": 2.23606797749979}, "kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 2.23606797749979}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 9}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 4}}}}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}, "d": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 2}}, "df": 2, "s": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1.7320508075688772}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. From 0849cd0403124e063f474fb834da68e4109d87b5 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Tue, 19 May 2026 16:05:05 +0200 Subject: [PATCH 7/8] After review --- README.md | 2 +- python/KNIRecodeFile.py | 6 ------ python/KNIRecodeMTFiles.py | 3 --- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/README.md b/README.md index 7e80bc0..b562355 100644 --- a/README.md +++ b/README.md @@ -162,7 +162,7 @@ The files are located in [python directory](python/). They use the `kni` Python ## Requirements -- Python 3.9 or later +- Python 3.10 or later - The `khiops-kni` package: ```bash diff --git a/python/KNIRecodeFile.py b/python/KNIRecodeFile.py index f226622..bbbccf0 100755 --- a/python/KNIRecodeFile.py +++ b/python/KNIRecodeFile.py @@ -129,15 +129,9 @@ def main(): args.error_file, ) return 0 - except KNIError as e: - print(f"Error: {e}", file=sys.stderr) - return 1 except FileNotFoundError as e: print(f"Error: File not found: {e.filename}", file=sys.stderr) return 1 - except ValueError as e: - print(f"Error: {e}", file=sys.stderr) - return 1 except Exception as e: print(f"Error: {e}", file=sys.stderr) return 1 diff --git a/python/KNIRecodeMTFiles.py b/python/KNIRecodeMTFiles.py index 84d5311..7756117 100755 --- a/python/KNIRecodeMTFiles.py +++ b/python/KNIRecodeMTFiles.py @@ -258,9 +258,6 @@ def main(): args.max_memory, ) return 0 - except KNIError as e: - print(f"Error: {e}", file=sys.stderr) - return 1 except FileNotFoundError as e: print(f"Error: File not found: {e.filename}", file=sys.stderr) return 1 From 2502f7ae70b5c4d8c19a1203b4c08ca4f0ccf979 Mon Sep 17 00:00:00 2001 From: bruno <97033386+bruno-at-orange@users.noreply.github.com> Date: Wed, 20 May 2026 14:54:24 +0200 Subject: [PATCH 8/8] Python API in markdown --- README.md | 2 +- python/docs/index.html | 7 - python/docs/kni.html | 1880 ---------------------------------------- python/docs/kni.md | 339 ++++++++ python/docs/search.js | 46 - 5 files changed, 340 insertions(+), 1934 deletions(-) delete mode 100644 python/docs/index.html delete mode 100644 python/docs/kni.html create mode 100644 python/docs/kni.md delete mode 100644 python/docs/search.js diff --git a/README.md b/README.md index b562355..0a908cf 100644 --- a/README.md +++ b/README.md @@ -176,7 +176,7 @@ This installs both the `kni` Python module and the KhiopsNativeInterface shared - `KNIRecodeFile.py`: Single-table recoding example - `KNIRecodeMTFiles.py`: Multi-table recoding example -**API Documentation**: See [Python API Reference](python/docs/index.html) for detailed documentation of the `kni` module. +**API Documentation**: See [Python API Reference](python/docs/kni.md) for detailed documentation of the `kni` module. ## Launch diff --git a/python/docs/index.html b/python/docs/index.html deleted file mode 100644 index 0cb5d1b..0000000 --- a/python/docs/index.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/python/docs/kni.html b/python/docs/kni.html deleted file mode 100644 index 8a1f5ef..0000000 --- a/python/docs/kni.html +++ /dev/null @@ -1,1880 +0,0 @@ - - - - - - - kni API documentation - - - - - - - - - -
-
-

-kni

- -

Khiops Native Interface (KNI) Python Package

- -

This package provides Python bindings for the Khiops Native Interface (KNI), -enabling direct deployment of Khiops models from Python without temporary files.

-
- - - - - -
 1# Copyright (c) 2023-2026 Orange. All rights reserved.
- 2# This software is distributed under the BSD 3-Clause-clear License, the text of which is available
- 3# at https://spdx.org/licenses/BSD-3-Clause-Clear.html or see the "LICENSE" file for more details.
- 4
- 5"""
- 6Khiops Native Interface (KNI) Python Package
- 7
- 8This package provides Python bindings for the Khiops Native Interface (KNI),
- 9enabling direct deployment of Khiops models from Python without temporary files.
-10"""
-11
-12from .kni import KNI, KNIError
-13
-14__all__ = ["KNI", "KNIError"]
-15
-16# Get version from package metadata (set by scikit-build-core during wheel building)
-17try:
-18    from importlib.metadata import version
-19
-20    __version__ = version("khiops-kni")
-21except Exception:
-22    # Fallback for development installations
-23    __version__ = "0.0.0.dev0"
-
- - -
-
- -
- - class - KNI: - - - -
- -
 29class KNI:
- 30    """Python wrapper for Khiops Native Interface using ctypes."""
- 31
- 32    # Error codes
- 33    KNI_OK = 0
- 34    KNI_ErrorRunningFunction = -1
- 35    KNI_ErrorDictionaryFileName = -2
- 36    KNI_ErrorDictionaryMissingFile = -3
- 37    KNI_ErrorDictionaryFileFormat = -4
- 38    KNI_ErrorDictionaryName = -5
- 39    KNI_ErrorMissingDictionary = -6
- 40    KNI_ErrorTooManyStreams = -7
- 41    KNI_ErrorStreamHeaderLine = -8
- 42    KNI_ErrorFieldSeparator = -9
- 43    KNI_ErrorStreamHandle = -10
- 44    KNI_ErrorStreamOpened = -11
- 45    KNI_ErrorStreamNotOpened = -12
- 46    KNI_ErrorStreamInputRecord = -13
- 47    KNI_ErrorStreamInputRead = -14
- 48    KNI_ErrorStreamOutputRecord = -15
- 49    KNI_ErrorMissingSecondaryHeader = -16
- 50    KNI_ErrorMissingExternalTable = -17
- 51    KNI_ErrorDataRoot = -18
- 52    KNI_ErrorDataPath = -19
- 53    KNI_ErrorDataTableFile = -20
- 54    KNI_ErrorLoadDataTable = -21
- 55    KNI_ErrorMemoryOverflow = -22
- 56    KNI_ErrorStreamOpening = -23
- 57    KNI_ErrorStreamOpeningNotFinished = -24
- 58    KNI_ErrorLogFile = -25
- 59
- 60    # Constants
- 61    KNI_MaxStreamNumber = 512
- 62    KNI_DefaultMaxStreamMemory = 100
- 63    KNI_MaxPathNameLength = 1024
- 64    KNI_MaxDictionaryNameLength = 128
- 65    KNI_MaxRecordLength = 8 * 1024 * 1024  # 8 MB
- 66
- 67    def __init__(self, library_path: str | bytes | Path | None = None):
- 68        """
- 69        Initialize the KNI wrapper.
- 70
- 71        Args:
- 72            library_path: Optional path to the KNI shared library (str, bytes, or
- 73                         pathlib.Path). If None, attempts to locate it automatically.
- 74        """
- 75        self._lib = self._load_library(library_path)
- 76        self._setup_function_signatures()
- 77
- 78    def _load_library(self, library_path: str | bytes | Path | None):
- 79        """Load the KNI shared library."""
- 80        if library_path:
- 81            return ctypes.CDLL(os.fsdecode(library_path))
- 82
- 83        # Try to locate library automatically
- 84        system = platform.system()
- 85        if system == "Windows":
- 86            lib_name = "KhiopsNativeInterface.dll"
- 87        elif system == "Linux":
- 88            lib_name = "libKhiopsNativeInterface.so"
- 89        elif system == "Darwin":  # macOS
- 90            lib_name = "libKhiopsNativeInterface.dylib"
- 91        else:
- 92            raise RuntimeError(f"Unsupported platform: {system}")
- 93
- 94        # When installed via pip, the shared library is placed in the Python
- 95        # scripts directory (bin/ on Unix, Scripts/ on Windows)
- 96        scripts_dir = sysconfig.get_path("scripts")
- 97        if scripts_dir:
- 98            lib_path = Path(scripts_dir) / lib_name
- 99            if lib_path.exists():
-100                return ctypes.CDLL(str(lib_path))
-101
-102        raise RuntimeError(
-103            f"Could not find {lib_name}. Reinstall the khiops-kni package."
-104        )
-105
-106    def _setup_function_signatures(self):
-107        """Setup function signatures for KNI library functions."""
-108        # KNIGetVersion
-109        self._lib.KNIGetVersion.argtypes = []
-110        self._lib.KNIGetVersion.restype = ctypes.c_int
-111
-112        # KNIGetFullVersion
-113        self._lib.KNIGetFullVersion.argtypes = []
-114        self._lib.KNIGetFullVersion.restype = ctypes.c_char_p
-115
-116        # KNISetLogFileName
-117        self._lib.KNISetLogFileName.argtypes = [ctypes.c_char_p]
-118        self._lib.KNISetLogFileName.restype = ctypes.c_int
-119
-120        # KNIOpenStream
-121        self._lib.KNIOpenStream.argtypes = [
-122            ctypes.c_char_p,  # sDictionaryFileName
-123            ctypes.c_char_p,  # sDictionaryName
-124            ctypes.c_char_p,  # sStreamHeaderLine
-125            ctypes.c_char,  # cFieldSeparator
-126        ]
-127        self._lib.KNIOpenStream.restype = ctypes.c_int
-128
-129        # KNICloseStream
-130        self._lib.KNICloseStream.argtypes = [ctypes.c_int]
-131        self._lib.KNICloseStream.restype = ctypes.c_int
-132
-133        # KNIRecodeStreamRecord
-134        self._lib.KNIRecodeStreamRecord.argtypes = [
-135            ctypes.c_int,  # hStream
-136            ctypes.c_char_p,  # sInputRecord
-137            ctypes.c_char_p,  # sOutputRecord
-138            ctypes.c_int,  # nOutputMaxLength
-139        ]
-140        self._lib.KNIRecodeStreamRecord.restype = ctypes.c_int
-141
-142        # Multi-table functions
-143        # KNISetSecondaryHeaderLine
-144        self._lib.KNISetSecondaryHeaderLine.argtypes = [
-145            ctypes.c_int,  # hStream
-146            ctypes.c_char_p,  # sDataPath
-147            ctypes.c_char_p,  # sStreamSecondaryHeaderLine
-148        ]
-149        self._lib.KNISetSecondaryHeaderLine.restype = ctypes.c_int
-150
-151        # KNISetExternalTable
-152        self._lib.KNISetExternalTable.argtypes = [
-153            ctypes.c_int,  # hStream
-154            ctypes.c_char_p,  # sDataRoot
-155            ctypes.c_char_p,  # sDataPath
-156            ctypes.c_char_p,  # sDataTableFileName
-157        ]
-158        self._lib.KNISetExternalTable.restype = ctypes.c_int
-159
-160        # KNIFinishOpeningStream
-161        self._lib.KNIFinishOpeningStream.argtypes = [ctypes.c_int]
-162        self._lib.KNIFinishOpeningStream.restype = ctypes.c_int
-163
-164        # KNISetSecondaryInputRecord
-165        self._lib.KNISetSecondaryInputRecord.argtypes = [
-166            ctypes.c_int,  # hStream
-167            ctypes.c_char_p,  # sDataPath
-168            ctypes.c_char_p,  # sStreamSecondaryInputRecord
-169        ]
-170        self._lib.KNISetSecondaryInputRecord.restype = ctypes.c_int
-171
-172        # Advanced parameters
-173        # KNIGetStreamMaxMemory
-174        self._lib.KNIGetStreamMaxMemory.argtypes = []
-175        self._lib.KNIGetStreamMaxMemory.restype = ctypes.c_int
-176
-177        # KNISetStreamMaxMemory
-178        self._lib.KNISetStreamMaxMemory.argtypes = [ctypes.c_int]
-179        self._lib.KNISetStreamMaxMemory.restype = ctypes.c_int
-180
-181    @staticmethod
-182    def _to_bytes(value: str | bytes, param_name: str) -> bytes:
-183        """Encode a str or bytes parameter to UTF-8 bytes."""
-184        if isinstance(value, str):
-185            return value.encode("utf-8")
-186        if isinstance(value, bytes):
-187            return value
-188        raise TypeError(
-189            f"{param_name} must be str or bytes, not {type(value).__name__}"
-190        )
-191
-192    def get_version(self) -> int:
-193        """Get KNI version as integer (10*major + minor)."""
-194        return self._lib.KNIGetVersion()
-195
-196    def get_full_version(self) -> str:
-197        """Get KNI full version string."""
-198        return self._lib.KNIGetFullVersion().decode("utf-8")
-199
-200    def set_log_file_name(self, log_file_name: str | bytes) -> None:
-201        """
-202        Set the log file name for error messages.
-203
-204        Args:
-205            log_file_name: Path to log file (str or bytes, empty string for no logging)
-206
-207        Raises:
-208            KNIError: If setting log file fails
-209            TypeError: If log_file_name is not str or bytes
-210        """
-211        log_file_name_bytes = self._to_bytes(log_file_name, "log_file_name")
-212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
-213        if ret_code != self.KNI_OK:
-214            raise KNIError(
-215                f"Failed to set log file: {self.get_error_message(ret_code)}",
-216                ret_code,
-217            )
-218
-219    def open_stream(
-220        self,
-221        dictionary_file_path: str | bytes | Path,
-222        dictionary_name: str | bytes,
-223        header_line: str | bytes,
-224        field_separator: str | bytes = "\t",
-225    ) -> int:
-226        """
-227        Open a KNI stream for recoding.
-228
-229        Args:
-230            dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path)
-231            dictionary_name: Name of the dictionary to use (str or bytes)
-232            header_line: Header line with field names (str or bytes)
-233            field_separator: Character used to separate fields (str or bytes, default: tab)
-234
-235        Returns:
-236            Stream handle (positive integer)
-237
-238        Raises:
-239            KNIError: If opening stream fails
-240            TypeError: If arguments have invalid types
-241        """
-242        # Type checking and conversion
-243        if isinstance(dictionary_file_path, Path):
-244            dictionary_file_path = str(dictionary_file_path)
-245        dictionary_file_path_bytes = self._to_bytes(
-246            dictionary_file_path, "dictionary_file_path"
-247        )
-248        dictionary_name_bytes = self._to_bytes(dictionary_name, "dictionary_name")
-249        header_line_bytes = self._to_bytes(header_line, "header_line")
-250        field_separator_bytes = self._to_bytes(field_separator, "field_separator")
-251        if len(field_separator_bytes) == 0:
-252            raise ValueError("field_separator must not be empty")
-253        field_separator_byte = field_separator_bytes[0]
-254
-255        stream_handle = self._lib.KNIOpenStream(
-256            dictionary_file_path_bytes,
-257            dictionary_name_bytes,
-258            header_line_bytes,
-259            field_separator_byte,
-260        )
-261        if stream_handle < 0:
-262            raise KNIError(
-263                f"Failed to open stream: {self.get_error_message(stream_handle)}",
-264                stream_handle,
-265            )
-266        return stream_handle
-267
-268    def close_stream(self, stream_handle: int) -> None:
-269        """
-270        Close a KNI stream.
-271
-272        Args:
-273            stream_handle: Handle returned by open_stream
-274
-275        Raises:
-276            KNIError: If closing stream fails
-277            TypeError: If stream_handle is not int
-278        """
-279        if not isinstance(stream_handle, int):
-280            raise TypeError(
-281                f"stream_handle must be int, not {type(stream_handle).__name__}"
-282            )
-283        ret_code = self._lib.KNICloseStream(stream_handle)
-284        if ret_code != self.KNI_OK:
-285            raise KNIError(
-286                f"Failed to close stream: {self.get_error_message(ret_code)}",
-287                ret_code,
-288            )
-289
-290    def recode_stream_record(
-291        self,
-292        stream_handle: int,
-293        input_record: str | bytes,
-294        max_output_length: int | None = None,
-295    ) -> str:
-296        """
-297        Recode an input record using the stream's dictionary.
-298
-299        Args:
-300            stream_handle: Handle returned by open_stream
-301            input_record: Input record string or bytes
-302            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
-303
-304        Returns:
-305            Recoded output string
-306
-307        Raises:
-308            KNIError: If recoding fails
-309            TypeError: If arguments have invalid types
-310        """
-311        if not isinstance(stream_handle, int):
-312            raise TypeError(
-313                f"stream_handle must be int, not {type(stream_handle).__name__}"
-314            )
-315        input_record_bytes = self._to_bytes(input_record, "input_record")
-316        if max_output_length is None:
-317            max_output_length = self.KNI_MaxRecordLength
-318        elif not isinstance(max_output_length, int):
-319            raise TypeError(
-320                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
-321            )
-322
-323        output_buffer = ctypes.create_string_buffer(max_output_length)
-324        ret_code = self._lib.KNIRecodeStreamRecord(
-325            stream_handle,
-326            input_record_bytes,
-327            output_buffer,
-328            max_output_length,
-329        )
-330
-331        if ret_code != self.KNI_OK:
-332            raise KNIError(
-333                f"Failed to recode record: {self.get_error_message(ret_code)}",
-334                ret_code,
-335            )
-336        return output_buffer.value.decode("utf-8")
-337
-338    def set_secondary_header_line(
-339        self, stream_handle: int, data_path: str | bytes, header_line: str | bytes
-340    ) -> None:
-341        """
-342        Set the header line of a secondary table (multi-table only).
-343
-344        Args:
-345            stream_handle: Handle returned by open_stream
-346            data_path: Data path identifying the secondary table (str or bytes)
-347            header_line: Header line with field names (str or bytes)
-348
-349        Raises:
-350            KNIError: If setting secondary header fails
-351            TypeError: If arguments have invalid types
-352        """
-353        if not isinstance(stream_handle, int):
-354            raise TypeError(
-355                f"stream_handle must be int, not {type(stream_handle).__name__}"
-356            )
-357        data_path_bytes = self._to_bytes(data_path, "data_path")
-358        header_line_bytes = self._to_bytes(header_line, "header_line")
-359        ret_code = self._lib.KNISetSecondaryHeaderLine(
-360            stream_handle, data_path_bytes, header_line_bytes
-361        )
-362        if ret_code != self.KNI_OK:
-363            raise KNIError(
-364                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
-365                ret_code,
-366            )
-367
-368    def set_external_table(
-369        self,
-370        stream_handle: int,
-371        data_root: str | bytes,
-372        data_path: str | bytes,
-373        data_table_file_name: str | bytes,
-374    ) -> None:
-375        """
-376        Set the name of a data file for an external table (multi-table only).
-377
-378        Args:
-379            stream_handle: Handle returned by open_stream
-380            data_root: Root dictionary of the external table (str or bytes)
-381            data_path: Data path for secondary external tables (str or bytes, empty for root)
-382            data_table_file_name: Path to the external table data file (str or bytes)
-383
-384        Raises:
-385            KNIError: If setting external table fails
-386            TypeError: If arguments have invalid types
-387        """
-388        if not isinstance(stream_handle, int):
-389            raise TypeError(
-390                f"stream_handle must be int, not {type(stream_handle).__name__}"
-391            )
-392        data_root_bytes = self._to_bytes(data_root, "data_root")
-393        data_path_bytes = self._to_bytes(data_path, "data_path")
-394        data_table_file_name_bytes = self._to_bytes(
-395            data_table_file_name, "data_table_file_name"
-396        )
-397        ret_code = self._lib.KNISetExternalTable(
-398            stream_handle,
-399            data_root_bytes,
-400            data_path_bytes,
-401            data_table_file_name_bytes,
-402        )
-403        if ret_code != self.KNI_OK:
-404            raise KNIError(
-405                f"Failed to set external table: {self.get_error_message(ret_code)}",
-406                ret_code,
-407            )
-408
-409    def finish_opening_stream(self, stream_handle: int) -> None:
-410        """
-411        Finish opening a stream (multi-table only).
-412
-413        Must be called after all secondary headers and external tables are set.
-414
-415        Args:
-416            stream_handle: Handle returned by open_stream
-417
-418        Raises:
-419            KNIError: If finishing opening stream fails
-420            TypeError: If stream_handle is not int
-421        """
-422        if not isinstance(stream_handle, int):
-423            raise TypeError(
-424                f"stream_handle must be int, not {type(stream_handle).__name__}"
-425            )
-426        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
-427        if ret_code != self.KNI_OK:
-428            raise KNIError(
-429                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
-430                ret_code,
-431            )
-432
-433    def set_secondary_input_record(
-434        self, stream_handle: int, data_path: str | bytes, input_record: str | bytes
-435    ) -> None:
-436        """
-437        Set a secondary input record for multi-table recoding.
-438
-439        All secondary records must be set before recoding the primary record.
-440
-441        Args:
-442            stream_handle: Handle returned by open_stream
-443            data_path: Data path identifying the secondary table (str or bytes)
-444            input_record: Secondary input record string or bytes
-445
-446        Raises:
-447            KNIError: If setting secondary input record fails
-448            TypeError: If arguments have invalid types
-449        """
-450        if not isinstance(stream_handle, int):
-451            raise TypeError(
-452                f"stream_handle must be int, not {type(stream_handle).__name__}"
-453            )
-454        data_path_bytes = self._to_bytes(data_path, "data_path")
-455        input_record_bytes = self._to_bytes(input_record, "input_record")
-456        ret_code = self._lib.KNISetSecondaryInputRecord(
-457            stream_handle, data_path_bytes, input_record_bytes
-458        )
-459        if ret_code != self.KNI_OK:
-460            raise KNIError(
-461                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
-462                ret_code,
-463            )
-464
-465    def get_stream_max_memory(self) -> int:
-466        """
-467        Get the maximum amount of memory (in MB) for stream opening.
-468
-469        Returns:
-470            Maximum memory in MB
-471        """
-472        return self._lib.KNIGetStreamMaxMemory()
-473
-474    def set_stream_max_memory(self, max_mb: int) -> int:
-475        """
-476        Set the maximum amount of memory (in MB) for stream opening.
-477
-478        Args:
-479            max_mb: Maximum memory in MB
-480
-481        Returns:
-482            Accepted value (bounded by system limits)
-483        """
-484        if not isinstance(max_mb, int):
-485            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
-486        return self._lib.KNISetStreamMaxMemory(max_mb)
-487
-488    @staticmethod
-489    def get_error_message(error_code: int) -> str:
-490        """
-491        Get a human-readable error message for an error code.
-492
-493        Args:
-494            error_code: KNI error code
-495
-496        Returns:
-497            Error message string
-498        """
-499        if not isinstance(error_code, int):
-500            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
-501        error_messages = {
-502            KNI.KNI_OK: "Success",
-503            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
-504            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
-505            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
-506            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
-507            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
-508            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
-509            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
-510            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
-511            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
-512            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
-513            KNI.KNI_ErrorStreamOpened: "Stream already opened",
-514            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
-515            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
-516            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
-517            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
-518            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
-519            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
-520            KNI.KNI_ErrorDataRoot: "Bad data root",
-521            KNI.KNI_ErrorDataPath: "Bad data path",
-522            KNI.KNI_ErrorDataTableFile: "Bad data table file",
-523            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
-524            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
-525            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
-526            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
-527            KNI.KNI_ErrorLogFile: "Bad error file",
-528        }
-529        return error_messages.get(error_code, f"Unknown error code: {error_code}")
-
- - -

Python wrapper for Khiops Native Interface using ctypes.

-
- - -
- -
- - KNI(library_path: str | bytes | pathlib.Path | None = None) - - - -
- -
67    def __init__(self, library_path: str | bytes | Path | None = None):
-68        """
-69        Initialize the KNI wrapper.
-70
-71        Args:
-72            library_path: Optional path to the KNI shared library (str, bytes, or
-73                         pathlib.Path). If None, attempts to locate it automatically.
-74        """
-75        self._lib = self._load_library(library_path)
-76        self._setup_function_signatures()
-
- - -

Initialize the KNI wrapper.

- -

Args: - library_path: Optional path to the KNI shared library (str, bytes, or - pathlib.Path). If None, attempts to locate it automatically.

-
- - -
-
-
- KNI_OK = -0 - - -
- - - - -
-
-
- KNI_ErrorRunningFunction = --1 - - -
- - - - -
-
-
- KNI_ErrorDictionaryFileName = --2 - - -
- - - - -
-
-
- KNI_ErrorDictionaryMissingFile = --3 - - -
- - - - -
-
-
- KNI_ErrorDictionaryFileFormat = --4 - - -
- - - - -
-
-
- KNI_ErrorDictionaryName = --5 - - -
- - - - -
-
-
- KNI_ErrorMissingDictionary = --6 - - -
- - - - -
-
-
- KNI_ErrorTooManyStreams = --7 - - -
- - - - -
-
-
- KNI_ErrorStreamHeaderLine = --8 - - -
- - - - -
-
-
- KNI_ErrorFieldSeparator = --9 - - -
- - - - -
-
-
- KNI_ErrorStreamHandle = --10 - - -
- - - - -
-
-
- KNI_ErrorStreamOpened = --11 - - -
- - - - -
-
-
- KNI_ErrorStreamNotOpened = --12 - - -
- - - - -
-
-
- KNI_ErrorStreamInputRecord = --13 - - -
- - - - -
-
-
- KNI_ErrorStreamInputRead = --14 - - -
- - - - -
-
-
- KNI_ErrorStreamOutputRecord = --15 - - -
- - - - -
-
-
- KNI_ErrorMissingSecondaryHeader = --16 - - -
- - - - -
-
-
- KNI_ErrorMissingExternalTable = --17 - - -
- - - - -
-
-
- KNI_ErrorDataRoot = --18 - - -
- - - - -
-
-
- KNI_ErrorDataPath = --19 - - -
- - - - -
-
-
- KNI_ErrorDataTableFile = --20 - - -
- - - - -
-
-
- KNI_ErrorLoadDataTable = --21 - - -
- - - - -
-
-
- KNI_ErrorMemoryOverflow = --22 - - -
- - - - -
-
-
- KNI_ErrorStreamOpening = --23 - - -
- - - - -
-
-
- KNI_ErrorStreamOpeningNotFinished = --24 - - -
- - - - -
-
-
- KNI_ErrorLogFile = --25 - - -
- - - - -
-
-
- KNI_MaxStreamNumber = -512 - - -
- - - - -
-
-
- KNI_DefaultMaxStreamMemory = -100 - - -
- - - - -
-
-
- KNI_MaxPathNameLength = -1024 - - -
- - - - -
-
-
- KNI_MaxDictionaryNameLength = -128 - - -
- - - - -
-
-
- KNI_MaxRecordLength = -8388608 - - -
- - - - -
-
- -
- - def - get_version(self) -> int: - - - -
- -
192    def get_version(self) -> int:
-193        """Get KNI version as integer (10*major + minor)."""
-194        return self._lib.KNIGetVersion()
-
- - -

Get KNI version as integer (10*major + minor).

-
- - -
-
- -
- - def - get_full_version(self) -> str: - - - -
- -
196    def get_full_version(self) -> str:
-197        """Get KNI full version string."""
-198        return self._lib.KNIGetFullVersion().decode("utf-8")
-
- - -

Get KNI full version string.

-
- - -
-
- -
- - def - set_log_file_name(self, log_file_name: str | bytes) -> None: - - - -
- -
200    def set_log_file_name(self, log_file_name: str | bytes) -> None:
-201        """
-202        Set the log file name for error messages.
-203
-204        Args:
-205            log_file_name: Path to log file (str or bytes, empty string for no logging)
-206
-207        Raises:
-208            KNIError: If setting log file fails
-209            TypeError: If log_file_name is not str or bytes
-210        """
-211        log_file_name_bytes = self._to_bytes(log_file_name, "log_file_name")
-212        ret_code = self._lib.KNISetLogFileName(log_file_name_bytes)
-213        if ret_code != self.KNI_OK:
-214            raise KNIError(
-215                f"Failed to set log file: {self.get_error_message(ret_code)}",
-216                ret_code,
-217            )
-
- - -

Set the log file name for error messages.

- -

Args: - log_file_name: Path to log file (str or bytes, empty string for no logging)

- -

Raises: - KNIError: If setting log file fails - TypeError: If log_file_name is not str or bytes

-
- - -
-
- -
- - def - open_stream( self, dictionary_file_path: str | bytes | pathlib.Path, dictionary_name: str | bytes, header_line: str | bytes, field_separator: str | bytes = '\t') -> int: - - - -
- -
219    def open_stream(
-220        self,
-221        dictionary_file_path: str | bytes | Path,
-222        dictionary_name: str | bytes,
-223        header_line: str | bytes,
-224        field_separator: str | bytes = "\t",
-225    ) -> int:
-226        """
-227        Open a KNI stream for recoding.
-228
-229        Args:
-230            dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path)
-231            dictionary_name: Name of the dictionary to use (str or bytes)
-232            header_line: Header line with field names (str or bytes)
-233            field_separator: Character used to separate fields (str or bytes, default: tab)
-234
-235        Returns:
-236            Stream handle (positive integer)
-237
-238        Raises:
-239            KNIError: If opening stream fails
-240            TypeError: If arguments have invalid types
-241        """
-242        # Type checking and conversion
-243        if isinstance(dictionary_file_path, Path):
-244            dictionary_file_path = str(dictionary_file_path)
-245        dictionary_file_path_bytes = self._to_bytes(
-246            dictionary_file_path, "dictionary_file_path"
-247        )
-248        dictionary_name_bytes = self._to_bytes(dictionary_name, "dictionary_name")
-249        header_line_bytes = self._to_bytes(header_line, "header_line")
-250        field_separator_bytes = self._to_bytes(field_separator, "field_separator")
-251        if len(field_separator_bytes) == 0:
-252            raise ValueError("field_separator must not be empty")
-253        field_separator_byte = field_separator_bytes[0]
-254
-255        stream_handle = self._lib.KNIOpenStream(
-256            dictionary_file_path_bytes,
-257            dictionary_name_bytes,
-258            header_line_bytes,
-259            field_separator_byte,
-260        )
-261        if stream_handle < 0:
-262            raise KNIError(
-263                f"Failed to open stream: {self.get_error_message(stream_handle)}",
-264                stream_handle,
-265            )
-266        return stream_handle
-
- - -

Open a KNI stream for recoding.

- -

Args: - dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path) - dictionary_name: Name of the dictionary to use (str or bytes) - header_line: Header line with field names (str or bytes) - field_separator: Character used to separate fields (str or bytes, default: tab)

- -

Returns: - Stream handle (positive integer)

- -

Raises: - KNIError: If opening stream fails - TypeError: If arguments have invalid types

-
- - -
-
- -
- - def - close_stream(self, stream_handle: int) -> None: - - - -
- -
268    def close_stream(self, stream_handle: int) -> None:
-269        """
-270        Close a KNI stream.
-271
-272        Args:
-273            stream_handle: Handle returned by open_stream
-274
-275        Raises:
-276            KNIError: If closing stream fails
-277            TypeError: If stream_handle is not int
-278        """
-279        if not isinstance(stream_handle, int):
-280            raise TypeError(
-281                f"stream_handle must be int, not {type(stream_handle).__name__}"
-282            )
-283        ret_code = self._lib.KNICloseStream(stream_handle)
-284        if ret_code != self.KNI_OK:
-285            raise KNIError(
-286                f"Failed to close stream: {self.get_error_message(ret_code)}",
-287                ret_code,
-288            )
-
- - -

Close a KNI stream.

- -

Args: - stream_handle: Handle returned by open_stream

- -

Raises: - KNIError: If closing stream fails - TypeError: If stream_handle is not int

-
- - -
-
- -
- - def - recode_stream_record( self, stream_handle: int, input_record: str | bytes, max_output_length: int | None = None) -> str: - - - -
- -
290    def recode_stream_record(
-291        self,
-292        stream_handle: int,
-293        input_record: str | bytes,
-294        max_output_length: int | None = None,
-295    ) -> str:
-296        """
-297        Recode an input record using the stream's dictionary.
-298
-299        Args:
-300            stream_handle: Handle returned by open_stream
-301            input_record: Input record string or bytes
-302            max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)
-303
-304        Returns:
-305            Recoded output string
-306
-307        Raises:
-308            KNIError: If recoding fails
-309            TypeError: If arguments have invalid types
-310        """
-311        if not isinstance(stream_handle, int):
-312            raise TypeError(
-313                f"stream_handle must be int, not {type(stream_handle).__name__}"
-314            )
-315        input_record_bytes = self._to_bytes(input_record, "input_record")
-316        if max_output_length is None:
-317            max_output_length = self.KNI_MaxRecordLength
-318        elif not isinstance(max_output_length, int):
-319            raise TypeError(
-320                f"max_output_length must be int or None, not {type(max_output_length).__name__}"
-321            )
-322
-323        output_buffer = ctypes.create_string_buffer(max_output_length)
-324        ret_code = self._lib.KNIRecodeStreamRecord(
-325            stream_handle,
-326            input_record_bytes,
-327            output_buffer,
-328            max_output_length,
-329        )
-330
-331        if ret_code != self.KNI_OK:
-332            raise KNIError(
-333                f"Failed to recode record: {self.get_error_message(ret_code)}",
-334                ret_code,
-335            )
-336        return output_buffer.value.decode("utf-8")
-
- - -

Recode an input record using the stream's dictionary.

- -

Args: - stream_handle: Handle returned by open_stream - input_record: Input record string or bytes - max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

- -

Returns: - Recoded output string

- -

Raises: - KNIError: If recoding fails - TypeError: If arguments have invalid types

-
- - -
-
- -
- - def - set_secondary_header_line( self, stream_handle: int, data_path: str | bytes, header_line: str | bytes) -> None: - - - -
- -
338    def set_secondary_header_line(
-339        self, stream_handle: int, data_path: str | bytes, header_line: str | bytes
-340    ) -> None:
-341        """
-342        Set the header line of a secondary table (multi-table only).
-343
-344        Args:
-345            stream_handle: Handle returned by open_stream
-346            data_path: Data path identifying the secondary table (str or bytes)
-347            header_line: Header line with field names (str or bytes)
-348
-349        Raises:
-350            KNIError: If setting secondary header fails
-351            TypeError: If arguments have invalid types
-352        """
-353        if not isinstance(stream_handle, int):
-354            raise TypeError(
-355                f"stream_handle must be int, not {type(stream_handle).__name__}"
-356            )
-357        data_path_bytes = self._to_bytes(data_path, "data_path")
-358        header_line_bytes = self._to_bytes(header_line, "header_line")
-359        ret_code = self._lib.KNISetSecondaryHeaderLine(
-360            stream_handle, data_path_bytes, header_line_bytes
-361        )
-362        if ret_code != self.KNI_OK:
-363            raise KNIError(
-364                f"Failed to set secondary header line: {self.get_error_message(ret_code)}",
-365                ret_code,
-366            )
-
- - -

Set the header line of a secondary table (multi-table only).

- -

Args: - stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table (str or bytes) - header_line: Header line with field names (str or bytes)

- -

Raises: - KNIError: If setting secondary header fails - TypeError: If arguments have invalid types

-
- - -
-
- -
- - def - set_external_table( self, stream_handle: int, data_root: str | bytes, data_path: str | bytes, data_table_file_name: str | bytes) -> None: - - - -
- -
368    def set_external_table(
-369        self,
-370        stream_handle: int,
-371        data_root: str | bytes,
-372        data_path: str | bytes,
-373        data_table_file_name: str | bytes,
-374    ) -> None:
-375        """
-376        Set the name of a data file for an external table (multi-table only).
-377
-378        Args:
-379            stream_handle: Handle returned by open_stream
-380            data_root: Root dictionary of the external table (str or bytes)
-381            data_path: Data path for secondary external tables (str or bytes, empty for root)
-382            data_table_file_name: Path to the external table data file (str or bytes)
-383
-384        Raises:
-385            KNIError: If setting external table fails
-386            TypeError: If arguments have invalid types
-387        """
-388        if not isinstance(stream_handle, int):
-389            raise TypeError(
-390                f"stream_handle must be int, not {type(stream_handle).__name__}"
-391            )
-392        data_root_bytes = self._to_bytes(data_root, "data_root")
-393        data_path_bytes = self._to_bytes(data_path, "data_path")
-394        data_table_file_name_bytes = self._to_bytes(
-395            data_table_file_name, "data_table_file_name"
-396        )
-397        ret_code = self._lib.KNISetExternalTable(
-398            stream_handle,
-399            data_root_bytes,
-400            data_path_bytes,
-401            data_table_file_name_bytes,
-402        )
-403        if ret_code != self.KNI_OK:
-404            raise KNIError(
-405                f"Failed to set external table: {self.get_error_message(ret_code)}",
-406                ret_code,
-407            )
-
- - -

Set the name of a data file for an external table (multi-table only).

- -

Args: - stream_handle: Handle returned by open_stream - data_root: Root dictionary of the external table (str or bytes) - data_path: Data path for secondary external tables (str or bytes, empty for root) - data_table_file_name: Path to the external table data file (str or bytes)

- -

Raises: - KNIError: If setting external table fails - TypeError: If arguments have invalid types

-
- - -
-
- -
- - def - finish_opening_stream(self, stream_handle: int) -> None: - - - -
- -
409    def finish_opening_stream(self, stream_handle: int) -> None:
-410        """
-411        Finish opening a stream (multi-table only).
-412
-413        Must be called after all secondary headers and external tables are set.
-414
-415        Args:
-416            stream_handle: Handle returned by open_stream
-417
-418        Raises:
-419            KNIError: If finishing opening stream fails
-420            TypeError: If stream_handle is not int
-421        """
-422        if not isinstance(stream_handle, int):
-423            raise TypeError(
-424                f"stream_handle must be int, not {type(stream_handle).__name__}"
-425            )
-426        ret_code = self._lib.KNIFinishOpeningStream(stream_handle)
-427        if ret_code != self.KNI_OK:
-428            raise KNIError(
-429                f"Failed to finish opening stream: {self.get_error_message(ret_code)}",
-430                ret_code,
-431            )
-
- - -

Finish opening a stream (multi-table only).

- -

Must be called after all secondary headers and external tables are set.

- -

Args: - stream_handle: Handle returned by open_stream

- -

Raises: - KNIError: If finishing opening stream fails - TypeError: If stream_handle is not int

-
- - -
-
- -
- - def - set_secondary_input_record( self, stream_handle: int, data_path: str | bytes, input_record: str | bytes) -> None: - - - -
- -
433    def set_secondary_input_record(
-434        self, stream_handle: int, data_path: str | bytes, input_record: str | bytes
-435    ) -> None:
-436        """
-437        Set a secondary input record for multi-table recoding.
-438
-439        All secondary records must be set before recoding the primary record.
-440
-441        Args:
-442            stream_handle: Handle returned by open_stream
-443            data_path: Data path identifying the secondary table (str or bytes)
-444            input_record: Secondary input record string or bytes
-445
-446        Raises:
-447            KNIError: If setting secondary input record fails
-448            TypeError: If arguments have invalid types
-449        """
-450        if not isinstance(stream_handle, int):
-451            raise TypeError(
-452                f"stream_handle must be int, not {type(stream_handle).__name__}"
-453            )
-454        data_path_bytes = self._to_bytes(data_path, "data_path")
-455        input_record_bytes = self._to_bytes(input_record, "input_record")
-456        ret_code = self._lib.KNISetSecondaryInputRecord(
-457            stream_handle, data_path_bytes, input_record_bytes
-458        )
-459        if ret_code != self.KNI_OK:
-460            raise KNIError(
-461                f"Failed to set secondary input record: {self.get_error_message(ret_code)}",
-462                ret_code,
-463            )
-
- - -

Set a secondary input record for multi-table recoding.

- -

All secondary records must be set before recoding the primary record.

- -

Args: - stream_handle: Handle returned by open_stream - data_path: Data path identifying the secondary table (str or bytes) - input_record: Secondary input record string or bytes

- -

Raises: - KNIError: If setting secondary input record fails - TypeError: If arguments have invalid types

-
- - -
-
- -
- - def - get_stream_max_memory(self) -> int: - - - -
- -
465    def get_stream_max_memory(self) -> int:
-466        """
-467        Get the maximum amount of memory (in MB) for stream opening.
-468
-469        Returns:
-470            Maximum memory in MB
-471        """
-472        return self._lib.KNIGetStreamMaxMemory()
-
- - -

Get the maximum amount of memory (in MB) for stream opening.

- -

Returns: - Maximum memory in MB

-
- - -
-
- -
- - def - set_stream_max_memory(self, max_mb: int) -> int: - - - -
- -
474    def set_stream_max_memory(self, max_mb: int) -> int:
-475        """
-476        Set the maximum amount of memory (in MB) for stream opening.
-477
-478        Args:
-479            max_mb: Maximum memory in MB
-480
-481        Returns:
-482            Accepted value (bounded by system limits)
-483        """
-484        if not isinstance(max_mb, int):
-485            raise TypeError(f"max_mb must be int, not {type(max_mb).__name__}")
-486        return self._lib.KNISetStreamMaxMemory(max_mb)
-
- - -

Set the maximum amount of memory (in MB) for stream opening.

- -

Args: - max_mb: Maximum memory in MB

- -

Returns: - Accepted value (bounded by system limits)

-
- - -
-
- -
-
@staticmethod
- - def - get_error_message(error_code: int) -> str: - - - -
- -
488    @staticmethod
-489    def get_error_message(error_code: int) -> str:
-490        """
-491        Get a human-readable error message for an error code.
-492
-493        Args:
-494            error_code: KNI error code
-495
-496        Returns:
-497            Error message string
-498        """
-499        if not isinstance(error_code, int):
-500            raise TypeError(f"error_code must be int, not {type(error_code).__name__}")
-501        error_messages = {
-502            KNI.KNI_OK: "Success",
-503            KNI.KNI_ErrorRunningFunction: "Another KNI function is currently running",
-504            KNI.KNI_ErrorDictionaryFileName: "Bad dictionary file name",
-505            KNI.KNI_ErrorDictionaryMissingFile: "Dictionary file does not exist",
-506            KNI.KNI_ErrorDictionaryFileFormat: "Bad dictionary format",
-507            KNI.KNI_ErrorDictionaryName: "Bad dictionary name",
-508            KNI.KNI_ErrorMissingDictionary: "Dictionary not found in dictionary file",
-509            KNI.KNI_ErrorTooManyStreams: "Too many streams opened",
-510            KNI.KNI_ErrorStreamHeaderLine: "Bad stream header line",
-511            KNI.KNI_ErrorFieldSeparator: "Bad field separator",
-512            KNI.KNI_ErrorStreamHandle: "Bad stream handle",
-513            KNI.KNI_ErrorStreamOpened: "Stream already opened",
-514            KNI.KNI_ErrorStreamNotOpened: "Stream not opened",
-515            KNI.KNI_ErrorStreamInputRecord: "Bad input record",
-516            KNI.KNI_ErrorStreamInputRead: "Problem reading input record",
-517            KNI.KNI_ErrorStreamOutputRecord: "Output record too long",
-518            KNI.KNI_ErrorMissingSecondaryHeader: "Missing secondary table header",
-519            KNI.KNI_ErrorMissingExternalTable: "Missing external table",
-520            KNI.KNI_ErrorDataRoot: "Bad data root",
-521            KNI.KNI_ErrorDataPath: "Bad data path",
-522            KNI.KNI_ErrorDataTableFile: "Bad data table file",
-523            KNI.KNI_ErrorLoadDataTable: "Problem loading external data tables",
-524            KNI.KNI_ErrorMemoryOverflow: "Memory overflow",
-525            KNI.KNI_ErrorStreamOpening: "Stream could not be opened",
-526            KNI.KNI_ErrorStreamOpeningNotFinished: "Multi-table stream opening not finished",
-527            KNI.KNI_ErrorLogFile: "Bad error file",
-528        }
-529        return error_messages.get(error_code, f"Unknown error code: {error_code}")
-
- - -

Get a human-readable error message for an error code.

- -

Args: - error_code: KNI error code

- -

Returns: - Error message string

-
- - -
-
-
- -
- - class - KNIError(builtins.Exception): - - - -
- -
21class KNIError(Exception):
-22    """Exception raised for KNI errors."""
-23
-24    def __init__(self, message, error_code=None):
-25        super().__init__(message)
-26        self.error_code = error_code
-
- - -

Exception raised for KNI errors.

-
- - -
- -
- - KNIError(message, error_code=None) - - - -
- -
24    def __init__(self, message, error_code=None):
-25        super().__init__(message)
-26        self.error_code = error_code
-
- - - - -
-
-
- error_code - - -
- - - - -
-
-
- - \ No newline at end of file diff --git a/python/docs/kni.md b/python/docs/kni.md new file mode 100644 index 0000000..f9458c4 --- /dev/null +++ b/python/docs/kni.md @@ -0,0 +1,339 @@ +# Table of Contents + +* [kni](#kni) + * [KNIError](#kni.KNIError) + * [KNI](#kni.KNI) + * [KNI\_MaxRecordLength](#kni.KNI.KNI_MaxRecordLength) + * [\_\_init\_\_](#kni.KNI.__init__) + * [get\_version](#kni.KNI.get_version) + * [get\_full\_version](#kni.KNI.get_full_version) + * [set\_log\_file\_name](#kni.KNI.set_log_file_name) + * [open\_stream](#kni.KNI.open_stream) + * [close\_stream](#kni.KNI.close_stream) + * [recode\_stream\_record](#kni.KNI.recode_stream_record) + * [set\_secondary\_header\_line](#kni.KNI.set_secondary_header_line) + * [set\_external\_table](#kni.KNI.set_external_table) + * [finish\_opening\_stream](#kni.KNI.finish_opening_stream) + * [set\_secondary\_input\_record](#kni.KNI.set_secondary_input_record) + * [get\_stream\_max\_memory](#kni.KNI.get_stream_max_memory) + * [set\_stream\_max\_memory](#kni.KNI.set_stream_max_memory) + * [get\_error\_message](#kni.KNI.get_error_message) + + + +# kni + +Khiops Native Interface (KNI) Python wrapper using ctypes. + +This module provides a Python interface to the Khiops Native Interface (KNI) C library, +allowing direct deployment of Khiops models without temporary files. + + + +## KNIError Objects + +```python +class KNIError(Exception) +``` + +Exception raised for KNI errors. + + + +## KNI Objects + +```python +class KNI() +``` + +Python wrapper for Khiops Native Interface using ctypes. + + + +#### KNI\_MaxRecordLength + +8 MB + + + +#### \_\_init\_\_ + +```python +def __init__(library_path: str | bytes | Path | None = None) +``` + +Initialize the KNI wrapper. + +**Arguments**: + +- `library_path` - Optional path to the KNI shared library (str, bytes, or + pathlib.Path). If None, attempts to locate it automatically. + + + +#### get\_version + +```python +def get_version() -> int +``` + +Get KNI version as integer (10*major + minor). + + + +#### get\_full\_version + +```python +def get_full_version() -> str +``` + +Get KNI full version string. + + + +#### set\_log\_file\_name + +```python +def set_log_file_name(log_file_name: str | bytes) -> None +``` + +Set the log file name for error messages. + +**Arguments**: + +- `log_file_name` - Path to log file (str or bytes, empty string for no logging) + + +**Raises**: + +- `KNIError` - If setting log file fails +- `TypeError` - If log_file_name is not str or bytes + + + +#### open\_stream + +```python +def open_stream(dictionary_file_path: str | bytes | Path, + dictionary_name: str | bytes, + header_line: str | bytes, + field_separator: str | bytes = "\t") -> int +``` + +Open a KNI stream for recoding. + +**Arguments**: + +- `dictionary_file_path` - Path to the dictionary file (str, bytes, or pathlib.Path) +- `dictionary_name` - Name of the dictionary to use (str or bytes) +- `header_line` - Header line with field names (str or bytes) +- `field_separator` - Character used to separate fields (str or bytes, default: tab) + + +**Returns**: + + Stream handle (positive integer) + + +**Raises**: + +- `KNIError` - If opening stream fails +- `TypeError` - If arguments have invalid types + + + +#### close\_stream + +```python +def close_stream(stream_handle: int) -> None +``` + +Close a KNI stream. + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream + + +**Raises**: + +- `KNIError` - If closing stream fails +- `TypeError` - If stream_handle is not int + + + +#### recode\_stream\_record + +```python +def recode_stream_record(stream_handle: int, + input_record: str | bytes, + max_output_length: int | None = None) -> str +``` + +Recode an input record using the stream's dictionary. + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream (int) +- `input_record` - Input record (str or bytes) +- `max_output_length` - Maximum output buffer size (int, default: KNI_MaxRecordLength) + + +**Returns**: + + Recoded output string + + +**Raises**: + +- `KNIError` - If recoding fails +- `TypeError` - If arguments have invalid types + + + +#### set\_secondary\_header\_line + +```python +def set_secondary_header_line(stream_handle: int, data_path: str | bytes, + header_line: str | bytes) -> None +``` + +Set the header line of a secondary table (multi-table only). + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream +- `data_path` - Data path identifying the secondary table (str or bytes) +- `header_line` - Header line with field names (str or bytes) + + +**Raises**: + +- `KNIError` - If setting secondary header fails +- `TypeError` - If arguments have invalid types + + + +#### set\_external\_table + +```python +def set_external_table(stream_handle: int, data_root: str | bytes, + data_path: str | bytes, + data_table_file_name: str | bytes) -> None +``` + +Set the name of a data file for an external table (multi-table only). + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream +- `data_root` - Root dictionary of the external table (str or bytes) +- `data_path` - Data path for secondary external tables (str or bytes, empty for root) +- `data_table_file_name` - Path to the external table data file (str or bytes) + + +**Raises**: + +- `KNIError` - If setting external table fails +- `TypeError` - If arguments have invalid types + + + +#### finish\_opening\_stream + +```python +def finish_opening_stream(stream_handle: int) -> None +``` + +Finish opening a stream (multi-table only). + +Must be called after all secondary headers and external tables are set. + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream + + +**Raises**: + +- `KNIError` - If finishing opening stream fails +- `TypeError` - If stream_handle is not int + + + +#### set\_secondary\_input\_record + +```python +def set_secondary_input_record(stream_handle: int, data_path: str | bytes, + input_record: str | bytes) -> None +``` + +Set a secondary input record for multi-table recoding. + +All secondary records must be set before recoding the primary record. + +**Arguments**: + +- `stream_handle` - Handle returned by open_stream +- `data_path` - Data path identifying the secondary table (str or bytes) +- `input_record` - Secondary input record (str or bytes) + + +**Raises**: + +- `KNIError` - If setting secondary input record fails +- `TypeError` - If arguments have invalid types + + + +#### get\_stream\_max\_memory + +```python +def get_stream_max_memory() -> int +``` + +Get the maximum amount of memory (in MB) for stream opening. + +**Returns**: + + Maximum memory in MB + + + +#### set\_stream\_max\_memory + +```python +def set_stream_max_memory(max_mb: int) -> int +``` + +Set the maximum amount of memory (in MB) for stream opening. + +**Arguments**: + +- `max_mb` - Maximum memory in MB + + +**Returns**: + + Accepted value (bounded by system limits) + + + +#### get\_error\_message + +```python +@staticmethod +def get_error_message(error_code: int) -> str +``` + +Get a human-readable error message for an error code. + +**Arguments**: + +- `error_code` - KNI error code + + +**Returns**: + + Error message string + diff --git a/python/docs/search.js b/python/docs/search.js deleted file mode 100644 index f3f8e1d..0000000 --- a/python/docs/search.js +++ /dev/null @@ -1,46 +0,0 @@ -window.pdocSearch = (function(){ -/** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oKhiops Native Interface (KNI) Python Package

\n\n

This package provides Python bindings for the Khiops Native Interface (KNI),\nenabling direct deployment of Khiops models from Python without temporary files.

\n"}, "kni.KNI": {"fullname": "kni.KNI", "modulename": "kni", "qualname": "KNI", "kind": "class", "doc": "

Python wrapper for Khiops Native Interface using ctypes.

\n"}, "kni.KNI.__init__": {"fullname": "kni.KNI.__init__", "modulename": "kni", "qualname": "KNI.__init__", "kind": "function", "doc": "

Initialize the KNI wrapper.

\n\n

Args:\n library_path: Optional path to the KNI shared library (str, bytes, or\n pathlib.Path). If None, attempts to locate it automatically.

\n", "signature": "(library_path: str | bytes | pathlib.Path | None = None)"}, "kni.KNI.KNI_OK": {"fullname": "kni.KNI.KNI_OK", "modulename": "kni", "qualname": "KNI.KNI_OK", "kind": "variable", "doc": "

\n", "default_value": "0"}, "kni.KNI.KNI_ErrorRunningFunction": {"fullname": "kni.KNI.KNI_ErrorRunningFunction", "modulename": "kni", "qualname": "KNI.KNI_ErrorRunningFunction", "kind": "variable", "doc": "

\n", "default_value": "-1"}, "kni.KNI.KNI_ErrorDictionaryFileName": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileName", "kind": "variable", "doc": "

\n", "default_value": "-2"}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"fullname": "kni.KNI.KNI_ErrorDictionaryMissingFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryMissingFile", "kind": "variable", "doc": "

\n", "default_value": "-3"}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"fullname": "kni.KNI.KNI_ErrorDictionaryFileFormat", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryFileFormat", "kind": "variable", "doc": "

\n", "default_value": "-4"}, "kni.KNI.KNI_ErrorDictionaryName": {"fullname": "kni.KNI.KNI_ErrorDictionaryName", "modulename": "kni", "qualname": "KNI.KNI_ErrorDictionaryName", "kind": "variable", "doc": "

\n", "default_value": "-5"}, "kni.KNI.KNI_ErrorMissingDictionary": {"fullname": "kni.KNI.KNI_ErrorMissingDictionary", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingDictionary", "kind": "variable", "doc": "

\n", "default_value": "-6"}, "kni.KNI.KNI_ErrorTooManyStreams": {"fullname": "kni.KNI.KNI_ErrorTooManyStreams", "modulename": "kni", "qualname": "KNI.KNI_ErrorTooManyStreams", "kind": "variable", "doc": "

\n", "default_value": "-7"}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"fullname": "kni.KNI.KNI_ErrorStreamHeaderLine", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHeaderLine", "kind": "variable", "doc": "

\n", "default_value": "-8"}, "kni.KNI.KNI_ErrorFieldSeparator": {"fullname": "kni.KNI.KNI_ErrorFieldSeparator", "modulename": "kni", "qualname": "KNI.KNI_ErrorFieldSeparator", "kind": "variable", "doc": "

\n", "default_value": "-9"}, "kni.KNI.KNI_ErrorStreamHandle": {"fullname": "kni.KNI.KNI_ErrorStreamHandle", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamHandle", "kind": "variable", "doc": "

\n", "default_value": "-10"}, "kni.KNI.KNI_ErrorStreamOpened": {"fullname": "kni.KNI.KNI_ErrorStreamOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpened", "kind": "variable", "doc": "

\n", "default_value": "-11"}, "kni.KNI.KNI_ErrorStreamNotOpened": {"fullname": "kni.KNI.KNI_ErrorStreamNotOpened", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamNotOpened", "kind": "variable", "doc": "

\n", "default_value": "-12"}, "kni.KNI.KNI_ErrorStreamInputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamInputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRecord", "kind": "variable", "doc": "

\n", "default_value": "-13"}, "kni.KNI.KNI_ErrorStreamInputRead": {"fullname": "kni.KNI.KNI_ErrorStreamInputRead", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamInputRead", "kind": "variable", "doc": "

\n", "default_value": "-14"}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"fullname": "kni.KNI.KNI_ErrorStreamOutputRecord", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOutputRecord", "kind": "variable", "doc": "

\n", "default_value": "-15"}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"fullname": "kni.KNI.KNI_ErrorMissingSecondaryHeader", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingSecondaryHeader", "kind": "variable", "doc": "

\n", "default_value": "-16"}, "kni.KNI.KNI_ErrorMissingExternalTable": {"fullname": "kni.KNI.KNI_ErrorMissingExternalTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorMissingExternalTable", "kind": "variable", "doc": "

\n", "default_value": "-17"}, "kni.KNI.KNI_ErrorDataRoot": {"fullname": "kni.KNI.KNI_ErrorDataRoot", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataRoot", "kind": "variable", "doc": "

\n", "default_value": "-18"}, "kni.KNI.KNI_ErrorDataPath": {"fullname": "kni.KNI.KNI_ErrorDataPath", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataPath", "kind": "variable", "doc": "

\n", "default_value": "-19"}, "kni.KNI.KNI_ErrorDataTableFile": {"fullname": "kni.KNI.KNI_ErrorDataTableFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorDataTableFile", "kind": "variable", "doc": "

\n", "default_value": "-20"}, "kni.KNI.KNI_ErrorLoadDataTable": {"fullname": "kni.KNI.KNI_ErrorLoadDataTable", "modulename": "kni", "qualname": "KNI.KNI_ErrorLoadDataTable", "kind": "variable", "doc": "

\n", "default_value": "-21"}, "kni.KNI.KNI_ErrorMemoryOverflow": {"fullname": "kni.KNI.KNI_ErrorMemoryOverflow", "modulename": "kni", "qualname": "KNI.KNI_ErrorMemoryOverflow", "kind": "variable", "doc": "

\n", "default_value": "-22"}, "kni.KNI.KNI_ErrorStreamOpening": {"fullname": "kni.KNI.KNI_ErrorStreamOpening", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpening", "kind": "variable", "doc": "

\n", "default_value": "-23"}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"fullname": "kni.KNI.KNI_ErrorStreamOpeningNotFinished", "modulename": "kni", "qualname": "KNI.KNI_ErrorStreamOpeningNotFinished", "kind": "variable", "doc": "

\n", "default_value": "-24"}, "kni.KNI.KNI_ErrorLogFile": {"fullname": "kni.KNI.KNI_ErrorLogFile", "modulename": "kni", "qualname": "KNI.KNI_ErrorLogFile", "kind": "variable", "doc": "

\n", "default_value": "-25"}, "kni.KNI.KNI_MaxStreamNumber": {"fullname": "kni.KNI.KNI_MaxStreamNumber", "modulename": "kni", "qualname": "KNI.KNI_MaxStreamNumber", "kind": "variable", "doc": "

\n", "default_value": "512"}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"fullname": "kni.KNI.KNI_DefaultMaxStreamMemory", "modulename": "kni", "qualname": "KNI.KNI_DefaultMaxStreamMemory", "kind": "variable", "doc": "

\n", "default_value": "100"}, "kni.KNI.KNI_MaxPathNameLength": {"fullname": "kni.KNI.KNI_MaxPathNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxPathNameLength", "kind": "variable", "doc": "

\n", "default_value": "1024"}, "kni.KNI.KNI_MaxDictionaryNameLength": {"fullname": "kni.KNI.KNI_MaxDictionaryNameLength", "modulename": "kni", "qualname": "KNI.KNI_MaxDictionaryNameLength", "kind": "variable", "doc": "

\n", "default_value": "128"}, "kni.KNI.KNI_MaxRecordLength": {"fullname": "kni.KNI.KNI_MaxRecordLength", "modulename": "kni", "qualname": "KNI.KNI_MaxRecordLength", "kind": "variable", "doc": "

\n", "default_value": "8388608"}, "kni.KNI.get_version": {"fullname": "kni.KNI.get_version", "modulename": "kni", "qualname": "KNI.get_version", "kind": "function", "doc": "

Get KNI version as integer (10*major + minor).

\n", "signature": "(self) -> int:", "funcdef": "def"}, "kni.KNI.get_full_version": {"fullname": "kni.KNI.get_full_version", "modulename": "kni", "qualname": "KNI.get_full_version", "kind": "function", "doc": "

Get KNI full version string.

\n", "signature": "(self) -> str:", "funcdef": "def"}, "kni.KNI.set_log_file_name": {"fullname": "kni.KNI.set_log_file_name", "modulename": "kni", "qualname": "KNI.set_log_file_name", "kind": "function", "doc": "

Set the log file name for error messages.

\n\n

Args:\n log_file_name: Path to log file (str or bytes, empty string for no logging)

\n\n

Raises:\n KNIError: If setting log file fails\n TypeError: If log_file_name is not str or bytes

\n", "signature": "(self, log_file_name: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.open_stream": {"fullname": "kni.KNI.open_stream", "modulename": "kni", "qualname": "KNI.open_stream", "kind": "function", "doc": "

Open a KNI stream for recoding.

\n\n

Args:\n dictionary_file_path: Path to the dictionary file (str, bytes, or pathlib.Path)\n dictionary_name: Name of the dictionary to use (str or bytes)\n header_line: Header line with field names (str or bytes)\n field_separator: Character used to separate fields (str or bytes, default: tab)

\n\n

Returns:\n Stream handle (positive integer)

\n\n

Raises:\n KNIError: If opening stream fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tdictionary_file_path: str | bytes | pathlib.Path,\tdictionary_name: str | bytes,\theader_line: str | bytes,\tfield_separator: str | bytes = '\\t') -> int:", "funcdef": "def"}, "kni.KNI.close_stream": {"fullname": "kni.KNI.close_stream", "modulename": "kni", "qualname": "KNI.close_stream", "kind": "function", "doc": "

Close a KNI stream.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If closing stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle: int) -> None:", "funcdef": "def"}, "kni.KNI.recode_stream_record": {"fullname": "kni.KNI.recode_stream_record", "modulename": "kni", "qualname": "KNI.recode_stream_record", "kind": "function", "doc": "

Recode an input record using the stream's dictionary.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n input_record: Input record string or bytes\n max_output_length: Maximum output buffer size (default: KNI_MaxRecordLength)

\n\n

Returns:\n Recoded output string

\n\n

Raises:\n KNIError: If recoding fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tinput_record: str | bytes,\tmax_output_length: int | None = None) -> str:", "funcdef": "def"}, "kni.KNI.set_secondary_header_line": {"fullname": "kni.KNI.set_secondary_header_line", "modulename": "kni", "qualname": "KNI.set_secondary_header_line", "kind": "function", "doc": "

Set the header line of a secondary table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n header_line: Header line with field names (str or bytes)

\n\n

Raises:\n KNIError: If setting secondary header fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_path: str | bytes,\theader_line: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.set_external_table": {"fullname": "kni.KNI.set_external_table", "modulename": "kni", "qualname": "KNI.set_external_table", "kind": "function", "doc": "

Set the name of a data file for an external table (multi-table only).

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_root: Root dictionary of the external table (str or bytes)\n data_path: Data path for secondary external tables (str or bytes, empty for root)\n data_table_file_name: Path to the external table data file (str or bytes)

\n\n

Raises:\n KNIError: If setting external table fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_root: str | bytes,\tdata_path: str | bytes,\tdata_table_file_name: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.finish_opening_stream": {"fullname": "kni.KNI.finish_opening_stream", "modulename": "kni", "qualname": "KNI.finish_opening_stream", "kind": "function", "doc": "

Finish opening a stream (multi-table only).

\n\n

Must be called after all secondary headers and external tables are set.

\n\n

Args:\n stream_handle: Handle returned by open_stream

\n\n

Raises:\n KNIError: If finishing opening stream fails\n TypeError: If stream_handle is not int

\n", "signature": "(self, stream_handle: int) -> None:", "funcdef": "def"}, "kni.KNI.set_secondary_input_record": {"fullname": "kni.KNI.set_secondary_input_record", "modulename": "kni", "qualname": "KNI.set_secondary_input_record", "kind": "function", "doc": "

Set a secondary input record for multi-table recoding.

\n\n

All secondary records must be set before recoding the primary record.

\n\n

Args:\n stream_handle: Handle returned by open_stream\n data_path: Data path identifying the secondary table (str or bytes)\n input_record: Secondary input record string or bytes

\n\n

Raises:\n KNIError: If setting secondary input record fails\n TypeError: If arguments have invalid types

\n", "signature": "(\tself,\tstream_handle: int,\tdata_path: str | bytes,\tinput_record: str | bytes) -> None:", "funcdef": "def"}, "kni.KNI.get_stream_max_memory": {"fullname": "kni.KNI.get_stream_max_memory", "modulename": "kni", "qualname": "KNI.get_stream_max_memory", "kind": "function", "doc": "

Get the maximum amount of memory (in MB) for stream opening.

\n\n

Returns:\n Maximum memory in MB

\n", "signature": "(self) -> int:", "funcdef": "def"}, "kni.KNI.set_stream_max_memory": {"fullname": "kni.KNI.set_stream_max_memory", "modulename": "kni", "qualname": "KNI.set_stream_max_memory", "kind": "function", "doc": "

Set the maximum amount of memory (in MB) for stream opening.

\n\n

Args:\n max_mb: Maximum memory in MB

\n\n

Returns:\n Accepted value (bounded by system limits)

\n", "signature": "(self, max_mb: int) -> int:", "funcdef": "def"}, "kni.KNI.get_error_message": {"fullname": "kni.KNI.get_error_message", "modulename": "kni", "qualname": "KNI.get_error_message", "kind": "function", "doc": "

Get a human-readable error message for an error code.

\n\n

Args:\n error_code: KNI error code

\n\n

Returns:\n Error message string

\n", "signature": "(error_code: int) -> str:", "funcdef": "def"}, "kni.KNIError": {"fullname": "kni.KNIError", "modulename": "kni", "qualname": "KNIError", "kind": "class", "doc": "

Exception raised for KNI errors.

\n", "bases": "builtins.Exception"}, "kni.KNIError.__init__": {"fullname": "kni.KNIError.__init__", "modulename": "kni", "qualname": "KNIError.__init__", "kind": "function", "doc": "

\n", "signature": "(message, error_code=None)"}, "kni.KNIError.error_code": {"fullname": "kni.KNIError.error_code", "modulename": "kni", "qualname": "KNIError.error_code", "kind": "variable", "doc": "

\n"}}, "docInfo": {"kni": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 33}, "kni.KNI": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 11}, "kni.KNI.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 45, "bases": 0, "doc": 32}, "kni.KNI.KNI_OK": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorRunningFunction": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDictionaryName": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingDictionary": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorTooManyStreams": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorFieldSeparator": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamHandle": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamNotOpened": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamInputRead": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMissingExternalTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataRoot": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataPath": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorDataTableFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLoadDataTable": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorMemoryOverflow": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpening": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_ErrorLogFile": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 2, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxStreamNumber": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxPathNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxDictionaryNameLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.KNI_MaxRecordLength": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 1, "signature": 0, "bases": 0, "doc": 3}, "kni.KNI.get_version": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 11}, "kni.KNI.get_full_version": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 8}, "kni.KNI.set_log_file_name": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 49}, "kni.KNI.open_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 114, "bases": 0, "doc": 81}, "kni.KNI.close_stream": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 32}, "kni.KNI.recode_stream_record": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 71, "bases": 0, "doc": 59}, "kni.KNI.set_secondary_header_line": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 61}, "kni.KNI.set_external_table": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 83, "bases": 0, "doc": 82}, "kni.KNI.finish_opening_stream": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 51}, "kni.KNI.set_secondary_input_record": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 63, "bases": 0, "doc": 71}, "kni.KNI.get_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 14, "bases": 0, "doc": 21}, "kni.KNI.set_stream_max_memory": {"qualname": 5, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 25, "bases": 0, "doc": 33}, "kni.KNI.get_error_message": {"qualname": 4, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 27}, "kni.KNIError": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 2, "doc": 8}, "kni.KNIError.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 20, "bases": 0, "doc": 3}, "kni.KNIError.error_code": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}}, "length": 50, "save": true}, "index": {"qualname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}, "kni.KNI.KNI_OK": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.4142135623730951}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.4142135623730951}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.4142135623730951}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 46, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "fullname": {"root": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2, "k": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 1.4142135623730951}, "kni.KNI.get_full_version": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1.4142135623730951}, "kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 50, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNIError": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 3}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.error_code": {"tf": 1}}, "df": 2, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}}}}}}}}}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}}}}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}}}}}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}}, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.error_code": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"0": {"docs": {"kni.KNI.KNI_OK": {"tf": 1}}, "df": 1}, "1": {"0": {"0": {"docs": {"kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1}}, "df": 1}, "2": {"4": {"docs": {"kni.KNI.KNI_MaxPathNameLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}}, "df": 1}, "2": {"8": {"docs": {"kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}}, "df": 1}, "8": {"docs": {"kni.KNI.KNI_ErrorDataRoot": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorDataPath": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}}, "df": 1}, "2": {"0": {"docs": {"kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}}, "df": 1}, "1": {"docs": {"kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}}, "df": 1}, "2": {"docs": {"kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}}, "df": 1}, "5": {"docs": {"kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}}, "df": 1}, "3": {"docs": {"kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}}, "df": 1}, "4": {"docs": {"kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}}, "df": 1}, "5": {"1": {"2": {"docs": {"kni.KNI.KNI_MaxStreamNumber": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}}, "df": 1}, "6": {"docs": {"kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}}, "df": 1}, "7": {"docs": {"kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}}, "df": 1}, "8": {"3": {"8": {"8": {"6": {"0": {"8": {"docs": {"kni.KNI.KNI_MaxRecordLength": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}}, "df": 1}, "9": {"docs": {"kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}}, "df": 1}, "docs": {"kni.KNI.KNI_ErrorRunningFunction": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1}}, "df": 25}}, "signature": {"root": {"3": {"9": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"kni.KNI.__init__": {"tf": 6.082762530298219}, "kni.KNI.get_version": {"tf": 3.4641016151377544}, "kni.KNI.get_full_version": {"tf": 3.4641016151377544}, "kni.KNI.set_log_file_name": {"tf": 5}, "kni.KNI.open_stream": {"tf": 9.486832980505138}, "kni.KNI.close_stream": {"tf": 4.47213595499958}, "kni.KNI.recode_stream_record": {"tf": 7.483314773547883}, "kni.KNI.set_secondary_header_line": {"tf": 7.0710678118654755}, "kni.KNI.set_external_table": {"tf": 8}, "kni.KNI.finish_opening_stream": {"tf": 4.47213595499958}, "kni.KNI.set_secondary_input_record": {"tf": 7.0710678118654755}, "kni.KNI.get_stream_max_memory": {"tf": 3.4641016151377544}, "kni.KNI.set_stream_max_memory": {"tf": 4.47213595499958}, "kni.KNI.get_error_message": {"tf": 4}, "kni.KNIError.__init__": {"tf": 4}}, "df": 15, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 12}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}}, "b": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 9}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 3}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}, "b": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNIError.__init__": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError.__init__": {"tf": 1}}, "df": 2}}}}}}, "bases": {"root": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}}}, "doc": {"root": {"1": {"0": {"docs": {}, "df": 0, "*": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "docs": {"kni": {"tf": 2.23606797749979}, "kni.KNI": {"tf": 1.7320508075688772}, "kni.KNI.__init__": {"tf": 2.449489742783178}, "kni.KNI.KNI_OK": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorRunningFunction": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryMissingFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryFileFormat": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDictionaryName": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingDictionary": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorTooManyStreams": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHeaderLine": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorFieldSeparator": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamHandle": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamNotOpened": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamInputRead": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOutputRecord": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingSecondaryHeader": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMissingExternalTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataRoot": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataPath": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorDataTableFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLoadDataTable": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorMemoryOverflow": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpening": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorStreamOpeningNotFinished": {"tf": 1.7320508075688772}, "kni.KNI.KNI_ErrorLogFile": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxStreamNumber": {"tf": 1.7320508075688772}, "kni.KNI.KNI_DefaultMaxStreamMemory": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxPathNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxDictionaryNameLength": {"tf": 1.7320508075688772}, "kni.KNI.KNI_MaxRecordLength": {"tf": 1.7320508075688772}, "kni.KNI.get_version": {"tf": 2}, "kni.KNI.get_full_version": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 2.8284271247461903}, "kni.KNI.open_stream": {"tf": 3.3166247903554}, "kni.KNI.close_stream": {"tf": 2.6457513110645907}, "kni.KNI.recode_stream_record": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_header_line": {"tf": 2.8284271247461903}, "kni.KNI.set_external_table": {"tf": 2.8284271247461903}, "kni.KNI.finish_opening_stream": {"tf": 3.1622776601683795}, "kni.KNI.set_secondary_input_record": {"tf": 3.1622776601683795}, "kni.KNI.get_stream_max_memory": {"tf": 2.23606797749979}, "kni.KNI.set_stream_max_memory": {"tf": 2.8284271247461903}, "kni.KNI.get_error_message": {"tf": 2.6457513110645907}, "kni.KNIError": {"tf": 1.7320508075688772}, "kni.KNIError.__init__": {"tf": 1.7320508075688772}, "kni.KNIError.error_code": {"tf": 1.7320508075688772}}, "df": 50, "k": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 9, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1.7320508075688772}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2, "t": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2}}, "df": 2}}}}, "f": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.close_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 9}, "t": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni": {"tf": 1.7320508075688772}, "kni.KNI": {"tf": 1}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.__init__": {"tf": 1.7320508075688772}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 6, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni": {"tf": 1}, "kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 10}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 4}, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 4, "s": {"docs": {"kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 7, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni": {"tf": 1}, "kni.KNI": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}, "kni.KNIError": {"tf": 1}}, "df": 10}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}, "kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 3, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.get_full_version": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 2}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.set_external_table": {"tf": 2.23606797749979}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}}, "df": 3}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 2.449489742783178}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"kni": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6}, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 4}}}}}}, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 3}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "a": {"docs": {}, "df": 0, "x": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.4142135623730951}}, "df": 3}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}}, "b": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1.7320508075688772}}, "df": 2}}, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {"kni": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.__init__": {"tf": 1}}, "df": 2}}}}}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}}, "df": 2}}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.close_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1.7320508075688772}}, "df": 1}}}}, "a": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 7, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 11}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}}}}}, "e": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "s": {"docs": {"kni.KNI.get_version": {"tf": 1}}, "df": 1}, "n": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 3, "d": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 2}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 2}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.__init__": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}}, "df": 2}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 2.23606797749979}}, "df": 1, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.__init__": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.__init__": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1.4142135623730951}, "kni.KNI.open_stream": {"tf": 2}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_input_record": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.open_stream": {"tf": 1.7320508075688772}, "kni.KNI.close_stream": {"tf": 2.23606797749979}, "kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 2.23606797749979}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 9}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}, "kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 6, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"kni.KNI.set_secondary_header_line": {"tf": 1.7320508075688772}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 4}}}}}}}}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 4}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_version": {"tf": 1}, "kni.KNI.get_full_version": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.set_stream_max_memory": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.set_log_file_name": {"tf": 1}, "kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 8}, "d": {"docs": {"kni.KNIError": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 3}}}, "e": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.recode_stream_record": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 2.23606797749979}}, "df": 2, "s": {"docs": {"kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.get_stream_max_memory": {"tf": 1}, "kni.KNI.set_stream_max_memory": {"tf": 1}, "kni.KNI.get_error_message": {"tf": 1}}, "df": 5}, "e": {"docs": {}, "df": 0, "d": {"docs": {"kni.KNI.close_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.finish_opening_stream": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 6}}}}}}, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"kni.KNI.set_external_table": {"tf": 1.7320508075688772}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"kni.KNI.open_stream": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 2}}, "df": 2, "s": {"docs": {"kni.KNI.finish_opening_stream": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.close_stream": {"tf": 1.7320508075688772}, "kni.KNI.recode_stream_record": {"tf": 1.4142135623730951}, "kni.KNI.set_secondary_header_line": {"tf": 1.4142135623730951}, "kni.KNI.set_external_table": {"tf": 1.4142135623730951}, "kni.KNI.finish_opening_stream": {"tf": 1.7320508075688772}, "kni.KNI.set_secondary_input_record": {"tf": 1.4142135623730951}}, "df": 7}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"kni.KNI.open_stream": {"tf": 1}, "kni.KNI.recode_stream_record": {"tf": 1}, "kni.KNI.set_secondary_header_line": {"tf": 1}, "kni.KNI.set_external_table": {"tf": 1}, "kni.KNI.set_secondary_input_record": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"kni.KNI.get_error_message": {"tf": 1}}, "df": 1}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; - - // mirrored in build-search-index.js (part 1) - // Also split on html tags. this is a cheap heuristic, but good enough. - elasticlunr.tokenizer.setSeperator(/[\s\-.;&_'"=,()]+|<[^>]*>/); - - let searchIndex; - if (docs._isPrebuiltIndex) { - console.info("using precompiled search index"); - searchIndex = elasticlunr.Index.load(docs); - } else { - console.time("building search index"); - // mirrored in build-search-index.js (part 2) - searchIndex = elasticlunr(function () { - this.pipeline.remove(elasticlunr.stemmer); - this.pipeline.remove(elasticlunr.stopWordFilter); - this.addField("qualname"); - this.addField("fullname"); - this.addField("annotation"); - this.addField("default_value"); - this.addField("signature"); - this.addField("bases"); - this.addField("doc"); - this.setRef("fullname"); - }); - for (let doc of docs) { - searchIndex.addDoc(doc); - } - console.timeEnd("building search index"); - } - - return (term) => searchIndex.search(term, { - fields: { - qualname: {boost: 4}, - fullname: {boost: 2}, - annotation: {boost: 2}, - default_value: {boost: 2}, - signature: {boost: 2}, - bases: {boost: 2}, - doc: {boost: 1}, - }, - expand: true - }); -})(); \ No newline at end of file