Repository: pykickstart/pykickstart (language: python)

Issue:
Please add F38 handler
Opening an issue as documented in the docs:
`
please verify that Pykickstart supports Fedora <version> and <version + 1> if not, please file an [issue](https://github.com/pykickstart/pykickstart/issues) on the Pykickstart project. The Pykickstart support for future release of Fedora will prevent issues during the next branching.`

Thanks in advance! :)


Discussion / hints:

Fix patch:
diff --git a/pykickstart/handlers/f38.py b/pykickstart/handlers/f38.py
new file mode 100644
index 00000000..95c936ff
--- /dev/null
+++ b/pykickstart/handlers/f38.py
@@ -0,0 +1,124 @@
+#
+# Copyright 2022 Red Hat, Inc.
+#
+# This copyrighted material is made available to anyone wishing to use, modify,
+# copy, or redistribute it subject to the terms and conditions of the GNU
+# General Public License v.2.  This program is distributed in the hope that it
+# will be useful, but WITHOUT ANY WARRANTY expressed or implied, including the
+# implied warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 51
+# Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  Any Red Hat
+# trademarks that are incorporated in the source code or documentation are not
+# subject to the GNU General Public License and may only be used or replicated
+# with the express permission of Red Hat, Inc.
+#
+__all__ = ["F38Handler"]
+
+from pykickstart import commands
+from pykickstart.base import BaseHandler
+from pykickstart.version import F38
+
+class F38Handler(BaseHandler):
+    version = F38
+
+    commandMap = {
+        "auth": commands.authconfig.F35_Authconfig, # RemovedCommand
+        "authconfig": commands.authconfig.F35_Authconfig, # RemovedCommand
+        "authselect": commands.authselect.F28_Authselect,
+        "autopart": commands.autopart.F29_AutoPart,
+        "autostep": commands.autostep.F34_AutoStep,
+        "bootloader": commands.bootloader.F34_Bootloader,
+        "btrfs": commands.btrfs.F23_BTRFS,
+        "cdrom": commands.cdrom.FC3_Cdrom,
+        "clearpart": commands.clearpart.F28_ClearPart,
+        "cmdline": commands.displaymode.F26_DisplayMode,
+        "device": commands.device.F34_Device,
+        "deviceprobe": commands.deviceprobe.F34_DeviceProbe,
+        "dmraid": commands.dmraid.F34_DmRaid,
+        "driverdisk": commands.driverdisk.F14_DriverDisk,
+        "module": commands.module.F31_Module,
+        "eula": commands.eula.F20_Eula,
+        "fcoe": commands.fcoe.F28_Fcoe,
+        "firewall": commands.firewall.F28_Firewall,
+        "firstboot": commands.firstboot.FC3_Firstboot,
+        "graphical": commands.displaymode.F26_DisplayMode,
+        "group": commands.group.F12_Group,
+        "halt": commands.reboot.F23_Reboot,
+        "harddrive": commands.harddrive.F33_HardDrive,
+        "hmc": commands.hmc.F28_Hmc,
+        "ignoredisk": commands.ignoredisk.F34_IgnoreDisk,
+        "install": commands.install.F34_Install,
+        "iscsi": commands.iscsi.F17_Iscsi,
+        "iscsiname": commands.iscsiname.FC6_IscsiName,
+        "keyboard": commands.keyboard.F18_Keyboard,
+        "lang": commands.lang.F19_Lang,
+        "liveimg": commands.liveimg.F19_Liveimg,
+        "logging": commands.logging.F34_Logging,
+        "logvol": commands.logvol.F29_LogVol,
+        "mediacheck": commands.mediacheck.FC4_MediaCheck,
+        "method": commands.method.F34_Method,
+        "mount": commands.mount.F27_Mount,
+        "multipath": commands.multipath.F34_MultiPath,
+        "network": commands.network.F27_Network,
+        "nfs": commands.nfs.FC6_NFS,
+        "nvdimm": commands.nvdimm.F28_Nvdimm,
+        "timesource": commands.timesource.F33_Timesource,
+        "ostreesetup": commands.ostreesetup.F21_OSTreeSetup,
+        "part": commands.partition.F34_Partition,
+        "partition": commands.partition.F34_Partition,
+        "poweroff": commands.reboot.F23_Reboot,
+        "raid": commands.raid.F29_Raid,
+        "realm": commands.realm.F19_Realm,
+        "reboot": commands.reboot.F23_Reboot,
+        "repo": commands.repo.F33_Repo,
+        "reqpart": commands.reqpart.F23_ReqPart,
+        "rescue": commands.rescue.F10_Rescue,
+        "rootpw": commands.rootpw.F37_RootPw,
+        "selinux": commands.selinux.FC3_SELinux,
+        "services": commands.services.FC6_Services,
+        "shutdown": commands.reboot.F23_Reboot,
+        "skipx": commands.skipx.FC3_SkipX,
+        "snapshot": commands.snapshot.F26_Snapshot,
+        "sshpw": commands.sshpw.F24_SshPw,
+        "sshkey": commands.sshkey.F22_SshKey,
+        "text": commands.displaymode.F26_DisplayMode,
+        "timezone": commands.timezone.F33_Timezone,
+        "updates": commands.updates.F34_Updates,
+        "url": commands.url.F30_Url,
+        "user": commands.user.F24_User,
+        "vnc": commands.vnc.F9_Vnc,
+        "volgroup": commands.volgroup.F21_VolGroup,
+        "xconfig": commands.xconfig.F14_XConfig,
+        "zerombr": commands.zerombr.F9_ZeroMbr,
+        "zfcp": commands.zfcp.F37_ZFCP,
+        "zipl": commands.zipl.F32_Zipl,
+    }
+
+    dataMap = {
+        "BTRFSData": commands.btrfs.F23_BTRFSData,
+        "DriverDiskData": commands.driverdisk.F14_DriverDiskData,
+        "DeviceData": commands.device.F8_DeviceData,
+        "DmRaidData": commands.dmraid.FC6_DmRaidData,
+        "ModuleData": commands.module.F31_ModuleData,
+        "TimesourceData": commands.timesource.F33_TimesourceData,
+        "FcoeData": commands.fcoe.F28_FcoeData,
+        "GroupData": commands.group.F12_GroupData,
+        "IscsiData": commands.iscsi.F17_IscsiData,
+        "LogVolData": commands.logvol.F29_LogVolData,
+        "MountData": commands.mount.F27_MountData,
+        "MultiPathData": commands.multipath.FC6_MultiPathData,
+        "NetworkData": commands.network.F27_NetworkData,
+        "NvdimmData": commands.nvdimm.F28_NvdimmData,
+        "PartData": commands.partition.F29_PartData,
+        "RaidData": commands.raid.F29_RaidData,
+        "RepoData": commands.repo.F30_RepoData,
+        "SnapshotData": commands.snapshot.F26_SnapshotData,
+        "SshPwData": commands.sshpw.F24_SshPwData,
+        "SshKeyData": commands.sshkey.F22_SshKeyData,
+        "UserData": commands.user.F19_UserData,
+        "VolGroupData": commands.volgroup.F21_VolGroupData,
+        "ZFCPData": commands.zfcp.F37_ZFCPData,
+    }
diff --git a/pykickstart/version.py b/pykickstart/version.py
index 6a8cf211..d971170d 100644
--- a/pykickstart/version.py
+++ b/pykickstart/version.py
@@ -97,9 +97,10 @@
 F35 = 35000
 F36 = 36000
 F37 = 37000
