nodes: 0, module; 1, function_definition; 2, function_name:get_modelnames; 3, parameters; 4, type; 5, block; 6, generic_type; 7, expression_statement; 8, return_statement; 9, identifier:List; 10, type_parameter; 11, comment:"""Return a sorted |list| containing all application model names.
  
          >>> from hydpy.auxs.xmltools import XSDWriter
          >>> print(XSDWriter.get_modelnames())    # doctest: +ELLIPSIS
          [...'dam_v001', 'dam_v002', 'dam_v003', 'dam_v004', 'dam_v005',...]
          """; 12, call; 13, type; 14, identifier:sorted; 15, generator_expression; 16, identifier:str; 17, call; 18, for_in_clause; 19, if_clause; 20, identifier:str; 21, argument_list; 22, identifier:fn; 23, call; 24, parenthesized_expression; 25, subscript; 26, attribute; 27, argument_list; 28, boolean_operator; 29, call; 30, integer:0; 31, identifier:os; 32, identifier:listdir; 33, subscript; 34, call; 35, parenthesized_expression; 36, attribute; 37, argument_list; 38, attribute; 39, integer:0; 40, attribute; 41, argument_list; 42, comparison_operator:fn != '__init__.py'; 43, identifier:fn; 44, identifier:split; 45, string; 46, identifier:models; 47, identifier:__path__; 48, identifier:fn; 49, identifier:endswith; 50, string; 51, identifier:fn; 52, string; 53, string_content:.; 54, string_content:.py; 55, string_content:__init__.py
code: def get_modelnames() -> List[str]:
          """Return a sorted |list| containing all application model names.
  
          >>> from hydpy.auxs.xmltools import XSDWriter
          >>> print(XSDWriter.get_modelnames())    # doctest: +ELLIPSIS
          [...'dam_v001', 'dam_v002', 'dam_v003', 'dam_v004', 'dam_v005',...]
          """
          return sorted(str(fn.split('.')[0])
                        for fn in os.listdir(models.__path__[0])
                        if (fn.endswith('.py') and (fn != '__init__.py')))