feat: sync all remaining python source board configurations

This commit is contained in:
yczpf2019
2026-01-24 16:19:55 +08:00
parent 1990bee9a1
commit 20bde81bbb
519 changed files with 93119 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
/**
* @typedef {import('@mixly/python-mixpy').PythonMixpySKLearnGenerators} PythonMixpySKLearnGenerators
*/
// sklearn 初始化线性回归
export const sklearn_LinearRegression = function (_, generator) {
const value_model_name = generator.valueToCode(this, 'model_name', generator.ORDER_ATOMIC) || 'model';
const value_fit_intercept = generator.valueToCode(this, 'fit_intercept', generator.ORDER_ATOMIC) || 'True';
const value_n_jobs = generator.valueToCode(this, 'n_jobs', generator.ORDER_ATOMIC) || 'None';
generator.definitions_['import_sklearn_linear_model'] = 'from sklearn.linear_model import LinearRegression';
const code = value_model_name + ' = LinearRegression(fit_intercept=' + value_fit_intercept + ', n_jobs=' + value_n_jobs + ')\n';
return code;
}

View File

@@ -0,0 +1,21 @@
export const sound_effect_add = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
const effect = _block.getFieldValue("EFFECT");
const valueInput = _block.getInputTargetBlock("VALUE");
let val;
if (valueInput) {
if (valueInput.type === "math_number") {
val = valueInput.getFieldValue("NUM") || "10";
} else {
val = _generator.valueToCode(valueInput, "VALUE", _generator.ORDER_NONE) || "10";
}
} else {
val = "10";
}
return `sound.adjust_effect("${effect}", ${val})\n`;
};

View File

@@ -0,0 +1,7 @@
export const sound_effect_clear = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
return "sound.clear_effects()\n";
};

View File

@@ -0,0 +1,21 @@
export const sound_effect_set = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
const effect = _block.getFieldValue("EFFECT");
const valueInput = _block.getInputTargetBlock("VALUE");
let val;
if (valueInput) {
if (valueInput.type === "math_number") {
val = valueInput.getFieldValue("NUM") || "100";
} else {
val = _generator.valueToCode(valueInput, "VALUE", _generator.ORDER_NONE) || "100";
}
} else {
val = "100";
}
return `sound.set_effect("${effect}", ${val})\n`;
};

View File

@@ -0,0 +1,11 @@
export const sound_play = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
const sound = _block.getFieldValue("SOUND");
if (sound === "record") {
return `sound.record()\n`;
}
return `sound.play("${sound}")\n`;
};

View File

@@ -0,0 +1,10 @@
export const sound_play_frequency = function (_block, generator) {
if (!generator.definitions_['import_sound']) {
generator.definitions_['import_sound'] = 'import sound';
}
const frequencyInput = generator.valueToCode(this, "FREQUENCY", generator.ORDER_ATOMIC);
const durationInput = generator.valueToCode(this, "DURATION", generator.ORDER_ATOMIC);
return `sound.play_frequency(${frequencyInput}, ${durationInput})\n`;
};

View File

@@ -0,0 +1,9 @@
export const sound_play_frequency_no_duration = function (_block, generator) {
if (!generator.definitions_['import_sound']) {
generator.definitions_['import_sound'] = 'import sound';
}
const frequencyInput = generator.valueToCode(this, "FREQUENCY", generator.ORDER_ATOMIC);
return `sound.play_frequency_no_duration(${frequencyInput})\n`;
};

View File

@@ -0,0 +1,9 @@
export const sound_play_note_list = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
const noteList = this.getFieldValue("NOTE_LIST");
return `sound.play_note_list("${noteList}")\n`;
};

View File

@@ -0,0 +1,12 @@
export const sound_play_wait = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
const sound = _block.getFieldValue("SOUND");
if (sound === "record") {
return `sound.record()\n`;
}
return `sound.play_blocking("${sound}")\n`;
};

View File

@@ -0,0 +1,7 @@
export const sound_record = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
return `sound.record()\n`;
};

View File

@@ -0,0 +1,7 @@
export const sound_note = function (_block, generator) {
// 获取频率值(字符串格式)
const frequency = this.getFieldValue("NOTE");
return [frequency, generator.ORDER_ATOMIC];
};

View File

@@ -0,0 +1,7 @@
export const sound_stop_all = function(_block, _generator) {
if (!_generator.definitions_['import_sound']) {
_generator.definitions_['import_sound'] = 'import sound';
}
return "sound.stop_all()\n";
};

