Use isdatadescriptor instead of isgetsetdescriptor #160
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a small change I did to our vendored version in pandas. Opening directly an PR instead of an issue as it is easier to show with the code. The reason for this is is because we have some properties in pandas defined on a DataFrame et al that are properties defined in cython. For those
isinstance(param_obj, property)
does not work (as expected), andinspect.isgetsetdescriptor(param_obj))
also not, but apparentlyinspect.isdatadescriptor(param_obj))
does recognize them.So although this is a useful change for pandas, I am not really sure about the possible implications. I don't really know the difference between "datadescriptor" and "getsetdescriptor", but from the docs it seems datadescriptor is a bit more general and also contains getsetdescriptor: https://docs.python.org/3.6/library/inspect.html#inspect.isdatadescriptor
(the safer option would actually be to add the check, instead of replacing)