Sat, 31 Dec 2022 16:23:21 +0100
Updated copyright for 2023.
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
9653
e67609152c5e
Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9612
diff
changeset
|
3 | # Copyright (c) 2005 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Package implementing class browsers for various languages. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | Currently it offers class browser support for the following |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | programming languages. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | <ul> |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | <li>CORBA IDL</li> |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
14 | <li>JavaScript</li> |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
15 | <li>ProtoBuf</li> |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
16 | <li>Python 3</li> |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | <li>Ruby</li> |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | </ul> |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9413
diff
changeset
|
21 | import importlib |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | import os |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | |
9413
80c06d472826
Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
24 | from eric7 import Preferences |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
26 | # The class browser registry |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
27 | # Dictionary with class browser name as key. Each entry is a dictionary with |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
28 | # 0. 'Extensions': list of associated file extensions with leading dot |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
29 | # 1. 'ReadModule': function to read and parse a module file |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
30 | # 2. 'Scan': function to parse a given source text |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
31 | # 3. 'FileIcon': function to get an icon name for the file type |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
32 | ClassBrowserRegistry = {} |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
33 | |
7400
e5d62581d002
Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
34 | PY_SOURCE = 1 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | PTL_SOURCE = 128 |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | RB_SOURCE = 129 |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
37 | JS_SOURCE = 130 |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
38 | UNKNOWN_SOURCE = 255 |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
40 | SUPPORTED_TYPES = [ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
41 | PY_SOURCE, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
42 | PTL_SOURCE, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
43 | RB_SOURCE, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
44 | JS_SOURCE, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
45 | ] |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | __extensions = { |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
48 | "Python": [".py", ".pyw", ".ptl"], # currently not used |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
49 | "Ruby": [".rb"], |
2779
4d433896b6d6
Added a JavaScript parser to the file browser in order to show the structure of JavaScript files
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2302
diff
changeset
|
50 | "JavaScript": [".js"], |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | } |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
53 | |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
54 | def registerClassBrowser(name, readModuleFunc, scanFunc, iconFunc, extensions): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
55 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
56 | Function to register a class browser type. |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
57 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
58 | @param name name of the class browser |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
59 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
60 | @param readModuleFunc function to read and parse a file returning a dictionary |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
61 | with the parsing result |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
62 | @type function |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
63 | @param scanFunc function to scan a given source text returning a dictionary with |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
64 | the parsing result |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
65 | @type function |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
66 | @param iconFunc function returning an icon name for the supported files |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
67 | @type function |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
68 | @param extensions list of associated file extensions |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
69 | @type list of str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
70 | @exception KeyError raised if the class browser to be registered is already |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
71 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
72 | global ClassBrowserRegistry |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
73 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
74 | if name in ClassBrowserRegistry: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
75 | raise KeyError('Class Browser "{0}" already registered.'.format(name)) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
76 | else: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
77 | ClassBrowserRegistry[name] = { |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
78 | "ReadModule": readModuleFunc, |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
79 | "Scan": scanFunc, |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
80 | "FileIcon": iconFunc, |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
81 | "Extensions": extensions, |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
82 | } |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
83 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
84 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
85 | def unregisterClassBrowser(name): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
86 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
87 | Function to unregister a class browser type. |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
88 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
89 | @param name name of the class browser |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
90 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
91 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
92 | global ClassBrowserRegistry |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
93 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
94 | if name in ClassBrowserRegistry: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
95 | del ClassBrowserRegistry[name] |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
96 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
97 | |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
98 | def getClassBrowserModule(moduleType): |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
99 | """ |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
100 | Function to import a class browser module. |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
101 | |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
102 | @param moduleType type of class browser to load |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
103 | @type str |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
104 | @return reference to the imported class browser module |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
105 | @rtype module |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
106 | """ |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
107 | typeMapping = { |
9497
8beca4047c53
Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9490
diff
changeset
|
108 | "javascript": ".jsclbr", |
8beca4047c53
Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9490
diff
changeset
|
109 | "python": ".pyclbr", |
8beca4047c53
Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9490
diff
changeset
|
110 | "ruby": ".rbclbr", |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
111 | } |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
112 | |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
113 | if moduleType in typeMapping: |
9497
8beca4047c53
Modified most of the importlib.import_module() calls to use relative imports.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9490
diff
changeset
|
114 | mod = importlib.import_module(typeMapping[moduleType], __package__) |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
115 | return mod |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
116 | |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
117 | return None |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
118 | |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
119 | |
5651
982465f8389c
Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5604
diff
changeset
|
120 | def readmodule(module, path=None, isPyFile=False): |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2779
diff
changeset
|
121 | """ |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
122 | Function to read a source file and return a dictionary of classes, functions, |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
123 | modules, etc. . |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
124 | |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2779
diff
changeset
|
125 | The real work of parsing the source file is delegated to the individual |
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2779
diff
changeset
|
126 | file parsers. |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
128 | @param module name of the source file |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
129 | @type str |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
130 | @param path list of paths the file should be searched in |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
131 | @type list of str |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
132 | @param isPyFile flag indicating a Python file |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
133 | @type bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | @return the resulting dictionary |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
135 | @rtype dict |
2965
d133c7edd88a
Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2779
diff
changeset
|
136 | """ |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | ext = os.path.splitext(module)[1].lower() |
5651
982465f8389c
Fixed a few code style issues related to the usage of mutable types for default arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5604
diff
changeset
|
138 | path = [] if path is None else path[:] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
139 | |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
140 | if not isPyFile: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
141 | for classBrowserName in ClassBrowserRegistry: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
142 | if ext in ClassBrowserRegistry[classBrowserName]["Extensions"]: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
143 | return ClassBrowserRegistry[classBrowserName]["ReadModule"]( |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
144 | module, path |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
145 | ) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
146 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
147 | if ext in __extensions["Ruby"]: |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
148 | moduleType = "ruby" |
7192
a22eee00b052
Started removing runtime support for Python2 and PyQt4.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6942
diff
changeset
|
149 | elif ext in __extensions["JavaScript"]: |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
150 | moduleType = "javascript" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
151 | elif ext in Preferences.getPython("Python3Extensions") or isPyFile: |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
152 | moduleType = "python" |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | else: |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | # try Python if it is without extension |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
155 | moduleType = "python" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
156 | |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
157 | classBrowserModule = getClassBrowserModule(moduleType) |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
158 | dictionary = ( |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
159 | classBrowserModule.readmodule_ex(module, path, isTypeFile=isPyFile) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
160 | if classBrowserModule |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
161 | else {} |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
162 | ) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
163 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
164 | return dictionary |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
165 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
166 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
167 | def scan(src, filename, module, isPyFile=False): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
168 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
169 | Function to scan the given source text. |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
170 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
171 | @param src source text to be scanned |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
172 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
173 | @param filename file name associated with the source text |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
174 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
175 | @param module module name associated with the source text |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
176 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
177 | @param isPyFile flag indicating a Python file |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
178 | @type bool |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
179 | @return dictionary containing the extracted data |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
180 | @rtype dict |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
181 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
182 | ext = os.path.splitext(filename)[1] |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
183 | for classBrowserName in ClassBrowserRegistry: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
184 | if ext in ClassBrowserRegistry[classBrowserName]["Extensions"]: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
185 | return ClassBrowserRegistry[classBrowserName]["Scan"](src, filename, module) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
186 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
187 | if ext in __extensions["Ruby"]: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
188 | moduleType = "ruby" |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
189 | elif ext in __extensions["JavaScript"]: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
190 | moduleType = "javascript" |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
191 | elif ext in Preferences.getPython("Python3Extensions") or isPyFile: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
192 | moduleType = "python" |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
193 | else: |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
194 | # try Python if it is without extension |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
195 | moduleType = "python" |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
196 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
197 | classBrowserModule = getClassBrowserModule(moduleType) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
198 | dictionary = ( |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
199 | classBrowserModule.scan(src, filename, module) if classBrowserModule else None |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
200 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
201 | |
5604
b047181a4a33
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
202 | return dictionary |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
204 | |
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
791
diff
changeset
|
205 | def find_module(name, path, isPyFile=False): |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | """ |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
207 | Function to extend the Python module finding mechanism. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
208 | |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
209 | This function searches for files in the given list of paths. If the |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
210 | file name doesn't have an extension or an extension of .py, the normal |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
211 | Python search implemented in the imp module is used. For all other |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
212 | supported files only the paths list is searched. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
213 | |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
214 | @param name file name or module name to search for |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
215 | @type str |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
216 | @param path search paths |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
217 | @type list of str |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
218 | @param isPyFile flag indicating a Python file |
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
219 | @type bool |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | @return tuple of the open file, pathname and description. Description |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | is a tuple of file suffix, file mode and file type) |
5977
8a0ec75b0f73
Finished adding support for Google protobuf protocol and gRPC files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5651
diff
changeset
|
222 | @rtype tuple |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | @exception ImportError The file or module wasn't found. |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | """ |
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | ext = os.path.splitext(name)[1].lower() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
226 | |
0
de9c2efb9d02
Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | if ext in __extensions["Ruby"]: |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
228 | sourceType = RB_SOURCE |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
229 | elif ext in __extensions["JavaScript"]: |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
230 | sourceType = JS_SOURCE |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
231 | elif ext == ".ptl": |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
232 | sourceType = PTL_SOURCE |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
233 | elif ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
234 | name.lower().endswith(tuple(Preferences.getPython("Python3Extensions"))) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
235 | or isPyFile |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
236 | ): |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
237 | sourceType = PY_SOURCE |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
238 | else: |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
239 | sourceType = UNKNOWN_SOURCE |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
240 | |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
241 | if sourceType != UNKNOWN_SOURCE: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
242 | for p in path: # search in path |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
243 | pathname = os.path.join(p, name) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
244 | if os.path.exists(pathname): |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
245 | return (open(pathname), pathname, (ext, "r", sourceType)) |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
246 | # __IGNORE_WARNING_Y115__ |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
247 | raise ImportError |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
248 | else: |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
249 | # standard Python module file |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
250 | if name.lower().endswith(".py"): |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
251 | name = name[:-3] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
252 | |
9490
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
253 | spec = importlib.machinery.PathFinder.find_spec(name, path) |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
254 | if spec is None: |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
255 | raise ImportError |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
256 | if isinstance(spec.loader, importlib.machinery.SourceFileLoader): |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
257 | ext = os.path.splitext(spec.origin)[-1] |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
258 | return (open(spec.origin), spec.origin, (ext, "r", PY_SOURCE)) |
77b8d3a635b7
Changed class browser imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9482
diff
changeset
|
259 | # __IGNORE_WARNING_Y115__ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
260 | |
7400
e5d62581d002
Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
261 | raise ImportError |
9612
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
262 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
263 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
264 | def getIcon(filename): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
265 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
266 | Function to get an icon name for the given file (only for class browsers provided |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
267 | via plugins). |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
268 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
269 | @param filename name of the file |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
270 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
271 | @return icon name |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
272 | @rtype str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
273 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
274 | ext = os.path.splitext(filename)[1].lower() |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
275 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
276 | for classBrowserRegistryEntry in ClassBrowserRegistry.values(): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
277 | if ext in classBrowserRegistryEntry["Extensions"]: |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
278 | return classBrowserRegistryEntry["FileIcon"](filename) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
279 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
280 | return "fileMisc" |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
281 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
282 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
283 | def isSupportedType(fileext): |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
284 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
285 | Function to check, if the given file extension indicates a supported file type. |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
286 | |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
287 | @param fileext file extension |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
288 | @type str |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
289 | @return flag indicating a supported file type |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
290 | @rtype bool |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
291 | """ |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
292 | supported = any(fileext in exts for exts in __extensions.values()) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
293 | supported |= any( |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
294 | fileext in cb["Extensions"] for cb in ClassBrowserRegistry.values() |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
295 | ) |
93b496cc3c88
Class Browsers
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9609
diff
changeset
|
296 | return supported |