[Pythonmac-SIG] py2app fails to build PyQt5 apps anymore

Barry Scott barry at barrys-emacs.org
Sun Jan 2 16:23:43 EST 2022



> On 2 Jan 2022, at 13:02, Barry Scott <barry at barrys-emacs.org> wrote:
> 
> 
> 
>> On 22 Dec 2021, at 23:36, jack.jansen at cwi.nl <mailto:jack.jansen at cwi.nl> wrote:
>> 
>> Hmm, my guess is that it fails when it fails when Qt tries to access the window manager (the `QtWidgets.QApplication( argv )` call). But why it would fail when built with pyinstaller and not with py2app I have absolutely no clue…
>> 
>> Could it be that a new entitlement or something was added by Apple for Monterey, maybe for accessing the window manager, and py2app doesn’t know about this? Anyone (Ronald, probably) have any idea?
> 
> I have been trying to check the entitlements that each version of the App has
> on the assumption that I could add any missing ones to the y2app version and
> see if that is indeed the issue.
> 
> But the Apple suggested command:
> 
> $ codesign --display --entitlements  tmp.pyinstaller/dist/gui_test.app
> Usage: codesign -s identity [-fv*] [-o flags] [-r reqs] [-i ident] path ... # sign
>        codesign -v [-v*] [-R=<req string>|-R <req file path>] path|[+]pid ... # verify
>        codesign -d [options] path ... # display contents
>        codesign -h pid ... # display hosting paths
> 
> As you see just prints its usage. man codesign is no more helpful.
> 
> Do you know what the <path> for the --entitlements option is should be?

It turns out there is a required "-" needed.

$ codesign --display --entitlements -  tmp.pyinstaller/dist/gui_test.app

There are no entitlements on either py2app or pyinstaller .app bundles.

Barry

> 
> There is talk of a entitlemts.plist but I do seem to have that file at all.
> 
> Barry
> 
> 
>> 
>> --
>> Jack Jansen, <Jack.Jansen at cwi.nl <mailto:Jack.Jansen at cwi.nl>>, http://www.cwi.nl/~jack <http://www.cwi.nl/~jack>
>> If I can't dance I don't want to be part of your revolution -- Emma Goldman
>> 
>> 
>> 
>>> On 21 Dec 2021, at 12:46, Barry Scott <barry at barrys-emacs.org <mailto:barry at barrys-emacs.org>> wrote:
>>> 
>>> For a long time I have been happily building my App bundles using py2app.
>>> At some point that stopped working. I do not have a record of exactly
>>> when. Last time I saw everything work was Feb 2021.
>>> 
>>> I have reduced the problem to a simple test program and scripts to
>>> build and run the test code to show the issue.
>>> 
>>> As a comparison I have py2app and pyinstaller versions of the tests.
>>> The pyinstaller version works and the py2app version fails.
>>> 
>>> The code is on github here:
>>> 
>>> https://github.com/barry-scott/scm-workbench/tree/master/Source/Experiments <https://github.com/barry-scott/scm-workbench/tree/master/Source/Experiments>
>>> 
>>> Run ./build-py2app.sh to build and run the py2app version.
>>> Run ./build-pyinstaller.sh to build and runt he pyinstaller version.
>>> 
>>> The scripts:
>>> 1. build a venv
>>> 2. run gui_test.py from the command line
>>> 3. build the app using py2app or pyinstaller
>>> 4. run the app.
>>> 
>>> I am using macOS 12.1 on Intel MacBook Pro (15-inch, 2016).
>>> Python 3.10.1 from python.org <http://python.org/>.
>>> 
>>> The gui_test.py code logs to ~/gui_test.log at key points.
>>> 
>>> Here is the source:
>>> 
>>> ----
>>> #!/usr/bin/env python
>>> import sys
>>> import os
>>> 
>>> log_filename = '%s/gui_test.log' % (os.environ['HOME'],)
>>> sys.stdout = open( log_filename, 'a' )
>>> sys.stderr = sys.stdout
>>> print('---- gui_test.py ----', flush=True)
>>> 
>>> from PyQt5 import QtCore, QtWidgets
>>> from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
>>> from PyQt5.QtCore import QSize
>>> 
>>> class HelloWindow(QMainWindow): 
>>>    def __init__( self ):
>>>        super().__init__()
>>> 
>>>        if sys.maxsize > (2**31):
>>>            size_int_t = 64
>>>        else:
>>>            size_int_t = 32
>>> 
>>>        py_ver = '%d.%d-%d' % (sys.version_info.major, sys.version_info.minor, size_int_t)
>>> 
>>>        self.setMinimumSize( QSize(350, 100) )
>>>        self.setWindowTitle( 'GUI test - python %s' % (py_ver,) )
>>> 
>>>        self.setCentralWidget( QLabel( ' GUI test - python %s ' % (py_ver,), self ) )
>>> 
>>> def main( argv ):
>>>    print('QtWidgets.QApplication()', flush=True)
>>>    app = QtWidgets.QApplication( argv )
>>> 
>>>    print('HelloWindow()', flush=True)
>>>    main_win = HelloWindow()
>>> 
>>>    print('main_win.show()', flush=True)
>>>    main_win.show()
>>> 
>>>    print('app.exec_()', flush=True)
>>>    rc = app.exec_()
>>> 
>>>    print('rc', rc, flush=True)
>>>    return rc
>>> 
>>> if __name__ == "__main__":
>>>    sys.exit( main( sys.argv ) )
>>> ----
>>> 
>>> On a successful run the log shows:
>>> 
>>> ---- gui_test.py ----
>>> QtWidgets.QApplication()
>>> HelloWindow()
>>> main_win.show()
>>> app.exec_()
>>> rc 0
>>> 
>>> When it fails it shows:
>>> 
>>> ---- gui_test.py ----
>>> QtWidgets.QApplication()
>>> 
>>> Here is the problem report that is generated:
>>> 
>>> REGION TYPE                        SIZE    COUNT (non-coalesced) 
>>> ===========                     =======  ======= 
>>> Activity Tracing                   256K        1 
>>> Kernel Alloc Once                    8K        1 
>>> MALLOC                           192.1M       30 
>>> MALLOC guard page                   16K        4 
>>> MALLOC_LARGE (reserved)            128K        1         reserved VM address space (unallocated)
>>> MALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)
>>> STACK GUARD                       56.0M        3 
>>> Stack                             9232K        3 
>>> VM_ALLOCATE                       6156K        9 
>>> __DATA                            17.4M      265 
>>> __DATA_CONST                      10.9M      152 
>>> __DATA_DIRTY                       492K       86 
>>> __FONT_DATA                          4K        1 
>>> __LINKEDIT                       651.4M       26 
>>> __OBJC_RO                         81.8M        1 
>>> __OBJC_RW                         3136K        2 
>>> __TEXT                           205.4M      280 
>>> __UNICODE                          588K        1 
>>> dyld private memory               1024K        1 
>>> mapped file                       28.3M        2 
>>> shared memory                      592K        7 
>>> ===========                     =======  ======= 
>>> TOTAL                              1.6G      877 
>>> TOTAL, minus reserved VM space     1.2G      877 
>>> 
>>> 
>>> 
>>> -----------
>>> Full Report
>>> -----------
>>> 
>>> {"app_name":"gui_test","timestamp":"2021-12-21 11:43:08.00 +0000","app_version":"1.2.3","slice_uuid":"abecb05c-e91d-336e-81d6-4a467d071ee8","build_version":"1.2.3","platform":1,"bundleID":"gui_test","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 12.1 (21C52)","incident_id":"6A9D2853-2DEE-4C33-B374-1017075B2772","name":"gui_test"}
>>> {
>>>  "uptime" : 110000,
>>>  "procLaunch" : "2021-12-21 11:43:08.5661 +0000",
>>>  "procRole" : "Background",
>>>  "version" : 2,
>>>  "userID" : 501,
>>>  "deployVersion" : 210,
>>>  "modelCode" : "MacBookPro13,3",
>>>  "procStartAbsTime" : 113541505574837,
>>>  "coalitionID" : 515116,
>>>  "osVersion" : {
>>>    "train" : "macOS 12.1",
>>>    "build" : "21C52",
>>>    "releaseType" : "User"
>>>  },
>>>  "captureTime" : "2021-12-21 11:43:08.7600 +0000",
>>>  "incident" : "6A9D2853-2DEE-4C33-B374-1017075B2772",
>>>  "bug_type" : "309",
>>>  "pid" : 17474,
>>>  "procExitAbsTime" : 113541698791884,
>>>  "cpuType" : "X86-64",
>>>  "procName" : "gui_test",
>>>  "procPath" : "\/Users\/USER\/*\/gui_test.app\/Contents\/MacOS\/gui_test",
>>>  "bundleInfo" : {"CFBundleShortVersionString":"1.2.3","CFBundleVersion":"1.2.3","CFBundleIdentifier":"gui_test"},
>>>  "storeInfo" : {"deviceIdentifierForVendor":"58974244-6450-5437-A094-9481191631E1","thirdParty":true},
>>>  "parentProc" : "launchd",
>>>  "parentPid" : 1,
>>>  "coalitionName" : "gui_test",
>>>  "crashReporterKey" : "0947E507-B37B-E5B7-D29C-312263801DC3",
>>>  "wakeTime" : 4348,
>>>  "bridgeVersion" : {"build":"14Y908","train":"3.0"},
>>>  "sleepWakeUUID" : "BEA2B543-B8F3-412A-9B1A-07DB3F35A685",
>>>  "sip" : "enabled",
>>>  "isCorpse" : 1,
>>>  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
>>>  "asi" : {"libsystem_c.dylib":["abort() called"]},
>>>  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
>>>  "faultingThread" : 0,
>>>  "threads" : [{"triggered":true,"id":2520143,"threadState":{"r13":{"value":4432803416,"symbolLocation":0,"symbol":"QListData::shared_null"},"rax":{"value":0},"rflags":{"value":582},"cpu":{"value":0},"r14":{"value":6},"rsi":{"value":6},"r8":{"value":140704637244760,"symbolLocation":456,"symbol":"__sFX"},"cr2":{"value":4372226054},"rdx":{"value":0},"r10":{"value":0},"r9":{"value":0},"r15":{"value":22},"rbx":{"value":4570531328,"symbolLocation":0,"symbol":"_main_thread"},"trap":{"value":133},"err":{"value":33554760},"r11":{"value":582},"rip":{"value":140703537946898,"matchesCrashFrame":1},"rbp":{"value":140701977840384},"rsp":{"value":140701977840344},"r12":{"value":259},"rcx":{"value":140701977840344},"flavor":"x86_THREAD_STATE","rdi":{"value":259}},"queue":"com.apple.main-thread","frames":[{"imageOffset":28946,"symbol":"__pthread_kill","symbolLocation":10,"imageIndex":0},{"imageOffset":25108,"symbol":"pthread_kill","symbolLocation":263,"imageIndex":1},{"imageOffset":531728,"!
>>> symbol":"
>>> abort","symbolLocation":123,"imageIndex":2},{"imageOffset":99625,"symbol":"qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&)","symbolLocation":9,"imageIndex":3},{"imageOffset":105588,"symbol":"QMessageLogger::fatal(char const*, ...) const","symbolLocation":202,"imageIndex":3},{"imageOffset":230361,"symbol":"QGuiApplicationPrivate::createPlatformIntegration()","symbolLocation":7193,"imageIndex":4},{"imageOffset":230395,"symbol":"QGuiApplicationPrivate::createEventDispatcher()","symbolLocation":27,"imageIndex":4},{"imageOffset":2064815,"symbol":"QCoreApplicationPrivate::init()","symbolLocation":1599,"imageIndex":3},{"imageOffset":207705,"symbol":"QGuiApplicationPrivate::init()","symbolLocation":57,"imageIndex":4},{"imageOffset":43738,"symbol":"QApplicationPrivate::init()","symbolLocation":26,"imageIndex":5},{"imageOffset":1357272,"symbol":"init_type_QApplication(_sipSimpleWrapper*, _object*, _object*, _object**, _object**, _object**)","symbolLocation":168!
>>> ,"imageIn
>>> dex":6},{"imageOffset":26459,"symbol":"sipSimpleWrapper_init","symbolLocation":203,"imageIndex":7},{"imageOffset":1121781,"symbol":"type_call","symbolLocation":325,"imageIndex":8},{"imageOffset":552935,"symbol":"_PyObject_MakeTpCall","symbolLocation":135,"imageIndex":8},{"imageOffset":1868333,"symbol":"call_function","symbolLocation":365,"imageIndex":8},{"imageOffset":1833294,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":28702,"imageIndex":8},{"imageOffset":1798114,"symbol":"_PyEval_Vector","symbolLocation":402,"imageIndex":8},{"imageOffset":1868143,"symbol":"call_function","symbolLocation":175,"imageIndex":8},{"imageOffset":1824309,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":19717,"imageIndex":8},{"imageOffset":1798114,"symbol":"_PyEval_Vector","symbolLocation":402,"imageIndex":8},{"imageOffset":1774299,"symbol":"builtin_exec","symbolLocation":331,"imageIndex":8},{"imageOffset":973990,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":86,"imageIndex"!
>>> :8},{"ima
>>> geOffset":1868143,"symbol":"call_function","symbolLocation":175,"imageIndex":8},{"imageOffset":1824309,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":19717,"imageIndex":8},{"imageOffset":1798114,"symbol":"_PyEval_Vector","symbolLocation":402,"imageIndex":8},{"imageOffset":1868143,"symbol":"call_function","symbolLocation":175,"imageIndex":8},{"imageOffset":1824309,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":19717,"imageIndex":8},{"imageOffset":1798114,"symbol":"_PyEval_Vector","symbolLocation":402,"imageIndex":8},{"imageOffset":2278253,"symbol":"pyrun_file","symbolLocation":333,"imageIndex":8},{"imageOffset":2276141,"symbol":"_PyRun_SimpleFileObject","symbolLocation":365,"imageIndex":8},{"imageOffset":2291149,"symbol":"PyRun_SimpleFileExFlags","symbolLocation":109,"imageIndex":8},{"imageOffset":20165,"symbol":"py2app_main","symbolLocation":5481,"imageIndex":9},{"imageOffset":13143,"symbol":"main","symbolLocation":257,"imageIndex":9},{"imageOffset":21758,"symbo!
>>> l":"start
>>> ","symbolLocation":462,"imageIndex":10}]},{"id":2520154,"frames":[{"imageOffset":8172,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]},{"id":2520155,"frames":[{"imageOffset":8172,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":1}]}],
>>>  "usedImages" : [
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 140703537917952,
>>>    "size" : 225280,
>>>    "uuid" : "5aa1e5be-b5b8-3a02-9885-a8c99e0ca378",
>>>    "path" : "\/usr\/lib\/system\/libsystem_kernel.dylib",
>>>    "name" : "libsystem_kernel.dylib"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 140703538143232,
>>>    "size" : 49152,
>>>    "uuid" : "6c7561b4-4b92-3f45-921e-abe669299844",
>>>    "path" : "\/usr\/lib\/system\/libsystem_pthread.dylib",
>>>    "name" : "libsystem_pthread.dylib"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 140703536902144,
>>>    "size" : 561152,
>>>    "uuid" : "e58814cc-dcb7-35a5-badc-e367ed3ac207",
>>>    "path" : "\/usr\/lib\/system\/libsystem_c.dylib",
>>>    "name" : "libsystem_c.dylib"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4427026432,
>>>    "size" : 5705728,
>>>    "uuid" : "c723812a-f7a5-3001-98d5-e60e8daa6ffb",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Resources\/lib\/python3.10\/PyQt5\/Qt5\/lib\/QtCore.framework\/Versions\/5\/QtCore",
>>>    "name" : "QtCore"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4446490624,
>>>    "size" : 5152768,
>>>    "uuid" : "cbcec35a-ee54-354f-9c2b-188ac6b2790d",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Resources\/lib\/python3.10\/PyQt5\/Qt5\/lib\/QtGui.framework\/Versions\/5\/QtGui",
>>>    "name" : "QtGui"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4439920640,
>>>    "size" : 4485120,
>>>    "uuid" : "b432d666-dcab-320a-8496-78a67f554c0e",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Resources\/lib\/python3.10\/PyQt5\/Qt5\/lib\/QtWidgets.framework\/Versions\/5\/QtWidgets",
>>>    "name" : "QtWidgets"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4434120704,
>>>    "size" : 2932736,
>>>    "uuid" : "47b40141-df86-3d2f-98d5-ee16cb313cd6",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Resources\/lib\/python3.10\/PyQt5\/QtWidgets.abi3.so",
>>>    "name" : "QtWidgets.abi3.so"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4408209408,
>>>    "size" : 98304,
>>>    "uuid" : "62f78d75-6251-3b27-a4b3-a3247d07abe8",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Resources\/lib\/python3.10\/PyQt5\/sip.cpython-310-darwin.so",
>>>    "name" : "sip.cpython-310-darwin.so"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4411924480,
>>>    "CFBundleShortVersionString" : "3.10.1, (c) 2001-2021 Python Software Foundation.",
>>>    "CFBundleIdentifier" : "org.python.python",
>>>    "size" : 3637248,
>>>    "uuid" : "1071a8dd-3e3d-3958-95bf-ba33f1f82be5",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/Frameworks\/Python.framework\/Versions\/3.10\/Python",
>>>    "name" : "Python",
>>>    "CFBundleVersion" : "3.10.1"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4370935808,
>>>    "CFBundleShortVersionString" : "1.2.3",
>>>    "CFBundleIdentifier" : "gui_test",
>>>    "size" : 32768,
>>>    "uuid" : "abecb05c-e91d-336e-81d6-4a467d071ee8",
>>>    "path" : "\/Users\/USER\/*\/gui_test.app\/Contents\/MacOS\/gui_test",
>>>    "name" : "gui_test",
>>>    "CFBundleVersion" : "1.2.3"
>>>  },
>>>  {
>>>    "source" : "P",
>>>    "arch" : "x86_64",
>>>    "base" : 4570005504,
>>>    "size" : 442368,
>>>    "uuid" : "cef5a27a-d50b-3020-af03-1734b19bc8c5",
>>>    "path" : "\/usr\/lib\/dyld",
>>>    "name" : "dyld"
>>>  }
>>> ],
>>>  "sharedCache" : {
>>>  "base" : 140703534915584,
>>>  "size" : 15216738304,
>>>  "uuid" : "40432a03-88d3-305f-9c0c-e7549e71d927"
>>> },
>>>  "vmSummary" : "ReadOnly portion of Libraries: Total=856.8M resident=0K(0%) swapped_out_or_unallocated=856.8M(100%)\nWritable regions: Total=591.6M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=591.6M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nActivity Tracing                   256K        1 \nKernel Alloc Once                    8K        1 \nMALLOC                           192.1M       30 \nMALLOC guard page                   16K        4 \nMALLOC_LARGE (reserved)            128K        1         reserved VM address space (unallocated)\nMALLOC_NANO (reserved)           384.0M        1         reserved VM address space (unallocated)\nSTACK GUARD                       56.0M        3 \nStack                             9232K        3 \nVM_ALLOCATE                       6156K        9 \n__DATA                            17.4M !
>>>      265 
>>> \n__DATA_CONST                      10.9M      152 \n__DATA_DIRTY                       492K       86 \n__FONT_DATA                          4K        1 \n__LINKEDIT                       651.4M       26 \n__OBJC_RO                         81.8M        1 \n__OBJC_RW                         3136K        2 \n__TEXT                           205.4M      280 \n__UNICODE                          588K        1 \ndyld private memory               1024K        1 \nmapped file                       28.3M        2 \nshared memory                      592K        7 \n===========                     =======  ======= \nTOTAL                              1.6G      877 \nTOTAL, minus reserved VM space     1.2G      877 \n",
>>>  "legacyInfo" : {
>>>  "threadTriggered" : {
>>>    "queue" : "com.apple.main-thread"
>>>  }
>>> },
>>>  "trialInfo" : {
>>>  "rollouts" : [
>>>    {
>>>      "rolloutId" : "5ffde50ce2aacd000d47a95f",
>>>      "factorPackIds" : {
>>> 
>>>      },
>>>      "deploymentId" : 240000090
>>>    },
>>>    {
>>>      "rolloutId" : "5fc94383418129005b4e9ae0",
>>>      "factorPackIds" : {
>>> 
>>>      },
>>>      "deploymentId" : 240000185
>>>    },
>>>    {
>>>      "rolloutId" : "602ad4dac86151000cf27e46",
>>>      "factorPackIds" : {
>>>        "SIRI_DICTATION_ASSETS" : "6193d03f2171a2330e561dfc"
>>>      },
>>>      "deploymentId" : 240000290
>>>    },
>>>    {
>>>      "rolloutId" : "60da5e84ab0ca017dace9abf",
>>>      "factorPackIds" : {
>>> 
>>>      },
>>>      "deploymentId" : 240000008
>>>    },
>>>    {
>>>      "rolloutId" : "607844aa04477260f58a8077",
>>>      "factorPackIds" : {
>>>        "SIRI_MORPHUN_ASSETS" : "6103050cbfe6dc472e1c982a"
>>>      },
>>>      "deploymentId" : 240000066
>>>    },
>>>    {
>>>      "rolloutId" : "601d9415f79519000ccd4b69",
>>>      "factorPackIds" : {
>>>        "SIRI_TEXT_TO_SPEECH" : "6194416f2171a2330e561f05"
>>>      },
>>>      "deploymentId" : 240000355
>>>    }
>>>  ],
>>>  "experiments" : [
>>> 
>>>  ]
>>> }
>>> }
>>> 
>>> Model: MacBookPro13,3, BootROM 447.60.3.0.0, 4 processors, Quad-Core Intel Core i7, 2.6 GHz, 16 GB, SMC 2.38f12
>>> Graphics: Intel HD Graphics 530, Intel HD Graphics 530, Built-In
>>> Graphics: Radeon Pro 450, AMD Radeon Pro 450, PCIe, 2 GB
>>> Display: DELL 2408WFP, 1920 x 1200 (WUXGA - Widescreen Ultra eXtended Graphics Array), Main, MirrorOff, Online
>>> Memory Module: BANK 0/DIMM0, 8 GB, LPDDR3, 2133 MHz, 0x802C, 0x4D5435324C31473332443450472D30393320
>>> Memory Module: BANK 1/DIMM0, 8 GB, LPDDR3, 2133 MHz, 0x802C, 0x4D5435324C31473332443450472D30393320
>>> AirPort: spairport_wireless_card_type_wifi (0x14E4, 0x15A), Broadcom BCM43xx 1.0 (7.77.111.1 AirPortDriverBrcmNIC-1710.3)
>>> Bluetooth: Version (null), 0 services, 0 devices, 0 incoming serial ports
>>> Network Service: USB 10/100/1000 LAN, Ethernet, en7
>>> USB Device: Anker USB-C Hub Device
>>> USB Device: USB3.0 Card Reader
>>> USB Device: USB 10/100/1000 LAN
>>> USB Device: USB30Bus
>>> USB Device: Anker USB-C Hub Device
>>> USB Device: hub_device
>>> USB Device: USB Keyboard
>>> USB Device: hub_device
>>> USB Device: Microsoft USB Optical Mouse
>>> USB Device: Flash Card Reader
>>> USB Device: Anker
>>> USB Device: Apple T1 Controller
>>> Thunderbolt Bus: MacBook Pro, Apple Inc., 41.5
>>> Thunderbolt Bus: MacBook Pro, Apple Inc., 41.5
>>> 
>>> 
>>> Barry
>>> 
>>> _______________________________________________
>>> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org <mailto:Pythonmac-SIG at python.org>
>>> https://mail.python.org/mailman/listinfo/pythonmac-sig <https://mail.python.org/mailman/listinfo/pythonmac-sig>
>>> unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG
>> 
> 
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org <mailto:Pythonmac-SIG at python.org>
> https://mail.python.org/mailman/listinfo/pythonmac-sig <https://mail.python.org/mailman/listinfo/pythonmac-sig>
> unsubscribe: https://mail.python.org/mailman/options/Pythonmac-SIG <https://mail.python.org/mailman/options/Pythonmac-SIG>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.python.org/pipermail/pythonmac-sig/attachments/20220102/9938d4c1/attachment-0001.html>


More information about the Pythonmac-SIG mailing list