On 12 May 2016 at 02:43, Brett Cannon <br...@python.org> wrote: > **deep, calming breath** > > Here is the PEP for __fspath__(). The draft lives at > https://github.com/brettcannon/path-pep so feel free to send me PRs for > spelling mistakes, grammatical errors, etc.
Thanks for putting this together :) > C API > ''''' > > The C API will gain an equivalent function to ``os.fspath()`` that > also allows bytes objects through:: > > /* > Return the file system path of the object. > > If the object is str or bytes, then allow it to pass through with > an incremented refcount. All other types raise a TypeError. > */ > PyObject * > PyOS_RawFSPath(PyObject *path) > { > if (PyObject_HasAttrString(path, "__fspath__")) { > path = PyObject_CallMethodObjArgs(path, "__fspath__", NULL); > if (path == NULL) { > return NULL; > } > } > else { > Py_INCREF(path); > } > > if (!PyUnicode_Check(path) && !PyBytes_Check(path)) { > Py_DECREF(path); > return PyErr_Format(PyExc_TypeError, > "expected a string, bytes, or path object, > not %S", > path->ob_type); > } > > return path; > } I'd still like to see this exposed to Python code as os._raw_fspath() (with the leading underscore just meaning "this probably isn't the API you want" rather than indicating a private or unstable API), and then fspath() defined as a wrapper around it which disallows bytes as output. However, I don't have a specific use case, and it would be straightforward to add later, so the overall PEP gets a +1 from me. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com