Skip to content

Deprecate the unused tokenize._compile function #143009

Description

@johnslavik

Feature or enhancement

Proposal:

Remove the unused tokenize._compile function. EDIT: Deprecate the unused tokenize._compile function.

It very much looks like the internal tokenize._compile function hasn't been needed since GH-104323 when it was initially removed, but it was mechanically brought back to tokenize in GH-104722 to fix GH-104719.

From a quick search, it seems that, prior to GH-104323, tokenize._compile was only used internally in tokenize._tokenize.

Most of the fairly fresh code I skimmed through on GitHub operating on tokenize._compile properly checks if Python is version <3.10 / tokenize._compile exists.

Except CheetahTemplate3, so removing tokenize._compile immediately could break them -- we need to deprecate first.

In terms of benefits of removing this at some point: it wouldn't necessarily improve the import time of tokenize as long as re still imports functools to cache template compilation. Therefore, removing tokenize._compile in the future is just a small cleanup that yields no other benefits than smaller, less bloated code.

Has this already been discussed elsewhere?

This is a minor feature, which does not need previous discussion elsewhere

Links to previous discussion of this feature:

No response

Activity

  1. johnslavik commented on Dec 20, 2025

    @johnslavik
    MemberAuthor

    @ZeroIntensity stdlib topic-parser
    CC-ing @pablogsal @Yhg1s @lysnikolaou

  2. johnslavik commented on Dec 20, 2025

    @johnslavik
    MemberAuthor

    Talked with @ZeroIntensity, the general guideline is to avoid breaking things, so I'll rephrase this issue to instead propose deprecating first.

  3. changed the title [-]Remove the unused `tokenize._compile` function[/-] [+]Deprecate the unused `tokenize._compile` function[/+] on Dec 20, 2025
  4. pablogsal commented on Dec 20, 2025

    @pablogsal
    Member

    I am not against it but I think is weird to deprecate a private function and the gain for maintainance is very little as we don't have any good reason for doing it right now (security, bugs...etc)

  5. johnslavik commented on Dec 20, 2025

    @johnslavik
    MemberAuthor

    the gain for maintainance is very little as we don't have any good reason for doing it right now (security, bugs...etc)

    I see where you're coming from. Do you think it's better to wait for a good reason to deprecate or remove, instead of doing it right now, when there is no immediate benefit?

  6. pablogsal commented on Dec 20, 2025

    @pablogsal
    Member

    the gain for maintainance is very little as we don't have any good reason for doing it right now (security, bugs...etc)

    I see where you're coming from. Do you think it's better to wait for a good reason to deprecate or remove, instead of doing it right now, when there is no immediate benefit?

    Pretty much. In general these kind of changes have more chances to annoy some users then to really improve the maintainance of the code. It's a bit unfortunate that people rely on private functions but at this stage there is no much obvious benefit and I just see risk

  7. johnslavik commented on Dec 20, 2025

    @johnslavik
    MemberAuthor

    I can see the problem. I'll close this -- I also think it's not worth the risk. Thanks @pablogsal!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-parsertype-featureA feature request or enhancement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions