llmcc_python/descriptor/
import.rs

1#[derive(Debug, Clone)]
2pub struct ImportDescriptor {
3    pub kind: ImportKind,
4    pub module: String,
5    pub names: Vec<String>,    // For "from X import Y, Z"
6    pub alias: Option<String>, // For "import X as Y"
7}
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10pub enum ImportKind {
11    Simple,   // import os
12    From,     // from collections import defaultdict
13    Relative, // from . import sibling
14}
15
16impl ImportDescriptor {
17    pub fn new(module: String, kind: ImportKind) -> Self {
18        Self {
19            kind,
20            module,
21            names: Vec::new(),
22            alias: None,
23        }
24    }
25
26    pub fn add_name(&mut self, name: String) {
27        self.names.push(name);
28    }
29
30    pub fn set_alias(&mut self, alias: String) {
31        self.alias = Some(alias);
32    }
33}