Sat, 19 Nov 2016 12:51:02 +0100
Prepared release 16.11.1
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
2 | |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
3 | # Copyright (c) 2013 - 2015 Tobias Rzepka <tobias.rzepka@gmail.com> |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
4 | # |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
5 | |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
6 | """ |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
7 | Module implementing some workarounds to let eric6 run under Python 2. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
8 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
9 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
10 | |
4691
0fe41214fdd6
Get rid of the interruption by an import exception when using Python3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4566
diff
changeset
|
11 | import __builtin__ # __IGNORE_EXCEPTION__ |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
12 | import codecs |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
13 | import imp |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
14 | import locale |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
15 | import os |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
16 | import sys |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
17 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
18 | # convert all command line arguments to unicode |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
19 | sys.argv = [arg.decode(locale.getpreferredencoding()) for arg in sys.argv] |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
20 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
21 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
22 | Improvement for the os.path.join function because the original join doesn't |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
23 | use the correct encoding. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
24 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
25 | # Save original function for use in joinAsUnicode |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
26 | __join = os.path.join |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
27 | # Flag to disable unicode conversion of join function |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
28 | os.path.join_unicode = True |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
29 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
30 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
31 | def joinAsUnicode(*args): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
32 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
33 | Convert none unicode parameter of the os.path.join into unicode. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
34 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
35 | @param args paths which should be joined (str, unicode) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
36 | @return unicode str of the path (unicode) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
37 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
38 | if os.path.join_unicode: |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
39 | convArgs = [] |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
40 | for arg in args: |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
41 | if isinstance(arg, str): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
42 | arg = arg.decode(locale.getpreferredencoding(), 'replace') |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
43 | convArgs.append(arg) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
44 | return __join(*convArgs) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
45 | else: |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
46 | return __join(*args) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
47 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
48 | # Replace os.path.join with unicode aware version |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
49 | os.path.join = joinAsUnicode |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
50 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
51 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
52 | Improvement for the imp.load_source and imp.find_module functions because the |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
53 | originals doesn't use the correct encoding. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
54 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
55 | # Save original function for use in load_sourceAsStr and find_moduleAsStr |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
56 | __load_source = imp.load_source |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
57 | __find_module = imp.find_module |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
58 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
59 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
60 | def load_sourceAsStr(*args): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
61 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
62 | Convert none str parameter of the imp.load_source into str. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
63 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
64 | @param args (str, unicode) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
65 | @return list of args converted to str (list) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
66 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
67 | convArgs = [] |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
68 | for arg in args: |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
69 | if isinstance(arg, unicode): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
70 | arg = arg.encode(sys.getfilesystemencoding(), 'strict') |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
71 | convArgs.append(arg) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
72 | return __load_source(*convArgs) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
73 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
74 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
75 | def find_moduleAsStr(*args): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
76 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
77 | Convert none str parameter of the imp.find_module into str. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
78 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
79 | @param args (str, unicode) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
80 | @return list of args converted to str (list) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
81 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
82 | convArgs = [] |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
83 | for arg in args: |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
84 | if isinstance(arg, unicode): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
85 | arg = arg.encode(sys.getfilesystemencoding(), 'strict') |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
86 | convArgs.append(arg) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
87 | return __find_module(*convArgs) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
88 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
89 | # Replace imp.load_source and imp.find_module with unicode aware version |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
90 | imp.load_source = load_sourceAsStr |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
91 | imp.find_module = find_moduleAsStr |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
92 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
93 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
94 | Improvement for the sys.path list because some other functions doesn't expect |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
95 | unicode in the sys.path list. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
96 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
97 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
98 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
99 | class PlainStrList(list): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
100 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
101 | Keep track that all added paths to sys.path are str. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
102 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
103 | def __init__(self, *args): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
104 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
105 | Constructor |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
106 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
107 | @param args list of paths to start with (list) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
108 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
109 | super(PlainStrList, self).__init__() |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
110 | self.extend(list(args)) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
111 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
112 | def __convert(self, element): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
113 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
114 | Private method to convert unicode to file system encoding. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
115 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
116 | @param element to convert from unicode to file system encoding (any) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
117 | @return converted element |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
118 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
119 | if isinstance(element, unicode): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
120 | # Throw exception if it can't be converted, otherwise exception |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
121 | # could occur somewhere else |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
122 | element = element.encode(sys.getfilesystemencoding(), 'strict') |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
123 | return element |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
124 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
125 | def __setitem__(self, idx, value): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
126 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
127 | Special method to overwrite a specific list item. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
128 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
129 | @param idx index of the item (int) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
130 | @param value the new value (any) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
131 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
132 | super(PlainStrList, self).__setitem__(idx, self.__convert(value)) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
133 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
134 | def insert(self, idx, value): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
135 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
136 | Public method to insert a specific list item. |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
137 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
138 | @param idx index of the item (int) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
139 | @param value the new value (any) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
140 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
141 | super(PlainStrList, self).insert(idx, self.__convert(value)) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
142 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
143 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
144 | # insert a conversion function from unicode to str at sys.path access |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
145 | sys.path = PlainStrList(*sys.path) |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
146 | |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
147 | """ |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
148 | The open function and File class simulates the open behaviour of Python3. |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
149 | |
3670
f0cb7579c0b4
Finished renaming eric5 for PyQt5 to eric6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3591
diff
changeset
|
150 | The Eric6 used features are emulated only. The not emulated features |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
151 | should throw a NotImplementedError exception. |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
152 | """ |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
153 | |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
154 | |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
155 | def open(file, mode='r', buffering=-1, encoding=None, |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
156 | errors=None, newline=None, closefd=True): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
157 | """ |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
158 | Replacement for the build in open function. |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
159 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
160 | @param file filename or file descriptor (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
161 | @keyparam mode access mode (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
162 | @keyparam buffering size of the read buffer (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
163 | @keyparam encoding character encoding for reading/ writing (string) |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
164 | @keyparam errors behavior for the character encoding ('strict', |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
165 | 'explicit', ...) (string) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
166 | @keyparam newline controls how universal newlines works (string) |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
167 | @keyparam closefd close underlying file descriptor if given as file |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
168 | parameter (boolean) |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
169 | @return Returns the new file object |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
170 | """ |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
171 | return File(file, mode, buffering, encoding, errors, newline, closefd) |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
172 | |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
173 | |
3515
1b8381afe38f
Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3145
diff
changeset
|
174 | class File(file): # __IGNORE_WARNING__ |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
175 | """ |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
176 | Facade for the original file class. |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
177 | """ |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
178 | def __init__(self, filein, mode='r', buffering=-1, |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
179 | encoding=None, errors=None, newline=None, closefd=True): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
180 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
181 | Constructor |
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
182 | |
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
183 | It checks for unimplemented parameters. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
184 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
185 | @param filein filename or file descriptor (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
186 | @keyparam mode access mode (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
187 | @keyparam buffering size of the read buffer (string) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
188 | @keyparam encoding character encoding for reading/ writing (string) |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
189 | @keyparam errors behavior for the character encoding ('strict', |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
190 | 'explicit', ...) (string) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
191 | @keyparam newline controls how universal newlines works (string) |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
192 | @keyparam closefd close underlying file descriptor if given as file |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
193 | parameter (boolean) |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
194 | @exception NotImplementedError for not implemented method parameters |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
195 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
196 | self.__encoding = encoding |
4184
6dbd901a8b1a
Bugfix for Issue176: Forms with special characters and a not unix lineending throws exception.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3670
diff
changeset
|
197 | self.__newline = str(newline) |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
198 | self.__closefd = closefd |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
199 | if newline is not None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
200 | if 'r' in mode: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
201 | raise NotImplementedError |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
202 | else: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
203 | mode = mode.replace('t', 'b') |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
204 | if 'b' not in mode: |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
205 | mode = mode + 'b' |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
206 | |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
207 | if closefd is False: |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
208 | raise NotImplementedError |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
209 | |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
210 | if errors is None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
211 | self.__errors = 'strict' |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
212 | else: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
213 | self.__errors = errors |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
214 | |
4289
6c1ab651c9ce
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4184
diff
changeset
|
215 | file.__init__(self, filein, mode, buffering) # __IGNORE_WARNING__ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
216 | |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
217 | def read(self, n=-1): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
218 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
219 | Public method to read n bytes or all if n=-1 from file. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
220 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
221 | @keyparam n bytecount or all if n=-1 (int) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
222 | @return decoded bytes read |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
223 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
224 | txt = super(File, self).read(n) |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
225 | if self.__encoding is None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
226 | return txt |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
227 | else: |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
228 | return codecs.decode(txt, self.__encoding) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
229 | |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
230 | def readline(self, limit=-1): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
231 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
232 | Public method to read one line from file. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
233 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
234 | @keyparam limit maximum bytes to read or all if limit=-1 (int) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
235 | @return decoded line read |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
236 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
237 | txt = super(File, self).readline(limit) |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
238 | if self.__encoding is None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
239 | return txt |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
240 | else: |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
241 | return codecs.decode(txt, self.__encoding) |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
242 | |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
243 | def readlines(self, hint=-1): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
244 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
245 | Public method to read all lines from file. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
246 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
247 | @keyparam hint maximum bytes to read or all if hint=-1 (int) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
248 | @return decoded lines read |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
249 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
250 | if self.__encoding is None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
251 | return super(File, self).readlines(hint) |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
252 | else: |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
253 | return [codecs.decode(txt, self.__encoding) |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2790
diff
changeset
|
254 | for txt in super(File, self).readlines(hint)] |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
255 | |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
256 | def write(self, txt): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
257 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
258 | Public method to write given data to file and encode if needed. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
259 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
260 | @param txt data to write. (str, bytes) |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
261 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
262 | if self.__encoding is not None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
263 | txt = codecs.encode(txt, self.__encoding, self.__errors) |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
264 | elif isinstance(txt, unicode): |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
265 | txt = codecs.encode(txt, 'utf-8', self.__errors) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
266 | |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
267 | if self.__newline in ['\r\n', '\r']: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
268 | txt = txt.replace('\n', self.__newline) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
269 | |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
270 | super(File, self).write(txt) |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
271 | |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
272 | def next(self): |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
273 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3539
diff
changeset
|
274 | Public method used in an iterator. |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
275 | |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
276 | @return decoded data read |
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
277 | """ |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
278 | txt = super(File, self).next() |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
279 | if self.__encoding is None: |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
280 | return txt |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
281 | else: |
3539
0c2dc1446ebf
Fixed a few code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3515
diff
changeset
|
282 | return codecs.decode(txt, self.__encoding) |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
283 | |
2790
6686a3326df8
Special case if no 'b' or 't' in access mode fixed. Source docu added.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2526
diff
changeset
|
284 | # Inject into the __builtin__ dictionary |
2526
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
285 | __builtin__.open = open |
a91cba8291b9
Minimum modifications to start Eric5 with Py2.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
286 | |
4384
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
287 | # |
04896c4a5a8e
Handling of unicode chars in user name now handled correctly, + importing of PySide doesn't waste memory any more.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
4359
diff
changeset
|
288 | # eflag: FileType = Python2 |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4384
diff
changeset
|
289 | # eflag: noqa = M702 |