Skip to content

Add inspect.Signature.from_text(). #81678

Description

@ericsnowcurrently
BPO 37497
Nosy @ericsnowcurrently, @1st1
PRs
  • gh-81678: Add inspect.Signature.from_text() #14579
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/ericsnowcurrently'
    closed_at = None
    created_at = <Date 2019-07-04.00:11:26.728>
    labels = ['type-feature', 'library', '3.9']
    title = 'Add inspect.Signature.from_text().'
    updated_at = <Date 2020-03-06.20:46:18.865>
    user = 'https://github.com/ericsnowcurrently'

    bugs.python.org fields:

    activity = <Date 2020-03-06.20:46:18.865>
    actor = 'yselivanov'
    assignee = 'eric.snow'
    closed = False
    closed_date = None
    closer = None
    components = ['Library (Lib)']
    creation = <Date 2019-07-04.00:11:26.728>
    creator = 'eric.snow'
    dependencies = []
    files = []
    hgrepos = []
    issue_num = 37497
    keywords = []
    message_count = 5.0
    messages = ['347250', '347251', '362765', '363535', '363551']
    nosy_count = 2.0
    nosy_names = ['eric.snow', 'yselivanov']
    pr_nums = ['14579']
    priority = 'normal'
    resolution = None
    stage = 'needs patch'
    status = 'open'
    superseder = None
    type = 'enhancement'
    url = 'https://bugs.python.org/issue37497'
    versions = ['Python 3.9']

    Activity

    1. ericsnowcurrently commented on Jul 4, 2019

      @ericsnowcurrently
      MemberAuthor

      In early 2014 (3.3), when argument clinic was added, we added support for turning func.__text_signature__ into an inspect.Signature object. However, the functionality to convert a string into a Signature was never exposed publicly. Here's a patch to do so.

      Note that inspect.signature() will also support taking a string.

    2. added
      stdlibStandard Library Python modules in the Lib/ directory
      type-featureA feature request or enhancement
      on Jul 4, 2019
    3. ericsnowcurrently commented on Jul 4, 2019

      @ericsnowcurrently
      MemberAuthor

      Note that there has been a little discussion of this in the past, particularly around the time that argument clinic was introduced: https://bugs.python.org/issue23967#msg241140.

    4. 1st1 commented on Feb 27, 2020

      @1st1
      Member

      What's the actual use case for exposing this functionality?

    5. ericsnowcurrently commented on Mar 6, 2020

      @ericsnowcurrently
      MemberAuthor

      Honestly, I don't recall exactly the concrete use case for which I opened this. :) I *think* it was related to applying a more restrictive signature onto an existing function (e.g. with a decorator).

    6. 1st1 commented on Mar 6, 2020

      @1st1
      Member

      I'd be fine with Signature.from_text(), but not with Signature constructor / signature() function accepting both callable and string arguments. Overall, I think that we ought to have a real need to add this new API, so unless there's a good (or any, really) use case I'd say we shouldn't merge this now.

    7. transferred this issue fromon Apr 10, 2022
    8. tungol commented on Dec 8, 2024

      @tungol
      Contributor

      This came up for me recently. I wanted to create a better signature for a built-in class's __init__ method by converting the signature from the underlying class. The text of the signature was easy to manipulate, but then I had no way to convert it to a signature object.

      I worked around it by creating the signature object for the underlying class first, and then modifying it with replace(). That's not a bad work-around, but there were a couple extra considerations that I thought were slightly easier to handle when generating the text of the signature I wanted directly.

      I agree that that's no need for inspect.signature() to understand the text format itself.

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

    Metadata

    Metadata

    Labels

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

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions