cproctor / qualitative-coding

Qualitative coding for computer scientists
Other
9 stars 3 forks source link

pandoc #52

Closed cmaimone closed 4 weeks ago

cmaimone commented 1 month ago

I saw "qc relies on Pandoc for converting between file formats, so make sure that is installed as well." in the documentation, but that implied to me that I only needed it to convert between file formats. I was surprised when I tried to import a text file into a project that I got an unhandled Python error

/Users/christina/Desktop/qc_project % qc corpus import ../untitled.txt

/bin/sh: pandoc: command not found
Traceback (most recent call last):
  File "/Users/christina/.local/bin/qc", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/qualitative_coding/cli/decorators.py", line 14, in command
    return f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/qualitative_coding/cli/corpus/import_media.py", line 23, in import_media
    corpus.import_media(
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/qualitative_coding/corpus.py", line 464, in import_media
    imp.import_media(source, dest_path)
  File "/Users/christina/.local/pipx/venvs/qualitative-coding/lib/python3.11/site-packages/qualitative_coding/media_importers/pandoc.py", line 7, in import_media
    run(cmd, shell=True, check=True)
  File "/opt/anaconda3/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'pandoc -i "../untitled.txt" -o "/Users/christina/Desktop/qc_project/corpus/untitled.txt" --to plain --columns 80' returned non-zero exit status 127.

So two suggestions:

  1. Just state pandoc as a required dependency and make it clear as a required installation step.
  2. Do some checking for pandoc before it's used and provide a more helpful error message if it's not found.

re: https://github.com/openjournals/joss-reviews/issues/7031

cproctor commented 1 month ago

Thanks--these are both thoughtful suggestions which I'll incorporate asap.

cproctor commented 4 weeks ago

I've adopted both suggestions in this thread. Thanks!