I created this simple app to play with animations
import M5
import random
class Snowflake:
    def __init__(self):
        self.MAX_WIDTH = 320
        self.MAX_HEIGHT = 240
        self.radius = random.randint(2, 4)
        self.velocity = random.randint(2, 5)
        self.x = random.randint(0, self.MAX_WIDTH)
        self.y = random.randint(0, self.MAX_HEIGHT)
    
    def fall(self):
        self.y += self.velocity
        if self.y > self.MAX_HEIGHT:
            self._reset()
    
    def _reset(self):
        self.radius = random.randint(2, 4)
        self.velocity = random.randint(2, 5)
        self.x = random.randint(0, self.MAX_WIDTH)
        self.y = 2
def setup():
    global SNOWFLAKES_COUNT
    global snow
    global circles
    
    SNOWFLAKES_COUNT = 80
    snow=[]
    circles=[]
    
    M5.begin()
    M5.Widgets.fillScreen(0x66b8f7)    
    for _ in range(SNOWFLAKES_COUNT):
        snow.append(Snowflake())
        circles.append(M5.Widgets.Circle(0, 0, 0, 0xffffff, 0xffffff))
def loop():
    M5.update()
    head = M5.Widgets.Circle(160, 144, 25, 0xffffff, 0xffffff)
    body = M5.Widgets.Circle(160, 199, 39, 0xffffff, 0xffffff)
    nose = M5.Widgets.Triangle(161, 143, 122, 150, 161, 148, 0xEA6511, 0xEA6511)
    left_eye = M5.Widgets.Circle(152, 135, 2, 0x000000, 0x000000)
    right_eye = M5.Widgets.Circle(167, 135, 2, 0x000000, 0x000000)
    for index, s in enumerate(snow):
        s.fall()
        c = circles[index]
        c.setRadius(r=s.radius)
        c.setCursor(x=s.x, y=s.y)
if __name__ == '__main__':
  try:
    setup()
    while True:
      loop()
  except (Exception, KeyboardInterrupt) as e:
    try:
      from utility import print_error_msg
      print_error_msg(e)
    except ImportError:
      print("please update to latest firmware")
If i run this code from Thonny pressing the run button it works, but if i run it from the the app list, i get this error:
MPY: soft reboot
       _  __ _               
 _   _(_)/ _| | _____      __
| | | | | |_| |/ _ \ \ /\ / /
| |_| | |  _| | (_) \ V  V / 
 \__,_|_|_| |_|\___/ \_/\_/  2.0.3
_click_event_handler
_click_event_handler
Traceback (most recent call last):
  File "apps/snowman.py", line 60, in <module>
  File "apps/snowman.py", line 40, in setup
NameError: name 'Snowflake' isn't defined
MicroPython v1.22.0-dirty on 2024-03-21; M5STACK Core2 with ESP32(SPIRAM)
Type "help()" for more information.
Anyone knows the cause of this error and how to resolve it?
