Sat, 25 Jun 2022 17:55:41 +0200
Compatibility fixes for rope >= 1.2.0.
--- a/ChangeLog Sat Jun 25 16:31:22 2022 +0200 +++ b/ChangeLog Sat Jun 25 17:55:41 2022 +0200 @@ -1,5 +1,8 @@ ChangeLog --------- +Version 10.2.2: +- compatibility fixes for rope >= 1.2.0 + Version 10.2.1: - bug fixes
--- a/PKGLIST Sat Jun 25 16:31:22 2022 +0200 +++ b/PKGLIST Sat Jun 25 17:55:41 2022 +0200 @@ -60,6 +60,7 @@ RefactoringRope/UseFunctionDialog.py RefactoringRope/UseFunctionDialog.ui RefactoringRope/__init__.py +RefactoringRope/default_config.py RefactoringRope/i18n/rope_de.qm RefactoringRope/i18n/rope_en.qm RefactoringRope/i18n/rope_es.qm
--- a/PluginRefactoringRope.py Sat Jun 25 16:31:22 2022 +0200 +++ b/PluginRefactoringRope.py Sat Jun 25 17:55:41 2022 +0200 @@ -22,7 +22,7 @@ author = "Detlev Offenbach <detlev@die-offenbachs.de>" autoactivate = True deactivateable = True -version = "10.2.1" +version = "10.2.2" className = "RefactoringRopePlugin" packageName = "RefactoringRope" internalPackages = "rope"
--- a/PluginRope.epj Sat Jun 25 16:31:22 2022 +0200 +++ b/PluginRope.epj Sat Jun 25 17:55:41 2022 +0200 @@ -61,7 +61,7 @@ "CopyrightMinFileSize": 0, "DocstringType": "eric", "EnabledCheckerCategories": "C, D, E, M, N, Y, W", - "ExcludeFiles": "*/Ui_*.py, */*_rc.py, */rope/*", + "ExcludeFiles": "*/Ui_*.py, */default_config.py", "ExcludeMessages": "C101,E265,E266,E305,E402,M201,M301,M302,M303,M304,M305,M306,M307,M308,M311,M312,M313,M314,M315,M321,M701,M702,M811,M834,N802,N803,N807,N808,N821,W293,W504,Y401,Y402", "FixCodes": "", "FixIssues": false, @@ -128,7 +128,8 @@ ".eric7project" ], "ignoreFilePatterns": [ - "Ui_*" + "Ui_*", + "default_config.py" ], "outputDirectory": "RefactoringRope/Documentation/source", "qtHelpEnabled": false, @@ -263,6 +264,7 @@ "RefactoringRope/RopeProgressDialog.py", "RefactoringRope/UseFunctionDialog.py", "RefactoringRope/__init__.py", + "RefactoringRope/default_config.py", "__init__.py" ], "SPELLEXCLUDES": "",
--- a/RefactoringRope/RefactoringClient.py Sat Jun 25 16:31:22 2022 +0200 +++ b/RefactoringRope/RefactoringClient.py Sat Jun 25 17:55:41 2022 +0200 @@ -179,7 +179,6 @@ """ result = { "RopeFolderName": self.__project.ropefolder.real_path, - "DefaultConfig": self.__project._default_config(), "RopeHelpFile": os.path.join( os.path.dirname(__file__), "Documentation", "rope", "overview.rst"), @@ -188,6 +187,19 @@ "RopeCopyright": rope.COPYRIGHT, "PythonVersion": "Python{0}".format(sys.version_info[0]), } + try: + # rope version < 1.2.0 + result["DefaultConfig"] = self.__project._default_config() + except AttributeError: + # rope version >= 1.2.0 + # read our own copy of default_config derived from the default + # settings in rope.base.prefs.Prefs + with open( + os.path.join(os.path.dirname(__file__), "default_config.py"), + "r", + encoding="utf-8" + ) as f: + result["DefaultConfig"] = f.read() self.sendJson("Config", result)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RefactoringRope/default_config.py Sat Jun 25 17:55:41 2022 +0200 @@ -0,0 +1,137 @@ +# # The default ``config.py`` +# flake8: noqa + + +def set_prefs(prefs): + """This function is called before opening the project""" + + # Specify which files and folders to ignore in the project. + # Changes to ignored resources are not added to the history and + # VCSs. Also they are not returned in `Project.get_files()`. + # Note that ``?`` and ``*`` match all characters but slashes. + # '*.pyc': matches 'test.pyc' and 'pkg/test.pyc' + # 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc' + # '.svn': matches 'pkg/.svn' and all of its children + # 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o' + # 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o' + prefs["ignored_resources"] = [ + "*.pyc", + "*~", + ".ropeproject", + ".hg", + ".svn", + "_svn", + ".git", + ".tox", + ".venv", + "venv", + '.eric7project', + ] + + # Specifies which files should be considered python files. It is + # useful when you have scripts inside your project. Only files + # ending with ``.py`` are considered to be python files by + # default. + # prefs['python_files'] = ['*.py'] + + # Custom source folders: By default rope searches the project + # for finding source folders (folders that should be searched + # for finding modules). You can add paths to that list. Note + # that rope guesses project source folders correctly most of the + # time; use this if you have any problems. + # The folders should be relative to project root and use '/' for + # separating folders regardless of the platform rope is running on. + # 'src/my_source_folder' for instance. + # prefs.add('source_folders', 'src') + + # You can extend python path for looking up modules + # prefs.add('python_path', '~/python/') + + # Should rope save object information or not. + prefs["save_objectdb"] = True + prefs["compress_objectdb"] = False + + # If `True`, rope analyzes each module when it is being saved. + prefs["automatic_soa"] = True + # The depth of calls to follow in static object analysis + prefs["soa_followed_calls"] = 0 + + # If `False` when running modules or unit tests "dynamic object + # analysis" is turned off. This makes them much faster. + prefs["perform_doa"] = True + + # Rope can check the validity of its object DB when running. + prefs["validate_objectdb"] = True + + # How many undos to hold? + prefs["max_history_items"] = 32 + + # Shows whether to save history across sessions. + prefs["save_history"] = True + prefs["compress_history"] = False + + # Set the number spaces used for indenting. According to + # :PEP:`8`, it is best to use 4 spaces. Since most of rope's + # unit-tests use 4 spaces it is more reliable, too. + prefs["indent_size"] = 4 + + # Builtin and c-extension modules that are allowed to be imported + # and inspected by rope. + prefs["extension_modules"] = [] + # Extension modules definition suitable for PyQt6 development. + # prefs['extension_modules'] = [ + # "PyQt6.QtCore", "PyQt6.QtCharts", "PyQt6.QtGui", "PyQt6.QtHelp", + # "PyQt6.QtMultimedia", "PyQt6.QtMultimediaWidgets", "PyQt6.QtNetwork", + # "PyQt6.QtPrintSupport", "PyQt6.QtSerialPort", "PyQt6.QtSql", + # "PyQt6.QtSvg", "PyQt6.QtSvgWidgets", "PyQt6.QtWebChannel", + # "PyQt6.QtWebEngineCore", "PyQt6.QtWebEngineWidgets", + # "PyQt6.QtWebSockets", "PyQt6.QtWidgets", "PyQt6.QtXml", "PyQt6.Qsci", + # "PyQt6.QtBluetooth", "PyQt6.QtDBus", "PyQt6.Qt.Nfc", "PyQt6.QtOpenGL", + # "PyQt6.QtOpenGLWidgets", "PyQt6.QtRemoteObjects", + # ] + + # Add all standard c-extensions to extension_modules list. + prefs["import_dynload_stdmods"] = True + + # If `True` modules with syntax errors are considered to be empty. + # The default value is `False`; When `False` syntax errors raise + # `rope.base.exceptions.ModuleSyntaxError` exception. + prefs["ignore_syntax_errors"] = False + + # If `True`, rope ignores unresolvable imports. Otherwise, they + # appear in the importing namespace. + prefs["ignore_bad_imports"] = False + + # If `True`, rope will insert new module imports as + # `from <package> import <module>` by default. + prefs["prefer_module_from_imports"] = False + + # If `True`, rope will transform a comma list of imports into + # multiple separate import statements when organizing + # imports. + prefs["split_imports"] = False + + # If `True`, rope will remove all top-level import statements and + # reinsert them at the top of the module when making changes. + prefs["pull_imports_to_top"] = True + + # If `True`, rope will sort imports alphabetically by module name instead + # of alphabetically by import statement, with from imports after normal + # imports. + prefs["sort_imports_alphabetically"] = False + + # Location of implementation of + # rope.base.oi.type_hinting.interfaces.ITypeHintingFactory In general + # case, you don't have to change this value, unless you're an rope expert. + # Change this value to inject you own implementations of interfaces + # listed in module rope.base.oi.type_hinting.providers.interfaces + # For example, you can add you own providers for Django Models, or disable + # the search type-hinting in a class hierarchy, etc. + prefs[ + "type_hinting_factory" + ] = "rope.base.oi.type_hinting.factory.default_type_hinting_factory" + + +def project_opened(project): + """This function is called after opening the project""" + # Do whatever you like here!