Difference between revisions of "Updating your Extension for 1.0"
(→Writing Tests: Make it clearer when this is required. Probably almost no third-party extension provider will do this (nor do they use a Python package), except for 2 or 3 large ones.) |
m |
||
Line 43: | Line 43: | ||
These changes are not backwards compatible. | These changes are not backwards compatible. | ||
=== Python 3 / Python 2 compatibility === | |||
Test your extension with both Python 2 and Python 3. With the updated extensions, Inkscape does no longer require Python 2, so some users will probably be using Python 3, and may no longer have Python 2 installed on their system. See [[Extension_Interpreters]] for how to set the Python version for your extension (for testing). | |||
== Getting your extension added to Inkscape's stock extensions == | == Getting your extension added to Inkscape's stock extensions == | ||
Line 59: | Line 63: | ||
Visit https://gitlab.com/inkscape/extensions, fork the repository, and create a merge request on GitLab. | Visit https://gitlab.com/inkscape/extensions, fork the repository, and create a merge request on GitLab. | ||
Revision as of 03:06, 25 December 2018
This is a preliminary and incomplete list of actions to take for updating Python extensions for Inkscape 1.0:
Updating *.inx files
Remove dependency listings
Remove the dependency listings for the following modules:
- bezmisc.py
- coloreffect.py
- cspsubdiv.py
- cubicsuperpath.py
- ffgeom.py
- inkex.py (removal not strictly required)
- pathmodifier.py
- simplepath.py
- simplestyle.py
- simpletransform.py
- more?
This change is backwards compatible (as long as the user has a fully functioning Inkscape installation).
Updating *.py files
Collecting the options of the extension
- Instead of
inkex.Effect.OptionParser.add_option
, your extension should now useinkex.Effect.arg_parser.add_argument
. - The 'type' option now works with variables instead of strings. Use
int
instead of"int"
(same for float,...). - The 'inkbool' type is now
inkex.inkbool
. action="store"
can be removed.
These changes are not backwards compatible. The old options will still work, but are deprecated and should no longer be used when you develop your extension for Inkscape 1.0 or higher.
Replace specific functions
pathmodifier
is nowTODO (see https://gitlab.com/inkscape/extensions/issues/24)
.
Test run your extension
Many functions, when run, will still work, but they will give you a deprecation warning, with instructions what to replace them by.
E.g. inkex.Effect.selected
is replaced by inkex.Effect.svg.selected
- however, most replacements do not follow this naming scheme translation.
These changes are not backwards compatible.
Python 3 / Python 2 compatibility
Test your extension with both Python 2 and Python 3. With the updated extensions, Inkscape does no longer require Python 2, so some users will probably be using Python 3, and may no longer have Python 2 installed on their system. See Extension_Interpreters for how to set the Python version for your extension (for testing).
Getting your extension added to Inkscape's stock extensions
Writing tests
Previously Inkscape didn't require any unit testing for code. You should now write test code, if you expect your module to be included into the Inkscape extensions repository and included in the shipped Inkscape release. In this case, a test suite file should be made in the tests directory for your extension. It should test each aspect of your extension and exercise all assumptions.
If you are writing a standalone extension that users will install themselves, there is no strict requirement for tests. But having them will greatly improve your code and your ability to upgrade the code later. You can have tests in your own folders and use the extension's setup.py as a harness to run them (a setup.py file is also useful for installing your python code as a non-inkscape related python module, which might be useful too). See Python documentation for creating packages.
Documenting your extension
TODO
Submitting your extension for inclusion
Visit https://gitlab.com/inkscape/extensions, fork the repository, and create a merge request on GitLab.