plugins.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. # Copyright (c) Alibaba, Inc. and its affiliates.
  2. from argparse import ArgumentParser
  3. from modelscope.cli.base import CLICommand
  4. from modelscope.utils.plugins import PluginsManager
  5. plugins_manager = PluginsManager()
  6. def subparser_func(args):
  7. """ Function which will be called for a specific sub parser.
  8. """
  9. return PluginsCMD(args)
  10. class PluginsCMD(CLICommand):
  11. name = 'plugin'
  12. def __init__(self, args):
  13. self.args = args
  14. @staticmethod
  15. def define_args(parsers: ArgumentParser):
  16. """ define args for install command.
  17. """
  18. parser = parsers.add_parser(PluginsCMD.name)
  19. subparsers = parser.add_subparsers(dest='command')
  20. PluginsInstallCMD.define_args(subparsers)
  21. PluginsUninstallCMD.define_args(subparsers)
  22. PluginsListCMD.define_args(subparsers)
  23. parser.set_defaults(func=subparser_func)
  24. def execute(self):
  25. print(self.args)
  26. if self.args.command == PluginsInstallCMD.name:
  27. PluginsInstallCMD.execute(self.args)
  28. if self.args.command == PluginsUninstallCMD.name:
  29. PluginsUninstallCMD.execute(self.args)
  30. if self.args.command == PluginsListCMD.name:
  31. PluginsListCMD.execute(self.args)
  32. class PluginsInstallCMD(PluginsCMD):
  33. name = 'install'
  34. @staticmethod
  35. def define_args(parsers: ArgumentParser):
  36. install = parsers.add_parser(PluginsInstallCMD.name)
  37. install.add_argument(
  38. 'package',
  39. type=str,
  40. nargs='+',
  41. default=None,
  42. help='Name of the package to be installed.')
  43. install.add_argument(
  44. '--index_url',
  45. '-i',
  46. type=str,
  47. default=None,
  48. help='Base URL of the Python Package Index.')
  49. install.add_argument(
  50. '--force_update',
  51. '-f',
  52. type=str,
  53. default=False,
  54. help='If force update the package')
  55. @staticmethod
  56. def execute(args):
  57. plugins_manager.install_plugins(
  58. list(args.package),
  59. index_url=args.index_url,
  60. force_update=args.force_update)
  61. class PluginsUninstallCMD(PluginsCMD):
  62. name = 'uninstall'
  63. @staticmethod
  64. def define_args(parsers: ArgumentParser):
  65. install = parsers.add_parser(PluginsUninstallCMD.name)
  66. install.add_argument(
  67. 'package',
  68. type=str,
  69. nargs='+',
  70. default=None,
  71. help='Name of the package to be installed.')
  72. install.add_argument(
  73. '--yes',
  74. '-y',
  75. type=str,
  76. default=False,
  77. help='Base URL of the Python Package Index.')
  78. @staticmethod
  79. def execute(args):
  80. plugins_manager.uninstall_plugins(list(args.package), is_yes=args.yes)
  81. class PluginsListCMD(PluginsCMD):
  82. name = 'list'
  83. @staticmethod
  84. def define_args(parsers: ArgumentParser):
  85. install = parsers.add_parser(PluginsListCMD.name)
  86. install.add_argument(
  87. '--all',
  88. '-a',
  89. type=str,
  90. default=None,
  91. help='Show all of the plugins including those not installed.')
  92. @staticmethod
  93. def execute(args):
  94. plugins_manager.list_plugins(show_all=all)