I attempted to do this today, as my first actual contribution to CPython itself. I think the prior attempt went down a wrong path, which is why neither PR could actually pass tests.
I've been looking at `posixmodule.c` for comparison, specifically. The key thing, I believe, is not to use `PyObject *filename` in the `dpmopen_impl()` calls at all, but rather `path_t *path`. I tried some absolutely crude instrumentation to see why the `PyOS_FSPath` macro and the rest wasn't doing what it seems like it should (i.e. sticking `printf()`s in the .c files). Eventually I realized that argument clinic is stopping me from even getting to the body of the function when `filename` was a PosixPath, so anything that PyOS_FSPath does is moot. I think in the end the new code should be even simpler than the main (3.11) branch. All I really need to do with a `path_t` is be able to call: PyObject *self = newgdbmobject(state, name, iflags, mode); That is, `name` is simply the filename as char* (the other parameters are independent of the path-like issue). Does anyone have pointers to an example or documentation about doing this? The patterns in posixmodule.c are suggestive, but I'm not sure of the missing pieces. Also, I copied the typedef for path_t from posixmodule.c to both `_dbmmodule.c` and `_gdbmmodule.c`. I know that's also going to be wrong, and it should be pulled into an .h file. Any idea about which one? `posixmodule.h` seems like a possibility, but then I'd need to repeat it in `winreparse.h`. Maybe a new name? On Tue, Sep 7, 2021 at 1:11 PM Guido van Rossum <gu...@python.org> wrote: > If someone posted a Pull Request that added this, it would be looked upon > favorably I'm sure. > > On Tue, Sep 7, 2021 at 8:31 AM Christopher Barker <python...@gmail.com> > wrote: > >> it looks like this as had a BPO for over a year: >> >> https://bugs.python.org/issue40563 >> >> I suggest pinging that (and maybe python-dev) to see what's up. >> >> NOTE: first check 3.10 :-) >> >> -CHB >> >> >> On Tue, Sep 7, 2021 at 5:05 AM Evan Greenup via Python-ideas < >> python-id...@python.org> wrote: >> >>> Currently, in Python 3.9, `dbm.open()`, `dbm.gnu.open()` and >>> `dbm.ndbm.open()` doesn't support path-like object, class defined in >>> `pathlib`. >>> >>> It would be nice to add support with it. >>> >>>
_______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/QSS5SCSK2ZXNBQSGYIRSED6UMWB32PAQ/ Code of Conduct: http://python.org/psf/codeofconduct/