@@ -33,6 +33,49 @@ namespace mo2::python {
3333
3434 void add_versioninfo_classes (py::module_ m)
3535 {
36+ // Version
37+ py::class_<Version> pyVersion (m, " Version" );
38+
39+ py::enum_<Version::ReleaseType>(pyVersion, " ReleaseType" )
40+ .value (" DEVELOPMENT" , Version::Development)
41+ .value (" ALPHA" , Version::Alpha)
42+ .value (" BETA" , Version::Beta)
43+ .value (" RELEASE_CANDIDATE" , Version::ReleaseCandidate)
44+ .export_values ();
45+
46+ py::enum_<Version::ParseMode>(pyVersion, " ParseMode" )
47+ .value (" SEMVER" , Version::ParseMode::SemVer)
48+ .value (" MO2" , Version::ParseMode::MO2);
49+
50+ pyVersion
51+ .def_static (" parse" , &Version::parse, " value" _a,
52+ " mode" _a = Version::ParseMode::SemVer)
53+ .def (py::init<int , int , int , QString>(), " major" _a, " minor" _a, " patch" _a,
54+ " metadata" _a = " " )
55+ .def (py::init<int , int , int , Version::ReleaseType, QString>(), " major" _a,
56+ " minor" _a, " patch" _a, " type" _a, " metadata" _a = " " )
57+ .def (py::init<int , int , int , Version::ReleaseType, int , QString>(),
58+ " major" _a, " minor" _a, " patch" _a, " type" _a, " prerelease" _a,
59+ " metadata" _a = " " )
60+ .def (py::init<int , int , int ,
61+ std::vector<std::variant<int , Version::ReleaseType>>,
62+ QString>(),
63+ " major" _a, " minor" _a, " patch" _a, " pre_releases" _a, " metadata" _a = " " )
64+ .def (" isPreRelease" , &Version::isPreRelease)
65+ .def_property_readonly (" major" , &Version::major)
66+ .def_property_readonly (" minor" , &Version::minor)
67+ .def_property_readonly (" patch" , &Version::patch)
68+ .def_property_readonly (" prerelease" , &Version::preReleases)
69+ .def_property_readonly (" build_metadata" , &Version::buildMetadata)
70+ .def (" __str__" , &Version::string)
71+ .def (py::self < py::self)
72+ .def (py::self > py::self)
73+ .def (py::self <= py::self)
74+ .def (py::self >= py::self)
75+ .def (py::self != py::self)
76+ .def (py::self == py::self);
77+
78+ // VersionInfo
3679 py::enum_<MOBase::VersionInfo::ReleaseType>(m, " ReleaseType" )
3780 .value (" final" , MOBase::VersionInfo::RELEASE_FINAL)
3881 .value (" candidate" , MOBase::VersionInfo::RELEASE_CANDIDATE)
@@ -447,7 +490,17 @@ namespace mo2::python {
447490 .def (" overwritePath" , &IOrganizer::overwritePath)
448491 .def (" basePath" , &IOrganizer::basePath)
449492 .def (" modsPath" , &IOrganizer::modsPath)
450- .def (" appVersion" , &IOrganizer::appVersion)
493+ .def (" appVersion" ,
494+ [](IOrganizer& o) {
495+ mo2::python::show_deprecation_warning (
496+ " appVersion" , " IOrganizer::appVersion() is deprecated, use "
497+ " IOrganizer::version() instead." );
498+ #pragma warning(push)
499+ #pragma warning(disable : 4996)
500+ return o.appVersion ();
501+ #pragma warning(pop)
502+ })
503+ .def (" version" , &IOrganizer::version)
451504 .def (" createMod" , &IOrganizer::createMod,
452505 py::return_value_policy::reference, " name" _a)
453506 .def (" getGame" , &IOrganizer::getGame, py::return_value_policy::reference,
0 commit comments