<commit_before>#include <Python.h>
#include <QImage>
#include <QBuffer>
#include "pyConsole.h"
#include "pyBindings.h"
#include "VoxelGridGroup.h"
#include "SproxelProject.h"
#include "MainWindow.h"


//ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ//


PyObject* qstr_to_py(const QString &str)
{
  return PyUnicode_FromUnicode((const Py_UNICODE*)str.constData(), str.length());
}


bool py_to_qstr(PyObject *o, QString &str)
{
  PyObject *u=NULL;

  if (!PyUnicode_Check(o))
  {
    u=PyUnicode_FromObject(o);
    if (!u) return false;
    o=u;
  }

  str.setUtf16(PyUnicode_AsUnicode(o), PyUnicode_GetSize(o));

  Py_XDECREF(u);
  return true;
}


bool py_to_color(PyObject *o, SproxelColor &c)
{
  if (PyInt_Check(o) || PyLong_Check(o))
  {<commit_msg>Convert python string to QString via wchar_t, should be more portable.<commit_after>#include <Python.h>
#include <QImage>
#include <QBuffer>
#include "pyConsole.h"
#include "pyBindings.h"
#include "VoxelGridGroup.h"
#include "SproxelProject.h"
#include "MainWindow.h"


//ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ//


PyObject* qstr_to_py(const QString &str)
{
  return PyUnicode_FromUnicode((const Py_UNICODE*)str.constData(), str.length());
}


bool py_to_qstr(PyObject *o, QString &str)
{
  PyObject *u=NULL;

  if (!PyUnicode_Check(o))
  {
    u=PyUnicode_FromObject(o);
    if (!u) return false;
    o=u;
  }

  str=QString::fromWCharArray(PyUnicode_AsUnicode(o), PyUnicode_GetSize(o));

  Py_XDECREF(u);
  return true;
}


bool py_to_color(PyObject *o, SproxelColor &c)
{
  if (PyInt_Check(o) || PyLong_Check(o))
  {
{'fraction_non_alphanumeric': 0.13797313797313798, 'fraction_numerical': 0.001221001221001221, 'mean_word_length': 5.689795918367347, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 2, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4175673', 'n_tokens_mistral': 689, 'n_tokens_neox': 693, 'n_words': 116}