def read_terms(self,
                   parameters: 'Union[TermParameters, str, Tuple[str, int]]') \
            -> 'List[TermInfo]':
        """
        Получение термов поискового словаря.

        :param parameters: Параметры термов или терм
            или кортеж "терм, количество"
        :return: Список термов
        """
        if not self.check_connection():
            return []

        if isinstance(parameters, tuple):
            parameters2 = TermParameters(parameters[0])
            parameters2.number = parameters[1]
            parameters = parameters2

        if isinstance(parameters, str):
            parameters = TermParameters(parameters)
            parameters.number = 10

        assert isinstance(parameters, TermParameters)

        command = READ_TERMS_REVERSE if parameters.reverse else READ_TERMS
        query = DatabaseQuery(self, command, parameters.database)
        query.utf(parameters.start)
        query.add(parameters.number)
        query.ansi(parameters.format)

        with self.execute(query) as response:
            response.check_return_code(READ_TERMS_CODES)
            lines = response.utf_remaining_lines()
            result = TermInfo.parse(lines)
            return result
    def create_database(self,
                        database: 'Optional[str]' = None,
                        description: 'Optional[str]' = None,
                        reader_access: bool = True) -> bool:
        """
        Создание базы данных.

        :param database: Имя создаваемой базы.
        :param description: Описание в свободной форме.
        :param reader_access: Читатель будет иметь доступ?
        :return: Признак успешности операции.
        """
        if not self.check_connection():
            return False

        description = description or ''
        assert isinstance(description, str)

        query = DatabaseQuery(self, CREATE_DATABASE, database)
        query.ansi(description).add(int(reader_access))
        return self._execute_with_bool_result(query)
    def print_table(self, definition: TableDefinition) -> str:
        """
        Расформатирование таблицы.

        :param definition: Определение таблицы
        :return: Результат расформатирования
        """
        if not self.check_connection():
            return ''

        query = DatabaseQuery(self, PRINT, definition.database)
        query.ansi(definition.table)
        query.ansi('')  # instead of the headers
        query.ansi(definition.mode).utf(definition.search)
        query.add(definition.min_mfn).add(definition.max_mfn)
        query.utf(definition.sequential)
        query.ansi('')  # instead of the MFN list
        with self.execute(query) as response:
            result = response.utf_remaining_text()
            return result