From 2bbd1b1d10c9c3639a3013dd745f77f7d22b2962 Mon Sep 17 00:00:00 2001
From: zvecr <git@zvecr.com>
Date: Sun, 27 Oct 2024 03:47:35 +0000
Subject: [PATCH 1/2] Handle cli._subcommand.__name__ deprecation warning

---
 lib/python/qmk/decorators.py | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/lib/python/qmk/decorators.py b/lib/python/qmk/decorators.py
index f6270990b975..85ee709efd93 100644
--- a/lib/python/qmk/decorators.py
+++ b/lib/python/qmk/decorators.py
@@ -9,6 +9,15 @@
 from qmk.keymap import find_keymap_from_dir
 
 
+def _get_subcommand_name():
+    """Handle missing cli.subcommand_name on older versions of milc
+    """
+    try:
+        return cli.subcommand_name
+    except:
+        return cli._subcommand.__name__
+
+
 def automagic_keyboard(func):
     """Sets `cli.config.<subcommand>.keyboard` based on environment.
 
@@ -16,13 +25,15 @@ def automagic_keyboard(func):
     """
     @functools.wraps(func)
     def wrapper(*args, **kwargs):
+        cmd = _get_subcommand_name()
+
         # Ensure that `--keyboard` was not passed and CWD is under `qmk_firmware/keyboards`
-        if cli.config_source[cli._subcommand.__name__]['keyboard'] != 'argument':
+        if cli.config_source[cmd]['keyboard'] != 'argument':
             keyboard = find_keyboard_from_dir()
 
             if keyboard:
-                cli.config[cli._subcommand.__name__]['keyboard'] = keyboard
-                cli.config_source[cli._subcommand.__name__]['keyboard'] = 'keyboard_directory'
+                cli.config[cmd]['keyboard'] = keyboard
+                cli.config_source[cmd]['keyboard'] = 'keyboard_directory'
 
         return func(*args, **kwargs)
 
@@ -36,13 +47,15 @@ def automagic_keymap(func):
     """
     @functools.wraps(func)
     def wrapper(*args, **kwargs):
+        cmd = _get_subcommand_name()
+
         # Ensure that `--keymap` was not passed and that we're under `qmk_firmware`
-        if cli.config_source[cli._subcommand.__name__]['keymap'] != 'argument':
+        if cli.config_source[cmd]['keymap'] != 'argument':
             keymap_name, keymap_type = find_keymap_from_dir()
 
             if keymap_name:
-                cli.config[cli._subcommand.__name__]['keymap'] = keymap_name
-                cli.config_source[cli._subcommand.__name__]['keymap'] = keymap_type
+                cli.config[cmd]['keymap'] = keymap_name
+                cli.config_source[cmd]['keymap'] = keymap_type
 
         return func(*args, **kwargs)
 

From 6400b426a7f6f541369e53a06f8cba3b1ce531de Mon Sep 17 00:00:00 2001
From: zvecr <git@zvecr.com>
Date: Sun, 27 Oct 2024 05:18:44 +0000
Subject: [PATCH 2/2] Fix lint

---
 lib/python/qmk/decorators.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/python/qmk/decorators.py b/lib/python/qmk/decorators.py
index 85ee709efd93..16b44d6d591f 100644
--- a/lib/python/qmk/decorators.py
+++ b/lib/python/qmk/decorators.py
@@ -14,7 +14,7 @@ def _get_subcommand_name():
     """
     try:
         return cli.subcommand_name
-    except:
+    except AttributeError:
         return cli._subcommand.__name__