Compatibility fixes for rope >= 1.2.0. eric7 release-10.2.2

Sat, 25 Jun 2022 17:55:41 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 25 Jun 2022 17:55:41 +0200
branch
eric7
changeset 385
9bbd74b51d88
parent 384
a4a2983e26c8
child 386
02a9fc3c4a0a

Compatibility fixes for rope >= 1.2.0.

ChangeLog file | annotate | diff | comparison | revisions
PKGLIST file | annotate | diff | comparison | revisions
PluginRefactoringRope.py file | annotate | diff | comparison | revisions
PluginRefactoringRope.zip file | annotate | diff | comparison | revisions
PluginRope.epj file | annotate | diff | comparison | revisions
RefactoringRope/RefactoringClient.py file | annotate | diff | comparison | revisions
RefactoringRope/default_config.py file | annotate | diff | comparison | revisions
--- 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"
Binary file PluginRefactoringRope.zip has changed
--- 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!

eric ide

mercurial