Title: `generate_tokens` tokenizes `$` differently with Python 3.12 than earlier · Issue #104802 · python/cpython · GitHub
Open Graph Title: `generate_tokens` tokenizes `$` differently with Python 3.12 than earlier · Issue #104802 · python/cpython
X Title: `generate_tokens` tokenizes `$` differently with Python 3.12 than earlier · Issue #104802 · python/cpython
Description: I tested Python 3.12 beta 1 with Robot Framework and noticed that tokenize.generate_tokens() handles expressions containing $ differently than earlier. Earlier $ yielded ERRORTOKEN but nowadays we get OP: Python 3.11.3 (main, Apr 5 2023,...
Open Graph Description: I tested Python 3.12 beta 1 with Robot Framework and noticed that tokenize.generate_tokens() handles expressions containing $ differently than earlier. Earlier $ yielded ERRORTOKEN but nowadays we ...
X Description: I tested Python 3.12 beta 1 with Robot Framework and noticed that tokenize.generate_tokens() handles expressions containing $ differently than earlier. Earlier $ yielded ERRORTOKEN but nowadays we ...
Opengraph URL: https://github.com/python/cpython/issues/104802
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"`generate_tokens` tokenizes `$` differently with Python 3.12 than earlier","articleBody":"I tested Python 3.12 beta 1 with [Robot Framework](https://github.com/robotframework/robotframework) and noticed that `tokenize.generate_tokens()` handles expressions containing `$` differently than earlier. Earlier `$` yielded `ERRORTOKEN` but nowadays we get `OP`: \r\n\r\n```python\r\nPython 3.11.3 (main, Apr 5 2023, 14:15:06) [GCC 9.4.0] on linux\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n\u003e\u003e\u003e from tokenize import generate_tokens\r\n\u003e\u003e\u003e from io import StringIO\r\n\u003e\u003e\u003e next(generate_tokens(StringIO('$x').readline))\r\nTokenInfo(type=60 (ERRORTOKEN), string='$', start=(1, 0), end=(1, 1), line='$x')\r\n```\r\n\r\n```python\r\nPython 3.12.0b1 (main, May 22 2023, 23:31:26) [GCC 9.4.0] on linux\r\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\r\n\u003e\u003e\u003e from tokenize import generate_tokens\r\n\u003e\u003e\u003e from io import StringIO\r\n\u003e\u003e\u003e next(generate_tokens(StringIO('$x').readline))\r\nTokenInfo(type=55 (OP), string='$', start=(1, 0), end=(1, 1), line='$x\\n')\r\n```\r\n\r\nWe support Python evaluation with special variables like `$var \u003e 1` in Robot Framework data and this change breaks our [tokenizing code](https://github.com/robotframework/robotframework/blob/34257fcee84604ecf7655edc0a11e415c23dab00/src/robot/variables/evaluation.py#L86). I didn't notice anything related in the release notes and decided to report this. If the change is intentional, we can easily update our code to handle also these semantics.\r\n\r\nNotice also that there's a small change with `TokenInfo.line` above. With Python 3.12 there's an additional `\\n` even though the original string didn't contain any newlines.","author":{"url":"https://github.com/pekkaklarck","@type":"Person","name":"pekkaklarck"},"datePublished":"2023-05-23T16:43:48.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":4},"url":"https://github.com/104802/cpython/issues/104802"}
| 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:7e027e5a-afa5-a214-aa11-f7080aaf7420 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C046:1272F1:175FB17:2074F7E:696A9FA0 |
| html-safe-nonce | 543bc6ed69ee7b4b9571cc61f0fa5b433d8d80dbffc406f3f9b32c9fcc4bd9de |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMDQ2OjEyNzJGMToxNzVGQjE3OjIwNzRGN0U6Njk2QTlGQTAiLCJ2aXNpdG9yX2lkIjoiMjY2ODg3OTI3OTIwNTAzMTg0MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | c14f6c43f4f7b8462fb8fea2ebd4d1a36b0295d6532b611a5a32a01360c72172 |
| hovercard-subject-tag | issue:1722446717 |
| 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/104802/issue_layout |
| twitter:image | https://opengraph.githubassets.com/087c56e5968562dbec002b98ff4b48103c27ea7875688192731697200119fa90/python/cpython/issues/104802 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/087c56e5968562dbec002b98ff4b48103c27ea7875688192731697200119fa90/python/cpython/issues/104802 |
| og:image:alt | I tested Python 3.12 beta 1 with Robot Framework and noticed that tokenize.generate_tokens() handles expressions containing $ differently than earlier. Earlier $ yielded ERRORTOKEN but nowadays we ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | pekkaklarck |
| hostname | github.com |
| expected-hostname | github.com |
| None | a51f97dbb9326f71c08ecb61577457d543c602124d1a2672871258ef37ac5261 |
| 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 | 4bd0eac606c70914085176ef312ebdcd97a8cdf1 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width