Mac App That Embed Python Interpreter Rejected from App Store

I have a simple little Mac app that embeds a Python interpreter. I wrote this app almost ten years ago and completely forgot about it. Anyway I submitted an update to it with a new version of Python but it's being rejected by App review for the following reason:

Your app uses or references the following non-public or deprecated APIs:

Symbols: • _Tcl_NewByteArrayObj • _Tcl_ResetResult • _Tcl_MutexLock • _Tcl_GetBooleanFromObj • _Tcl_SetObjResult • _Tcl_CreateInterp • _Tcl_ThreadQueueEvent • _Tcl_UnsetVar2 • _Tcl_GetBignumFromObj • _TclBN_mp_to_unsigned_bin_n • _Tcl_ListObjLength • _Tcl_ConditionWait • _Tcl_GetDouble • _Tcl_GetDouble • _Tcl_DeleteFileHandler • _Tcl_SetVar • _Tcl_SetVar • _Tcl_SetVar • _Tcl_DoOneEvent • _TclFreeObj • _Tcl_Eval • _Tcl_Eval • _Tcl_Eval • _Tcl_FindExecutable • _Tcl_NewLongObj • _Tcl_CreateTimerHandler • _Tcl_Init • _Tcl_ConditionFinalize • _Tcl_GetByteArrayFromObj • _Tcl_ListObjIndex • _Tcl_ExprLong • _Tcl_NewDoubleObj • _Tcl_GetDoubleFromObj • _Tcl_ExprString

• _TclBN_mp_read_radix • _Tcl_DeleteTimerHandler • _Tcl_CreateFileHandler • _Tcl_GetVar • _Tcl_GetVar • _Tcl_CreateObjCommand • _Tcl_SetVar2Ex • _Tcl_GetStringFromObj • _Tcl_NewStringObj • _Tcl_GetObjType • _Tcl_MutexUnlock • _Tcl_DeleteCommand • _TclBN_mp_init • _Tcl_GetCurrentThread • _Tcl_ExprDouble • _Tcl_AddErrorInfo • _Tcl_Free • _Tcl_GetStringResult • _Tcl_SetVar2 • _Tcl_SetVar2 • _Tcl_GetBoolean • _Tcl_GetBoolean • _Tcl_RecordAndEval • _Tcl_EvalFile • _Tcl_GetLongFromObj • _TclBN_mp_clear • _Tcl_ThreadAlert • _Tcl_ExprBoolean • _Tcl_DeleteInterp • _TclBN_mp_unsigned_bin_size • _Tcl_AttemptAlloc • _Tcl_GetObjResult • _Tcl_GetWideIntFromObj • _Tcl_NewListObj • _Tcl_ConditionNotify • _Tcl_NewBooleanObj • _Tcl_SplitList • _Tcl_EvalObjv • _Tcl_GetThreadData • _Tcl_GetVar2Ex • _Tcl_NewWideIntObj • _Tcl_NewBignumObj • _Tcl_ListObjGetElements • _Tcl_GetString • _Tcl_GetString • _Tcl_GetString

The use of non-public or deprecated APIs is not permitted on the App Store, as they can lead to a poor user experience should these APIs change and are otherwise not supported on Apple platforms.


I read online that this is a sort of a widespread issue right now with apps that embed Python (would share links but then my post will have to be approved by a moderator). Anyone have a workaround?

I removed _tkinter.cpython-39-darwin.so from the app, which links to Tcl.framework and resubmitted to the App Store. My app doesn't need _tkinter.cpython-39-darwin.so to function so I'm able to simply remove it.

Hopefully that resolves the issue. I will report back with the results.

If you disagree with the outcome of our review, you may consider submitting an appeal to the App Review Board.

When filing your appeal, make sure to:

  • Provide specific reasons why you believe your app complies with the App Store Review Guidelines.
  • Submit only one appeal per rejection.
  • Respond to any requests for additional information before submitting an appeal.

The App Review Board will contact you directly as soon as they've completed their investigation.

Thanks a lot for replying. I've never had luck filing an appeal to the review board.

As previously mentioned, I wrote this app a long time ago and forgot about it and it only has a handful of users. I didn't realize the app stopped functioning on newer versions of macOS and I'm submitting this update to fix it (because doing otherwise hurts my pride). With that said I also don't want to spend a tremendous amount of time on this going back and forth with app review.

It seems like the issue is related to the fact that one or more of the .so files provided by Python links to Tcl.framework (which is where all these symbols are coming from). I don't think the Python code is using any of these private APIs directly.

Accepted Answer

I removed _tkinter.cpython-39-darwin.so from the app, which links to Tcl.framework and resubmitted to the App Store. My app doesn't need _tkinter.cpython-39-darwin.so to function so I'm able to simply remove it.

Hopefully that resolves the issue. I will report back with the results.

Mac App That Embed Python Interpreter Rejected from App Store
 
 
Q