diff --git a/README.md b/README.md index 992344a796a4634a25d2127fc49b57adeae45863..5b07e147cb05c2fa1a6d275d567dda218b131996 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,19 @@ You can find here the C++ code of the Core library of Aidge. ## Pip installation -To install aidge_core using pip, make sure to set the desired install path : -``` bash -export AIDGE_INSTALL = '<path_to_aidge>/install' -``` -Then run in your python environnement : + +To install aidge_core using pip, run the following command in your python environnement : ``` bash pip install . -v ``` +**Note:** you can specify a custom install folder by setting an environment variable: + +``` bash +export AIDGE_INSTALL='<path_to_aidge>/install' +``` + ## Standard C++ Compilation Create two directories ``build`` and ``ìnstall``. diff --git a/aidge_core/unit_tests/test_operator_binding.py b/aidge_core/unit_tests/test_operator_binding.py index 344086871b8e137b4f0bcf4fb7d3638104532908..fcf4b0483869c9e9b006fe66db0778ab959aa7fc 100644 --- a/aidge_core/unit_tests/test_operator_binding.py +++ b/aidge_core/unit_tests/test_operator_binding.py @@ -67,5 +67,15 @@ class test_operator_binding(unittest.TestCase): self.generic_operator.add_attr("l_str", ["ok"]) self.assertEqual(self.generic_operator.get_attr("l_str"), ["ok"]) + def test_compute_output_dims(self): + in_dims=[25, 25] + input = aidge_core.Producer(in_dims, name="In") + genOp = aidge_core.GenericOperator("genOp", 1, 1, 1, name="genOp") + _ = aidge_core.sequential([input, genOp]) + self.assertListEqual(genOp.get_operator().output(0).dims(), []) + genOp.get_operator().set_compute_output_dims(lambda x:x) + genOp.get_operator().compute_output_dims() + self.assertListEqual(genOp.get_operator().output(0).dims(), in_dims) + if __name__ == '__main__': - unittest.main() \ No newline at end of file + unittest.main() diff --git a/python_binding/operator/pybind_GenericOperator.cpp b/python_binding/operator/pybind_GenericOperator.cpp index 79974ef5c6bee71e6b6929d6a151e9c2920f93bf..4cf4dae2234900722058d6555582c5b78900ab7d 100644 --- a/python_binding/operator/pybind_GenericOperator.cpp +++ b/python_binding/operator/pybind_GenericOperator.cpp @@ -11,6 +11,7 @@ #include <pybind11/pybind11.h> #include <pybind11/stl.h> +#include <pybind11/functional.h> #include <stdio.h> #include "aidge/backend/OperatorImpl.hpp" @@ -21,7 +22,11 @@ namespace Aidge { void init_GenericOperator(py::module& m) { py::class_<GenericOperator_Op, std::shared_ptr<GenericOperator_Op>, Operator, DynamicAttributes>(m, "GenericOperatorOp", - py::multiple_inheritance()); + py::multiple_inheritance()) + .def_readonly_static("identity", &GenericOperator_Op::Identity) + .def("compute_output_dims", &GenericOperator_Op::computeOutputDims) + .def("set_compute_output_dims", &GenericOperator_Op::setComputeOutputDims, py::arg("computation_function")); + m.def("GenericOperator", &GenericOperator, py::arg("type"), py::arg("nbDataIn"), py::arg("nbIn"), py::arg("nbOut"), py::arg("name") = ""); } diff --git a/setup.py b/setup.py index 0b0f66e9132d66cdb6385d7f8c6c69ae0cc5d0e3..16305afdfdfa5de2e328460d9e96c77eb96a9d98 100644 --- a/setup.py +++ b/setup.py @@ -62,11 +62,11 @@ class CMakeBuild(build_ext): os.chdir(str(build_temp)) - # Impose to use the executable of the python + # Impose to use the executable of the python # used to launch setup.py to setup PythonInterp param_py = "-DPYTHON_EXECUTABLE=" + sys.executable - - install_path = f"{build_temp}/install" if "AIDGE_INSTALL" not in os.environ else os.environ["AIDGE_INSTALL"] + + install_path = os.path.join(sys.prefix, "lib", "libAidge") if "AIDGE_INSTALL" not in os.environ else os.environ["AIDGE_INSTALL"] self.spawn(['cmake', str(cwd), param_py, '-DTEST=OFF', f'-DCMAKE_INSTALL_PREFIX:PATH={install_path}']) if not self.dry_run: @@ -83,11 +83,11 @@ class CMakeBuild(build_ext): for file in files: if file.endswith('.so') and (root != str(aidge_package.absolute())): currentFile=os.path.join(root, file) - shutil.copy(currentFile, str(aidge_package.absolute())) + shutil.copy(currentFile, str(aidge_package.absolute())) # Copy version.txt in aidge_package os.chdir(os.path.dirname(__file__)) - shutil.copy("version.txt", str(aidge_package.absolute())) + shutil.copy("version.txt", str(aidge_package.absolute())) if __name__ == '__main__':