Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/version dot zero #62742

Merged
merged 6 commits into from
Sep 28, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog/60722.added
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added .0 back to our versioning scheme for future versions (e.g. 3006.0)
221 changes: 116 additions & 105 deletions salt/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,110 +76,110 @@ class SaltVersionsInfo(type):
MAGNESIUM = SaltVersion("Magnesium" , info=3002, released=True)
ALUMINIUM = SaltVersion("Aluminium" , info=3003, released=True)
SILICON = SaltVersion("Silicon" , info=3004, released=True)
PHOSPHORUS = SaltVersion("Phosphorus" , info=3005)
SULFUR = SaltVersion("Sulfur" , info=3006)
CHLORINE = SaltVersion("Chlorine" , info=3007)
ARGON = SaltVersion("Argon" , info=3008)
POTASSIUM = SaltVersion("Potassium" , info=3009)
CALCIUM = SaltVersion("Calcium" , info=3010)
SCANDIUM = SaltVersion("Scandium" , info=3011)
TITANIUM = SaltVersion("Titanium" , info=3012)
VANADIUM = SaltVersion("Vanadium" , info=3013)
CHROMIUM = SaltVersion("Chromium" , info=3014)
MANGANESE = SaltVersion("Manganese" , info=3015)
IRON = SaltVersion("Iron" , info=3016)
COBALT = SaltVersion("Cobalt" , info=3017)
NICKEL = SaltVersion("Nickel" , info=3018)
COPPER = SaltVersion("Copper" , info=3019)
ZINC = SaltVersion("Zinc" , info=3020)
GALLIUM = SaltVersion("Gallium" , info=3021)
GERMANIUM = SaltVersion("Germanium" , info=3022)
ARSENIC = SaltVersion("Arsenic" , info=3023)
SELENIUM = SaltVersion("Selenium" , info=3024)
BROMINE = SaltVersion("Bromine" , info=3025)
KRYPTON = SaltVersion("Krypton" , info=3026)
RUBIDIUM = SaltVersion("Rubidium" , info=3027)
STRONTIUM = SaltVersion("Strontium" , info=3028)
YTTRIUM = SaltVersion("Yttrium" , info=3029)
ZIRCONIUM = SaltVersion("Zirconium" , info=3030)
NIOBIUM = SaltVersion("Niobium" , info=3031)
MOLYBDENUM = SaltVersion("Molybdenum" , info=3032)
TECHNETIUM = SaltVersion("Technetium" , info=3033)
RUTHENIUM = SaltVersion("Ruthenium" , info=3034)
RHODIUM = SaltVersion("Rhodium" , info=3035)
PALLADIUM = SaltVersion("Palladium" , info=3036)
SILVER = SaltVersion("Silver" , info=3037)
CADMIUM = SaltVersion("Cadmium" , info=3038)
INDIUM = SaltVersion("Indium" , info=3039)
TIN = SaltVersion("Tin" , info=3040)
ANTIMONY = SaltVersion("Antimony" , info=3041)
TELLURIUM = SaltVersion("Tellurium" , info=3042)
IODINE = SaltVersion("Iodine" , info=3043)
XENON = SaltVersion("Xenon" , info=3044)
CESIUM = SaltVersion("Cesium" , info=3045)
BARIUM = SaltVersion("Barium" , info=3046)
LANTHANUM = SaltVersion("Lanthanum" , info=3047)
CERIUM = SaltVersion("Cerium" , info=3048)
PRASEODYMIUM = SaltVersion("Praseodymium" , info=3049)
NEODYMIUM = SaltVersion("Neodymium" , info=3050)
PROMETHIUM = SaltVersion("Promethium" , info=3051)
SAMARIUM = SaltVersion("Samarium" , info=3052)
EUROPIUM = SaltVersion("Europium" , info=3053)
GADOLINIUM = SaltVersion("Gadolinium" , info=3054)
TERBIUM = SaltVersion("Terbium" , info=3055)
DYSPROSIUM = SaltVersion("Dysprosium" , info=3056)
HOLMIUM = SaltVersion("Holmium" , info=3057)
ERBIUM = SaltVersion("Erbium" , info=3058)
THULIUM = SaltVersion("Thulium" , info=3059)
YTTERBIUM = SaltVersion("Ytterbium" , info=3060)
LUTETIUM = SaltVersion("Lutetium" , info=3061)
HAFNIUM = SaltVersion("Hafnium" , info=3062)
TANTALUM = SaltVersion("Tantalum" , info=3063)
TUNGSTEN = SaltVersion("Tungsten" , info=3064)
RHENIUM = SaltVersion("Rhenium" , info=3065)
OSMIUM = SaltVersion("Osmium" , info=3066)
IRIDIUM = SaltVersion("Iridium" , info=3067)
PLATINUM = SaltVersion("Platinum" , info=3068)
GOLD = SaltVersion("Gold" , info=3069)
MERCURY = SaltVersion("Mercury" , info=3070)
THALLIUM = SaltVersion("Thallium" , info=3071)
LEAD = SaltVersion("Lead" , info=3072)
BISMUTH = SaltVersion("Bismuth" , info=3073)
POLONIUM = SaltVersion("Polonium" , info=3074)
ASTATINE = SaltVersion("Astatine" , info=3075)
RADON = SaltVersion("Radon" , info=3076)
FRANCIUM = SaltVersion("Francium" , info=3077)
RADIUM = SaltVersion("Radium" , info=3078)
ACTINIUM = SaltVersion("Actinium" , info=3079)
THORIUM = SaltVersion("Thorium" , info=3080)
PROTACTINIUM = SaltVersion("Protactinium" , info=3081)
URANIUM = SaltVersion("Uranium" , info=3082)
NEPTUNIUM = SaltVersion("Neptunium" , info=3083)
PLUTONIUM = SaltVersion("Plutonium" , info=3084)
AMERICIUM = SaltVersion("Americium" , info=3085)
CURIUM = SaltVersion("Curium" , info=3086)
BERKELIUM = SaltVersion("Berkelium" , info=3087)
CALIFORNIUM = SaltVersion("Californium" , info=3088)
EINSTEINIUM = SaltVersion("Einsteinium" , info=3089)
FERMIUM = SaltVersion("Fermium" , info=3090)
MENDELEVIUM = SaltVersion("Mendelevium" , info=3091)
NOBELIUM = SaltVersion("Nobelium" , info=3092)
LAWRENCIUM = SaltVersion("Lawrencium" , info=3093)
RUTHERFORDIUM = SaltVersion("Rutherfordium", info=3094)
DUBNIUM = SaltVersion("Dubnium" , info=3095)
SEABORGIUM = SaltVersion("Seaborgium" , info=3096)
BOHRIUM = SaltVersion("Bohrium" , info=3097)
HASSIUM = SaltVersion("Hassium" , info=3098)
MEITNERIUM = SaltVersion("Meitnerium" , info=3099)
DARMSTADTIUM = SaltVersion("Darmstadtium" , info=3100)
ROENTGENIUM = SaltVersion("Roentgenium" , info=3101)
COPERNICIUM = SaltVersion("Copernicium" , info=3102)
NIHONIUM = SaltVersion("Nihonium" , info=3103)
FLEROVIUM = SaltVersion("Flerovium" , info=3104)
MOSCOVIUM = SaltVersion("Moscovium" , info=3105)
LIVERMORIUM = SaltVersion("Livermorium" , info=3106)
TENNESSINE = SaltVersion("Tennessine" , info=3107)
OGANESSON = SaltVersion("Oganesson" , info=3108)
PHOSPHORUS = SaltVersion("Phosphorus" , info=3005, released=True)
SULFUR = SaltVersion("Sulfur" , info=(3006, 0))
CHLORINE = SaltVersion("Chlorine" , info=(3007, 0))
ARGON = SaltVersion("Argon" , info=(3008, 0))
POTASSIUM = SaltVersion("Potassium" , info=(3009, 0))
CALCIUM = SaltVersion("Calcium" , info=(3010, 0))
SCANDIUM = SaltVersion("Scandium" , info=(3011, 0))
TITANIUM = SaltVersion("Titanium" , info=(3012, 0))
VANADIUM = SaltVersion("Vanadium" , info=(3013, 0))
CHROMIUM = SaltVersion("Chromium" , info=(3014, 0))
MANGANESE = SaltVersion("Manganese" , info=(3015, 0))
IRON = SaltVersion("Iron" , info=(3016, 0))
COBALT = SaltVersion("Cobalt" , info=(3017, 0))
NICKEL = SaltVersion("Nickel" , info=(3018, 0))
COPPER = SaltVersion("Copper" , info=(3019, 0))
ZINC = SaltVersion("Zinc" , info=(3020, 0))
GALLIUM = SaltVersion("Gallium" , info=(3021, 0))
GERMANIUM = SaltVersion("Germanium" , info=(3022, 0))
ARSENIC = SaltVersion("Arsenic" , info=(3023, 0))
SELENIUM = SaltVersion("Selenium" , info=(3024, 0))
BROMINE = SaltVersion("Bromine" , info=(3025, 0))
KRYPTON = SaltVersion("Krypton" , info=(3026, 0))
RUBIDIUM = SaltVersion("Rubidium" , info=(3027, 0))
STRONTIUM = SaltVersion("Strontium" , info=(3028, 0))
YTTRIUM = SaltVersion("Yttrium" , info=(3029, 0))
ZIRCONIUM = SaltVersion("Zirconium" , info=(3030, 0))
NIOBIUM = SaltVersion("Niobium" , info=(3031, 0))
MOLYBDENUM = SaltVersion("Molybdenum" , info=(3032, 0))
TECHNETIUM = SaltVersion("Technetium" , info=(3033, 0))
RUTHENIUM = SaltVersion("Ruthenium" , info=(3034, 0))
RHODIUM = SaltVersion("Rhodium" , info=(3035, 0))
PALLADIUM = SaltVersion("Palladium" , info=(3036, 0))
SILVER = SaltVersion("Silver" , info=(3037, 0))
CADMIUM = SaltVersion("Cadmium" , info=(3038, 0))
INDIUM = SaltVersion("Indium" , info=(3039, 0))
TIN = SaltVersion("Tin" , info=(3040, 0))
ANTIMONY = SaltVersion("Antimony" , info=(3041, 0))
TELLURIUM = SaltVersion("Tellurium" , info=(3042, 0))
IODINE = SaltVersion("Iodine" , info=(3043, 0))
XENON = SaltVersion("Xenon" , info=(3044, 0))
CESIUM = SaltVersion("Cesium" , info=(3045, 0))
BARIUM = SaltVersion("Barium" , info=(3046, 0))
LANTHANUM = SaltVersion("Lanthanum" , info=(3047, 0))
CERIUM = SaltVersion("Cerium" , info=(3048, 0))
PRASEODYMIUM = SaltVersion("Praseodymium" , info=(3049, 0))
NEODYMIUM = SaltVersion("Neodymium" , info=(3050, 0))
PROMETHIUM = SaltVersion("Promethium" , info=(3051, 0))
SAMARIUM = SaltVersion("Samarium" , info=(3052, 0))
EUROPIUM = SaltVersion("Europium" , info=(3053, 0))
GADOLINIUM = SaltVersion("Gadolinium" , info=(3054, 0))
TERBIUM = SaltVersion("Terbium" , info=(3055, 0))
DYSPROSIUM = SaltVersion("Dysprosium" , info=(3056, 0))
HOLMIUM = SaltVersion("Holmium" , info=(3057, 0))
ERBIUM = SaltVersion("Erbium" , info=(3058, 0))
THULIUM = SaltVersion("Thulium" , info=(3059, 0))
YTTERBIUM = SaltVersion("Ytterbium" , info=(3060, 0))
LUTETIUM = SaltVersion("Lutetium" , info=(3061, 0))
HAFNIUM = SaltVersion("Hafnium" , info=(3062, 0))
TANTALUM = SaltVersion("Tantalum" , info=(3063, 0))
TUNGSTEN = SaltVersion("Tungsten" , info=(3064, 0))
RHENIUM = SaltVersion("Rhenium" , info=(3065, 0))
OSMIUM = SaltVersion("Osmium" , info=(3066, 0))
IRIDIUM = SaltVersion("Iridium" , info=(3067, 0))
PLATINUM = SaltVersion("Platinum" , info=(3068, 0))
GOLD = SaltVersion("Gold" , info=(3069, 0))
MERCURY = SaltVersion("Mercury" , info=(3070, 0))
THALLIUM = SaltVersion("Thallium" , info=(3071, 0))
LEAD = SaltVersion("Lead" , info=(3072, 0))
BISMUTH = SaltVersion("Bismuth" , info=(3073, 0))
POLONIUM = SaltVersion("Polonium" , info=(3074, 0))
ASTATINE = SaltVersion("Astatine" , info=(3075, 0))
RADON = SaltVersion("Radon" , info=(3076, 0))
FRANCIUM = SaltVersion("Francium" , info=(3077, 0))
RADIUM = SaltVersion("Radium" , info=(3078, 0))
ACTINIUM = SaltVersion("Actinium" , info=(3079, 0))
THORIUM = SaltVersion("Thorium" , info=(3080, 0))
PROTACTINIUM = SaltVersion("Protactinium" , info=(3081, 0))
URANIUM = SaltVersion("Uranium" , info=(3082, 0))
NEPTUNIUM = SaltVersion("Neptunium" , info=(3083, 0))
PLUTONIUM = SaltVersion("Plutonium" , info=(3084, 0))
AMERICIUM = SaltVersion("Americium" , info=(3085, 0))
CURIUM = SaltVersion("Curium" , info=(3086, 0))
BERKELIUM = SaltVersion("Berkelium" , info=(3087, 0))
CALIFORNIUM = SaltVersion("Californium" , info=(3088, 0))
EINSTEINIUM = SaltVersion("Einsteinium" , info=(3089, 0))
FERMIUM = SaltVersion("Fermium" , info=(3090, 0))
MENDELEVIUM = SaltVersion("Mendelevium" , info=(3091, 0))
NOBELIUM = SaltVersion("Nobelium" , info=(3092, 0))
LAWRENCIUM = SaltVersion("Lawrencium" , info=(3093, 0))
RUTHERFORDIUM = SaltVersion("Rutherfordium", info=(3094, 0))
DUBNIUM = SaltVersion("Dubnium" , info=(3095, 0))
SEABORGIUM = SaltVersion("Seaborgium" , info=(3096, 0))
BOHRIUM = SaltVersion("Bohrium" , info=(3097, 0))
HASSIUM = SaltVersion("Hassium" , info=(3098, 0))
MEITNERIUM = SaltVersion("Meitnerium" , info=(3099, 0))
DARMSTADTIUM = SaltVersion("Darmstadtium" , info=(3100, 0))
ROENTGENIUM = SaltVersion("Roentgenium" , info=(3101, 0))
COPERNICIUM = SaltVersion("Copernicium" , info=(3102, 0))
NIHONIUM = SaltVersion("Nihonium" , info=(3103, 0))
FLEROVIUM = SaltVersion("Flerovium" , info=(3104, 0))
MOSCOVIUM = SaltVersion("Moscovium" , info=(3105, 0))
LIVERMORIUM = SaltVersion("Livermorium" , info=(3106, 0))
TENNESSINE = SaltVersion("Tennessine" , info=(3107, 0))
OGANESSON = SaltVersion("Oganesson" , info=(3108, 0))
# <---- Please refrain from fixing whitespace -----------------------------------
# The idea is to keep this readable.
# -------------------------------------------------------------------------------
Expand Down Expand Up @@ -288,6 +288,8 @@ def __init__(
minor = None
else:
minor = int(minor)
if self.can_have_dot_zero(major):
minor = minor if minor else 0

if bugfix is None and not self.new_version(major=major):
bugfix = 0
Expand Down Expand Up @@ -336,6 +338,12 @@ def new_version(self, major):
"""
return bool(int(major) >= 3000 and int(major) < VERSION_LIMIT)

def can_have_dot_zero(self, major):
"""
determine if using new versioning scheme
"""
return bool(int(major) >= 3006 and int(major) < VERSION_LIMIT)

@classmethod
def parse(cls, version_string):
if version_string.lower() in cls.LNAMES:
Expand Down Expand Up @@ -388,6 +396,8 @@ def min_info(self):
if self.new_version(self.major):
if self.minor:
info.append(self.minor)
elif self.can_have_dot_zero(self.major):
info.append(self.minor)
else:
info.extend([self.minor, self.bugfix, self.mbugfix])
return info
Expand Down Expand Up @@ -439,6 +449,8 @@ def string(self):
version_string = "{}".format(self.major)
if self.minor:
version_string = "{}.{}".format(self.major, self.minor)
if not self.minor and self.can_have_dot_zero(self.major):
version_string = "{}.{}".format(self.major, self.minor)
else:
version_string = "{}.{}.{}".format(self.major, self.minor, self.bugfix)
if self.mbugfix:
Expand Down Expand Up @@ -490,7 +502,6 @@ def __compare__(self, other, method):
raise ValueError(
"Cannot instantiate Version from type '{}'".format(type(other))
)

pre_type = self.pre_index
other_pre_type = other.pre_index
other_noc_info = list(other.noc_info)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def foo():

assert str(w[-1].message) == (
"Passing 'defaults' to 'namespaced_function' is deprecated, slated "
"for removal in 3008 and no longer does anything for the function "
"for removal in 3008.0 (Argon) and no longer does anything for the function "
"being namespaced."
)

Expand All @@ -127,6 +127,6 @@ def foo():

assert str(w[-1].message) == (
"Passing 'preserve_context' to 'namespaced_function' is deprecated, slated "
"for removal in 3008 and no longer does anything for the function "
"for removal in 3008.0 (Argon) and no longer does anything for the function "
"being namespaced."
)
2 changes: 1 addition & 1 deletion tests/pytests/unit/modules/test_salt_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def test_mocked_objects():
for k, v in salt.version.SaltStackVersion.LNAMES.items():
assert k == k.lower()
assert isinstance(v, tuple)
if sv.new_version(major=v[0]):
if sv.new_version(major=v[0]) and not sv.can_have_dot_zero(major=v[0]):
assert len(v) == 1
else:
assert len(v) == 2
Expand Down
7 changes: 7 additions & 0 deletions tests/pytests/unit/test_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@
(3000, 2, "nb", 20201214010203, 0, "1e7bc8f"),
"3000.2nb20201214010203",
),
("v3006.0", (3006, 0, "", 0, 0, None), "3006.0"),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
("v3006.0", (3006, 0, "", 0, 0, None), "3006.0"),
("v3006.0", (3006, 0, "", 0, 0, None), "3006"),
("v3006.0", (3006, 0, "", 0, 0, None), "3006.0"),

Maybe also try to see if it handles bad tags?

("v3006.0rc1", (3006, 0, "rc", 1, 0, None), "3006.0rc1"),
("v3006.1", (3006, 1, "", 0, 0, None), "3006.1"),
("v3006.1rc1", (3006, 1, "rc", 1, 0, None), "3006.1rc1"),
],
)
def test_version_parsing(version_string, full_info, version):
Expand Down Expand Up @@ -102,6 +106,9 @@ def test_version_parsing(version_string, full_info, version):
("v3001rc1", "v2019.2.1rc1"),
("v3002", "v3002nb20201213"),
("v3002rc1", "v3002nb20201213"),
("v3006.0", "v3006.0rc1"),
("v3006.1", "v3006.0rc1"),
("v3006.1", "v3006.0"),
],
)
def test_version_comparison(higher_version, lower_version):
Expand Down
2 changes: 1 addition & 1 deletion tests/pytests/unit/utils/test_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def test_warn_until_good_version_argument(version):
match=(
r"The warning triggered on filename \'(.*)test_versions.py\', "
r"line number ([\d]+), is supposed to be shown until version "
r"3007 is released. Current version is now 3009. "
r"3007.0 \(Chlorine\) is released. Current version is now 3009.0 \(Potassium\). "
r"Please remove the warning."
),
):
Expand Down