-
Notifications
You must be signed in to change notification settings - Fork 234
Add support for passing pathlib.Path objects as filenames #1382
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
Add support for passing pathlib.Path objects as filenames #1382
Conversation
|
💖 Thanks for opening this pull request! 💖 Please make sure you read our contributing guidelines and abide by our code of conduct. A few things to keep in mind:
|
|
Hmm, supporting pathlib.Path might not be as simple as I thought. We'll need to convert the Line 106 in 60a92b3
yield str(arg) perhaps?
|
|
I'm sorry for the delay! I've examined the I've pushed my changes to my branch already, and will keep an eye on the tests in case something fails again. Thanks for your help! |
weiji14
left a comment
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.
I'm sorry for the delay! I've examined the
virtualfile_from_datafunction and modified the conditional statement to castdatatostrin presence of"file"data kind, instead of modifying thedummy_contextfunction.
Nice one, that's a much better solution! Will see if the tests pass on all platforms (Linux/macOS/Windows).
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.
Thanks @aitorres, looks good. I'll merge in 24hrs unless any of the other devs have something to add.
Edit: Please resolve #1382 (comment) before we can proceed.
pygmt/helpers/utils.py
Outdated
| raise GMTInvalidInput("Must provided both x and y.") | ||
|
|
||
| if isinstance(data, str): | ||
| if isinstance(data, (str, pathlib.Path)): |
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 will happen if people use pathlib.PurePath or path.PurePosixPath?
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.
The answer at https://stackoverflow.com/questions/58647584/how-to-test-if-object-is-a-pathlib-path/58966089#58966089 suggests using isinstance(pathlib.PurePath). @aitorres, could you perhaps see if this works?
| if isinstance(data, (str, pathlib.Path)): | |
| if isinstance(data, (str, pathlib.PurePath)): |
Also, it might be a good idea to test that PureWindowsPath and PurePosixPath objects work on Windows and macOS/Linux respectively. Let us know if you're able to update the unit test to do that. If not, we can also just ignore it.
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.
Gentle ping @aitorres to see if you're still available to finish up this PR! If not, we can get one of the maintainers to finish this up in the next week or so.
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.
Really sorry for the delay! I've just added and pushed the changes to use PurePath, and added two tests that specifically use PureWindowsPath and PurePosixPath.
|
Ping @aitorres to finalize this PR if you have time. Otherwise, I'll take over this PR and make edits to this branch. |
weiji14
left a comment
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.
Should be ok to merge after tests all pass, but prefer to have a second approval.
pathlib.Path into pygmt modules|
🎉🎉🎉 Congrats on merging your first pull request and welcome to the team! 🎉🎉🎉 Please open a new pull request to add yourself to the |
…pingTools#1382) Co-authored-by: Dongdong Tian <[email protected]> Co-authored-by: Wei Ji <[email protected]>
Description of proposed changes
This PR addresses and fixes issue #1381. By adding support to
pathlib.Pathvalues that represent file paths to thedata_kindhelper function, it can be used interchangeably with file name strings onpygmtmodules.Fixes #1381
Reminders
make formatandmake checkto make sure the code follows the style guide.doc/api/index.rst.Slash Commands
You can write slash commands (
/command) in the first line of a comment to performspecific operations. Supported slash commands are:
/format: automatically format and lint the code/test-gmt-dev: run full tests on the latest GMT development version