-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Keyword arguments and generalized unpacking for C++ API #372
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
317524f
Make arg_t hold a pointer instead of a copy of the value
dean0x7d c743e1b
Support keyword arguments and generalized unpacking in C++
dean0x7d 67990d9
Add py::print() function
dean0x7d 66aa272
Add py::str::format() method
dean0x7d 15a112f
Add py::dict() keyword constructor
dean0x7d 625bd48
Document calling function with keyword arguments from C++
dean0x7d 16db1bf
Remove superseded handle::operator() overloads
dean0x7d 56e86ed
Workaround for py::dict() constructor on MSVC
dean0x7d 8fe13b8
Apply make_caster and intrinsic_t aliases everywhere
dean0x7d 60b2680
Make keyword argument hold a py::object instead of T*
dean0x7d File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
py::print not mentioned in docs (except changelog)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think about creating a new page dedicated to the Python C++ API? The wrapper classes (
str
,tuple
,dict
) are also a bit underdocumented, but the the Advanced page is already getting quite long and hard to navigate. (It's probably worth splitting of additional sections which form a logical unit (like buffer/numpy/eigen) but that's a topic for a different PR.)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sounds good to me.
Sent from my iPhone
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, agreed, most of this library now falls under "Advanced", and things like objects in pytypes.h are scarcely mentioned.
Splitting into sections could be good -- eg wrapper types (dict, tuple etc), handle/object, utility (print), eigen, NumPy (I'd be willing to rewrite the docs on this one).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pybind11 has three different ways of passing values between C++ and Python. Custom C++ classes mapped to Python (
class_<>
, convenience wrappers around it likestl_binder.h
), Python type wrappers (py::object, py::array
, etc.), and conversion type casters which convert C++ types into equivalent Python types and vice versa while creating copies in the process (forint
,std::string
, all stuff instl.h
,eigen.h
). I was thinking that it might make sense to split the advanced documentation into three different parts corresponding to each. Thoughts?