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

Moving tp_class access, and consistent fully-qualified naming for PyPy, to detail::get_tp_name #2520

Merged
merged 2 commits into from
Oct 2, 2020

Conversation

YannickJadoul
Copy link
Collaborator

Increasing consistency, cfr. #2349 (comment)

@YannickJadoul YannickJadoul force-pushed the pypy-tp_name branch 2 times, most recently from 110b168 to b4dc8e3 Compare September 21, 2020 23:01
@@ -155,7 +155,7 @@ def test_internal_locals_differ():
assert m.local_cpp_types_addr() != cm.local_cpp_types_addr()


@pytest.mark.xfail("env.PYPY")
@pytest.mark.xfail("env.PYPY and sys.pypy_version_info < (7, 3, 2)")
Copy link
Collaborator

Choose a reason for hiding this comment

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

"Expect this to fail on PyPy < 7.3.2"

Didn't we decide to drop older versions already?

Copy link
Collaborator Author

@YannickJadoul YannickJadoul Sep 22, 2020

Choose a reason for hiding this comment

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

7.3.2 is not out, yet. And it still fails on 7.3.1 :-)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

If 7.3.2 is out before this gets merged, yes, let's remove it

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

(unrelated change, btw, but something I bumped into, when testing locally)

Copy link
Collaborator

Choose a reason for hiding this comment

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

I probably wouldn't drop it right away; approximately supporting 7.3.0+ would probably be ideal.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yes, that's probably best.

@@ -24,6 +24,14 @@ PYBIND11_NAMESPACE_BEGIN(detail)
# define PYBIND11_SET_OLDPY_QUALNAME(obj, nameobj) setattr((PyObject *) obj, "__qualname__", nameobj)
#endif

inline std::string get_tp_name(PyTypeObject *type) {
#if !defined(PYPY_VERSION)
Copy link
Collaborator

@henryiii henryiii Sep 25, 2020

Choose a reason for hiding this comment

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

What happens in 7.3.2? Does the line below start working?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I don't think so, no. I believe the @pytest.mark.xfail("env.PYPY and sys.pypy_version_info < (7, 3, 2)") is unrelated (but I just came across it because I tested with 7.3.2.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Ugh .. I'd written this yesterday, but it was still a "pending review" ...

@henryiii henryiii added this to the v2.6.0 milestone Sep 25, 2020
Copy link
Collaborator

@rwgk rwgk left a comment

Choose a reason for hiding this comment

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

This looks like a great step in the right direction.
Are there existing unit tests for built-in types and nested classes? (If not it would be OK with me to add them later.)

include/pybind11/detail/class.h Outdated Show resolved Hide resolved
@YannickJadoul
Copy link
Collaborator Author

Are there existing unit tests for built-in types and nested classes? (If not it would be OK with me to add them later.)

I think so, yes. Do the tests that I had to change (because PyPy is now consistent with CPython) count?

Copy link
Collaborator

@rwgk rwgk left a comment

Choose a reason for hiding this comment

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

Thanks Yannick! I think this is good to merge, to help you finishing up #2349. I didn't have a chance to look into existing unit test coverage beyond the changes in test_class.py here, but we can look into that separately, later, or as the need arises.

include/pybind11/detail/class.h Outdated Show resolved Hide resolved
@YannickJadoul
Copy link
Collaborator Author

OK, sounds good to me. Thanks, @rwgk!

@henryiii
Copy link
Collaborator

henryiii commented Oct 2, 2020

This seems safe to put in; would like to slowly keep a little momentum heading into 2.6.0.

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

Successfully merging this pull request may close these issues.

4 participants