Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
f4803aa6
Kaydet (Commit)
f4803aa6
authored
Mar 08, 2010
tarafından
Benjamin Peterson
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
set svn:eol-style on various files
üst
d22557cf
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
454 additions
and
456 deletions
+454
-456
cp720.py
Lib/encodings/cp720.py
+309
-311
merge.py
Tools/msi/merge.py
+84
-84
genwincodec.py
Tools/unicode/genwincodec.py
+61
-61
No files found.
Lib/encodings/cp720.py
Dosyayı görüntüle @
f4803aa6
"""Python Character Mapping Codec cp720 generated on Windows:
"""Python Character Mapping Codec cp720 generated on Windows:
Vista 6.0.6002 SP2 Multiprocessor Free with the command:
Vista 6.0.6002 SP2 Multiprocessor Free with the command:
python Tools/unicode/genwincodec.py 720
python Tools/unicode/genwincodec.py 720
"""
#"
"""
#"
import
codecs
import
codecs
### Codec APIs
### Codec APIs
class
Codec
(
codecs
.
Codec
):
class
Codec
(
codecs
.
Codec
):
def
encode
(
self
,
input
,
errors
=
'strict'
):
def
encode
(
self
,
input
,
errors
=
'strict'
):
return
codecs
.
charmap_encode
(
input
,
errors
,
encoding_table
)
return
codecs
.
charmap_encode
(
input
,
errors
,
encoding_table
)
def
decode
(
self
,
input
,
errors
=
'strict'
):
def
decode
(
self
,
input
,
errors
=
'strict'
):
return
codecs
.
charmap_decode
(
input
,
errors
,
decoding_table
)
return
codecs
.
charmap_decode
(
input
,
errors
,
decoding_table
)
class
IncrementalEncoder
(
codecs
.
IncrementalEncoder
):
class
IncrementalEncoder
(
codecs
.
IncrementalEncoder
):
def
encode
(
self
,
input
,
final
=
False
):
def
encode
(
self
,
input
,
final
=
False
):
return
codecs
.
charmap_encode
(
input
,
self
.
errors
,
encoding_table
)[
0
]
return
codecs
.
charmap_encode
(
input
,
self
.
errors
,
encoding_table
)[
0
]
class
IncrementalDecoder
(
codecs
.
IncrementalDecoder
):
class
IncrementalDecoder
(
codecs
.
IncrementalDecoder
):
def
decode
(
self
,
input
,
final
=
False
):
def
decode
(
self
,
input
,
final
=
False
):
return
codecs
.
charmap_decode
(
input
,
self
.
errors
,
decoding_table
)[
0
]
return
codecs
.
charmap_decode
(
input
,
self
.
errors
,
decoding_table
)[
0
]
class
StreamWriter
(
Codec
,
codecs
.
StreamWriter
):
class
StreamWriter
(
Codec
,
codecs
.
StreamWriter
):
pass
pass
class
StreamReader
(
Codec
,
codecs
.
StreamReader
):
class
StreamReader
(
Codec
,
codecs
.
StreamReader
):
pass
pass
### encodings module API
### encodings module API
def
getregentry
():
def
getregentry
():
return
codecs
.
CodecInfo
(
return
codecs
.
CodecInfo
(
name
=
'cp720'
,
name
=
'cp720'
,
encode
=
Codec
()
.
encode
,
encode
=
Codec
()
.
encode
,
decode
=
Codec
()
.
decode
,
decode
=
Codec
()
.
decode
,
incrementalencoder
=
IncrementalEncoder
,
incrementalencoder
=
IncrementalEncoder
,
incrementaldecoder
=
IncrementalDecoder
,
incrementaldecoder
=
IncrementalDecoder
,
streamreader
=
StreamReader
,
streamreader
=
StreamReader
,
streamwriter
=
StreamWriter
,
streamwriter
=
StreamWriter
,
)
)
### Decoding Table
### Decoding Table
decoding_table
=
(
decoding_table
=
(
u'
\x00
'
# 0x00 -> CONTROL CHARACTER
u'
\x00
'
# 0x00 -> CONTROL CHARACTER
u'
\x01
'
# 0x01 -> CONTROL CHARACTER
u'
\x01
'
# 0x01 -> CONTROL CHARACTER
u'
\x02
'
# 0x02 -> CONTROL CHARACTER
u'
\x02
'
# 0x02 -> CONTROL CHARACTER
u'
\x03
'
# 0x03 -> CONTROL CHARACTER
u'
\x03
'
# 0x03 -> CONTROL CHARACTER
u'
\x04
'
# 0x04 -> CONTROL CHARACTER
u'
\x04
'
# 0x04 -> CONTROL CHARACTER
u'
\x05
'
# 0x05 -> CONTROL CHARACTER
u'
\x05
'
# 0x05 -> CONTROL CHARACTER
u'
\x06
'
# 0x06 -> CONTROL CHARACTER
u'
\x06
'
# 0x06 -> CONTROL CHARACTER
u'
\x07
'
# 0x07 -> CONTROL CHARACTER
u'
\x07
'
# 0x07 -> CONTROL CHARACTER
u'
\x08
'
# 0x08 -> CONTROL CHARACTER
u'
\x08
'
# 0x08 -> CONTROL CHARACTER
u'
\t
'
# 0x09 -> CONTROL CHARACTER
u'
\t
'
# 0x09 -> CONTROL CHARACTER
u'
\n
'
# 0x0A -> CONTROL CHARACTER
u'
\n
'
# 0x0A -> CONTROL CHARACTER
u'
\x0b
'
# 0x0B -> CONTROL CHARACTER
u'
\x0b
'
# 0x0B -> CONTROL CHARACTER
u'
\x0c
'
# 0x0C -> CONTROL CHARACTER
u'
\x0c
'
# 0x0C -> CONTROL CHARACTER
u'
\r
'
# 0x0D -> CONTROL CHARACTER
u'
\r
'
# 0x0D -> CONTROL CHARACTER
u'
\x0e
'
# 0x0E -> CONTROL CHARACTER
u'
\x0e
'
# 0x0E -> CONTROL CHARACTER
u'
\x0f
'
# 0x0F -> CONTROL CHARACTER
u'
\x0f
'
# 0x0F -> CONTROL CHARACTER
u'
\x10
'
# 0x10 -> CONTROL CHARACTER
u'
\x10
'
# 0x10 -> CONTROL CHARACTER
u'
\x11
'
# 0x11 -> CONTROL CHARACTER
u'
\x11
'
# 0x11 -> CONTROL CHARACTER
u'
\x12
'
# 0x12 -> CONTROL CHARACTER
u'
\x12
'
# 0x12 -> CONTROL CHARACTER
u'
\x13
'
# 0x13 -> CONTROL CHARACTER
u'
\x13
'
# 0x13 -> CONTROL CHARACTER
u'
\x14
'
# 0x14 -> CONTROL CHARACTER
u'
\x14
'
# 0x14 -> CONTROL CHARACTER
u'
\x15
'
# 0x15 -> CONTROL CHARACTER
u'
\x15
'
# 0x15 -> CONTROL CHARACTER
u'
\x16
'
# 0x16 -> CONTROL CHARACTER
u'
\x16
'
# 0x16 -> CONTROL CHARACTER
u'
\x17
'
# 0x17 -> CONTROL CHARACTER
u'
\x17
'
# 0x17 -> CONTROL CHARACTER
u'
\x18
'
# 0x18 -> CONTROL CHARACTER
u'
\x18
'
# 0x18 -> CONTROL CHARACTER
u'
\x19
'
# 0x19 -> CONTROL CHARACTER
u'
\x19
'
# 0x19 -> CONTROL CHARACTER
u'
\x1a
'
# 0x1A -> CONTROL CHARACTER
u'
\x1a
'
# 0x1A -> CONTROL CHARACTER
u'
\x1b
'
# 0x1B -> CONTROL CHARACTER
u'
\x1b
'
# 0x1B -> CONTROL CHARACTER
u'
\x1c
'
# 0x1C -> CONTROL CHARACTER
u'
\x1c
'
# 0x1C -> CONTROL CHARACTER
u'
\x1d
'
# 0x1D -> CONTROL CHARACTER
u'
\x1d
'
# 0x1D -> CONTROL CHARACTER
u'
\x1e
'
# 0x1E -> CONTROL CHARACTER
u'
\x1e
'
# 0x1E -> CONTROL CHARACTER
u'
\x1f
'
# 0x1F -> CONTROL CHARACTER
u'
\x1f
'
# 0x1F -> CONTROL CHARACTER
u' '
# 0x20 -> SPACE
u' '
# 0x20 -> SPACE
u'!'
# 0x21 -> EXCLAMATION MARK
u'!'
# 0x21 -> EXCLAMATION MARK
u'"'
# 0x22 -> QUOTATION MARK
u'"'
# 0x22 -> QUOTATION MARK
u'#'
# 0x23 -> NUMBER SIGN
u'#'
# 0x23 -> NUMBER SIGN
u'$'
# 0x24 -> DOLLAR SIGN
u'$'
# 0x24 -> DOLLAR SIGN
u'
%
'
# 0x25 -> PERCENT SIGN
u'
%
'
# 0x25 -> PERCENT SIGN
u'&'
# 0x26 -> AMPERSAND
u'&'
# 0x26 -> AMPERSAND
u"'"
# 0x27 -> APOSTROPHE
u"'"
# 0x27 -> APOSTROPHE
u'('
# 0x28 -> LEFT PARENTHESIS
u'('
# 0x28 -> LEFT PARENTHESIS
u')'
# 0x29 -> RIGHT PARENTHESIS
u')'
# 0x29 -> RIGHT PARENTHESIS
u'*'
# 0x2A -> ASTERISK
u'*'
# 0x2A -> ASTERISK
u'+'
# 0x2B -> PLUS SIGN
u'+'
# 0x2B -> PLUS SIGN
u','
# 0x2C -> COMMA
u','
# 0x2C -> COMMA
u'-'
# 0x2D -> HYPHEN-MINUS
u'-'
# 0x2D -> HYPHEN-MINUS
u'.'
# 0x2E -> FULL STOP
u'.'
# 0x2E -> FULL STOP
u'/'
# 0x2F -> SOLIDUS
u'/'
# 0x2F -> SOLIDUS
u'0'
# 0x30 -> DIGIT ZERO
u'0'
# 0x30 -> DIGIT ZERO
u'1'
# 0x31 -> DIGIT ONE
u'1'
# 0x31 -> DIGIT ONE
u'2'
# 0x32 -> DIGIT TWO
u'2'
# 0x32 -> DIGIT TWO
u'3'
# 0x33 -> DIGIT THREE
u'3'
# 0x33 -> DIGIT THREE
u'4'
# 0x34 -> DIGIT FOUR
u'4'
# 0x34 -> DIGIT FOUR
u'5'
# 0x35 -> DIGIT FIVE
u'5'
# 0x35 -> DIGIT FIVE
u'6'
# 0x36 -> DIGIT SIX
u'6'
# 0x36 -> DIGIT SIX
u'7'
# 0x37 -> DIGIT SEVEN
u'7'
# 0x37 -> DIGIT SEVEN
u'8'
# 0x38 -> DIGIT EIGHT
u'8'
# 0x38 -> DIGIT EIGHT
u'9'
# 0x39 -> DIGIT NINE
u'9'
# 0x39 -> DIGIT NINE
u':'
# 0x3A -> COLON
u':'
# 0x3A -> COLON
u';'
# 0x3B -> SEMICOLON
u';'
# 0x3B -> SEMICOLON
u'<'
# 0x3C -> LESS-THAN SIGN
u'<'
# 0x3C -> LESS-THAN SIGN
u'='
# 0x3D -> EQUALS SIGN
u'='
# 0x3D -> EQUALS SIGN
u'>'
# 0x3E -> GREATER-THAN SIGN
u'>'
# 0x3E -> GREATER-THAN SIGN
u'?'
# 0x3F -> QUESTION MARK
u'?'
# 0x3F -> QUESTION MARK
u'@'
# 0x40 -> COMMERCIAL AT
u'@'
# 0x40 -> COMMERCIAL AT
u'A'
# 0x41 -> LATIN CAPITAL LETTER A
u'A'
# 0x41 -> LATIN CAPITAL LETTER A
u'B'
# 0x42 -> LATIN CAPITAL LETTER B
u'B'
# 0x42 -> LATIN CAPITAL LETTER B
u'C'
# 0x43 -> LATIN CAPITAL LETTER C
u'C'
# 0x43 -> LATIN CAPITAL LETTER C
u'D'
# 0x44 -> LATIN CAPITAL LETTER D
u'D'
# 0x44 -> LATIN CAPITAL LETTER D
u'E'
# 0x45 -> LATIN CAPITAL LETTER E
u'E'
# 0x45 -> LATIN CAPITAL LETTER E
u'F'
# 0x46 -> LATIN CAPITAL LETTER F
u'F'
# 0x46 -> LATIN CAPITAL LETTER F
u'G'
# 0x47 -> LATIN CAPITAL LETTER G
u'G'
# 0x47 -> LATIN CAPITAL LETTER G
u'H'
# 0x48 -> LATIN CAPITAL LETTER H
u'H'
# 0x48 -> LATIN CAPITAL LETTER H
u'I'
# 0x49 -> LATIN CAPITAL LETTER I
u'I'
# 0x49 -> LATIN CAPITAL LETTER I
u'J'
# 0x4A -> LATIN CAPITAL LETTER J
u'J'
# 0x4A -> LATIN CAPITAL LETTER J
u'K'
# 0x4B -> LATIN CAPITAL LETTER K
u'K'
# 0x4B -> LATIN CAPITAL LETTER K
u'L'
# 0x4C -> LATIN CAPITAL LETTER L
u'L'
# 0x4C -> LATIN CAPITAL LETTER L
u'M'
# 0x4D -> LATIN CAPITAL LETTER M
u'M'
# 0x4D -> LATIN CAPITAL LETTER M
u'N'
# 0x4E -> LATIN CAPITAL LETTER N
u'N'
# 0x4E -> LATIN CAPITAL LETTER N
u'O'
# 0x4F -> LATIN CAPITAL LETTER O
u'O'
# 0x4F -> LATIN CAPITAL LETTER O
u'P'
# 0x50 -> LATIN CAPITAL LETTER P
u'P'
# 0x50 -> LATIN CAPITAL LETTER P
u'Q'
# 0x51 -> LATIN CAPITAL LETTER Q
u'Q'
# 0x51 -> LATIN CAPITAL LETTER Q
u'R'
# 0x52 -> LATIN CAPITAL LETTER R
u'R'
# 0x52 -> LATIN CAPITAL LETTER R
u'S'
# 0x53 -> LATIN CAPITAL LETTER S
u'S'
# 0x53 -> LATIN CAPITAL LETTER S
u'T'
# 0x54 -> LATIN CAPITAL LETTER T
u'T'
# 0x54 -> LATIN CAPITAL LETTER T
u'U'
# 0x55 -> LATIN CAPITAL LETTER U
u'U'
# 0x55 -> LATIN CAPITAL LETTER U
u'V'
# 0x56 -> LATIN CAPITAL LETTER V
u'V'
# 0x56 -> LATIN CAPITAL LETTER V
u'W'
# 0x57 -> LATIN CAPITAL LETTER W
u'W'
# 0x57 -> LATIN CAPITAL LETTER W
u'X'
# 0x58 -> LATIN CAPITAL LETTER X
u'X'
# 0x58 -> LATIN CAPITAL LETTER X
u'Y'
# 0x59 -> LATIN CAPITAL LETTER Y
u'Y'
# 0x59 -> LATIN CAPITAL LETTER Y
u'Z'
# 0x5A -> LATIN CAPITAL LETTER Z
u'Z'
# 0x5A -> LATIN CAPITAL LETTER Z
u'['
# 0x5B -> LEFT SQUARE BRACKET
u'['
# 0x5B -> LEFT SQUARE BRACKET
u'
\\
'
# 0x5C -> REVERSE SOLIDUS
u'
\\
'
# 0x5C -> REVERSE SOLIDUS
u']'
# 0x5D -> RIGHT SQUARE BRACKET
u']'
# 0x5D -> RIGHT SQUARE BRACKET
u'^'
# 0x5E -> CIRCUMFLEX ACCENT
u'^'
# 0x5E -> CIRCUMFLEX ACCENT
u'_'
# 0x5F -> LOW LINE
u'_'
# 0x5F -> LOW LINE
u'`'
# 0x60 -> GRAVE ACCENT
u'`'
# 0x60 -> GRAVE ACCENT
u'a'
# 0x61 -> LATIN SMALL LETTER A
u'a'
# 0x61 -> LATIN SMALL LETTER A
u'b'
# 0x62 -> LATIN SMALL LETTER B
u'b'
# 0x62 -> LATIN SMALL LETTER B
u'c'
# 0x63 -> LATIN SMALL LETTER C
u'c'
# 0x63 -> LATIN SMALL LETTER C
u'd'
# 0x64 -> LATIN SMALL LETTER D
u'd'
# 0x64 -> LATIN SMALL LETTER D
u'e'
# 0x65 -> LATIN SMALL LETTER E
u'e'
# 0x65 -> LATIN SMALL LETTER E
u'f'
# 0x66 -> LATIN SMALL LETTER F
u'f'
# 0x66 -> LATIN SMALL LETTER F
u'g'
# 0x67 -> LATIN SMALL LETTER G
u'g'
# 0x67 -> LATIN SMALL LETTER G
u'h'
# 0x68 -> LATIN SMALL LETTER H
u'h'
# 0x68 -> LATIN SMALL LETTER H
u'i'
# 0x69 -> LATIN SMALL LETTER I
u'i'
# 0x69 -> LATIN SMALL LETTER I
u'j'
# 0x6A -> LATIN SMALL LETTER J
u'j'
# 0x6A -> LATIN SMALL LETTER J
u'k'
# 0x6B -> LATIN SMALL LETTER K
u'k'
# 0x6B -> LATIN SMALL LETTER K
u'l'
# 0x6C -> LATIN SMALL LETTER L
u'l'
# 0x6C -> LATIN SMALL LETTER L
u'm'
# 0x6D -> LATIN SMALL LETTER M
u'm'
# 0x6D -> LATIN SMALL LETTER M
u'n'
# 0x6E -> LATIN SMALL LETTER N
u'n'
# 0x6E -> LATIN SMALL LETTER N
u'o'
# 0x6F -> LATIN SMALL LETTER O
u'o'
# 0x6F -> LATIN SMALL LETTER O
u'p'
# 0x70 -> LATIN SMALL LETTER P
u'p'
# 0x70 -> LATIN SMALL LETTER P
u'q'
# 0x71 -> LATIN SMALL LETTER Q
u'q'
# 0x71 -> LATIN SMALL LETTER Q
u'r'
# 0x72 -> LATIN SMALL LETTER R
u'r'
# 0x72 -> LATIN SMALL LETTER R
u's'
# 0x73 -> LATIN SMALL LETTER S
u's'
# 0x73 -> LATIN SMALL LETTER S
u't'
# 0x74 -> LATIN SMALL LETTER T
u't'
# 0x74 -> LATIN SMALL LETTER T
u'u'
# 0x75 -> LATIN SMALL LETTER U
u'u'
# 0x75 -> LATIN SMALL LETTER U
u'v'
# 0x76 -> LATIN SMALL LETTER V
u'v'
# 0x76 -> LATIN SMALL LETTER V
u'w'
# 0x77 -> LATIN SMALL LETTER W
u'w'
# 0x77 -> LATIN SMALL LETTER W
u'x'
# 0x78 -> LATIN SMALL LETTER X
u'x'
# 0x78 -> LATIN SMALL LETTER X
u'y'
# 0x79 -> LATIN SMALL LETTER Y
u'y'
# 0x79 -> LATIN SMALL LETTER Y
u'z'
# 0x7A -> LATIN SMALL LETTER Z
u'z'
# 0x7A -> LATIN SMALL LETTER Z
u'{'
# 0x7B -> LEFT CURLY BRACKET
u'{'
# 0x7B -> LEFT CURLY BRACKET
u'|'
# 0x7C -> VERTICAL LINE
u'|'
# 0x7C -> VERTICAL LINE
u'}'
# 0x7D -> RIGHT CURLY BRACKET
u'}'
# 0x7D -> RIGHT CURLY BRACKET
u'~'
# 0x7E -> TILDE
u'~'
# 0x7E -> TILDE
u'
\x7f
'
# 0x7F -> CONTROL CHARACTER
u'
\x7f
'
# 0x7F -> CONTROL CHARACTER
u'
\x80
'
u'
\x80
'
u'
\x81
'
u'
\x81
'
u'
\xe9
'
# 0x82 -> LATIN SMALL LETTER E WITH ACUTE
u'
\xe9
'
# 0x82 -> LATIN SMALL LETTER E WITH ACUTE
u'
\xe2
'
# 0x83 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
u'
\xe2
'
# 0x83 -> LATIN SMALL LETTER A WITH CIRCUMFLEX
u'
\x84
'
u'
\x84
'
u'
\xe0
'
# 0x85 -> LATIN SMALL LETTER A WITH GRAVE
u'
\xe0
'
# 0x85 -> LATIN SMALL LETTER A WITH GRAVE
u'
\x86
'
u'
\x86
'
u'
\xe7
'
# 0x87 -> LATIN SMALL LETTER C WITH CEDILLA
u'
\xe7
'
# 0x87 -> LATIN SMALL LETTER C WITH CEDILLA
u'
\xea
'
# 0x88 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
u'
\xea
'
# 0x88 -> LATIN SMALL LETTER E WITH CIRCUMFLEX
u'
\xeb
'
# 0x89 -> LATIN SMALL LETTER E WITH DIAERESIS
u'
\xeb
'
# 0x89 -> LATIN SMALL LETTER E WITH DIAERESIS
u'
\xe8
'
# 0x8A -> LATIN SMALL LETTER E WITH GRAVE
u'
\xe8
'
# 0x8A -> LATIN SMALL LETTER E WITH GRAVE
u'
\xef
'
# 0x8B -> LATIN SMALL LETTER I WITH DIAERESIS
u'
\xef
'
# 0x8B -> LATIN SMALL LETTER I WITH DIAERESIS
u'
\xee
'
# 0x8C -> LATIN SMALL LETTER I WITH CIRCUMFLEX
u'
\xee
'
# 0x8C -> LATIN SMALL LETTER I WITH CIRCUMFLEX
u'
\x8d
'
u'
\x8d
'
u'
\x8e
'
u'
\x8e
'
u'
\x8f
'
u'
\x8f
'
u'
\x90
'
u'
\x90
'
u'
\u0651
'
# 0x91 -> ARABIC SHADDA
u'
\u0651
'
# 0x91 -> ARABIC SHADDA
u'
\u0652
'
# 0x92 -> ARABIC SUKUN
u'
\u0652
'
# 0x92 -> ARABIC SUKUN
u'
\xf4
'
# 0x93 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
u'
\xf4
'
# 0x93 -> LATIN SMALL LETTER O WITH CIRCUMFLEX
u'
\xa4
'
# 0x94 -> CURRENCY SIGN
u'
\xa4
'
# 0x94 -> CURRENCY SIGN
u'
\u0640
'
# 0x95 -> ARABIC TATWEEL
u'
\u0640
'
# 0x95 -> ARABIC TATWEEL
u'
\xfb
'
# 0x96 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
u'
\xfb
'
# 0x96 -> LATIN SMALL LETTER U WITH CIRCUMFLEX
u'
\xf9
'
# 0x97 -> LATIN SMALL LETTER U WITH GRAVE
u'
\xf9
'
# 0x97 -> LATIN SMALL LETTER U WITH GRAVE
u'
\u0621
'
# 0x98 -> ARABIC LETTER HAMZA
u'
\u0621
'
# 0x98 -> ARABIC LETTER HAMZA
u'
\u0622
'
# 0x99 -> ARABIC LETTER ALEF WITH MADDA ABOVE
u'
\u0622
'
# 0x99 -> ARABIC LETTER ALEF WITH MADDA ABOVE
u'
\u0623
'
# 0x9A -> ARABIC LETTER ALEF WITH HAMZA ABOVE
u'
\u0623
'
# 0x9A -> ARABIC LETTER ALEF WITH HAMZA ABOVE
u'
\u0624
'
# 0x9B -> ARABIC LETTER WAW WITH HAMZA ABOVE
u'
\u0624
'
# 0x9B -> ARABIC LETTER WAW WITH HAMZA ABOVE
u'
\xa3
'
# 0x9C -> POUND SIGN
u'
\xa3
'
# 0x9C -> POUND SIGN
u'
\u0625
'
# 0x9D -> ARABIC LETTER ALEF WITH HAMZA BELOW
u'
\u0625
'
# 0x9D -> ARABIC LETTER ALEF WITH HAMZA BELOW
u'
\u0626
'
# 0x9E -> ARABIC LETTER YEH WITH HAMZA ABOVE
u'
\u0626
'
# 0x9E -> ARABIC LETTER YEH WITH HAMZA ABOVE
u'
\u0627
'
# 0x9F -> ARABIC LETTER ALEF
u'
\u0627
'
# 0x9F -> ARABIC LETTER ALEF
u'
\u0628
'
# 0xA0 -> ARABIC LETTER BEH
u'
\u0628
'
# 0xA0 -> ARABIC LETTER BEH
u'
\u0629
'
# 0xA1 -> ARABIC LETTER TEH MARBUTA
u'
\u0629
'
# 0xA1 -> ARABIC LETTER TEH MARBUTA
u'
\u062a
'
# 0xA2 -> ARABIC LETTER TEH
u'
\u062a
'
# 0xA2 -> ARABIC LETTER TEH
u'
\u062b
'
# 0xA3 -> ARABIC LETTER THEH
u'
\u062b
'
# 0xA3 -> ARABIC LETTER THEH
u'
\u062c
'
# 0xA4 -> ARABIC LETTER JEEM
u'
\u062c
'
# 0xA4 -> ARABIC LETTER JEEM
u'
\u062d
'
# 0xA5 -> ARABIC LETTER HAH
u'
\u062d
'
# 0xA5 -> ARABIC LETTER HAH
u'
\u062e
'
# 0xA6 -> ARABIC LETTER KHAH
u'
\u062e
'
# 0xA6 -> ARABIC LETTER KHAH
u'
\u062f
'
# 0xA7 -> ARABIC LETTER DAL
u'
\u062f
'
# 0xA7 -> ARABIC LETTER DAL
u'
\u0630
'
# 0xA8 -> ARABIC LETTER THAL
u'
\u0630
'
# 0xA8 -> ARABIC LETTER THAL
u'
\u0631
'
# 0xA9 -> ARABIC LETTER REH
u'
\u0631
'
# 0xA9 -> ARABIC LETTER REH
u'
\u0632
'
# 0xAA -> ARABIC LETTER ZAIN
u'
\u0632
'
# 0xAA -> ARABIC LETTER ZAIN
u'
\u0633
'
# 0xAB -> ARABIC LETTER SEEN
u'
\u0633
'
# 0xAB -> ARABIC LETTER SEEN
u'
\u0634
'
# 0xAC -> ARABIC LETTER SHEEN
u'
\u0634
'
# 0xAC -> ARABIC LETTER SHEEN
u'
\u0635
'
# 0xAD -> ARABIC LETTER SAD
u'
\u0635
'
# 0xAD -> ARABIC LETTER SAD
u'
\xab
'
# 0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
u'
\xab
'
# 0xAE -> LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
u'
\xbb
'
# 0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
u'
\xbb
'
# 0xAF -> RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
u'
\u2591
'
# 0xB0 -> LIGHT SHADE
u'
\u2591
'
# 0xB0 -> LIGHT SHADE
u'
\u2592
'
# 0xB1 -> MEDIUM SHADE
u'
\u2592
'
# 0xB1 -> MEDIUM SHADE
u'
\u2593
'
# 0xB2 -> DARK SHADE
u'
\u2593
'
# 0xB2 -> DARK SHADE
u'
\u2502
'
# 0xB3 -> BOX DRAWINGS LIGHT VERTICAL
u'
\u2502
'
# 0xB3 -> BOX DRAWINGS LIGHT VERTICAL
u'
\u2524
'
# 0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
u'
\u2524
'
# 0xB4 -> BOX DRAWINGS LIGHT VERTICAL AND LEFT
u'
\u2561
'
# 0xB5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
u'
\u2561
'
# 0xB5 -> BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
u'
\u2562
'
# 0xB6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
u'
\u2562
'
# 0xB6 -> BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
u'
\u2556
'
# 0xB7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
u'
\u2556
'
# 0xB7 -> BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
u'
\u2555
'
# 0xB8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
u'
\u2555
'
# 0xB8 -> BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
u'
\u2563
'
# 0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
u'
\u2563
'
# 0xB9 -> BOX DRAWINGS DOUBLE VERTICAL AND LEFT
u'
\u2551
'
# 0xBA -> BOX DRAWINGS DOUBLE VERTICAL
u'
\u2551
'
# 0xBA -> BOX DRAWINGS DOUBLE VERTICAL
u'
\u2557
'
# 0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
u'
\u2557
'
# 0xBB -> BOX DRAWINGS DOUBLE DOWN AND LEFT
u'
\u255d
'
# 0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
u'
\u255d
'
# 0xBC -> BOX DRAWINGS DOUBLE UP AND LEFT
u'
\u255c
'
# 0xBD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
u'
\u255c
'
# 0xBD -> BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
u'
\u255b
'
# 0xBE -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
u'
\u255b
'
# 0xBE -> BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
u'
\u2510
'
# 0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
u'
\u2510
'
# 0xBF -> BOX DRAWINGS LIGHT DOWN AND LEFT
u'
\u2514
'
# 0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
u'
\u2514
'
# 0xC0 -> BOX DRAWINGS LIGHT UP AND RIGHT
u'
\u2534
'
# 0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
u'
\u2534
'
# 0xC1 -> BOX DRAWINGS LIGHT UP AND HORIZONTAL
u'
\u252c
'
# 0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
u'
\u252c
'
# 0xC2 -> BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
u'
\u251c
'
# 0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
u'
\u251c
'
# 0xC3 -> BOX DRAWINGS LIGHT VERTICAL AND RIGHT
u'
\u2500
'
# 0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
u'
\u2500
'
# 0xC4 -> BOX DRAWINGS LIGHT HORIZONTAL
u'
\u253c
'
# 0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
u'
\u253c
'
# 0xC5 -> BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
u'
\u255e
'
# 0xC6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
u'
\u255e
'
# 0xC6 -> BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
u'
\u255f
'
# 0xC7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
u'
\u255f
'
# 0xC7 -> BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
u'
\u255a
'
# 0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
u'
\u255a
'
# 0xC8 -> BOX DRAWINGS DOUBLE UP AND RIGHT
u'
\u2554
'
# 0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
u'
\u2554
'
# 0xC9 -> BOX DRAWINGS DOUBLE DOWN AND RIGHT
u'
\u2569
'
# 0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
u'
\u2569
'
# 0xCA -> BOX DRAWINGS DOUBLE UP AND HORIZONTAL
u'
\u2566
'
# 0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
u'
\u2566
'
# 0xCB -> BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
u'
\u2560
'
# 0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
u'
\u2560
'
# 0xCC -> BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
u'
\u2550
'
# 0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
u'
\u2550
'
# 0xCD -> BOX DRAWINGS DOUBLE HORIZONTAL
u'
\u256c
'
# 0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
u'
\u256c
'
# 0xCE -> BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
u'
\u2567
'
# 0xCF -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
u'
\u2567
'
# 0xCF -> BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
u'
\u2568
'
# 0xD0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
u'
\u2568
'
# 0xD0 -> BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
u'
\u2564
'
# 0xD1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
u'
\u2564
'
# 0xD1 -> BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
u'
\u2565
'
# 0xD2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
u'
\u2565
'
# 0xD2 -> BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
u'
\u2559
'
# 0xD3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
u'
\u2559
'
# 0xD3 -> BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
u'
\u2558
'
# 0xD4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
u'
\u2558
'
# 0xD4 -> BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
u'
\u2552
'
# 0xD5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
u'
\u2552
'
# 0xD5 -> BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
u'
\u2553
'
# 0xD6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
u'
\u2553
'
# 0xD6 -> BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
u'
\u256b
'
# 0xD7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
u'
\u256b
'
# 0xD7 -> BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
u'
\u256a
'
# 0xD8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
u'
\u256a
'
# 0xD8 -> BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
u'
\u2518
'
# 0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
u'
\u2518
'
# 0xD9 -> BOX DRAWINGS LIGHT UP AND LEFT
u'
\u250c
'
# 0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
u'
\u250c
'
# 0xDA -> BOX DRAWINGS LIGHT DOWN AND RIGHT
u'
\u2588
'
# 0xDB -> FULL BLOCK
u'
\u2588
'
# 0xDB -> FULL BLOCK
u'
\u2584
'
# 0xDC -> LOWER HALF BLOCK
u'
\u2584
'
# 0xDC -> LOWER HALF BLOCK
u'
\u258c
'
# 0xDD -> LEFT HALF BLOCK
u'
\u258c
'
# 0xDD -> LEFT HALF BLOCK
u'
\u2590
'
# 0xDE -> RIGHT HALF BLOCK
u'
\u2590
'
# 0xDE -> RIGHT HALF BLOCK
u'
\u2580
'
# 0xDF -> UPPER HALF BLOCK
u'
\u2580
'
# 0xDF -> UPPER HALF BLOCK
u'
\u0636
'
# 0xE0 -> ARABIC LETTER DAD
u'
\u0636
'
# 0xE0 -> ARABIC LETTER DAD
u'
\u0637
'
# 0xE1 -> ARABIC LETTER TAH
u'
\u0637
'
# 0xE1 -> ARABIC LETTER TAH
u'
\u0638
'
# 0xE2 -> ARABIC LETTER ZAH
u'
\u0638
'
# 0xE2 -> ARABIC LETTER ZAH
u'
\u0639
'
# 0xE3 -> ARABIC LETTER AIN
u'
\u0639
'
# 0xE3 -> ARABIC LETTER AIN
u'
\u063a
'
# 0xE4 -> ARABIC LETTER GHAIN
u'
\u063a
'
# 0xE4 -> ARABIC LETTER GHAIN
u'
\u0641
'
# 0xE5 -> ARABIC LETTER FEH
u'
\u0641
'
# 0xE5 -> ARABIC LETTER FEH
u'
\xb5
'
# 0xE6 -> MICRO SIGN
u'
\xb5
'
# 0xE6 -> MICRO SIGN
u'
\u0642
'
# 0xE7 -> ARABIC LETTER QAF
u'
\u0642
'
# 0xE7 -> ARABIC LETTER QAF
u'
\u0643
'
# 0xE8 -> ARABIC LETTER KAF
u'
\u0643
'
# 0xE8 -> ARABIC LETTER KAF
u'
\u0644
'
# 0xE9 -> ARABIC LETTER LAM
u'
\u0644
'
# 0xE9 -> ARABIC LETTER LAM
u'
\u0645
'
# 0xEA -> ARABIC LETTER MEEM
u'
\u0645
'
# 0xEA -> ARABIC LETTER MEEM
u'
\u0646
'
# 0xEB -> ARABIC LETTER NOON
u'
\u0646
'
# 0xEB -> ARABIC LETTER NOON
u'
\u0647
'
# 0xEC -> ARABIC LETTER HEH
u'
\u0647
'
# 0xEC -> ARABIC LETTER HEH
u'
\u0648
'
# 0xED -> ARABIC LETTER WAW
u'
\u0648
'
# 0xED -> ARABIC LETTER WAW
u'
\u0649
'
# 0xEE -> ARABIC LETTER ALEF MAKSURA
u'
\u0649
'
# 0xEE -> ARABIC LETTER ALEF MAKSURA
u'
\u064a
'
# 0xEF -> ARABIC LETTER YEH
u'
\u064a
'
# 0xEF -> ARABIC LETTER YEH
u'
\u2261
'
# 0xF0 -> IDENTICAL TO
u'
\u2261
'
# 0xF0 -> IDENTICAL TO
u'
\u064b
'
# 0xF1 -> ARABIC FATHATAN
u'
\u064b
'
# 0xF1 -> ARABIC FATHATAN
u'
\u064c
'
# 0xF2 -> ARABIC DAMMATAN
u'
\u064c
'
# 0xF2 -> ARABIC DAMMATAN
u'
\u064d
'
# 0xF3 -> ARABIC KASRATAN
u'
\u064d
'
# 0xF3 -> ARABIC KASRATAN
u'
\u064e
'
# 0xF4 -> ARABIC FATHA
u'
\u064e
'
# 0xF4 -> ARABIC FATHA
u'
\u064f
'
# 0xF5 -> ARABIC DAMMA
u'
\u064f
'
# 0xF5 -> ARABIC DAMMA
u'
\u0650
'
# 0xF6 -> ARABIC KASRA
u'
\u0650
'
# 0xF6 -> ARABIC KASRA
u'
\u2248
'
# 0xF7 -> ALMOST EQUAL TO
u'
\u2248
'
# 0xF7 -> ALMOST EQUAL TO
u'
\xb0
'
# 0xF8 -> DEGREE SIGN
u'
\xb0
'
# 0xF8 -> DEGREE SIGN
u'
\u2219
'
# 0xF9 -> BULLET OPERATOR
u'
\u2219
'
# 0xF9 -> BULLET OPERATOR
u'
\xb7
'
# 0xFA -> MIDDLE DOT
u'
\xb7
'
# 0xFA -> MIDDLE DOT
u'
\u221a
'
# 0xFB -> SQUARE ROOT
u'
\u221a
'
# 0xFB -> SQUARE ROOT
u'
\u207f
'
# 0xFC -> SUPERSCRIPT LATIN SMALL LETTER N
u'
\u207f
'
# 0xFC -> SUPERSCRIPT LATIN SMALL LETTER N
u'
\xb2
'
# 0xFD -> SUPERSCRIPT TWO
u'
\xb2
'
# 0xFD -> SUPERSCRIPT TWO
u'
\u25a0
'
# 0xFE -> BLACK SQUARE
u'
\u25a0
'
# 0xFE -> BLACK SQUARE
u'
\xa0
'
# 0xFF -> NO-BREAK SPACE
u'
\xa0
'
# 0xFF -> NO-BREAK SPACE
)
)
### Encoding table
### Encoding table
encoding_table
=
codecs
.
charmap_build
(
decoding_table
)
encoding_table
=
codecs
.
charmap_build
(
decoding_table
)
Tools/msi/merge.py
Dosyayı görüntüle @
f4803aa6
import
msilib
,
os
,
win32com
,
tempfile
,
sys
import
msilib
,
os
,
win32com
,
tempfile
,
sys
PCBUILD
=
"PCBuild"
PCBUILD
=
"PCBuild"
certname
=
None
certname
=
None
from
config
import
*
from
config
import
*
Win64
=
"amd64"
in
PCBUILD
Win64
=
"amd64"
in
PCBUILD
mod_dir
=
os
.
path
.
join
(
os
.
environ
[
"ProgramFiles"
],
"Common Files"
,
"Merge Modules"
)
mod_dir
=
os
.
path
.
join
(
os
.
environ
[
"ProgramFiles"
],
"Common Files"
,
"Merge Modules"
)
msi
=
None
msi
=
None
if
len
(
sys
.
argv
)
==
2
:
if
len
(
sys
.
argv
)
==
2
:
msi
=
sys
.
argv
[
1
]
msi
=
sys
.
argv
[
1
]
if
Win64
:
if
Win64
:
modules
=
[
"Microsoft_VC90_CRT_x86_x64.msm"
,
"policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"
]
modules
=
[
"Microsoft_VC90_CRT_x86_x64.msm"
,
"policy_9_0_Microsoft_VC90_CRT_x86_x64.msm"
]
if
not
msi
:
msi
=
"python-
%
s.amd64.msi"
%
full_current_version
if
not
msi
:
msi
=
"python-
%
s.amd64.msi"
%
full_current_version
else
:
else
:
modules
=
[
"Microsoft_VC90_CRT_x86.msm"
,
"policy_9_0_Microsoft_VC90_CRT_x86.msm"
]
modules
=
[
"Microsoft_VC90_CRT_x86.msm"
,
"policy_9_0_Microsoft_VC90_CRT_x86.msm"
]
if
not
msi
:
msi
=
"python-
%
s.msi"
%
full_current_version
if
not
msi
:
msi
=
"python-
%
s.msi"
%
full_current_version
for
i
,
n
in
enumerate
(
modules
):
for
i
,
n
in
enumerate
(
modules
):
modules
[
i
]
=
os
.
path
.
join
(
mod_dir
,
n
)
modules
[
i
]
=
os
.
path
.
join
(
mod_dir
,
n
)
def
merge
(
msi
,
feature
,
rootdir
,
modules
):
def
merge
(
msi
,
feature
,
rootdir
,
modules
):
cab_and_filecount
=
[]
cab_and_filecount
=
[]
# Step 1: Merge databases, extract cabfiles
# Step 1: Merge databases, extract cabfiles
m
=
msilib
.
MakeMerge2
()
m
=
msilib
.
MakeMerge2
()
m
.
OpenLog
(
"merge.log"
)
m
.
OpenLog
(
"merge.log"
)
print
"Opened Log"
print
"Opened Log"
m
.
OpenDatabase
(
msi
)
m
.
OpenDatabase
(
msi
)
print
"Opened DB"
print
"Opened DB"
for
module
in
modules
:
for
module
in
modules
:
print
module
print
module
m
.
OpenModule
(
module
,
0
)
m
.
OpenModule
(
module
,
0
)
print
"Opened Module"
,
module
print
"Opened Module"
,
module
m
.
Merge
(
feature
,
rootdir
)
m
.
Merge
(
feature
,
rootdir
)
print
"Errors:"
print
"Errors:"
for
e
in
m
.
Errors
:
for
e
in
m
.
Errors
:
print
e
.
Type
,
e
.
ModuleTable
,
e
.
DatabaseTable
print
e
.
Type
,
e
.
ModuleTable
,
e
.
DatabaseTable
print
" Modkeys:"
,
print
" Modkeys:"
,
for
s
in
e
.
ModuleKeys
:
print
s
,
for
s
in
e
.
ModuleKeys
:
print
s
,
print
print
print
" DBKeys:"
,
print
" DBKeys:"
,
for
s
in
e
.
DatabaseKeys
:
print
s
,
for
s
in
e
.
DatabaseKeys
:
print
s
,
print
print
cabname
=
tempfile
.
mktemp
(
suffix
=
".cab"
)
cabname
=
tempfile
.
mktemp
(
suffix
=
".cab"
)
m
.
ExtractCAB
(
cabname
)
m
.
ExtractCAB
(
cabname
)
cab_and_filecount
.
append
((
cabname
,
len
(
m
.
ModuleFiles
)))
cab_and_filecount
.
append
((
cabname
,
len
(
m
.
ModuleFiles
)))
m
.
CloseModule
()
m
.
CloseModule
()
m
.
CloseDatabase
(
True
)
m
.
CloseDatabase
(
True
)
m
.
CloseLog
()
m
.
CloseLog
()
# Step 2: Add CAB files
# Step 2: Add CAB files
i
=
msilib
.
MakeInstaller
()
i
=
msilib
.
MakeInstaller
()
db
=
i
.
OpenDatabase
(
msi
,
win32com
.
client
.
constants
.
msiOpenDatabaseModeTransact
)
db
=
i
.
OpenDatabase
(
msi
,
win32com
.
client
.
constants
.
msiOpenDatabaseModeTransact
)
v
=
db
.
OpenView
(
"SELECT LastSequence FROM Media"
)
v
=
db
.
OpenView
(
"SELECT LastSequence FROM Media"
)
v
.
Execute
(
None
)
v
.
Execute
(
None
)
maxmedia
=
-
1
maxmedia
=
-
1
while
1
:
while
1
:
r
=
v
.
Fetch
()
r
=
v
.
Fetch
()
if
not
r
:
break
if
not
r
:
break
seq
=
r
.
IntegerData
(
1
)
seq
=
r
.
IntegerData
(
1
)
if
seq
>
maxmedia
:
if
seq
>
maxmedia
:
maxmedia
=
seq
maxmedia
=
seq
print
"Start of Media"
,
maxmedia
print
"Start of Media"
,
maxmedia
for
cabname
,
count
in
cab_and_filecount
:
for
cabname
,
count
in
cab_and_filecount
:
stream
=
"merged
%
d"
%
maxmedia
stream
=
"merged
%
d"
%
maxmedia
msilib
.
add_data
(
db
,
"Media"
,
msilib
.
add_data
(
db
,
"Media"
,
[(
maxmedia
+
1
,
maxmedia
+
count
,
None
,
"#"
+
stream
,
None
,
None
)])
[(
maxmedia
+
1
,
maxmedia
+
count
,
None
,
"#"
+
stream
,
None
,
None
)])
msilib
.
add_stream
(
db
,
stream
,
cabname
)
msilib
.
add_stream
(
db
,
stream
,
cabname
)
os
.
unlink
(
cabname
)
os
.
unlink
(
cabname
)
maxmedia
+=
count
maxmedia
+=
count
# The merge module sets ALLUSERS to 1 in the property table.
# The merge module sets ALLUSERS to 1 in the property table.
# This is undesired; delete that
# This is undesired; delete that
v
=
db
.
OpenView
(
"DELETE FROM Property WHERE Property='ALLUSERS'"
)
v
=
db
.
OpenView
(
"DELETE FROM Property WHERE Property='ALLUSERS'"
)
v
.
Execute
(
None
)
v
.
Execute
(
None
)
v
.
Close
()
v
.
Close
()
db
.
Commit
()
db
.
Commit
()
merge
(
msi
,
"SharedCRT"
,
"TARGETDIR"
,
modules
)
merge
(
msi
,
"SharedCRT"
,
"TARGETDIR"
,
modules
)
# certname (from config.py) should be (a substring of)
# certname (from config.py) should be (a substring of)
# the certificate subject, e.g. "Python Software Foundation"
# the certificate subject, e.g. "Python Software Foundation"
if
certname
:
if
certname
:
os
.
system
(
'signtool sign /n "
%
s" /t http://timestamp.verisign.com/scripts/timestamp.dll
%
s'
%
(
certname
,
msi
))
os
.
system
(
'signtool sign /n "
%
s" /t http://timestamp.verisign.com/scripts/timestamp.dll
%
s'
%
(
certname
,
msi
))
Tools/unicode/genwincodec.py
Dosyayı görüntüle @
f4803aa6
"""This script generates a Python codec module from a Windows Code Page.
"""This script generates a Python codec module from a Windows Code Page.
It uses the function MultiByteToWideChar to generate a decoding table.
It uses the function MultiByteToWideChar to generate a decoding table.
"""
"""
import
ctypes
import
ctypes
from
ctypes
import
wintypes
from
ctypes
import
wintypes
from
gencodec
import
codegen
from
gencodec
import
codegen
import
unicodedata
import
unicodedata
def
genwinmap
(
codepage
):
def
genwinmap
(
codepage
):
MultiByteToWideChar
=
ctypes
.
windll
.
kernel32
.
MultiByteToWideChar
MultiByteToWideChar
=
ctypes
.
windll
.
kernel32
.
MultiByteToWideChar
MultiByteToWideChar
.
argtypes
=
[
wintypes
.
UINT
,
wintypes
.
DWORD
,
MultiByteToWideChar
.
argtypes
=
[
wintypes
.
UINT
,
wintypes
.
DWORD
,
wintypes
.
LPCSTR
,
ctypes
.
c_int
,
wintypes
.
LPCSTR
,
ctypes
.
c_int
,
wintypes
.
LPWSTR
,
ctypes
.
c_int
]
wintypes
.
LPWSTR
,
ctypes
.
c_int
]
MultiByteToWideChar
.
restype
=
ctypes
.
c_int
MultiByteToWideChar
.
restype
=
ctypes
.
c_int
enc2uni
=
{}
enc2uni
=
{}
for
i
in
range
(
32
)
+
[
127
]:
for
i
in
range
(
32
)
+
[
127
]:
enc2uni
[
i
]
=
(
i
,
'CONTROL CHARACTER'
)
enc2uni
[
i
]
=
(
i
,
'CONTROL CHARACTER'
)
for
i
in
range
(
256
):
for
i
in
range
(
256
):
buf
=
ctypes
.
create_unicode_buffer
(
2
)
buf
=
ctypes
.
create_unicode_buffer
(
2
)
ret
=
MultiByteToWideChar
(
ret
=
MultiByteToWideChar
(
codepage
,
0
,
codepage
,
0
,
chr
(
i
),
1
,
chr
(
i
),
1
,
buf
,
2
)
buf
,
2
)
assert
ret
==
1
,
"invalid code page"
assert
ret
==
1
,
"invalid code page"
assert
buf
[
1
]
==
'
\x00
'
assert
buf
[
1
]
==
'
\x00
'
try
:
try
:
name
=
unicodedata
.
name
(
buf
[
0
])
name
=
unicodedata
.
name
(
buf
[
0
])
except
ValueError
:
except
ValueError
:
try
:
try
:
name
=
enc2uni
[
i
][
1
]
name
=
enc2uni
[
i
][
1
]
except
KeyError
:
except
KeyError
:
name
=
''
name
=
''
enc2uni
[
i
]
=
(
ord
(
buf
[
0
]),
name
)
enc2uni
[
i
]
=
(
ord
(
buf
[
0
]),
name
)
return
enc2uni
return
enc2uni
def
genwincodec
(
codepage
):
def
genwincodec
(
codepage
):
import
platform
import
platform
map
=
genwinmap
(
codepage
)
map
=
genwinmap
(
codepage
)
encodingname
=
'cp
%
d'
%
codepage
encodingname
=
'cp
%
d'
%
codepage
code
=
codegen
(
""
,
map
,
encodingname
)
code
=
codegen
(
""
,
map
,
encodingname
)
# Replace first lines with our own docstring
# Replace first lines with our own docstring
code
=
'''
\
code
=
'''
\
"""Python Character Mapping Codec
%
s generated on Windows:
"""Python Character Mapping Codec
%
s generated on Windows:
%
s with the command:
%
s with the command:
python Tools/unicode/genwincodec.py
%
s
python Tools/unicode/genwincodec.py
%
s
"""#"
"""#"
'''
%
(
encodingname
,
' '
.
join
(
platform
.
win32_ver
()),
codepage
'''
%
(
encodingname
,
' '
.
join
(
platform
.
win32_ver
()),
codepage
)
+
code
.
split
(
'"""#"'
,
1
)[
1
]
)
+
code
.
split
(
'"""#"'
,
1
)[
1
]
print
code
print
code
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
import
sys
import
sys
genwincodec
(
int
(
sys
.
argv
[
1
]))
genwincodec
(
int
(
sys
.
argv
[
1
]))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment