From 0341b368b33ca76b87553a62343e51a31993b391 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Fri, 2 Apr 2021 16:42:47 -0500
Subject: [PATCH] first_arg_dependent_memoize: do not ignore kwargs when
 caching

---
 pyopencl/tools.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/pyopencl/tools.py b/pyopencl/tools.py
index fc7f459d..d7e56dc9 100644
--- a/pyopencl/tools.py
+++ b/pyopencl/tools.py
@@ -83,6 +83,10 @@ def first_arg_dependent_memoize(func):
 
         .. versionadded:: 2011.2
         """
+        if kwargs:
+            cache_key = (args, kwargs)
+        else:
+            cache_key = args
         try:
             ctx_dict = func._pyopencl_first_arg_dep_memoize_dic
         except AttributeError:
@@ -92,11 +96,11 @@ def first_arg_dependent_memoize(func):
             _first_arg_dependent_caches.append(ctx_dict)
 
         try:
-            return ctx_dict[cl_object][args]
+            return ctx_dict[cl_object][cache_key]
         except KeyError:
             arg_dict = ctx_dict.setdefault(cl_object, {})
             result = func(cl_object, *args, **kwargs)
-            arg_dict[args] = result
+            arg_dict[cache_key] = result
             return result
 
     from functools import update_wrapper
-- 
GitLab