eric6/Utilities/ClassBrowsers/pyclbr.py

Wed, 02 Sep 2020 18:13:12 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 02 Sep 2020 18:13:12 +0200
changeset 7685
0b6e8c0d6403
parent 7676
0f67b4562d98
child 7690
a59680062837
permissions
-rw-r--r--

Started implementing the editor outline widget.

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
7360
9190402e4505 Updated copyright for 2020.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7259
diff changeset
3 # Copyright (c) 2005 - 2020 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 Parse a Python file and retrieve classes, functions/methods and attributes.
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 Parse enough of a Python file to recognize class and method definitions and
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 to find out the superclasses of a class as well as its attributes.
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
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 import sys
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 import re
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 import Utilities.ClassBrowsers as ClassBrowsers
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
19 from . import ClbrBaseClasses
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
20 from functools import reduce
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 TABWIDTH = 4
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 SUPPORTED_TYPES = [ClassBrowsers.PY_SOURCE, ClassBrowsers.PTL_SOURCE]
4461
3634459f8011 Added TODOs for Python 3.5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4435
diff changeset
25
3030
4a0a82ddd9d2 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2997
diff changeset
26 _getnext = re.compile(
4830
f609a22f43bd Fixed a few code style issues detected by the updated pep8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
27 r"""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 (?P<String>
6815
b1b833693a38 pyclbr, ModuleParser: reworked the fix contributed by Tobias and fixed an issue introduced by it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6813
diff changeset
29 \# .*? $ # ignore everything in comments
6813
7f4cfe76b90c Ignore triple quotes in comments.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6645
diff changeset
30 |
7f4cfe76b90c Ignore triple quotes in comments.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6645
diff changeset
31 \""" [^"\\]* (?:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 (?: \\. | "(?!"") )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 [^"\\]*
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 )*
6813
7f4cfe76b90c Ignore triple quotes in comments.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 6645
diff changeset
35 \"""
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 | ''' [^'\\]* (?:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 (?: \\. | '(?!'') )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 [^'\\]*
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 )*
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 '''
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 | " [^"\\\n]* (?: \\. [^"\\\n]*)* "
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 | ' [^'\\\n]* (?: \\. [^'\\\n]*)* '
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
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 | (?P<Publics>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 [ \t]* __all__ [ \t]* = [ \t]* \[
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 (?P<Identifiers> [^\]]*? )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 \]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
55 | (?P<MethodModifier>
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
56 ^
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
57 (?P<MethodModifierIndent> [ \t]* )
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
58 (?P<MethodModifierType> @classmethod | @staticmethod )
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
59 )
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
60
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 | (?P<Method>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 (?P<MethodIndent> [ \t]* )
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4461
diff changeset
64 (?: async [ \t]+ )? def [ \t]+
444
6f3b2099858e Fixed an issue handling Python identifiers with non-ASCII letters in the module parser and class browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
65 (?P<MethodName> \w+ )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 (?: [ \t]* \[ (?: plain | html ) \] )?
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 [ \t]* \(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 (?P<MethodSignature> (?: [^)] | \)[ \t]*,? )*? )
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
69 \) [ \t]*
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
70 (?P<MethodReturnAnnotation> (?: -> [ \t]* [^:]+ )? )
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
71 [ \t]* :
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 | (?P<Class>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 (?P<ClassIndent> [ \t]* )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 class [ \t]+
444
6f3b2099858e Fixed an issue handling Python identifiers with non-ASCII letters in the module parser and class browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
78 (?P<ClassName> \w+ )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 [ \t]*
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 (?P<ClassSupers> \( [^)]* \) )?
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 [ \t]* :
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 | (?P<Attribute>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 (?P<AttributeIndent> [ \t]* )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self [ \t]* \. [ \t]*
444
6f3b2099858e Fixed an issue handling Python identifiers with non-ASCII letters in the module parser and class browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
88 (?P<AttributeName> \w+ )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 [ \t]* =
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 | (?P<Variable>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 (?P<VariableIndent> [ \t]* )
444
6f3b2099858e Fixed an issue handling Python identifiers with non-ASCII letters in the module parser and class browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 428
diff changeset
95 (?P<VariableName> \w+ )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 [ \t]* =
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98
6552
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
99 | (?P<Main>
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
100 ^
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
101 if \s+ __name__ \s* == \s* [^:]+ : $
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
102 )
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
103
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 | (?P<ConditionalDefine>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 ^
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 (?P<ConditionalDefineIndent> [ \t]* )
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4461
diff changeset
107 (?: (?: if | elif ) [ \t]+ [^:]* | else [ \t]* ) :
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4461
diff changeset
108 (?= \s* (?: async [ \t]+ )? def)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 )
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
111 | (?P<Import>
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
112 ^ [ \t]* (?: import | from [ \t]+ \. [ \t]+ import ) [ \t]+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
113 (?P<ImportList> (?: [^#;\\\n]* (?: \\\n )* )* )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
114 )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
115
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
116 | (?P<ImportFrom>
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
117 ^ [ \t]* from [ \t]+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
118 (?P<ImportFromPath>
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
119 \.* \w+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
120 (?:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
121 [ \t]* \. [ \t]* \w+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
122 )*
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
123 )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
124 [ \t]+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
125 import [ \t]+
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
126 (?P<ImportFromList>
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
127 (?: \( \s* .*? \s* \) )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
128 |
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
129 (?: [^#;\\\n]* (?: \\\n )* )* )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
130 )
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
131
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 | (?P<CodingLine>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 ^ \# \s* [*_-]* \s* coding[:=] \s* (?P<Coding> [-\w_.]+ ) \s* [*_-]* $
4435
9f6555d3c3c0 Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4183
diff changeset
134 )""",
9f6555d3c3c0 Fixed some code style issues and removed code no longer needed.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4183
diff changeset
135 re.VERBOSE | re.DOTALL | re.MULTILINE).search
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 _commentsub = re.compile(r"""#[^\n]*\n|#[^\n]*$""").sub
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 _modules = {} # cache of modules we've seen
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
141
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 class VisibilityMixin(ClbrBaseClasses.ClbrVisibilityMixinBase):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 Mixin class implementing the notion of visibility.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 def __init__(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3539
diff changeset
148 Constructor
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 if self.name.startswith('__'):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.setPrivate()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 elif self.name.startswith('_'):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.setProtected()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.setPublic()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
157
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 class Class(ClbrBaseClasses.Class, VisibilityMixin):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 Class to represent a Python class.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
162 def __init__(self, module, name, superClasses, file, lineno):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 @param module name of the module containing this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 @param name name of this class
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
168 @param superClasses list of class names this class is inherited from
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 @param file filename containing this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 @param lineno linenumber of the class definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 """
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
172 ClbrBaseClasses.Class.__init__(self, module, name, superClasses, file,
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
173 lineno)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 VisibilityMixin.__init__(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
176
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 class Function(ClbrBaseClasses.Function, VisibilityMixin):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 Class to represent a Python function.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
181 def __init__(self, module, name, file, lineno, signature='', separator=',',
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
182 modifierType=ClbrBaseClasses.Function.General, annotation=""):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 @param module name of the module containing this function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 @param name name of this function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 @param file filename containing this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @param lineno linenumber of the class definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @param signature parameterlist of the method
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 @param separator string separating the parameters
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
192 @param modifierType type of the function
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
193 @param annotation return annotation
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
195 ClbrBaseClasses.Function.__init__(self, module, name, file, lineno,
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
196 signature, separator, modifierType,
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
197 annotation)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 VisibilityMixin.__init__(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
200
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 class Attribute(ClbrBaseClasses.Attribute, VisibilityMixin):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 Class to represent a class attribute.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def __init__(self, module, name, file, lineno):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 @param module name of the module containing this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 @param name name of this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 @param file filename containing this attribute
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 @param lineno linenumber of the class definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 ClbrBaseClasses.Attribute.__init__(self, module, name, file, lineno)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 VisibilityMixin.__init__(self)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
217
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 class Publics(object):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 Class to represent the list of public identifiers.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 def __init__(self, module, file, lineno, idents):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 @param module name of the module containing this function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 @param file filename containing this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 @param lineno linenumber of the class definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 @param idents list of public identifiers
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self.module = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 self.name = '__all__'
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.file = file
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 self.lineno = lineno
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3030
diff changeset
235 self.identifiers = [e.replace('"', '').replace("'", "").strip()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 for e in idents.split(',')]
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
237
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
238
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
239 class Imports(object):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
240 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
241 Class to represent the list of imported modules.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
242 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
243 def __init__(self, module, file):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
244 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
245 Constructor
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
246
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
247 @param module name of the module containing the import (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
248 @param file file name containing the import (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
249 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
250 self.module = module
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
251 self.name = 'import'
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
252 self.file = file
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
253 self.imports = {}
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
254
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
255 def addImport(self, moduleName, names, lineno):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
256 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
257 Public method to add a list of imported names.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
258
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
259 @param moduleName name of the imported module (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
260 @param names list of names (list of strings)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
261 @param lineno line number of the import
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
262 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
263 if moduleName not in self.imports:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
264 module = ImportedModule(self.module, self.file, moduleName)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
265 self.imports[moduleName] = module
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
266 else:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
267 module = self.imports[moduleName]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
268 module.addImport(lineno, names)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
269
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
270 def getImport(self, moduleName):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
271 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
272 Public method to get an imported module item.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
273
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
274 @param moduleName name of the imported module (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
275 @return imported module item (ImportedModule) or None
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
276 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
277 if moduleName in self.imports:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
278 return self.imports[moduleName]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
279 else:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
280 return None
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
281
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
282 def getImports(self):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
283 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
284 Public method to get all imported module names.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
285
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
286 @return dictionary of imported module names with name as key and list
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
287 of line numbers of imports as value
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
288 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
289 return self.imports
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
290
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
291
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
292 class ImportedModule(object):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
293 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
294 Class to represent an imported module.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
295 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
296 def __init__(self, module, file, importedModule):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
297 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
298 Constructor
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
299
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
300 @param module name of the module containing the import (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
301 @param file file name containing the import (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
302 @param importedModule name of the imported module (string)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
303 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
304 self.module = module
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
305 self.name = 'import'
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
306 self.file = file
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
307 self.importedModuleName = importedModule
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
308 self.linenos = []
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
309 self.importedNames = {}
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
310 # dictionary of imported names with name as key and list of line
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
311 # numbers as value
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
312
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
313 def addImport(self, lineno, importedNames):
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
314 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
315 Public method to add a list of imported names.
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
316
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
317 @param lineno line number of the import
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
318 @param importedNames list of imported names (list of strings)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
319 """
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
320 if lineno not in self.linenos:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
321 self.linenos.append(lineno)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
322
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
323 for name in importedNames:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
324 if name not in self.importedNames:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
325 self.importedNames[name] = [lineno]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
326 else:
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
327 self.importedNames[name].append(lineno)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
329
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
330 def readmodule_ex(module, path=None, inpackage=False, isPyFile=False):
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2769
diff changeset
331 """
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 Read a module file and return a dictionary of classes.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 Search for MODULE in PATH and sys.path, read and parse the
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 module and return a dictionary with one entry for each class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 found in the module.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 @param module name of the module file (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 @param path path the module should be searched in (list of strings)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 @param inpackage flag indicating a module inside a package is scanned
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2769
diff changeset
341 @param isPyFile flag indicating a Python file (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 @return the resulting dictionary
2965
d133c7edd88a Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2769
diff changeset
343 """
97
c4086afea02b Finished cleaning up the code supported by py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
344 global _modules
c4086afea02b Finished cleaning up the code supported by py3flakes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
345
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 if module in _modules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 # we've seen this module before...
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 return _modules[module]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 if module in sys.builtin_module_names:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 # this is a built-in module
7685
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
351 _modules[module] = {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
352 return {}
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 # search the path for the module
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
355 path = [] if path is None else path[:]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 f = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 if inpackage:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 try:
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
359 f, file, (suff, mode, type) = ClassBrowsers.find_module(
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
360 module, path)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 except ImportError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 f = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 if f is None:
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
364 fullpath = path[:] + sys.path[:]
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
365 f, file, (suff, mode, type) = ClassBrowsers.find_module(
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
366 module, fullpath, isPyFile)
45
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
367 if f:
9a18f4dbb493 Did a lot of encoding related stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 13
diff changeset
368 f.close()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 if type not in SUPPORTED_TYPES:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 # not Python source, can't do anything with this module
7685
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
371 _modules[module] = {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
372 return {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
373
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
374 try:
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
375 src = Utilities.readEncodedFile(file)[0]
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
376 except (UnicodeError, IOError):
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
377 # can't do anything with this module
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
378 _modules[module] = {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
379 return {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
380
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
381 _modules[module] = scan(src, file, module)
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
382 return _modules[module]
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
383
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384
7685
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
385 def scan(src, file, module):
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
386 """
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
387 Public method to scan the given source text.
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
388
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
389 @param src source text to be scanned
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
390 @type str
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
391 @param file file name associated with the source text
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
392 @type str
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
393 @param module module name associated with the source text
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
394 @type str
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
395 @return dictionary containing the extracted data
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
396 @rtype dict
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
397 """
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
398 # convert eol markers the Python style
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
399 src = src.replace("\r\n", "\n").replace("\r", "\n")
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
400
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
401 dictionary = {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
402 dict_counts = {}
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
403
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
404 classstack = [] # stack of (class, indent) pairs
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
405 conditionalsstack = [] # stack of indents of conditional defines
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 deltastack = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 deltaindent = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 deltaindentcalculated = 0
7685
0b6e8c0d6403 Started implementing the editor outline widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7676
diff changeset
409
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 lineno, last_lineno_pos = 1, 0
2769
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
411 lastGlobalEntry = None
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
412 cur_obj = None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 i = 0
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
414 modifierType = ClbrBaseClasses.Function.General
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
415 modifierIndent = -1
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
416 while True:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 m = _getnext(src, i)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 if not m:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 start, i = m.span()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
422 if m.start("MethodModifier") >= 0:
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
423 modifierIndent = _indent(m.group("MethodModifierIndent"))
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
424 modifierType = m.group("MethodModifierType")
1229
a8207dc73672 Fixed an issue in the source documentor and regenerated the source docu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1227
diff changeset
425
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
426 elif m.start("Method") >= 0:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 # found a method definition or function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 thisindent = _indent(m.group("MethodIndent"))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 meth_name = m.group("MethodName")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 meth_sig = m.group("MethodSignature")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 meth_sig = meth_sig.replace('\\\n', '')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 meth_sig = _commentsub('', meth_sig)
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
433 meth_ret = m.group("MethodReturnAnnotation")
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
434 meth_ret = meth_ret.replace('\\\n', '')
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
435 meth_ret = _commentsub('', meth_ret)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 last_lineno_pos = start
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
438 if modifierType and modifierIndent == thisindent:
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
439 if modifierType == "@staticmethod":
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
440 modifier = ClbrBaseClasses.Function.Static
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
441 elif modifierType == "@classmethod":
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
442 modifier = ClbrBaseClasses.Function.Class
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
443 else:
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
444 modifier = ClbrBaseClasses.Function.General
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
445 else:
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
446 modifier = ClbrBaseClasses.Function.General
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 # modify indentation level for conditional defines
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 if conditionalsstack:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 if thisindent > conditionalsstack[-1]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450 if not deltaindentcalculated:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 deltastack.append(thisindent - conditionalsstack[-1])
3539
0c2dc1446ebf Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3178
diff changeset
452 deltaindent = reduce(lambda x, y: x + y, deltastack)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 deltaindentcalculated = 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 thisindent -= deltaindent
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 else:
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
456 while (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
457 conditionalsstack and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
458 conditionalsstack[-1] >= thisindent
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
459 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 del conditionalsstack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 if deltastack:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 del deltastack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 deltaindentcalculated = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 # close all classes indented at least as much
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
465 while classstack and classstack[-1][1] >= thisindent:
2768
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
466 if classstack[-1][0] is not None:
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
467 # record the end line
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
468 classstack[-1][0].setEndLine(lineno - 1)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469 del classstack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 if classstack:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 # it's a class method
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 cur_class = classstack[-1][0]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473 if cur_class:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 # it's a method/nested def
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 f = Function(None, meth_name,
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
476 file, lineno, meth_sig, annotation=meth_ret,
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
477 modifierType=modifier)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 cur_class._addmethod(meth_name, f)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
480 # it's a function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
481 f = Function(module, meth_name,
3966
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
482 file, lineno, meth_sig, annotation=meth_ret,
969a3d41c402 Added code to correctly parse Python methods/functions containing return annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
483 modifierType=modifier)
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
484 if meth_name in dict_counts:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 dict_counts[meth_name] += 1
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
486 meth_name = "{0}_{1:d}".format(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
487 meth_name, dict_counts[meth_name])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 dict_counts[meth_name] = 0
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
490 dictionary[meth_name] = f
2769
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
491 if not classstack:
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
492 if lastGlobalEntry:
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
493 lastGlobalEntry.setEndLine(lineno - 1)
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
494 lastGlobalEntry = f
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
495 if cur_obj and isinstance(cur_obj, Function):
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
496 cur_obj.setEndLine(lineno - 1)
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
497 cur_obj = f
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
498 classstack.append((f, thisindent)) # Marker for nested fns
1227
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
499
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
500 # reset the modifier settings
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
501 modifierType = ClbrBaseClasses.Function.General
c5db073a124f Added support for class attributes, class methods and static methods to the class browsers and the source documentor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
502 modifierIndent = -1
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 elif m.start("String") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 pass
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 elif m.start("Class") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
508 # we found a class definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
509 thisindent = _indent(m.group("ClassIndent"))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
510 # close all classes indented at least as much
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
511 while classstack and classstack[-1][1] >= thisindent:
2768
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
512 if classstack[-1][0] is not None:
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
513 # record the end line
eab35f6e709f Added support to show the current class/method name in the combo boxes at the top of the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
514 classstack[-1][0].setEndLine(lineno - 1)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 del classstack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 last_lineno_pos = start
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 class_name = m.group("ClassName")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 inherit = m.group("ClassSupers")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 if inherit:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 # the class inherits from other classes
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 inherit = inherit[1:-1].strip()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 inherit = _commentsub('', inherit)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 names = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 for n in inherit.split(','):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 n = n.strip()
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
527 if n in dictionary:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 # we know this super class
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
529 n = dictionary[n]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
531 c = n.split('.')
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
532 if len(c) > 1:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
533 # super class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
534 # is of the
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
535 # form module.class:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 # look in
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 # module for class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 m = c[-2]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 c = c[-1]
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
540 if m in _modules:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
541 d = _modules[m]
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
542 if c in d:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 n = d[c]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
544 names.append(n)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
545 inherit = names
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
546 # remember this class
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 cur_class = Class(module, class_name, inherit,
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 file, lineno)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 if not classstack:
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
550 if class_name in dict_counts:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
551 dict_counts[class_name] += 1
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
552 class_name = "{0}_{1:d}".format(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
553 class_name, dict_counts[class_name])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 dict_counts[class_name] = 0
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
556 dictionary[class_name] = cur_class
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
558 classstack[-1][0]._addclass(class_name, cur_class)
2769
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
559 if not classstack:
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
560 if lastGlobalEntry:
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
561 lastGlobalEntry.setEndLine(lineno - 1)
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
562 lastGlobalEntry = cur_class
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
563 classstack.append((cur_class, thisindent))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
564
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
565 elif m.start("Attribute") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
566 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
567 last_lineno_pos = start
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
568 index = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
569 while index >= -len(classstack):
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
570 if (
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
571 classstack[index][0] is not None and
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
572 not isinstance(classstack[index][0], Function)
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
573 ):
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
574 attr = Attribute(
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
575 module, m.group("AttributeName"), file, lineno)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
576 classstack[index][0]._addattribute(attr)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
577 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
578 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
579 index -= 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
580
6552
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
581 elif m.start("Main") >= 0:
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
582 # 'main' part of the script, reset class stack
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
583 lineno = lineno + src.count('\n', last_lineno_pos, start)
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
584 last_lineno_pos = start
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
585 classstack = []
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
586
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 elif m.start("Variable") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
588 thisindent = _indent(m.group("VariableIndent"))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 variable_name = m.group("VariableName")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
590 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591 last_lineno_pos = start
6552
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
592 if thisindent == 0 or not classstack:
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
593 # global variable, reset class stack first
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
594 classstack = []
ea16b851fdab ModuleParser, pyclbr: fixed an issue parsing Python source files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
595
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
596 if "@@Globals@@" not in dictionary:
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
597 dictionary["@@Globals@@"] = ClbrBaseClasses.ClbrBase(
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
598 module, "Globals", file, lineno)
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
599 dictionary["@@Globals@@"]._addglobal(
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
600 Attribute(module, variable_name, file, lineno))
2769
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
601 if lastGlobalEntry:
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
602 lastGlobalEntry.setEndLine(lineno - 1)
8cbebde7a984 Added support to highlight the current class/method name of the current editor to the project sources viewer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2768
diff changeset
603 lastGlobalEntry = None
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
605 index = -1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
606 while index >= -len(classstack):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
607 if classstack[index][1] >= thisindent:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
608 index -= 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
609 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 if isinstance(classstack[index][0], Class):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 classstack[index][0]._addglobal(
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612 Attribute(module, variable_name, file, lineno))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 break
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
614
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
615 elif m.start("Publics") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
616 idents = m.group("Identifiers")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 last_lineno_pos = start
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 pubs = Publics(module, file, lineno, idents)
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
620 dictionary['__all__'] = pubs
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
622 elif m.start("Import") >= 0:
7249
0bf517e60f54 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
623 ## import module
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
624 names = [n.strip() for n in
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
625 "".join(m.group("ImportList").splitlines())
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
626 .replace("\\", "").split(',')]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
627 lineno = lineno + src.count('\n', last_lineno_pos, start)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
628 last_lineno_pos = start
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
629 if "@@Import@@" not in dictionary:
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
630 dictionary["@@Import@@"] = Imports(module, file)
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
631 for name in names:
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
632 dictionary["@@Import@@"].addImport(name, [], lineno)
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
633
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
634 elif m.start("ImportFrom") >= 0:
7249
0bf517e60f54 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
635 ## from module import stuff
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
636 mod = m.group("ImportFromPath")
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
637 namesLines = (m.group("ImportFromList")
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
638 .replace("(", "").replace(")", "")
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
639 .replace("\\", "")
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
640 .strip().splitlines())
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
641 namesLines = [line.split("#")[0].strip()
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
642 for line in namesLines]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
643 names = [n.strip() for n in
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
644 "".join(namesLines)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
645 .split(',')]
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
646 lineno = lineno + src.count('\n', last_lineno_pos, start)
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
647 last_lineno_pos = start
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
648 if "@@Import@@" not in dictionary:
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
649 dictionary["@@Import@@"] = Imports(module, file)
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
650 dictionary["@@Import@@"].addImport(mod, names, lineno)
4183
856ba07de877 Added capability to show imports of a Python script.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
651
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 elif m.start("ConditionalDefine") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
653 # a conditional function/method definition
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 thisindent = _indent(m.group("ConditionalDefineIndent"))
7259
7c017076c12e Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7249
diff changeset
655 while conditionalsstack and conditionalsstack[-1] >= thisindent:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 del conditionalsstack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 if deltastack:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 del deltastack[-1]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 conditionalsstack.append(thisindent)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660 deltaindentcalculated = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 elif m.start("CodingLine") >= 0:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 # a coding statement
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 coding = m.group("Coding")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 lineno = lineno + src.count('\n', last_lineno_pos, start)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 last_lineno_pos = start
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
667 if "@@Coding@@" not in dictionary:
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
668 dictionary["@@Coding@@"] = ClbrBaseClasses.Coding(
2997
7f0ef975da9e Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2965
diff changeset
669 module, file, lineno, coding)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
670
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
671 if '__all__' in dictionary:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 # set visibility of all top level elements
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
673 pubs = dictionary['__all__']
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
674 for key in dictionary.keys():
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
675 if key == '__all__' or key.startswith("@@"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
676 continue
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 if key in pubs.identifiers:
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
678 dictionary[key].setPublic()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
679 else:
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
680 dictionary[key].setPrivate()
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
681 del dictionary['__all__']
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
682
5604
b047181a4a33 Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
683 return dictionary
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
685
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
686 def _indent(ws):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
687 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 Module function to return the indentation depth.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
690 @param ws the whitespace to be checked (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
691 @return length of the whitespace string (integer)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 return len(ws.expandtabs(TABWIDTH))

eric ide

mercurial