After run the command to upload firmware to chip PY32F002AA15M6TU

pyocd load app.hex -t PY32F002Ax5

I got the error

0004908 C STLink error (22): DP error [__main__]

But if you try to read firmware, it works fine

pyocd> savemem 0x08000000 20480 py32f002.bin

BTW pyOCD and ST-Link V2 work well with the PY32F003xx series.

The solution is to use CMSIS-DAP based programmer instead of ST-Link V2, but instead of buying a new one you can use STM32 Blue Pill board without adding any extra components, just upload the firmware https://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO/blob/master/build/F103-DAP-SWO-CDC-BLUEPILL-SWD_PB8PB9.hex from the repository https://github.com/RadioOperator/STM32F103C8T6_CMSIS-DAP_SWO and connect 2 wires.

After flashing Blue Pill, connect Blue Pill to your computer and connect PY32F002xx target as described below

STM32 Blue Pull PY32F002xx
PB8 SWCLK (PA14)
PB9 SWDIO (PA13)

STM32 Blue Pill pinout diagram

The original source of the image is http://reblag.dk/stm32

After running the command you will see a new device CMSIS-DAP by ARM CMSIS-DAP

pyocd list

Now you can use a new Blue Pill based programmer to programm PY32F002 chips with pyOCD.