I think I found one of those problems
Calibre seems to find my KEPubOutput class just fine, and recognizes that it's for the 'kepub' file type, but when I actually press "OK" it raises ValueError saying there's no output format plugin for file type 'kepub'.
I put some print() statements in calibre.customize.ui (output_format_plugins() and plugins_for_output_format()), calibre.ebooks.conversion.plumber (Plumber.__init__()), calibre.utils.ipc.worker (main()), and calibre.gui2.convert.gui_conversion (gui_convert()) to try and trace the problem and I'm stumped. Here's my calibre log (including the output from all the extra print statements I added) up to the point where I say I want to convert a book (it defaults to 'EPUB' as the output format) and I select 'KEPUB' from the output format list:
Once I actually click "OK", I get this output if I set CALIBRE_PYTHON_PATH:
Spoiler:
main() :: Name: gui_convert_override
Convert book 1 of 1 (The Spirit Thief)
Module: calibre.gui2.convert.gui_conversion
Func: gui_convert_override
Failed to initialize plugin: '/home/jgoguen/.config/calibre/plugins/KePub Output.zip'
gui_convert() :: Input: /tmp/calibre_0.9.42_tmp_SXwM3z/2QEzFG.epub
gui_convert() :: Output: /tmp/calibre_0.9.42_tmp_SXwM3z/aYej4e.kepub
__init__() :: Output: /tmp/calibre_0.9.42_tmp_SXwM3z/aYej4e.kepub
__init__() :: Output format: kepub
output_format_plugin() :: <calibre.ebooks.conversion.plugins.epub_output.EPU BOutput object at 0x2b55490>
output_format_plugin() :: Trying plugin for epub
output_format_plugin() :: <calibre.ebooks.conversion.plugins.fb2_output.FB2O utput object at 0x2b55510>
output_format_plugin() :: Trying plugin for fb2
output_format_plugin() :: <calibre.ebooks.conversion.plugins.lit_output.LITO utput object at 0x2b55590>
output_format_plugin() :: Trying plugin for lit
output_format_plugin() :: <calibre.ebooks.conversion.plugins.lrf_output.LRFO utput object at 0x2b55610>
output_format_plugin() :: Trying plugin for lrf
output_format_plugin() :: <calibre.ebooks.conversion.plugins.mobi_output.MOB IOutput object at 0x2b55690>
output_format_plugin() :: Trying plugin for mobi
output_format_plugin() :: <calibre.ebooks.conversion.plugins.mobi_output.AZW 3Output object at 0x2b55710>
output_format_plugin() :: Trying plugin for azw3
output_format_plugin() :: <calibre.ebooks.conversion.plugins.oeb_output.OEBO utput object at 0x2b55790>
output_format_plugin() :: Trying plugin for oeb
output_format_plugin() :: <calibre.ebooks.conversion.plugins.pdb_output.PDBO utput object at 0x2b55810>
output_format_plugin() :: Trying plugin for pdb
output_format_plugin() :: <calibre.ebooks.conversion.plugins.pdf_output.PDFO utput object at 0x2b55890>
output_format_plugin() :: Trying plugin for pdf
output_format_plugin() :: <calibre.ebooks.conversion.plugins.pml_output.PMLO utput object at 0x2b55910>
output_format_plugin() :: Trying plugin for pmlz
output_format_plugin() :: <calibre.ebooks.conversion.plugins.rb_output.RBOut put object at 0x2b55990>
output_format_plugin() :: Trying plugin for rb
output_format_plugin() :: <calibre.ebooks.conversion.plugins.rtf_output.RTFO utput object at 0x2b55a10>
output_format_plugin() :: Trying plugin for rtf
output_format_plugin() :: <calibre.ebooks.conversion.plugins.tcr_output.TCRO utput object at 0x2b55a90>
output_format_plugin() :: Trying plugin for tcr
output_format_plugin() :: <calibre.ebooks.conversion.plugins.txt_output.TXTO utput object at 0x2b55b10>
output_format_plugin() :: Trying plugin for txt
output_format_plugin() :: <calibre.ebooks.conversion.plugins.txt_output.TXTZ Output object at 0x2b55b90>
output_format_plugin() :: Trying plugin for txtz
output_format_plugin() :: <calibre.ebooks.conversion.plugins.html_output.HTM LOutput object at 0x2b55c10>
output_format_plugin() :: Trying plugin for zip
output_format_plugin() :: <calibre.ebooks.conversion.plugins.htmlz_output.HT MLZOutput object at 0x2b55c90>
output_format_plugin() :: Trying plugin for htmlz
output_format_plugin() :: <calibre.ebooks.conversion.plugins.snb_output.SNBO utput object at 0x2b55d10>
output_format_plugin() :: Trying plugin for snb
__init__() :: None
__init__() raising ValueError :: Output: /tmp/calibre_0.9.42_tmp_SXwM3z/aYej4e.kepub
__init__() raising ValueError :: Output format: kepub
Traceback (most recent call last):
File "/usr/bin/calibre-parallel", line 20, in <module>
sys.exit(main())
File "/home/jgoguen/Copy/Code/calibre/src/calibre/utils/ipc/worker.py", line 191, in main
result = func(*args, **kwargs)
File "/home/jgoguen/Copy/Code/calibre/src/calibre/gui2/convert/gui_conversion.py", line 33, in gui_convert_override
override_input_metadata=True)
File "/home/jgoguen/Copy/Code/calibre/src/calibre/gui2/convert/gui_conversion.py", line 24, in gui_convert
override_input_metadata=override_input_metadata)
File "/home/jgoguen/Copy/Code/calibre/src/calibre/ebooks/conversion/plumber.py", line 726, in __init__
raise ValueError('No plugin to handle output format: '+output_fmt)
ValueError: No plugin to handle output format: kepub
And this if I only set CALIBRE_DEVELOP_FROM but not CALIBRE_PYTHON_PATH:
Spoiler:
Convert book 1 of 1 (The Spirit Thief)
Failed to initialize plugin: '/home/jgoguen/.config/calibre/plugins/KePub Output.zip'
Traceback (most recent call last):
File "/usr/bin/calibre-parallel", line 20, in <module>
sys.exit(main())
File "/usr/lib64/calibre/calibre/utils/ipc/worker.py", line 188, in main
result = func(*args, **kwargs)
File "/usr/lib64/calibre/calibre/gui2/convert/gui_conversion.py", line 31, in gui_convert_override
override_input_metadata=True)
File "/usr/lib64/calibre/calibre/gui2/convert/gui_conversion.py", line 22, in gui_convert
override_input_metadata=override_input_metadata)
File "/usr/lib64/calibre/calibre/ebooks/conversion/plumber.py", line 720, in __init__
raise ValueError('No plugin to handle output format: '+output_fmt)
ValueError: No plugin to handle output format: kepub
It almost looks like the workflow through calibre-parallel doesn't check third-party plugins? I'm not sure where to go from here.