lift-import 0.4.4

LIFT compiler importers: PyTorch FX, ONNX, Qiskit, and OpenQASM 3 frontends
Documentation
use lift_core::context::Context;
use thiserror::Error;

#[derive(Debug, Error)]
pub enum PyTorchImportError {
    #[error("Unknown PyTorch op: {0}")]
    UnknownOp(String),
    #[error("Import error: {0}")]
    General(String),
}

#[derive(Debug)]
pub struct PyTorchFxImporter;

impl PyTorchFxImporter {
    pub fn new() -> Self {
        Self
    }

    pub fn import_from_json(
        &self,
        ctx: &mut Context,
        json: &serde_json::Value,
    ) -> Result<(), PyTorchImportError> {
        let nodes = json
            .get("nodes")
            .and_then(|n| n.as_array())
            .ok_or_else(|| PyTorchImportError::General("Missing 'nodes' array".into()))?;

        let module_idx = ctx.create_module("pytorch_import");
        let func_name = ctx.intern_string("forward");
        let func = lift_core::functions::FunctionData::new(func_name, vec![], vec![]);
        ctx.add_function_to_module(module_idx, func);

        let _ = nodes.len();
        Ok(())
    }
}

impl Default for PyTorchFxImporter {
    fn default() -> Self {
        Self::new()
    }
}