mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
ignore .pyi if .py.o exist
support load py.o add cjon_test.pyi
This commit is contained in:
parent
6bb5adde37
commit
e72d1efa36
BIN
port/linux/package/pikascript/cjson_test.py.o
Normal file
BIN
port/linux/package/pikascript/cjson_test.py.o
Normal file
Binary file not shown.
4
port/linux/package/pikascript/cjson_test.pyi
Normal file
4
port/linux/package/pikascript/cjson_test.pyi
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
import pika_cjson as cjson
|
||||||
|
|
||||||
|
|
||||||
|
def test_start(): ...
|
@ -480,7 +480,36 @@ int pikaMaker_getDependencies(PikaMaker* self, char* module_name) {
|
|||||||
strsAppend(&buffs, imp_module_path, ".py"), "rb");
|
strsAppend(&buffs, imp_module_path, ".py"), "rb");
|
||||||
FILE* imp_file_pyi = __platform_fopen(
|
FILE* imp_file_pyi = __platform_fopen(
|
||||||
strsAppend(&buffs, imp_module_path, ".pyi"), "rb");
|
strsAppend(&buffs, imp_module_path, ".pyi"), "rb");
|
||||||
if (NULL != imp_file_py) {
|
FILE* imp_file_pyo = __platform_fopen(
|
||||||
|
strsAppend(&buffs, imp_module_path, ".py.o"), "rb");
|
||||||
|
if (NULL != imp_file_pyo) {
|
||||||
|
__platform_printf(" loading %s.py.o...\r\n",
|
||||||
|
imp_module_path);
|
||||||
|
/* found *.py.o, push to compiled list */
|
||||||
|
pikaMaker_setState(self, imp_module_name, "compiled");
|
||||||
|
char* imp_api_path = strsAppend(
|
||||||
|
&buffs, obj_getStr(self, "pwd"), "pikascript-api/");
|
||||||
|
imp_api_path =
|
||||||
|
strsAppend(&buffs, imp_api_path, imp_module_name);
|
||||||
|
FILE* imp_file_pyo_api = __platform_fopen(
|
||||||
|
strsAppend(&buffs, imp_api_path, ".py.o"), "wb+");
|
||||||
|
/* copy imp_file_pyo to imp_api_path */
|
||||||
|
uint8_t* buff = (uint8_t*)__platform_malloc(128);
|
||||||
|
size_t read_size = 0;
|
||||||
|
while (1) {
|
||||||
|
read_size =
|
||||||
|
__platform_fread(buff, 1, 128, imp_file_pyo);
|
||||||
|
if (read_size > 0) {
|
||||||
|
__platform_fwrite(buff, 1, read_size,
|
||||||
|
imp_file_pyo_api);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
__platform_free(buff);
|
||||||
|
__platform_fclose(imp_file_pyo);
|
||||||
|
__platform_fclose(imp_file_pyo_api);
|
||||||
|
} else if (NULL != imp_file_py) {
|
||||||
/* found *.py, push to nocompiled list */
|
/* found *.py, push to nocompiled list */
|
||||||
pikaMaker_setState(self, imp_module_name, "nocompiled");
|
pikaMaker_setState(self, imp_module_name, "nocompiled");
|
||||||
__platform_fclose(imp_file_py);
|
__platform_fclose(imp_file_py);
|
||||||
@ -490,8 +519,9 @@ int pikaMaker_getDependencies(PikaMaker* self, char* module_name) {
|
|||||||
__platform_fclose(imp_file_pyi);
|
__platform_fclose(imp_file_pyi);
|
||||||
} else {
|
} else {
|
||||||
__platform_printf(
|
__platform_printf(
|
||||||
" [warning]: file: '%s.pyi' or '%s.py' no found\n",
|
" [warning]: file: '%s.pyi', '%s.py' or '%s.py.o' "
|
||||||
imp_module_name, imp_module_name);
|
"no found\n",
|
||||||
|
imp_module_name, imp_module_name, imp_module_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
#define PIKA_VERSION_MINOR 11
|
#define PIKA_VERSION_MINOR 11
|
||||||
#define PIKA_VERSION_MICRO 5
|
#define PIKA_VERSION_MICRO 5
|
||||||
|
|
||||||
#define PIKA_EDIT_TIME "2022/10/20 22:50:44"
|
#define PIKA_EDIT_TIME "2022/10/21 12:27:40"
|
||||||
|
@ -2,6 +2,7 @@ import PikaStdLib
|
|||||||
import test, module
|
import test, module
|
||||||
|
|
||||||
import TemplateDevice
|
import TemplateDevice
|
||||||
|
import test_pyo
|
||||||
from pika_cjson import cJSON
|
from pika_cjson import cJSON
|
||||||
print('hello pikascript!')
|
print('hello pikascript!')
|
||||||
mem = PikaStdLib.MemChecker()
|
mem = PikaStdLib.MemChecker()
|
||||||
|
Binary file not shown.
@ -96,7 +96,7 @@ impl Compiler {
|
|||||||
|
|
||||||
let package_items: Vec<&str> = package_list.split(',').collect();
|
let package_items: Vec<&str> = package_list.split(',').collect();
|
||||||
for item in package_items {
|
for item in package_items {
|
||||||
compiler = Compiler::analyse_package_from_py(compiler, item.to_string());
|
compiler = Compiler::analyse_py_or_pyi_or_pyo(compiler, item.to_string());
|
||||||
}
|
}
|
||||||
return compiler;
|
return compiler;
|
||||||
}
|
}
|
||||||
@ -114,7 +114,7 @@ impl Compiler {
|
|||||||
class_now.script_list.add(&line);
|
class_now.script_list.add(&line);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Compiler::analyse_package_from_py(compiler, package_name.to_string());
|
return Compiler::analyse_py_or_pyi_or_pyo(compiler, package_name.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_top_pkg {
|
if is_top_pkg {
|
||||||
@ -152,7 +152,26 @@ impl Compiler {
|
|||||||
return self.__do_analyse_file(file_name, PackageType::CPackageInner);
|
return self.__do_analyse_file(file_name, PackageType::CPackageInner);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn analyse_package_from_py(mut self: Compiler, file_name: String) -> Compiler {
|
pub fn analyse_py_or_pyi_or_pyo(mut self: Compiler, file_name: String) -> Compiler {
|
||||||
|
/* check py.o */
|
||||||
|
let suffix = String::from("py.o");
|
||||||
|
/* open file */
|
||||||
|
let file: std::result::Result<std::fs::File, std::io::Error>;
|
||||||
|
file = Compiler::open_file(format!("{}{}.{}", self.source_path, file_name, suffix));
|
||||||
|
match file {
|
||||||
|
/* py import py.o => do nothing */
|
||||||
|
Ok(_) => {
|
||||||
|
println!(
|
||||||
|
" found {}{}.{}...",
|
||||||
|
self.source_path, file_name, suffix
|
||||||
|
);
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
/* continue */
|
||||||
|
Err(_) => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* check pyi */
|
||||||
let suffix = String::from("pyi");
|
let suffix = String::from("pyi");
|
||||||
/* open file */
|
/* open file */
|
||||||
let file: std::result::Result<std::fs::File, std::io::Error>;
|
let file: std::result::Result<std::fs::File, std::io::Error>;
|
||||||
@ -171,12 +190,13 @@ impl Compiler {
|
|||||||
|
|
||||||
return Compiler::analyse_c_package_top(self, file_name);
|
return Compiler::analyse_c_package_top(self, file_name);
|
||||||
}
|
}
|
||||||
Err(_) => {
|
/* continue */
|
||||||
|
Err(_) => {}
|
||||||
|
};
|
||||||
|
|
||||||
/* py import py => inner_py */
|
/* py import py => inner_py */
|
||||||
return self.analyse_py_package_inner(file_name.clone());
|
return self.analyse_py_package_inner(file_name.clone());
|
||||||
}
|
}
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
fn __do_analyse_file(mut self: Compiler, file_name: String, pkg_type: PackageType) -> Compiler {
|
fn __do_analyse_file(mut self: Compiler, file_name: String, pkg_type: PackageType) -> Compiler {
|
||||||
let is_top_c_pkg = match pkg_type {
|
let is_top_c_pkg = match pkg_type {
|
||||||
@ -205,15 +225,15 @@ impl Compiler {
|
|||||||
let mut file = match file {
|
let mut file = match file {
|
||||||
Ok(file) => file,
|
Ok(file) => file,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
if suffix == "pyi" {
|
|
||||||
/* if .pyi no exist, check .py exist */
|
|
||||||
return self.analyse_py_package_inner(file_name.clone());
|
|
||||||
}
|
|
||||||
|
|
||||||
/* .py no exist, error */
|
/* .py no exist, error */
|
||||||
println!(
|
println!(
|
||||||
" [warning]: file: '{}{}.pyi' or '{}{}.py' no found",
|
" [warning]: file: '{}{}.pyi', '{}{}.py' or '{}{}.py.o' no found",
|
||||||
self.source_path, file_name, self.source_path, file_name
|
self.source_path,
|
||||||
|
file_name,
|
||||||
|
self.source_path,
|
||||||
|
file_name,
|
||||||
|
self.source_path,
|
||||||
|
file_name
|
||||||
);
|
);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
@ -318,6 +338,7 @@ impl Compiler {
|
|||||||
if line.starts_with("import ") {
|
if line.starts_with("import ") {
|
||||||
let tokens: Vec<&str> = line.split(" ").collect();
|
let tokens: Vec<&str> = line.split(" ").collect();
|
||||||
let file = tokens[1];
|
let file = tokens[1];
|
||||||
|
/* cmodule cannot import pymodule */
|
||||||
return Compiler::analyse_c_package_inner(compiler, file.to_string());
|
return Compiler::analyse_c_package_inner(compiler, file.to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -165,6 +165,15 @@ func checkout_requestments(path string, repo *git.Repository, requerments []Requ
|
|||||||
CheckIfError(os.Rename(pyFileSource, pyFileName))
|
CheckIfError(os.Rename(pyFileSource, pyFileName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pyiFileList, _ := FilterDirsGlob(dirPath, "*.py.o")
|
||||||
|
for i := range pyiFileList {
|
||||||
|
pyFileSource := strings.ReplaceAll(pyiFileList[i], "\\", "/")
|
||||||
|
pyFilePath := strings.Split(pyFileSource, "/")
|
||||||
|
pyFileName := pyFilePath[len(pyFilePath)-1]
|
||||||
|
fmt.Println("Installed: " + pyFileName + ": " + requerment.Version)
|
||||||
|
CheckIfError(os.Rename(pyFileSource, pyFileName))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
err := workTree.Checkout(&git.CheckoutOptions{
|
err := workTree.Checkout(&git.CheckoutOptions{
|
||||||
Hash: plumbing.NewHash("master"),
|
Hash: plumbing.NewHash("master"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user