Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved PySet C API #43090

Closed
warsaw opened this issue Mar 25, 2006 · 5 comments
Closed

Improved PySet C API #43090

warsaw opened this issue Mar 25, 2006 · 5 comments
Assignees
Labels
interpreter-core (Objects, Python, Grammar, and Parser dirs)

Comments

@warsaw
Copy link
Member

warsaw commented Mar 25, 2006

BPO 1458476
Nosy @gvanrossum, @warsaw, @rhettinger
Files
  • set.diff
  • 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/warsaw'
    closed_at = <Date 2006-03-30.22:46:53.000>
    created_at = <Date 2006-03-25.22:48:56.000>
    labels = ['interpreter-core']
    title = 'Improved PySet C API'
    updated_at = <Date 2006-03-30.22:46:53.000>
    user = 'https://github.com/warsaw'

    bugs.python.org fields:

    activity = <Date 2006-03-30.22:46:53.000>
    actor = 'barry'
    assignee = 'barry'
    closed = True
    closed_date = None
    closer = None
    components = ['Interpreter Core']
    creation = <Date 2006-03-25.22:48:56.000>
    creator = 'barry'
    dependencies = []
    files = ['7102']
    hgrepos = []
    issue_num = 1458476
    keywords = ['patch']
    message_count = 5.0
    messages = ['49863', '49864', '49865', '49866', '49867']
    nosy_count = 3.0
    nosy_names = ['gvanrossum', 'barry', 'rhettinger']
    pr_nums = []
    priority = 'normal'
    resolution = 'accepted'
    stage = None
    status = 'closed'
    superseder = None
    type = None
    url = 'https://bugs.python.org/issue1458476'
    versions = ['Python 2.5']

    @warsaw
    Copy link
    Member Author

    warsaw commented Mar 25, 2006

    This patch adds PySet_Next(), PySet_Update(), and
    PySet_Clear(), three very useful API calls when you're
    dealing with concrete PySet objects.

    Patch includes tests and documentation.

    @warsaw warsaw closed this as completed Mar 25, 2006
    @warsaw warsaw self-assigned this Mar 25, 2006
    @warsaw warsaw added the interpreter-core (Objects, Python, Grammar, and Parser dirs) label Mar 25, 2006
    @warsaw warsaw closed this as completed Mar 25, 2006
    @warsaw warsaw self-assigned this Mar 25, 2006
    @warsaw warsaw added the interpreter-core (Objects, Python, Grammar, and Parser dirs) label Mar 25, 2006
    @rhettinger
    Copy link
    Contributor

    rhettinger commented Mar 25, 2006

    Logged In: YES
    user_id=80475

    Guido, please reject this patch.

    I laid-out my reasoning in these two posts:

    http://mail.python.org/pipermail/python-dev/2006-March/062652.html
    http://mail.python.org/pipermail/python-dev/2006-March/062737.html

    In particular, I've found PySet_Next() to be disasterously
    error-prone (and have had to fix several hard-to-find bugs
    directly attributable this function). There was some need
    for it in the PyDict API because it fetched key and value
    pointers at the same time and allowed direct modification
    of values. This of course does not apply to sets which do
    not have a value field.

    The PySet_Clear() function should be PyObject_Clear() like
    other functions that have tp_slots. There is no more of a
    case for this function than there would be for PySet_Repr,
    PySet_Len, PySet_IsTrue, or PySet_Print.

    The PySet_Update() function gets in the way of my future
    development plans for this module.

    None of these functions are necessary. They simply
    reflect Barry's programming style and views on having fat,
    overly-concrete APIs.

    This patch is against my wishes for the module. As the
    module author and principal maintainer, if I still have a
    say in the module's development, I strongly prefer
    rejection of this patch.

    @rhettinger
    Copy link
    Contributor

    Logged In: YES
    user_id=80475

    FWIW, I'm open to PyObject_Clear() for an abstract access
    to the tp_clear slot.

    Also, for Barry's use only, I'm open to a semi-private
    _PySet_Next() that isn't part of the official API but
    gives a Barry-specific hook. It should not be a public
    function because of all the problems with the approach.

    Likewise, _PySet_Update() could be done just for Barry's
    group. I need to keep PySet_Update() open until Py2.6
    since the API may evolve to allow a variable length
    argument list.

    @gvanrossum
    Copy link
    Member

    Logged In: YES
    user_id=6380

    I'm rejecting this unread, because I'm not ready to jump
    into this issue. The discussion should continue without me.

    @warsaw
    Copy link
    Member Author

    warsaw commented Mar 30, 2006

    Logged In: YES
    user_id=12800

    r43465

    @ezio-melotti ezio-melotti transferred this issue from another repository Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    interpreter-core (Objects, Python, Grammar, and Parser dirs)
    Projects
    None yet
    Development

    No branches or pull requests

    3 participants