Title: Unexpected SystemError in Python3.12.0a7: `
Open Graph Title: Unexpected SystemError in Python3.12.0a7: `
X Title: Unexpected SystemError in Python3.12.0a7: `
Description: Bug report I noticed recently that Setuptools CI started failing for Python 3.12.0a7 with a SystemError that is difficult to understand: SystemError:
Open Graph Description: Bug report I noticed recently that Setuptools CI started failing for Python 3.12.0a7 with a SystemError that is difficult to understand: SystemError: X Description: Bug report I noticed recently that Setuptools CI started failing for Python 3.12.0a7 with a SystemError that is difficult to understand: SystemError: <built-in method startswith of str object at...
Opengraph URL: https://github.com/python/cpython/issues/103632
X: @github
Domain: github.com
Links:
Viewport: width=device-width
Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Unexpected SystemError in Python3.12.0a7: `\u003cmethod 'startswith' of 'str' objects\u003e returned a result with an exception set`","articleBody":"\u003c!--\r\n If you're new to Python and you're not sure whether what you're experiencing is a bug, the CPython issue tracker is not\r\n the right place to seek help. Consider the following options instead:\r\n\r\n - reading the Python tutorial: https://docs.python.org/3/tutorial/\r\n - posting in the \"Users\" category on discuss.python.org: https://discuss.python.org/c/users/7\r\n - emailing the Python-list mailing list: https://mail.python.org/mailman/listinfo/python-list\r\n - searching our issue tracker (https://github.com/python/cpython/issues) to see if\r\n your problem has already been reported\r\n--\u003e\r\n\r\n# Bug report\r\n\r\nI noticed recently that [Setuptools CI started failing for Python 3.12.0a7](https://github.com/pypa/setuptools/actions/runs/4710601389/jobs/8354391872?pr=3893#step:7:1898) with a `SystemError` that is difficult to understand:\r\n\r\n\u003e `SystemError: \u003cbuilt-in method startswith of str object at 0x7fe399991298\u003e returned a result with an exception set`\r\n\r\nAt a first glance this error does not make much sense because `str.startswith` is a built-in method in a built-in data structure. I am struggling to see how it can have an exception set attached to the result.\r\n\r\nI managed to create the following simplified reproducer:\r\n\r\n```python\r\ndocker run --rm -it python:3.12.0a7-bullseye\r\nPython 3.12.0a7 (main, Apr 12 2023, 14:13:09) [GCC 10.2.1 20210110] on linux\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n\u003e\u003e\u003e class Distribution:\r\n... @property\r\n... def version(self):\r\n... try:\r\n... return self._version\r\n... except AttributeError as e:\r\n... # ... complex code omitted for the sake of simplification ...\r\n... raise ValueError(\"Missing Version\")\r\n... def __getattr__(self, attr):\r\n... if attr.startswith(\"_\"):\r\n... raise AttributeError(attr)\r\n... # ... complex code omitted for the sake of simplification ...\r\n... return 42\r\n...\r\n\u003e\u003e\u003e dist = Distribution()\r\n\u003e\u003e\u003e dist.version\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 5, in version\r\n File \"\u003cstdin\u003e\", line 11, in __getattr__\r\nAttributeError: _version. Did you mean: 'version'?\r\n\r\nDuring handling of the above exception, another exception occurred:\r\n\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 8, in version\r\nValueError: Missing Version\r\n\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\r\n File \"\u003cstdin\u003e\", line 10, in __getattr__\r\nSystemError: \u003cmethod 'startswith' of 'str' objects\u003e returned a result with an exception set\r\n\u003e\u003e\u003e\r\n```\r\n\r\nThe error seems to be related to the combination of the following factors:\r\n1. A `property` is being used[^1]\r\n2. The property getter access an undefined attribute and triggers `__getattr__`\r\n3. `__getattr__` raises an `AttributeError`\r\n4. The property getter is supposed to catch the `AttributeError` exception and raise a different exeception.\r\n\r\nMy expectation is that the `SystemError` never gets triggered with the confusing message. Instead the example should end up with a `ValueError`.\r\n\r\nPlease note that the example is very simplified. For the realistic implementation please consider [ `pkg_resources.Distribution`](https://github.com/pypa/setuptools/blob/v67.6.1/pkg_resources/__init__.py#L2628).\r\n\r\n# Your environment\r\n\r\n\u003c!-- Include as many relevant details as possible about the environment you experienced the bug in --\u003e\r\n\r\n- CPython versions tested on: 3.12.0a7\r\n- Operating system and architecture:\r\n Reproducer tested on both Ubuntu 20.04.6 LTS machine and `python:3.12.0a7-bullseye` container\r\n\r\nProblem also identified in GitHub Actions runners: `ubuntu-latest`, `macos-latest`, `windows-latest` (see https://github.com/pypa/setuptools/actions/runs/4710601389?pr=3893) for Python `3.12-dev`.\r\n\r\n\r\n[^1]: If we replace the property with a regular method, the example works as expected.\r\n","author":{"url":"https://github.com/abravalheri","@type":"Person","name":"abravalheri"},"datePublished":"2023-04-19T15:27:46.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":3},"url":"https://github.com/103632/cpython/issues/103632"}
route-pattern /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) route-controller voltron_issues_fragments route-action issue_layout fetch-nonce v2:2ea3ed30-46be-1b4a-ff07-aa7b08690f0b current-catalog-service-hash 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 request-id 8E9E:2786B7:1CD98B:267A3D:6969CA3A html-safe-nonce e5d5fa1cc7e57fac01fd32a188c10b1732e9a1e88acc8bc5b7911eb8f7028dcc visitor-payload eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4RTlFOjI3ODZCNzoxQ0Q5OEI6MjY3QTNEOjY5NjlDQTNBIiwidmlzaXRvcl9pZCI6IjIyMTIzMDE5MTMyMjAzMDM0MTgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== visitor-hmac f729bed127cbeed664208c0c49adc5204d17e235032decafb76e2887e9ac3a7e hovercard-subject-tag issue:1675151210 github-keyboard-shortcuts repository,issues,copilot google-site-verification Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I octolytics-url https://collector.github.com/github/collect analytics-location / fb:app_id 1401488693436528 apple-itunes-app app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/103632/issue_layout twitter:image https://opengraph.githubassets.com/8f1fcb0cdde8074fbe53f4058f16b3b6dfb9a460193735aba6c75f81e6021cc1/python/cpython/issues/103632 twitter:card summary_large_image og:image https://opengraph.githubassets.com/8f1fcb0cdde8074fbe53f4058f16b3b6dfb9a460193735aba6c75f81e6021cc1/python/cpython/issues/103632 og:image:alt Bug report I noticed recently that Setuptools CI started failing for Python 3.12.0a7 with a SystemError that is difficult to understand: SystemError: og:image:width 1200 og:image:height 600 og:site_name GitHub og:type object og:author:username abravalheri hostname github.com expected-hostname github.com None acedec8b5f975d9e3d494ddd8f949b0b8a0de59d393901e26f73df9dcba80056 turbo-cache-control no-preview go-import github.com/python/cpython git https://github.com/python/cpython.git octolytics-dimension-user_id 1525981 octolytics-dimension-user_login python octolytics-dimension-repository_id 81598961 octolytics-dimension-repository_nwo python/cpython octolytics-dimension-repository_public true octolytics-dimension-repository_is_fork false octolytics-dimension-repository_network_root_id 81598961 octolytics-dimension-repository_network_root_nwo python/cpython turbo-body-classes logged-out env-production page-responsive disable-turbo false browser-stats-url https://api.github.com/_private/browser/stats browser-errors-url https://api.github.com/_private/browser/errors release 83c08c21cdda978090dc44364b71aa5bc6dcea79 ui-target full theme-color #1e2327 color-scheme light dark
URLs of crawlers that visited me.