Skip to content

Commit 60fc41b

Browse files
authored
Unify 3.4 and 3.6 (#2051)
1 parent dc88645 commit 60fc41b

4 files changed

Lines changed: 37 additions & 7 deletions

File tree

eng/scripts/generate.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,13 @@ def finally_block(self):
120120
self.writeline("} finally {")
121121
self.indent()
122122

123-
def exit_block(self, text=None, **kw):
123+
def exit_block(self, text=None):
124124
self.dedent()
125125
if text:
126-
self.writeline("} " + text, **kw)
126+
if text == ";":
127+
self.writeline("}" + text)
128+
else:
129+
self.writeline("} " + text)
127130
else:
128131
self.writeline('}')
129132

eng/scripts/generate_encoding_aliases.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,44 @@
33
# See the LICENSE file in the project root for more information.
44

55
import encodings
6+
import itertools
7+
import sys
68

79
from generate import generate
810

911
def gen_aliases(cw):
1012
cw.writeline("// Based on encodings.aliases")
1113
cw.enter_block("var d = new Dictionary<string, string>")
1214

13-
for codec in sorted(set(encodings.aliases.aliases.values())):
15+
aliases = encodings.aliases.aliases
16+
aliases_36 = {
17+
"kz_1048": "kz1048",
18+
"rk1048": "kz1048",
19+
"strk1048_2002": "kz1048",
20+
}
21+
codecs_36 = {v: "PYTHON_36_OR_GREATER" for v in aliases_36.values()}
22+
if sys.version_info >= (3, 6):
23+
for k, v in aliases_36.items():
24+
assert aliases[k] == v
25+
aliases = {**aliases, **aliases_36}
26+
27+
sorted_aliases = sorted(aliases.items(), key=lambda kv: (kv[1], kv[0]))
28+
for codec, group in itertools.groupby(sorted_aliases, key=lambda kv: kv[1]):
29+
condition = codecs_36.get(codec)
30+
1431
e = encodings.search_function(codec)
15-
if e is None or not e._is_text_encoding or e.name == "mbcs":
32+
if not condition and (e is None or not e._is_text_encoding or e.name == "mbcs"):
1633
continue
1734

1835
cw.writeline()
19-
aliases = sorted(alias for alias, aliased_codec in encodings.aliases.aliases.items() if aliased_codec == codec)
20-
for alias in aliases:
36+
if condition:
37+
cw.writeline("#if {0}".format(condition))
38+
for alias, codec in group:
2139
qalias = '"{0}"'.format(alias)
2240
qcodec = '"{0}"'.format(codec)
2341
cw.writeline('{{ {0:24} , {1:24} }},'.format(qalias, qcodec))
42+
if condition:
43+
cw.writeline("#endif")
2444

2545
cw.exit_block(";")
2646

src/core/IronPython/IronPython.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
<EmbeddedResource Include="Modules\unicodedata\IPyUnicodeData.txt.gz" />
6464
<EmbeddedResource Include="Modules\unicodedata\IPyUnicodeData-3.2.0.txt.gz" />
6565
<EmbeddedResource Include="..\IronPython.StdLib\lib\importlib\_bootstrap.py" Link="Modules\_bootstrap.py" />
66+
<EmbeddedResource Condition="'$(MajorVersion)$(MinorVersion)' >= '36'" Include="..\IronPython.StdLib\lib\importlib\_bootstrap_external.py" Link="Modules\_bootstrap_external.py" />
6667
</ItemGroup>
6768

6869
<ItemGroup>

src/core/IronPython/Runtime/Operations/StringOps.Generated.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,12 @@ static partial class CodecsInfo {
253253

254254
{ "cskoi8r" , "koi8_r" },
255255

256+
#if PYTHON_36_OR_GREATER
257+
{ "kz_1048" , "kz1048" },
258+
{ "rk1048" , "kz1048" },
259+
{ "strk1048_2002" , "kz1048" },
260+
#endif
261+
256262
{ "8859" , "latin_1" },
257263
{ "cp819" , "latin_1" },
258264
{ "csisolatin1" , "latin_1" },
@@ -316,7 +322,7 @@ static partial class CodecsInfo {
316322
{ "utf8" , "utf_8" },
317323
{ "utf8_ucs2" , "utf_8" },
318324
{ "utf8_ucs4" , "utf_8" },
319-
} ;
325+
};
320326

321327
// *** END GENERATED CODE ***
322328

0 commit comments

Comments
 (0)