mirror of
https://github.com/pybind/pybind11.git
synced 2024-12-01 09:27:12 +00:00
Applied return_name
to type_caster
for std::fileystem::path
.
The `type_caster` previously named `os.PathLike` as both argument and return type. This is inaccurate since it also takes `str` and `byte` as argument and actually returns `Path`. This commit uses the new `return_name` feature to define argument type as `Union[os.PathLike, str, bytes]` and return type as `Path`. An assert was added to the unit test for this.
This commit is contained in:
parent
dd829c5994
commit
7e7f9ce67b
@ -106,7 +106,8 @@ public:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PYBIND11_TYPE_CASTER(T, const_name("os.PathLike"));
|
PYBIND11_TYPE_CASTER(T, const_name("Union[os.PathLike, str, bytes]"));
|
||||||
|
static constexpr auto return_name = const_name("Path");
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PYBIND11_HAS_FILESYSTEM || defined(PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM)
|
#endif // PYBIND11_HAS_FILESYSTEM || defined(PYBIND11_HAS_EXPERIMENTAL_FILESYSTEM)
|
||||||
|
@ -245,7 +245,7 @@ def test_reference_sensitive_optional():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(not hasattr(m, "has_filesystem"), reason="no <filesystem>")
|
@pytest.mark.skipif(not hasattr(m, "has_filesystem"), reason="no <filesystem>")
|
||||||
def test_fs_path():
|
def test_fs_path(doc):
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
class PseudoStrPath:
|
class PseudoStrPath:
|
||||||
@ -261,6 +261,7 @@ def test_fs_path():
|
|||||||
assert m.parent_path(b"foo/bar") == Path("foo")
|
assert m.parent_path(b"foo/bar") == Path("foo")
|
||||||
assert m.parent_path(PseudoStrPath()) == Path("foo")
|
assert m.parent_path(PseudoStrPath()) == Path("foo")
|
||||||
assert m.parent_path(PseudoBytesPath()) == Path("foo")
|
assert m.parent_path(PseudoBytesPath()) == Path("foo")
|
||||||
|
assert doc(m.parent_path) == "parent_path(arg0: Union[os.PathLike, str, bytes]) -> Path"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(not hasattr(m, "load_variant"), reason="no <variant>")
|
@pytest.mark.skipif(not hasattr(m, "load_variant"), reason="no <variant>")
|
||||||
|
Loading…
Reference in New Issue
Block a user