clamsproject / clams-python

CLAMS SDK for python
http://sdk.clams.ai/
Apache License 2.0
4 stars 1 forks source link

`clams source` command does not work as intended on Windows #208

Closed keighrim closed 2 months ago

keighrim commented 2 months ago

Bug Description

Originally reported by @owencking


When using the command on Windows,

  1. without a --prefix flag, Python will complain about the file path not being absolute.
  2. with such a flag, Python will generate location value with some additional prefix path starting from C:\ or D:\.

Reproduction steps

C:\Users\krim>clams source video:/data/video.mp4
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\krim\anaconda3\Scripts\clams.exe\__main__.py", line 7, in <module>
  File "C:\Users\krim\anaconda3\Lib\site-packages\clams\__init__.py", line 45, in cli
    source.main(args)
  File "C:\Users\krim\anaconda3\Lib\site-packages\clams\mmif_utils\source.py", line 314, in main
    mmif = generate_source_mmif_from_file(**vars(args))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\krim\anaconda3\Lib\site-packages\clams\mmif_utils\source.py", line 215, in generate_source_mmif_from_file
    pl.add_document(doc)
  File "C:\Users\krim\anaconda3\Lib\site-packages\clams\mmif_utils\source.py", line 69, in add_document
    document = Document(document)
               ^^^^^^^^^^^^^^^^^^
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 256, in __init__
    super().__init__(doc_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 60, in __init__
    super().__init__(anno_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\model.py", line 108, in __init__
    self.deserialize(mmif_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\model.py", line 240, in deserialize
    self._deserialize(mmif_json)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 68, in _deserialize
    super()._deserialize(input_dict)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\model.py", line 257, in _deserialize
    self[k] = self._attribute_classes[k](v)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 462, in __init__
    super().__init__(mmif_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 438, in __init__
    super().__init__(mmif_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\model.py", line 108, in __init__
    self.deserialize(mmif_obj)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\model.py", line 240, in deserialize
    self._deserialize(mmif_json)
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 466, in _deserialize
    self.location = input_dict.pop("location")
    ^^^^^^^^^^^^^
  File "C:\Users\krim\anaconda3\Lib\site-packages\mmif\serialize\annotation.py", line 504, in location
    self.location_ = pathlib.Path(location).as_uri()
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\krim\anaconda3\Lib\pathlib.py", line 566, in as_uri
    raise ValueError("relative path can't be expressed as a file URI")
ValueError: relative path can't be expressed as a file URI

Expected behavior

No response

Log output

No response

Screenshots

No response

Additional context

No response