8000 bpo-15987: Add ast.AST class richcompare methods by flavianh · Pull Request #14970 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

bpo-15987: Add ast.AST class richcompare methods #14970

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

Closed

Conversation

flavianh
Copy link
@flavianh flavianh commented Jul 26, 2019

Recreation of #1368, updated to current master.

https://bugs.python.org/issue15987

self.assertEqual(ast.Str("ABCD"), ast.Str("ABCD"))
self.assertEqual(ast.Str("中文字"), ast.Str("中文字"))

self.assertNotEqual(ast.Num(10), ast.Num(20))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you add a testcase for ast.Num(10) and ast.Num(10.0) -- I suspect the current implementation will return True but perhaps it should not

The same for ast.Num(1) and ast.NamedConstant(True) is probably also a good test

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@asottile Current implementation returns False, so that's all good

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome, just wanted to make sure that's captured in the tests

Copy link
Author
@flavianh flavianh Jul 29, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@asottile wait hold on, I added it in the tests and it passed locally when I tried it in my re-compiled 3.9 version, but on the CI it does not. I guess it will need some fixing after all. Good catch! Any idea how to fix this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This issue has been resolved.

Copy link
Contributor
@ZackerySpytz ZackerySpytz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a quick glance, I can see multiple issues with this PR:

  • There are multiple reference leaks involving PyObject_GetAttr() and PyObject_GetAttrString().
  • C API functions like PyObject_GetAttrString() and PySequence_Size() are not
    checked for failure.
  • In ast_richcompare(), len and i should be of type Py_ssize_t, not int.
  • Some code does not follow PEP 7 (braces are required for all ifs) https://www.python.org/dev/peps/pep-0007/#code-lay-out.

@pablogsal pablogsal self-assigned this Dec 1, 2019
@pablogsal pablogsal self-requested a review December 1, 2019 13:28
@isidentical
Copy link
Member

What's the status of this PR? IMHO it would be so cool to see this in 3.9, before the alpha period ends (~3 months)

@isidentical
Copy link
Member

Second ping (first one was after 7 months, this one is after 9 months in any kind of activity) @flavianh are you still interested in this PR? If you are it would be really cool to apply reviews from code suggestions and sync with master. I'd really like to see this before the alpha cut.

@flavianh
Copy link
Author
flavianh commented Mar 27, 2020 via email

@isidentical
Copy link
Member

No need for sorry, thanks for looking into this issue. If you can't find the time, I can push these suggestions and rebase your PR to master if you could just give me access to your fork.

@flavianh
Copy link
Author

@isidentical That would be very helpful yes :). I've added you to my fork

Flavian Hautbois and others added 5 commits March 27, 2020 22:32
Co-authored-by: Louie Lu <me@louie.lu>
Co-authored-by: Batuhan Taşkaya <batuhanosmantaskaya@gmail.com>
Co-authored-by: Batuhan Taşkaya <batuhanosmantaskaya@gmail.com>
Co-authored-by: Batuhan Taşkaya <batuhanosmantaskaya@gmail.com>
@isidentical isidentical force-pushed the add-ast-class-rich-compare-methods branch from f31c87b to 15c5f1f Compare March 28, 2020 01:19
@isidentical isidentical added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Mar 28, 2020
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @isidentical for commit 9652964 🤖

If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Mar 28, 2020
@isidentical
Copy link
Member

PR rebased to master, tests updated, the main richcompare code refactored, cleared from all its refleaks and exception handling is improved. @flavianh can you review the changes?

Copy link
Author
@flavianh flavianh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but I can't approve it since I'm the owner of the PR. Thanks for taking over ;)

@serhiy-storchaka
Copy link
Member

There are some issues with the code, but I do not point on them because I am not sure that implementing the rich comparison of AST is a good idea. See my objections on the bug tracker.

@hauntsaninja
Copy link
Contributor

At least two core devs feel a dedicated function is better, so closing this. Superseded by #19211

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

Successfully merging this pull request may close these issues.

10 participants
0