use crate::{
builtins::Builtins,
bytecode::VM,
heap::{HeapData, HeapId},
intern::StaticStrings,
resource::{ResourceError, ResourceTracker},
types::{Module, Type},
value::Value,
};
pub fn create_module(vm: &mut VM<'_, impl ResourceTracker>) -> Result<HeapId, ResourceError> {
let mut module = Module::new(StaticStrings::Datetime);
module.set_attr(StaticStrings::Date, Value::Builtin(Builtins::Type(Type::Date)), vm);
module.set_attr(
StaticStrings::Datetime,
Value::Builtin(Builtins::Type(Type::DateTime)),
vm,
);
module.set_attr(
StaticStrings::Timedelta,
Value::Builtin(Builtins::Type(Type::TimeDelta)),
vm,
);
module.set_attr(
StaticStrings::Timezone,
Value::Builtin(Builtins::Type(Type::TimeZone)),
vm,
);
vm.heap.allocate(HeapData::Module(module))
}