python_wot_plugin.py 813 B

12345678910111213141516171819202122232425
  1. #!/usr/bin/env python3
  2. import snapcraft
  3. import snapcraft.plugins.v2 as plugins
  4. from typing import Any, Dict, List, Set
  5. """
  6. See snapcraft.plugins.v2.python.PythonPlugin
  7. Plugin forces removal of 'typing' package
  8. after setup, as 'typing' is causing problems
  9. for python >= 3.7, see:
  10. - https://github.com/pypa/pip/issues/8272
  11. """
  12. class PluginImpl(plugins.python.PythonPlugin):
  13. def get_build_commands(self) -> List[str]:
  14. cmds = super().get_build_commands()
  15. for idx, cmd in enumerate(cmds):
  16. # Find position where to inject pip uninstall
  17. if cmd.strip().startswith('[ -f setup.py ]'):
  18. xcmds = cmd.split("&&", 1)
  19. # Inject and force removal
  20. cmds[idx] = f"{xcmds[0]} && pip uninstall -y typing && {xcmds[1]}"
  21. return cmds