05-09-2011, 11:44 AM | #1 |
Sigil Developer
Posts: 7,506
Karma: 5433350
Join Date: Nov 2009
Device: many
|
new plugins and using import
Hi Kovid, Other Plugin Developers
I am in the process of updating some older File Type plugins to the new plugin interface and I looked at your examples but still had a few questions. From our old File Type plugin "_plugin.py" we could easily import other python code from our own zip archive by simply using "import" as long as we did it inside of the "run" method. So we never ran into any zipimport issues, since we never needed to do that. Is using simple imports from within the run methods still the right way to import other code from our plugin zip archive for File Type Plugins? I noticed you used some other approaches for UI demos where you defined a new class that did the main work but I was not sure if you needed/wanted that approach for the simpler file type plugins? Thanks, KevinH |
05-09-2011, 05:20 PM | #2 |
Sigil Developer
Posts: 7,506
Karma: 5433350
Join Date: Nov 2009
Device: many
|
Hi,
Just in case anyone else is interested in this question: based on trial and error with my own plugin and Calibre 0.8.0, it seems I misunderstood how use of import had changed in the new plugins setup. With recent calibre versions I can now use "import" anyplace (even for other files from the plugin zip) in __init.py__. So I no longer need to restrict the imports to be within the run method. That is a very nice improvement indeed. KevinH |
Advert | |
|
05-09-2011, 08:35 PM | #3 |
creator of calibre
Posts: 43,782
Karma: 22666666
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
You can import anything from anywhere, and no you dont need multiple classes for file type plugins. Really, ll you need to migrate an old plugin is to rename the .py file to _init__.py and add the .txt file that gives the import name. Of course for maintainability of your plugin you should ideally split it up into multiple .py files, which the new import mechanism facilitates.
|
05-09-2011, 09:37 PM | #4 |
Sigil Developer
Posts: 7,506
Karma: 5433350
Join Date: Nov 2009
Device: many
|
Hi Kovid,
Please forgive my ignorance here but just to be clear ... By adding a "plugin-import-name-MYPLUGIN.txt" empty text file to my plugin zip archive, I am effectively saying the contents of my plugin zip file uses a namespace (or something like that) called "MYPLUGIN". This is done to prevent name clashes with other python files used inside calibre and/or inside other plugins, is that right? Then in my __init__.py (or any of my other .py files in the plugin) I change my imports of other python files local to my plugin to use that "namespace" equivalent as follows: from calibre_plugins.MYPLUGIN import file1 This would be equivalent to adding "import file1" in the run method under the old plugin interface. Am I understanding things correctly? Thanks, KevinH Last edited by KevinH; 05-09-2011 at 09:43 PM. Reason: fix typos |
05-09-2011, 11:48 PM | #5 |
creator of calibre
Posts: 43,782
Karma: 22666666
Join Date: Oct 2006
Location: Mumbai, India
Device: Various
|
Yes .
|
Advert | |
|
Thread Tools | Search this Thread |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
DRM plugins | jjansen | Plugins | 9 | 12-01-2012 06:22 PM |
Index of plugins | kiwidude | Plugins | 0 | 01-27-2011 07:19 PM |
Introduction to plugins | kiwidude | Plugins | 0 | 01-27-2011 09:15 AM |
Plugins | junkml | Plugins | 32 | 06-19-2009 06:43 AM |
Plugins? | Mitchll | Plugins | 0 | 12-27-2008 02:36 PM |