+F38 = 38000
 
 # This always points at the latest version and is the default.
-DEVEL = F37
+DEVEL = F38
 
 # A one-to-one mapping from string representations to version numbers.
 versionMap = {
@@ -110,7 +111,7 @@
     "F19": F19, "F20": F20, "F21": F21, "F22": F22, "F23": F23,
     "F24": F24, "F25": F25, "F26": F26, "F27": F27, "F28": F28,
     "F29": F29, "F30": F30, "F31": F31, "F32": F32, "F33": F33,
-    "F34": F34, "F35": F35, "F36": F36, "F37": F37,
+    "F34": F34, "F35": F35, "F36": F36, "F37": F37, "F38": F38,
     "RHEL3": RHEL3, "RHEL4": RHEL4, "RHEL5": RHEL5, "RHEL6": RHEL6,
     "RHEL7": RHEL7, "RHEL8": RHEL8, "RHEL9": RHEL9
 }


Test patch:
diff --git a/tests/version.py b/tests/version.py
index 7bd1143a..71ec0b2c 100644
--- a/tests/version.py
+++ b/tests/version.py
@@ -146,6 +146,9 @@ def runTest(self):
         # pass - F37
         self.assertEqual(stringToVersion("Fedora 37"), F37)
         self.assertEqual(stringToVersion("F37"), F37)
+        # pass - F38
+        self.assertEqual(stringToVersion("Fedora 38"), F38)
+        self.assertEqual(stringToVersion("F38"), F38)
 
         # pass - RHEL3
         self.assertEqual(stringToVersion("Red Hat Enterprise Linux 3"), RHEL3)
@@ -259,7 +262,8 @@ def runTest(self):
         self.assertEqual(versionToString(F35, skipDevel=True), "F35")
         self.assertEqual(versionToString(F36, skipDevel=True), "F36")
         self.assertEqual(versionToString(F37, skipDevel=True), "F37")
-        self.assertEqual(versionToString(F37, skipDevel=False), "DEVEL")
+        self.assertEqual(versionToString(F38, skipDevel=True), "F38")
+        self.assertEqual(versionToString(F38, skipDevel=False), "DEVEL")
         # RHEL series
         self.assertEqual(versionToString(RHEL3), "RHEL3")
         self.assertEqual(versionToString(RHEL4), "RHEL4")