Open AlexandreKempf opened 7 months ago
Hi @dberenbaum, I'm interested in contributing to dvclive, and I believe this issue is a great starting point.
If I'm not mistaken, it appears that the Live
's dvcyaml
argument should also accept pathlib.Path
objects. Therefore, the argument should be defined as dvcyaml: Optional[Union[str, pathlib.Path]] = "dvc.yaml"
Could you confirm if my understanding is correct?
If I'm not mistaken, it appears that the
Live
'sdvcyaml
argument should also acceptpathlib.Path
objects.
Correct.
Therefore, the argument should be defined as
dvcyaml: Optional[Union[str, pathlib.Path]] = "dvc.yaml"
Partially correct. Fixing the type hint would be nice, but the underlying issue goes deeper. If you try an example with dvcyaml
set to some pathlib.Path
value, you should see where it breaks. This issue is to fix any underlying problems so that pathlib.Path
values work.
@dberenbaum I tried passing dvcyaml
arguments a pathlib.Path
value, it did not break but rather silently defaulted to "dvc.yaml" as mentioned by this function.
One solution I could think of is type converting to string, like....
def _init_dvc_file(self) -> str:
if isinstance(self._dvcyaml, Path):
self._dvcyaml = str(self._dvcyaml)
if isinstance(self._dvcyaml, str):
if os.path.basename(self._dvcyaml) == "dvc.yaml":
return self._dvcyaml
raise InvalidDvcyamlError
return "dvc.yaml"
I've manually tested the changes, and they work as expected. What do you think of this solution?
Most of the path arguments handle both
str
andpathlib.Path
object.It is not the case for
Live
'sdvcyaml
while it should probably be.