Make typing stubs more accurate

This commit is contained in:
Romain Thomas
2023-10-21 05:47:32 +02:00
parent a27bd6a644
commit 2a2c56a173
32 changed files with 337 additions and 165 deletions
+5 -5
View File
@@ -19,6 +19,7 @@
#include "ART/pyART.hpp"
#include "typing/InputParser.hpp"
#include "pyutils.hpp"
#include "pyIOStream.hpp"
@@ -48,21 +49,20 @@ void create<Parser>(nb::module_& m) {
nb::rv_policy::take_ownership);
m.def("parse",
[] (nb::object obj, const std::string& name) -> nb::object {
[] (typing::InputParser obj, const std::string& name) -> std::unique_ptr<File> {
if (auto path_str = path_to_str(obj)) {
return nb::cast(Parser::parse(std::move(*path_str)));
return Parser::parse(std::move(*path_str));
}
if (auto stream = PyIOStream::from_python(obj)) {
auto ptr = std::make_unique<PyIOStream>(std::move(*stream));
return nb::cast(Parser::parse(stream->content(), name));
return Parser::parse(stream->content(), name);
}
logging::log(logging::LOG_ERR,
"LIEF parser interface does not support Python object: " +
type2str(obj));
return nb::none();
return nullptr;
},
"parse(obj: io.IOBase | os.PathLike, name: str = ...) -> Optional[lief.ART.File]"_p,
"obj"_a, "name"_a = "", nb::rv_policy::take_ownership);
}
}