human
Write me a the Python code you requested given the following:
I found an interesting problem on https://leetcode.com/problems/remove-all-adjacent-duplicates-in-string-ii/:
Given a string s, a k duplicate removal consists of choosing k adjacent and equal letters from s and removing them causing the left and the right side of the deleted substring to concatenate together.
We repeatedly make k duplicate removals on s until we no longer can.
Return the final string after all such duplicate removals have been made.
It is guaranteed that the answer is unique.
 
Example 1:
Input: s = "abcd", k = 2
Output: "abcd"
Explanation: There's nothing to delete.
Example 2:
Input: s = "deeedbbcccbdaa", k = 3
Output: "aa"
Explanation: 
First delete "eee" and "ccc", get "ddbbbdaa"
Then delete "bbb", get "dddaa"
Finally delete "ddd", get "aa"
Example 3:
Input: s = "pbbcggttciiippooaais", k = 2
Output: "ps"

 
Constraints:

1 <= s.length <= 10^5
2 <= k <= 10^4
s only contains lower case English letters.

I tried it in Python, but could not do it. Can you solve it?
assistant
#Here is the Python code you requested.

class Solution:
    def removeDuplicates(self, s: str, k: int) -> str:
        
        ret = list(s) 
        
        while True: 
            s = ret
            ret = []
            ac = 1
            for c in s: 
                if not ret or ret[-1] != c: 
                    ac = 1
                    ret.append(c)
                else: 
                    if ac + 1 == k: 
                        while ac: 
                            ret.pop()
                            ac -= 1
                    else: 
                        ret.append(c)
                        ac += 1
                # print(ret, ac)
            if len(ret) == len(s): 
                break
                        
        return ''.join(ret)