diff --git a/derive/src/pyclass.rs b/derive/src/pyclass.rs index cad700fdb9..9195d1ee9b 100644 --- a/derive/src/pyclass.rs +++ b/derive/src/pyclass.rs @@ -454,7 +454,7 @@ pub fn impl_pystruct_sequence(attr: AttributeArgs, item: Item) -> Result ::rustpython_vm::pyobject::PyResult<::rustpython_vm::obj::objtuple::PyTupleRef> { diff --git a/vm/src/sysmodule.rs b/vm/src/sysmodule.rs index cf2aa75c77..8abc125586 100644 --- a/vm/src/sysmodule.rs +++ b/vm/src/sysmodule.rs @@ -177,16 +177,6 @@ fn sys_exit(code: OptionalArg, _vm: &VirtualMachine) -> PyResult<()> { std::process::exit(code) } -#[pystruct_sequence(name = "version_info")] -#[derive(Default, Debug)] -struct VersionInfo { - major: usize, - minor: usize, - micro: usize, - releaselevel: String, - serial: usize, -} - pub fn make_module(vm: &VirtualMachine, module: PyObjectRef, builtins: PyObjectRef) { let ctx = &vm.ctx; @@ -195,16 +185,10 @@ pub fn make_module(vm: &VirtualMachine, module: PyObjectRef, builtins: PyObjectR .into_struct_sequence(vm, flags_type) .unwrap(); - let version_info_type = VersionInfo::make_class(ctx); - let version_info = VersionInfo { - major: env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap(), - minor: env!("CARGO_PKG_VERSION_MINOR").parse().unwrap(), - micro: env!("CARGO_PKG_VERSION_PATCH").parse().unwrap(), - releaselevel: "alpha".to_owned(), - serial: 0, - } - .into_struct_sequence(vm, version_info_type) - .unwrap(); + let version_info_type = version::VersionInfo::make_class(ctx); + let version_info = version::get_version_info() + .into_struct_sequence(vm, version_info_type) + .unwrap(); // TODO Add crate version to this namespace let implementation = py_namespace!(vm, { diff --git a/vm/src/version.rs b/vm/src/version.rs index eda1b3f7d0..ba18da7c00 100644 --- a/vm/src/version.rs +++ b/vm/src/version.rs @@ -1,6 +1,22 @@ /* Several function to retrieve version information. */ +const MAJOR: usize = 3; +const MINOR: usize = 5; +const MICRO: usize = 0; +const RELEASELEVEL: &str = "alpha"; +const SERIAL: usize = 0; + +#[pystruct_sequence(name = "version_info")] +#[derive(Default, Debug)] +pub struct VersionInfo { + major: usize, + minor: usize, + micro: usize, + releaselevel: &'static str, + serial: usize, +} + pub fn get_version() -> String { format!( "{} {:?} {}", @@ -10,14 +26,18 @@ pub fn get_version() -> String { ) } +pub fn get_version_info() -> VersionInfo { + VersionInfo { + major: MAJOR, + minor: MINOR, + micro: MICRO, + releaselevel: RELEASELEVEL, + serial: SERIAL, + } +} + pub fn get_version_number() -> String { - format!( - "{}.{}.{}{}", - env!("CARGO_PKG_VERSION_MAJOR"), - env!("CARGO_PKG_VERSION_MINOR"), - env!("CARGO_PKG_VERSION_PATCH"), - option_env!("CARGO_PKG_VERSION_PRE").unwrap_or("") - ) + format!("{}.{}.{}{}", MAJOR, MINOR, MICRO, RELEASELEVEL) } pub fn get_compiler() -> String {