Пример #1
0
 def organize_imports(
     self,
     pymodule,
     unused=True,
     duplicates=True,
     selfs=True,
     sort=True,
     import_filter=None,
 ):
     if unused or duplicates:
         module_imports = self.module_imports(pymodule, import_filter)
         if unused:
             module_imports.remove_unused_imports()
         if self.project.prefs.get("split_imports"):
             module_imports.force_single_imports()
         if duplicates:
             module_imports.remove_duplicates()
         source = module_imports.get_changed_source()
         if source is not None:
             pymodule = libutils.get_string_module(self.project, source,
                                                   pymodule.get_resource())
     if selfs:
         pymodule = self._remove_self_imports(pymodule, import_filter)
     if sort:
         return self.sort_imports(pymodule, import_filter)
     else:
         return pymodule.source_code
Пример #2
0
 def relatives_to_absolutes(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_absolute_list = module_imports.get_relative_to_absolute_list()
     for name, absolute_name in to_be_absolute_list:
         pymodule = self._rename_in_module(pymodule, name, absolute_name)
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.get_relative_to_absolute_list()
     source = module_imports.get_changed_source()
     if source is None:
         source = pymodule.source_code
     return source
Пример #3
0
 def relatives_to_absolutes(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_absolute_list = module_imports.get_relative_to_absolute_list()
     for name, absolute_name in to_be_absolute_list:
         pymodule = self._rename_in_module(pymodule, name, absolute_name)
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.get_relative_to_absolute_list()
     source = module_imports.get_changed_source()
     if source is None:
         source = pymodule.source_code
     return source
Пример #4
0
 def handle_long_imports(self, pymodule, maxdots=2, maxlength=27, import_filter=None):
     # IDEA: `maxdots` and `maxlength` can be specified in project config
     # adding new from imports
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_fixed = module_imports.handle_long_imports(maxdots, maxlength)
     # performing the renaming
     pymodule = libutils.get_string_module(
         self.project, module_imports.get_changed_source(), resource=pymodule.get_resource()
     )
     for name in to_be_fixed:
         pymodule = self._rename_in_module(pymodule, name, name.split(".")[-1])
     # organizing imports
     return self.organize_imports(pymodule, selfs=False, sort=False, import_filter=import_filter)
Пример #5
0
    def froms_to_imports(self, pymodule, import_filter=None):
        pymodule = self._clean_up_imports(pymodule, import_filter)
        module_imports = self.module_imports(pymodule, import_filter)
        for import_stmt in module_imports.imports:
            if import_stmt.readonly or not self._is_transformable_to_normal(import_stmt.import_info):
                continue
            pymodule = self._from_to_normal(pymodule, import_stmt)

        # Adding normal imports in place of froms
        module_imports = self.module_imports(pymodule, import_filter)
        for import_stmt in module_imports.imports:
            if not import_stmt.readonly and self._is_transformable_to_normal(import_stmt.import_info):
                import_stmt.import_info = NormalImport(((import_stmt.import_info.module_name, None),))
        module_imports.remove_duplicates()
        return module_imports.get_changed_source()
Пример #6
0
 def handle_long_imports(self, pymodule, maxdots=2, maxlength=27,
                         import_filter=None):
     # IDEA: `maxdots` and `maxlength` can be specified in project config
     # adding new from imports
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_fixed = module_imports.handle_long_imports(maxdots, maxlength)
     # performing the renaming
     pymodule = libutils.get_string_module(
         self.project, module_imports.get_changed_source(),
         resource=pymodule.get_resource())
     for name in to_be_fixed:
         pymodule = self._rename_in_module(pymodule, name,
                                           name.split('.')[-1])
     # organizing imports
     return self.organize_imports(pymodule, selfs=False, sort=False,
                                  import_filter=import_filter)
Пример #7
0
 def _remove_self_imports(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_fixed, to_be_renamed = module_imports.get_self_import_fix_and_rename_list()
     for name in to_be_fixed:
         try:
             pymodule = self._rename_in_module(pymodule, name, '', till_dot=True)
         except ValueError:
             # There is a self import with direct access to it
             return pymodule
     for name, new_name in to_be_renamed:
         pymodule = self._rename_in_module(pymodule, name, new_name)
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.get_self_import_fix_and_rename_list()
     source = module_imports.get_changed_source()
     if source is not None:
         pymodule = self.pycore.get_string_module(source, pymodule.get_resource())
     return pymodule
Пример #8
0
    def froms_to_imports(self, pymodule, import_filter=None):
        pymodule = self._clean_up_imports(pymodule, import_filter)
        module_imports = self.module_imports(pymodule, import_filter)
        for import_stmt in module_imports.imports:
            if import_stmt.readonly or not self._is_transformable_to_normal(
                    import_stmt.import_info):
                continue
            pymodule = self._from_to_normal(pymodule, import_stmt)

        # Adding normal imports in place of froms
        module_imports = self.module_imports(pymodule, import_filter)
        for import_stmt in module_imports.imports:
            if not import_stmt.readonly and self._is_transformable_to_normal(
                    import_stmt.import_info):
                import_stmt.import_info = NormalImport(
                    ((import_stmt.import_info.module_name, None), ))
        module_imports.remove_duplicates()
        return module_imports.get_changed_source()
Пример #9
0
 def organize_imports(self, pymodule, unused=True, duplicates=True, selfs=True, sort=True, import_filter=None):
     if unused or duplicates:
         module_imports = self.module_imports(pymodule, import_filter)
         if unused:
             module_imports.remove_unused_imports()
         if self.project.prefs.get("split_imports"):
             module_imports.force_single_imports()
         if duplicates:
             module_imports.remove_duplicates()
         source = module_imports.get_changed_source()
         if source is not None:
             pymodule = libutils.get_string_module(self.project, source, pymodule.get_resource())
     if selfs:
         pymodule = self._remove_self_imports(pymodule, import_filter)
     if sort:
         return self.sort_imports(pymodule, import_filter)
     else:
         return pymodule.source_code
Пример #10
0
 def _remove_self_imports(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     to_be_fixed, to_be_renamed = \
         module_imports.get_self_import_fix_and_rename_list()
     for name in to_be_fixed:
         try:
             pymodule = self._rename_in_module(pymodule, name, '',
                                               till_dot=True)
         except ValueError:
             # There is a self import with direct access to it
             return pymodule
     for name, new_name in to_be_renamed:
         pymodule = self._rename_in_module(pymodule, name, new_name)
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.get_self_import_fix_and_rename_list()
     source = module_imports.get_changed_source()
     if source is not None:
         pymodule = libutils.get_string_module(
             self.project, source, pymodule.get_resource())
     return pymodule
Пример #11
0
 def sort_imports(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.sort_imports()
     return module_imports.get_changed_source()
Пример #12
0
 def sort_imports(self, pymodule, import_filter=None):
     module_imports = self.module_imports(pymodule, import_filter)
     module_imports.sort_imports()
     return module_imports.get_changed_source()