View File

@@ -0,0 +1,8 @@
export const sound_volume_add = function(_block, generator) {
if (!generator.definitions_['import_sound']) {
generator.definitions_['import_sound'] = 'import sound';
}
const val = generator.valueToCode(_block, "VALUE", generator.ORDER_NONE) || "0";
return `sound.adjust_volume(${val})\n`;
};

View File

@@ -0,0 +1,7 @@
export const sound_volume_get = function(_block, generator) {
if (!generator.definitions_['import_sound']) {
generator.definitions_['import_sound'] = 'import sound';
}
return ['sound.get_volume()', generator.ORDER_ATOMIC];
};

View File

@@ -0,0 +1,8 @@
export const sound_volume_set = function(_block, generator) {
if (!generator.definitions_['import_sound']) {
generator.definitions_['import_sound'] = 'import sound';
}
const val = generator.valueToCode(_block, "VALUE", generator.ORDER_NONE) || "100";
return `sound.set_volume(${val})\n`;
};

View File

@@ -0,0 +1,97 @@
export const tensorflow_init_tensor = function (_, generator) {
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var code = 'tensorflow.tensor(' + VALUE_INPUT_VAR + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_sequential = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var code = 'tensorflow.sequential()';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_layers_dense = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = 'tensorflow.layers.dense(units = ' + VALUE_INPUT_VAR1 + ', input_shape = ' + VALUE_INPUT_VAR2 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_add = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR1 + '.add(' + VALUE_INPUT_VAR2 + ')\n';
return code;
};
export const tensorflow_compile = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = this.getFieldValue("VAR2");
var VALUE_INPUT_VAR3 = this.getFieldValue("VAR3");
var code = VALUE_INPUT_VAR1 + '.compile(loss = "' + VALUE_INPUT_VAR2 + '", optimizer = "' + VALUE_INPUT_VAR3 + '")\n';
return code;
}
export const tensorflow_fit = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR3 = generator.valueToCode(this, "VAR3", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR4 = generator.valueToCode(this, "VAR4", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR5 = generator.valueToCode(this, "VAR5", generator.ORDER_ATOMIC);
var code = 'await ' + VALUE_INPUT_VAR1 + '.fit(' + VALUE_INPUT_VAR2 + ', ' + VALUE_INPUT_VAR3 + ', epochs=' + VALUE_INPUT_VAR4 + ', verbose=' + VALUE_INPUT_VAR5 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_get_loss = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR + '.history.loss';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_predict = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR1", generator.ORDER_ATOMIC);
var VALUE_INPUT_VAR2 = generator.valueToCode(this, "VAR2", generator.ORDER_ATOMIC);
var code = VALUE_INPUT_VAR1 + '.predict(' + VALUE_INPUT_VAR2 + ')';
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_get_tensor_data = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_VAR1 = generator.valueToCode(this, "VAR", generator.ORDER_ATOMIC);
var code = "(await " + VALUE_INPUT_VAR1 + ".data())";
return [code, generator.ORDER_ATOMIC];
};
export const tensorflow_save_or_export_model = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_NAME1 = generator.valueToCode(this, "NAME1", generator.ORDER_ATOMIC);
var FIELD_NAME = this.getFieldValue("NAME");
var VALUE_INPUT_NAME2 = generator.valueToCode(this, "NAME2", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
if (FIELD_NAME == "export") {
return `await ${VALUE_INPUT_NAME1}.save("downloads://${VALUE_INPUT_NAME2}")\n`;
}
return `await ${VALUE_INPUT_NAME1}.save("indexeddb://${VALUE_INPUT_NAME2}")\n`;
};
export const tensorflow_use_load_model = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC).replace(/^'|'$/g, '');
return [`await tensorflow.load_model("${VALUE_INPUT_NAME}")`, generator.ORDER_ATOMIC];
};
export const tensorflow_prepare_picture = function (_, generator) {
generator.definitions_['import_tensorflow'] = 'import tensorflow';
generator.definitions_['import_numpy'] = 'import numpy';
generator.definitions_['import_PIL'] = 'import PIL';
var VALUE_INPUT_NAME = generator.valueToCode(this, "NAME", generator.ORDER_ATOMIC);
return [`(await tensorflow.prepare_qmyixtxi(tensorflow.tensor(numpy.array(PIL.Image.open(${VALUE_INPUT_NAME}).convert('RGB')))))`, generator.ORDER_ATOMIC];
};