docstr: Yield all services module paths.
  Paths are yielded in reverse order, so that users can add a services module that will override
  the built-in main service module path (e.g. in case a type defined in the built-in module was redefined)
docstr_tok: ["Yield","all","services","module","paths",".","Paths","are","yielded","in","reverse","order",",","so","that","users","can","add","a","services","module","that","will","override","the","built-in","main","service","module","path","(","e.g",".","in","case","a","type","defined","in","the","built-in","module","was","redefined",")"]
code: def _get_services_modules(self):
      """
      Yield all services module paths.
      Paths are yielded in reverse order, so that users can add a services module that will override
      the built-in main service module path (e.g. in case a type defined in the built-in module was redefined)
      """
      for path in reversed(self._extra_services_modules):
          yield path
      yield self._main_services_module
  
file_path: clearml/clearml/backend_api/api_proxy.py
imports: import importlib
  import pkgutil
  import re
  from typing import Any, Optional
  from .session import Session
  from ..utilities.check_updates import Version
label_desc: Use image node_id 3 for calling the ExtApiServiceProxy obj's underlying member method code with example usage: obj._get_services_modules() without return types